Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

Σχετικά έγγραφα
Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Εισαγωγή στους Αλγορίθμους

Διοικητική Λογιστική

Οντοκεντρικός Προγραμματισμός

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στους Αλγορίθμους

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Εισαγωγή στον δομημένο προγραμματισμό

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Δομημένος Προγραμματισμός

Βάσεις Περιβαλλοντικών Δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οντοκεντρικός Προγραμματισμός

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Αλγορίθμους

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στους Υπολογιστές

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Δομημένος Προγραμματισμός

Εισαγωγή στους Η/Υ. Ενότητα 2α: Χάρτης Karnaugh (Βοηθητικό υλικό)

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Κβαντική Επεξεργασία Πληροφορίας

Ηλεκτρονικοί Υπολογιστές

Κβαντική Επεξεργασία Πληροφορίας

Διοικητική Λογιστική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Δομημένος Προγραμματισμός

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Μηχανολογικό Σχέδιο Ι

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Βάσεις Περιβαλλοντικών Δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Κβαντική Επεξεργασία Πληροφορίας

Διαχείριση Πολιτισμικών Δεδομένων

Ψηφιακή Επεξεργασία Εικόνων

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Τεχνικό Σχέδιο - CAD

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

ΕΡΓΑΣΤΗΡΙΟ ΦΥΣΙΚΗΣ Ι ΘΕΩΡΙΑ ΣΦΑΛΜΑΤΩΝ. Κανονισμός Μαθήματος και Εργαστηρίου Καθηγήτρια Γεωργά Σταυρούλα Τμήμα Φυσικής

Ιστορία της μετάφρασης

Βέλτιστος Έλεγχος Συστημάτων

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΣΥΜΠΕΡΙΦΟΡΑ ΚΑΤΑΝΑΛΩΤΗ

Τεχνικό Σχέδιο - CAD

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Ηλεκτρονικοί Υπολογιστές

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Προγραμματισμός H/Y Ενότητα 7: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Δομές Δεδομένων Ενότητα 1

Διοικητική Λογιστική

Ευφυής Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Βέλτιστος Έλεγχος Συστημάτων

Διδακτική Πληροφορικής

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Transcript:

Προγραμματισμός Η/Υ Ενότητα 6: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Σκοποί ενότητας Κατανόηση της έννοιας του πίνακα Κατανόηση της έννοιας του δείκτη 2

Περιεχόμενα ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ο τύπος του Δείκτη Περί αλφαριθμητικών δεδομένων 3

Μέρος 1 ο Ο τύπος του Πίνακα

Ο τύπος του Πίνακα Ορισμός και αρχικοποίηση

Τύπος πίνακα Συλλογή μεταβλητών του ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης Είναι από τις πιο βασικές δομές δεδομένων (data structures) Πετυχαίνεται γρήγορη πρόσβαση και προτιμούνται από άλλες δομές δεδομένων 6

Τύπος πίνακα Παράδειγμα: μέσες μηνιαίες θερμοκρασίες ενός έτους τύπος όνομα (διεύθυνση) μέγεθος πίνακας (πλήθος στοιχείων) τιμές float temp[12] = {10,12,13,17,20,25,30,31,30,27,20,17}; Προσοχή στην αναφορά των στοιχείων ενός πίνακα 10 12 13 17 20 25 27 20 17 temp [0] temp [1] temp [2]..... temp [10] temp [11] 7

Τύπος πίνακα Απόδοση αρχικής τιμής Αρχικοποίηση όλων των στοιχείων float grade[5] = {6.5,5,10,8,3.5}; Μερική αρχικοποίηση float grade[5] = {6.5,5,10}; /* αρχικοποιεί τα 3 πρώτα στοιχεία, αφήνοντας τα άλλα απροσδιόριστα */ 8

Τύπος πίνακα Παράλειψη ορισμού του μεγέθους του πίνακα float grade[] = {6.5,5,10,8,3.5}; Αρχικό (πρώτο) στοιχείο πίνακα grade[0] 6.5 Προσοχή: αναφερόμαστε στα στοιχεία ενός πίνακα με τον αριθμό που δηλώνει το δείκτη τους, π.χ. grade[3] 9

Αποθήκευση πινάκων στη μνήμη Παράδειγμα int temp[5]; Στοιχεία πίνακα Διεύθυνση μνήμης... temp[0]=18; temp[2]=21;... temp[4]=temp[0]+12; temp [0] temp [1] temp [2] temp [3] 18 απροσδιόριστη 21 απροσδιόριστη OFFC 1000 1004 1008 100C temp [4] 30 1010 1014 4 bytes 10

Τύπος πίνακα Η επεξεργασία ενός πίνακα γίνεται ανά στοιχείο Παραδείγματα: printf( %d, x[0]); x[3] = 8258; sum = x[0] + x[1]; sum += x[2]; x[3] += 1; x[2] = x[0] + x[1]; 11

Τύπος πίνακα Αναφορά σε στοιχεία πίνακα (δείκτες πίνακα) Παραδείγματα: x[i] = 0; x[i] = x[j]; x[j+k*4]= x[u] + 3; x[x[i]]= p; diff = x[y]-x[foo()]; total += x[i++]; Προσοχή: πρόσβαση σε μη υπαρκτό στοιχείο ενός πίνακα μπορεί να οδηγήσει είτε στον τερματισμό του προγράμματος είτε (το πιθανότερο) σε λανθασμένα αποτελέσματα 12

Αρχικοποίηση πίνακα Παραδείγματα /* αρχικοποίηση όλων των στοιχείων του πίνακα x σε 0 */ #define MAX 100... int x[max], i; for(i=0;i<max;++i) x[i]=0;... /* αρχικοποίηση στοιχείων πίνακα μέσω συνάρτησης */ #define MAX 100 void init_table(int x[], int size) { int i; for(i=0;i<size;++i) x[i]=0; } int main() { int table[max]; init_table(table,max);. } 13

Παράλληλοι πίνακες Περιέχουν συγγενείς πληροφορίες για το ίδιο σύνολο οντοτήτων Παράδειγμα: #define NUM_STUD 222 int stud_id [NUM_STUD]; float stud_aver [NUM_STUD]; 14

Παράλληλοι πίνακες Ο πίνακας stud_id περιέχει τους αριθμούς μητρώου των πρωτοετών φοιτητών του ακαδημαϊκού έτους 2009-10, ενώ ο πίνακας stud_aver τους μέσους όρους από τη βαθμολογία των ασκήσεων του μαθήματος, για την ίδια ομάδα φοιτητών 0 1 2... 221 stud_id 4345 4349 4995 4201 stud_aver 0 2.12 1 6.14 2 4.56... 221 7.8 15

Παράλληλοι πίνακες #define NUM_STUD 222... void display_id_grade(int table_id[], float table_grade[], int size) { int j; for(j=0;j<size;++j) printf( Student with id: %d, grade: %f\n, table_id[j],table_grade[j]); }... main {... int stud_id [NUM_STUD]; float stud_aver [NUM_STUD];... display_id_grade(stud_id[], stud_aver[], NUM_STUD)... } 16

Πολυδιάστατοι πίνακες Πίνακες των οποίων κάθε στοιχείο είναι πίνακας Παράδειγμα: πίνακας βαθμολογίας με 222 στοιχεία (ένα για κάθε φοιτητή του Α έτους), όπου κάθε ένα από αυτά είναι ένας πίνακας 6 στοιχείων (ένα για κάθε μάθημα του συγκεκριμένου φοιτητή αυτό το εξάμηνο) float grade[222][6]; 17

Πολυδιάστατοι πίνακες Που αναφέρονται οι παρακάτω εκφράσεις; grade[0][5]; grade[1][0]; grade[199][3]; Προσοχή: Προτάσεις της μορφής grade[0,5] (οι οποίες υπάρχουν σε γλώσσες όπως η Pascal και η Fortran) αντί του ορθού grade[0][5]- οδηγούν συνήθως σε ανεπιθύμητα αποτελέσματα 18

Πολυδιάστατοι πίνακες Αποθήκευση 17 24 6 5 16 4 12 11 6 static int example[3][3] = { {17,24,6}, {5,16,4}, {12,11,6} }; 19

Πολυδιάστατοι πίνακες Αρχικοποίηση static int new_example[5][3] = { {1,2,3}, {4}, {5,6,7} 1 2 3 4 0 0 5 6 7 0 0 0 0 0 0 }; 20

Μέρος 2 ο Ο τύπος του Δείκτη

Ο τύπος του Δείκτη Η έννοια του Δείκτη

Ο τύπος του Δείκτη Από τις δυσκολότερες έννοιες της C Η χρήση τους αποτελεί αιτία δυσκολιών στον εντοπισμό σφαλμάτων Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ (κάθε τέτοια θέση έχει τη δικιά της, ξεχωριστή διεύθυνση) Ο δείκτης δεν είναι τίποτε παραπάνω από μια μεταβλητή η οποία χρησιμοποιείται για την αποθήκευση μιας διεύθυνσης της κύριας μνήμης του Η/Υ 23

Ο τύπος του Δείκτη Δήλωση δείκτη <όνομα τύπου> *<όνομα δείκτη>; Παράδειγμα: int *num_ptr; το όνομα του δείκτη τύπος του στοιχείου που δείχνει ο δείκτης τελεστής περιεχομένου - προσδιορίζει τη num_ptr ως (μεταβλητή) δείκτη 24

Ο τύπος του Δείκτη Αρχικοποίηση δείκτη Ένας δείκτης πρέπει να δείχνει σε μια θέση μνήμης που ανήκει στο πρόγραμμα Αρχικοποίηση με άμεση διεύθυνση Πολύ «επικίνδυνες», πρέπει να αποφεύγονται num_ptr = 1000; /* int *num_ptr = 1000; */ Αρχικοποίηση με διεύθυνση μεταβλητής ακεραίου τύπου (χρήση του τελεστή διεύθυνσης &) num_ptr = &num; /* int *num_ptr = &num; */ 25

Ο τύπος του Δείκτη Παράδειγμα (χρήση τελεστή διεύθυνσης &) int y = 5; int *yptr; yptr = &y; /* η yptr παίρνει τη διεύθυνση του y */ /* η yptr δείχνει στην ( points to ) y */ 26

Ο τύπος του Δείκτη yptr y 5 yptr 500000 600000 y 600000 5 Η διεύθυνση του y είναι η τιμή του yptr Προσοχή: Η *yptr επιστρέφει y (επειδή η yptr δείχνει στην y) Η πρόταση *yptr = 7; αλλάζει την τιμή του y σε 7 27

Ο τύπος του Δείκτη Παράδειγμα int num=10; int count=0; int mcount=25; printf( %d\t %p\n, num, &num); printf( %p\t %p\n, &count, &num); 10 0 25 Διεύθυνση μνήμης OFFC 1000 1004 1008 100C 10 1000 1004 1000 4 bytes Output προγράμματος 28

Μέρος 3 ο Περί αλφαριθμητικών δεδομένων

Περί αλφαριθμητικών δεδομένων Συναρτήσεις αλφαριθμητικών

Αλφαριθμητικά δεδομένα Ακολουθίες χαρακτήρων Ο ISBN κωδικός του βιβλίου σας είναι «960-8050-79-0» Η διεύθυνση ενός φοιτητή είναι «Γούναρη 234» Αποθήκευση και διαχείριση αλφαριθμητικών στη C Μέσω πινάκων Πίνακες χαρακτήρων που τερματίζουν με το μηδενικό (null) χαρακτήρα Ο μεταγλωττιστής θέτει αυτόματα στο τέλος του αλφαριθμητικού ένα μηδενικό χαρακτήρα για να προσδιορίσει το τέλος του Ο μηδενικός χαρακτήρας έχει ASCII κωδικό 0 και αναπαρίσταται με την ακολουθία διαφυγής \0 Παραδείγματα δηλώσεων char isbn[15], stud_address[30]; 31

Αλφαριθμητικά δεδομένα Αποθήκευση H e l l o \0 Αρχικοποίηση char isbn[]= 960-8050-79-0 ; 32

Αλφαριθμητικά δεδομένα Εκτύπωση Αλφαριθμητική σταθερά printf( Hello ); printf( O ISBN κωδικός είναι: %s\n, isbn); Εισαγωγή Αλφαριθμητικό scanf( %s,isbn); Χωρίς τελεστή & πριν το όνομα της μεταβλητής 33

Ένα απλό παράδειγμα Ανάγνωση αλφαριθμητικού από την είσοδο και εκτύπωσή του #include<stdio.h> #define MAX_CHAR 80 main() { char str[max_char]; int i; printf( Enter a string: ); scanf( %s, str); /* εναλλακτικά, scanf( %s, &str[0]); */ for (i=0;i<10;i++) printf( %s\n, str); exit(0); } 34

Συναρτήσεις χειρισμού αλφαρ/κών Συνάρτηση μήκους αλφαριθμητικού strlen() Επιστρέφει τον αριθμό χαρακτήρων του αλφαριθμητικού (χωρίς να συμπεριλαμβάνει το μηδενικό χαρακτήρα) Παράδειγμα char name[12]= abcd ; printf( %d\n, strlen(name)); Output προγράμματος 4 35

Συναρτήσεις χειρισμού αλφαρ/κών Συνάρτηση αντιγραφής αλφαριθμητικών strcpy() Αντιγράφει ένα αλφαριθμητικό από έναν πίνακα σε έναν άλλο Δέχεται δύο ορίσματα, το όνομα του πίνακα προορισμού (πρώτο όρισμα) και το όνομα του πίνακα πηγής (δεύτερο όρισμα) 36

Συναρτήσεις χειρισμού αλφαρ/κών Παράδειγμα char name_1[12]= abcd ; char name_2[12]= ef ; strcpy(name_1,name_2); printf( %s\n, name_1); Output προγράμματος ef 37

Συναρτήσεις χειρισμού αλφαρ/κών Συνάρτηση συνένωσης αλφαριθμητικών strcat() Δέχεται δύο ορίσματα, τα οποία συνενώνει «Προσθέτει» στο τέλος του αλφαριθμητικού που προσδιορίζεται από το πρώτο όρισμα τα στοιχεία του αλφαριθμητικού που προσδιορίζεται από το δεύτερο όρισμα 38

Συναρτήσεις χειρισμού αλφαρ/κών Παράδειγμα char name_1[12]= abcd ; char name_2[12]= ef ; strcat(name_1,name_2); printf( %s\n, name_1); Προσοχή: Ο πίνακας name_1 πρέπει να έχει κατάλληλο «μέγεθος», έτσι ώστε να χωράνε και τα στοιχεία του πίνακα name_2 Output προγράμματος abcdef 39

Συναρτήσεις εισόδου/εξόδου int getchar() χαρακτήρων διαβάζει τον επόμενο χαρακτήρα από την είσοδο (και κινεί τον δρομέα στον επόμενο χαρακτήρα) void putchar(int) τυπώνει χαρακτήρα στη μονάδα εξόδου 40

Συναρτήσεις Ε/Ε χαρακτήρων Παραδείγματα χρήσης Ανάγνωση σειράς χαρακτήρων απροσδιόριστου μεγέθους Αλγόριθμος; Υπολογισμός μεγέθους σειράς χαρακτήρων Αλγόριθμος; Υπολογισμός εμφανίσεων χαρακτήρων Αλγόριθμος; 41

Συναρτήσεις Ε/Ε χαρακτήρων Ανάγνωση σειράς χαρακτήρων int c; c = getchar(); /* διάβασε τον πρώτο χαρακτήρα */ while(c!= EOF){ /* όχι τέλος του αρχείου */ c = getchar(); /* διάβασε τον επόμενο χαρακτήρα */ } 42

Συναρτήσεις Ε/Ε χαρακτήρων Echo σειράς χαρακτήρων int c; c = getchar(); /* διάβασε τον πρώτο χαρακτήρα */ while(c!= EOF){ /* όχι τέλος του αρχείου */ putchar(c); /* τύπωσε χαρακτήρα */ c = getchar(); /* διάβασε τον επόμενο χαρακτήρα */ } 43

Συναρτήσεις Ε/Ε χαρακτήρων Υπολογισμός μεγέθους σειράς χαρακτήρων int c; int size=0; /* αρχικοποίηση */ c = getchar(); /* διάβασε τον πρώτο χαρακτήρα */ while(c!= EOF){ /* όχι τέλος του αρχείου */ size=size+1; /* «υπολόγισε» άλλον ένα χαρακτήρα */ c = getchar(); /* διάβασε τον επόμενο χαρακτήρα */ } 44

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στο πλαίσιο του εκπαιδευτικού έργου των διδασκόντων. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 46

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Πολυτεχνική Σχολή, Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών, Νίκος Καρακαπιλίδης, Δημήτρης Σαραβάνος. Νίκος Καρακαπιλίδης, Δημήτρης Σαραβάνος. «Προγραμματισμός Η/Υ.». Έκδοση: 1.0. Πάτρα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/mech1207/ 47

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 48

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 49

Σημείωμα Χρήσης Έργων Τρίτων Οποιοδήποτε έργο στην παρούσα ενότητα, έχει δημιουργηθεί από τους διδάσκοντες του μαθήματος ή/και την Τμηματική Ομάδα Εργασίας και παρέχεται με την ίδια άδεια CC BY-NC-SA 4.0 50