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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 6: Πίνακες αλφαριθμητικά

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

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

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

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Η γλώσσα προγραμματισμού C

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Η γλώσσα προγραμματισμού C

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Διαδικασιακός Προγραμματισμός

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

Η γλώσσα προγραμματισμού C

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Η γλώσσα προγραμματισμού C

Διάλεξη 8η: Αλφαριθμητικά (strings)

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ.

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ. Παράδειγμα 1 Δήλωση και αρχικοποίηση μονοδιάστατου πίνακα [5] με χρήση δομής επανάληψης με συνθήκη στην είσοδο και μετρητή.

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Ενδεικτική περιγραφή μαθήματος

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Διαδικασιακός Προγραμματισμός

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στον Προγραμματισμό

Διαδικασιακός Προγραμματισμός

Συµβολοσειρές - Strings

Ανάπτυξη και Σχεδίαση Λογισμικού

Δομημένος Προγραμματισμός (ΤΛ1006)

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Διαδικασιακός Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Επανάληψη για τις Τελικές εξετάσεις

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

Δομημένος Προγραμματισμός (ΤΛ1006)

scanf() scanf() stdin scanf() printf() int float double %lf float

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Προγραμματισμός Ι (ΗΥ120)

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

Η γλώσσα προγραμματισμού C

Προγραμματισμός II. Δυναμική διαχείριση μνήμης

char name[5]; /* define a string of characters */

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Sheet1_2. - Δεν απελευθερώνεις τη δυναµικά δεσµευµένη µνήµη. - Η έξοδος του προγράµµατός σου δεν είναι ακριβώς όπως ζητούσε η άσκηση.

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

Διαδικασιακός Προγραμματισμός

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

Προγραμματισμός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

Sheet2 Α.Μ FAIL. οριακό PASS. - Έπρεπε να χρησιµοποιήσετε συναρτήσεις από τη string.h

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

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

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διαδικασιακός Προγραμματισμός

Αλφαριθμητικά, πίνακες και δείκτες

Η γλώσσα προγραμματισμού C

Ερωτήσεις αυτοαξιολόγησης τετραπλής επιλογής για το μάθημα Προγραμματισμός I.

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή στους Δείκτες (Pointers)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

lab10grades - Το αποτέλεσµα της τοµής θα έπρεπε να εµφανίζετε µέσα σε εισαγωγικά "Helo".

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Η γλώσσα προγραμματισμού C

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

Ασκήσεις - Μελέτες περίπτωσης για το μάθημα Προγραμματισμός II

Προγραμματισμός I (Θ)

Προγραμματισμός ΙI (Θ)

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Transcript:

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1

Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης Τύπους Πινάκων τόσους όσους και οι τύποι δεδομένων Κύκλος ζωής όπως και οι μεταβλητές Δήλωση κανονικά πριν την χρήση Φορμαλισμό Τύπος_δεδομένων όνομα_πίνακα[μέγεθος] Για την δήλωση έχουμε τρία στοιχεία α. τύπος β. όνομα γ. μέγεθος float temp[31]; 2

Αναφορά σε στοιχεία πίνακα Η αναφορά σε στοιχεία του πίνακα γίνεται σε συνδυασμό με το όνομα του πίνακα και με την χρήση ενός δείκτη ο οποίος εκφράζει τη σειρά του στοιχείου μέσα στον πίνακα float temp[31]; temp[0] > αναφερόμαστε στο πρώτο στοιχείο του πίνακα temp[1] > αναφερόμαστε στο δεύτερο στοιχείο του πίνακα temp[30] > αναφερόμαστε στο τελευταίο στοιχείο του πίνακα 3

Αρχικές τιμές σε πίνακα Μπορούμε να αναθέσουμε αρχικές τιμές στον πίνακα όπως και στις μεταβλητές Που τις αναθέτουμε ; > Ακριβώς στην δήλωση όπως με τις μεταβλητές Για αρχικές τιμές σε πίνακα χρειαζόμαστε τους τελεστές ({}) και (,) πχ. float temp[5] = {1,2, 4.2,6,8}; πχ. float temp[5] = {1,2, 4.2}; 4

Ανάγνωση τιμών στοιχείου πίνακα Για τις μεταβλητές είχαμε main() { int var1; printf( Give a value : ); scanf( %d,&var1); printf( \nyou gave :%d,var1); } Ανάγνωση Εμφάνιση μεταβλητής σε πρόγραμμα C Για όλα τα στοιχεία του πίνακα Για ένα στοιχείο πίνακα main() { int var[20]; printf( Give a value : ); scanf( %d,&var[0]); printf( \nyou gave :%d,var[0]); } Ανάγνωση Εμφάνιση του πρώτου στοιχείου Πίνακα σε πρόγραμμα C main() { int ι,var[20]; for(i=0;i<20;i++) { printf( Give a value : ); scanf( %d,&var[i]); } for(i=0;i<20;i++) { printf( \n The %d element is :%d,i,var[i]); } } getch(); 5

Πολυπλοκότητες στους Πίνακες Όταν αποδίδονται αρχικές τιμές μπορεί να παραληφθεί το μέγεθος του πίνακα char pin[] = { a, b, c, d }; Οι δείκτες των στοιχείων ενός πίνακα ξεκινούν από το 0 και όχι από το 1 Ο δείκτης έχει διαφορετική σημασία στην δήλωση και διαφορετική στην αναφορά. Στην δήλωση καθορίζει μέγεθος ενώ στην αναφορά προσδιορίζει το στοιχείο αναφοράς Το μέγεθος σε bytes ενός πίνακα μπορεί να προσδιοριστεί χρησιμοποιώντας τον τελεστή sizeof Η χρήση της sizeof στο όνομα του πίνακα επιστρέφει το συνολικό μέγεθος ενώ στο όνομα του πίνακα με δείκτη ενός στοιχείου επιστρέφει το μέγεθος του 6 στοιχείου

Πολυδιάστατοι Πίνακες Πίνακας μιας διάστασης των οποίων τα στοιχεία είναι επίσης πίνακας Πχ int array[4][12]; Δήλωση κανονικά με φορμαλισμό Τύπος_Δεδομένων όνομα_πίνακα[πλήθος γραμμών][πλήθος στηλών]; Ο πολυδιάστατος πίνακας αποθηκεύεται στη μνήμη ως μία ακολουθία στοιχείων μίας διάστασης Για την δήλωση έχουμε τρία στοιχεία α. τύπος β. όνομα γ. μέγεθος σε πλήθος γραμμών και στηλών Π.χ. int array[10][8]; 7

Αρχικές τιμές σε πολυδιάστατο πίνακα Για αρχικές τιμές σε πίνακα χρειαζόμαστε τους τελεστές ({}) και (,) Τα στοιχεία της κάθε γραμμής εσωκλείονται σε { } διαχωρίζοντας τα με, και όλες οι γραμμές μαζί μετά σε { } πχ. int temp[5][5] = { {17,24,1,8,15}, {23,5,7,14,16}, {4,6,13,20,22}, {10,12,19,21,3}, {11,18,25,2,9} }; Προσοχή σε πολυπλοκότητες int temp[5][3] = { {1,2,3}, {4},{5,6,7}} Επίσης int temp[5][3]={1,2,3,4,5,6,7}; Παράλειψη της πρώτης διάστασης int temp[][3][2]={ { {1,1}, {0,0}, {1,1} }, { {0,0}, {1,2}. {0,1} }, }; πίνακας 2χ3χ2 8

Αναφορά σε στοιχεία του πίνακα Χρήση δεικτών τόσοι όσοι είναι αναγκαίοι για το μέγεθος των διαστάσεων temp[1][3] αναφέρεται στο τέταρτο στοιχείο της δεύτερης γραμμής Οι πολυδιάστατοι πίνακες αποθηκεύονται κατά γραμμές, που σημαίνει ότι ο τελευταίος δείκτης θέσης μεταβάλλεται ταχύτερα κατά την προσπέλαση των στοιχείων int temp[2][3] = { {0,1,2}, {3,4,5} }; Σχ. 6.1 Δυνατότητα ύπαρξης απροσδιόριστων τιμών εντός πίνακα Προσοχή στην αρχικοποίηση του πίνακα προς αποφυγή προβλημάτων υπολογισμών. 9

Αλφαριθμητικό Αλφαριθμητικό ή συμβολοσειρά (string) είναι ένας πίνακας χαρακτήρων που τερματίζει με το μηδενικό (null) χαρακτήρα. Ο μηδενικός χαρακτήρας έχει τιμή ASCII με κωδικό 0 και αναπαρίσταται από την ακολουθία διαφυγής \0 Δήλωση αλφαριθμητικού όπως και τους μονοδιάστατους πίνακες με την διαφορά ότι είναι μόνο τύπου char char όνομα[μήκος]; Διακρίνουμε τον τύπο που μπορεί να είναι μόνου τύπου char, το όνομα του αλφαριθμητικού και το μήκος που περιγράφει το πλήθος σε χαρακτήρες 10

Αλφαριθμητικές Σταθερές Η δυνατότητα ανάθεσης μιας αλφαριθμητικής τιμής σε μια μεταβλητή η οποία θα παραμείνει η ίδια για όλο το πρόγραμμα Η τιμή μιας αλφαριθμητικής σταθεράς περικλείεται σε διπλά εισαγωγικά Ο μεταγλωττιστής θέτει αυτόματα στο τέλος του αλφαριθμητικού τον μηδενικό χαρακτήρα. Π.χ Η αλφαριθμητική Σταθερά HELLO απαιτεί 6 bytes όπως ακολούθως H E L L O \0 Η διαφορά ανάμεσα στην σταθερά Α και την αλφαριθμητική σταθερά A είναι ότι η πρώτη απαιτεί 1 byte για την αποθήκευση, ενώ η δεύτερη απαιτεί 2 byte ένα για τον χαρακτήρα Ά και ένα για τον μηδενικό χαρακτήρα 11

Αρχικές τιμές σε αλφαριθμητικά Όπως δίνουμε αρχικές τιμές και σε μονοδιάστατους πίνακες με την διαφορά ότι οι τιμές θα είναι χαρακτήρας Π.χ char isbn[]={ 0,, 4, 9,, 7, 4, 3,, 3, \0 }; Μπορούμε και εναλλακτικά να περιγράψουμε char isbn[]= 0 49 743 3 ;! Προσοχή στην πρώτη περίπτωση όπου έχουμε λίστα στοιχείων να συμπεριλάβουμε ως τελευταία τιμή το null 12 \0

Είσοδος αλφαριθμητικού Για είσοδο αλφαριθμητικού έχουμε την μορφοποιούμενη συνάρτηση scanf και τον προσδιοριστή %s scanf( %s,isbn); Προσοχή! Δεν χρειάζεται ο τελεστής & πριν από το όνομα στη μεταβλητή isbn διότι το όνομα του αλφαριθμητικού αναπαριστά την διεύθυνση του πρώτου στοιχείου Εναλλακτικά μπορούμε να χρησιμοποιήσουμε και την συνάρτηση gets με μορφή gets(όνομα πίνακα χαρακτήρων); Η συνάρτηση gets διαβάζει χαρακτήρες από το πληκτρολόγιο έως ότου πατηθεί το ENTER Όταν το μέγεθος του αλφαριθμητικού είναι Ν τότε μπορεί να αποθηκεύσει μέχρι Ν 1 χαρακτήρες Οι συναρτήσεις εισόδου scanf και gets δεν εκτελούν έλεγχο ορίων έτσι όταν κλιθούν να διαβάσουν ένα αλφαριθμητικό μεγαλύτερο από το μέγεθος του πίνακα τότε αυξάνεται το 13 μέγεθος του πίνακα.

Εκτύπωση Αλφαριθμητικού Αλφαριθμητική Σταθερά με χρήση της printf printf( HELLO ); Για αλφαριθμητικά έχουμε την χρήση της printf μαζί με τον προσδιοριστή %s printf( The ISBN code is : %s,isbn); Εναλλακτικά μπορούμε να χρησιμοποιήσουμε την συνάρτηση puts puts(όνομα πίνακα χαρακτήρων); H Συνάρτηση puts δεν χρειάζεται δείκτη δίπλα στο όνομα του πίνακα καθώς επίσης παρουσιάζει και την αδυναμία μορφοποίησης της εξόδου 14

Διαχείριση Αλφαριθμητικών Η γλώσσα προγραμματισμού C διαθέτει ένα σύνολο συναρτήσεων αποκλειστικά για επεξεργασία αλφαριθμητικών οι οποίες ορίζονται στο αρχείο κεφαλίδας <string.h> ΛΕΙΤΟΥΡΓΙΑ Εύρεση μήκους string Αντιγραφή string Συνένωση 2 strings Σύγκριση 2 strings Εύρεση χαρακτήρα σε string εύρεση string σε string ΟΛΟΙ ΟΙ ΧΑΡΑΚΤΗΡΕΣ strlen() stcpy() strcat() strcmp() strchr() strstr() ΟΙ Ν ΠΡΩΤΟΙ ΧΑΡΑΚΤΗΡΕΣ strncpy() strncat() strncmp() strrchr() 15

Η Συνάρτηση μήκους Αλφαριθμητικού strlen() Επιστρέφει τον αριθμό χαρακτήρων του αλφαριθμητικού χωρίς να περιλαμβάνει το μηδενικό χαρακτήρα Δέχεται σαν παράμετρο το όνομα του αλφαριθμητικού Πχ char name[12] = abcd printf*( %d, strlen(name)); 4 16

H συνάρτηση αντιγραφής αλφαριθμητικού strcpy(αλφαριθμητικό Νο1, αλφαριθμητικό Νο2) Αντιγράφει ένα αλφαριθμητικό σε ένα άλλο Δέχεται δύο ορίσματα όπου το Νο1 είναι ο προορισμός και το Νο2 είναι η πηγή Εξέλιξη της strcpy() είναι η strncpy() η οποία έχει την μορφή strncpy(αλφαριθμητικό Νο1, αλφαριθμητικό Νο2, N) Αντιγράφει τους Ν πρώτους χαρακτήρες από το Νο2 στο Ν1. 17

Η συνάρτηση συνένωσης αλφαριθμητικών strcat(αλφαριθμητικό Νο1, αλφαριθμητικό Νο2) Προσθέτει στο τέλος του Νο1 αλφαριθμητικού το Νο2 strncat(αλφαριθμητικό Νο1, αλφαριθμητικό Νο2, Ν) Προσθέτει στο τέλος του Νο1 αλφαριθμητικού τους Ν χαρακτήρες από το Νο2 Αλφαριθμητικό 18

Η Συνάρτηση σύγκρισης αλφαριθμητικών strcmp(name1, name2) Συγκρίνει τα δύο αλφαριθμητικά και επιστρέφει την τιμή 0 εάν είναι όμοια strcmp(name1, name2, Ν) Συγκρίνει τους πρώτους Ν χαρακτήρες από τα δύο αλφαριθμητικά 19