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

Σχετικά έγγραφα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

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

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

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

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

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

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

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

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

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

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

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

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

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

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

Τεχνολογία & Καινοτομία - Αρχές Βιομηχανικής Επιστήμης

Τεχνοοικονομική Μελέτη

Μαθηματική Ανάλυση Ι

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

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

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

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

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

Κοινωνιολογία της Εκπαίδευσης

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

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

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

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 7: Σχέσεις και Συναρτήσεις

Μαθηματική Ανάλυση Ι

Εισαγωγή στην πληροφορική

Μαθηματική Ανάλυση Ι

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

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

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

Μαθηματική Ανάλυση Ι

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

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

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

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

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

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

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

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

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

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

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

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

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Πληροφορική ΙΙ Θεματική Ενότητα 5

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Μαθηματική Ανάλυση Ι

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

Τεχνολογία και Καινοτομία - Οικονομική Επιστήμη και Επιχειρηματικότητα

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

Μαθηματική Ανάλυση ΙI

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

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

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

Εκκλησιαστικό Δίκαιο

Κοινωνιολογία της Εκπαίδευσης

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

Transcript:

Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 6 η : Αλφαριθμητικά Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

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

Στόχοι της διάλεξης Κατανόηση της έννοιας του αλφαριθμητικού και της υλοποίησης του ως πίνακα χαρακτήρων στη C. Κατανόηση των βασικών τεχνικών χειρισμού αλφαριθμητικών και εισαγωγή σε προχωρημένα θέματα αλφαριθμητικών. 4

Αλφαριθμητικά: Περιεχόμενα Η υλοποίηση τους στη C. Αρχικοποίηση αλφαριθμητικών. Παραδείγματα. Διάβασμα και εκτύπωση αλφαριθμητικών. Παραδείγματα. Η βιβλιοθήκη string.h. Πίνακες αλφαριθμητικών. 5

Αλφαριθμητικά (strings) Ένα αλφαριθμητικό είναι μια ακολουθία αλφαβητικών και αριθμητικών χαρακτήρων και άλλων συμβόλων. Αριθμός κινητήρα: EBV-3050-FGH-8399-998. ISBN βιβλίου: 0-387-976-1. Οτιδήποτε: Kozani is a town in western Macedonia. Στη C τα αλφαριθμητικά μεταχειρίζονται ως πίνακες χαρακτήρων που τερματίζουν με το μηδενικό (null) χαρακτήρα ( \0 ). char isbn[12]. Τα αλφαριθμητικά που χρησιμοποιούνται συνέχεια στην printf είναι πίνακες χαρακτήρων. Ο τελευταίος ειδικός null χαρακτήρας \0 είναι απαραίτητος για να ξέρουν οι συναρτήσεις το τέλος του αλφαριθμητικού χωρίς να τους δίνουμε το μέγεθος του πίνακα. 6

Αλφαριθμητικά 7

Περισσότερα για Αλφαριθμητικά (1/2) Εκτύπωση. printf( Hello ); char str[6]= Hello ; printf( Το αλφαριθμητικό είναι %s, str); Το μέγεθος μπορεί να παραληφθεί. char str[]= Hello ; O compiler το βρίσκει αυτόματα. Προσοχή γιατί το μέγεθος του πίνακα είναι ένα παραπάνω από το μέγεθος του αλφαριθμητικού (λόγω του \0 ). Ένα αλφαριθμητικό τελειώνει στην πρώτη εμφάνιση του \0. char str[12] = { f, i, r, s, t, \0,, y, e, a, r, \0 }; printf( %s\n,str); Θα τυπώσει την λέξη first μόνο. 8

Περισσότερα για Αλφαριθμητικά (2/2) Μπορούμε να αρχικοποιήσουμε ένα αλφαριθμητικό στο κενό αλφαριθμητικό. char str[] = Hello ; printf( %s\n, str); // prints Hello str[0] = \0 ; printf( %s\n, str); // prints nothing Εισαγωγή από πληκτρολόγιο (μέχρι το πρώτο κενό) scanf( %s, str); χωρίς & ή scanf( %s, &str[0]) 9

Παράδειγμα: Μέτρηση μήκους του αλφαριθμητικού str 10

Παράδειγμα: Αντιγραφή Αλφαριθμητικών /* Δεδομένων αλφαριθμητικών s[], t[] */ int i=0; while ((s[i] = t[i])!= \0 ) i++; 11

Ανάγνωση Αλφαριθμητικών από το πληκτρολόγιο Τα προγράμματα πρέπει συχνά να αποδεχθούν αλφαριθμητικά από το χρήστη μέσω του πληκτρολογίου. Μπορούν να χρησιμοποιηθούν για το σκοπό αυτό οι gets() και scanf (). 12

gets() H gets() συνάρτηση παίρνει μια συμβολοσειρά από το πληκτρολόγιο. Όταν καλείται, διαβάζει όλους τους χαρακτήρες από το πληκτρολόγιο μέχρι το Enter. Η συνάρτηση αυτή απορρίπτει το enter, προσθέτει ένα μηδενικό χαρακτήρα, και δίνει το αλφαριθμητικό στο πρόγραμμα. Ένα πρόγραμμα που χρησιμοποιεί gets() πρέπει να περιλαμβάνει το αρχείο stdio.h. 13

#include <stdio.h> char input[81]; int main() { } Παράδειγμα (1) printf("enter some text, then press Enter: "); gets(input); printf("you entered: %s\n", input); return 0; Enter some text, then press Enter: This is a test You entered: This is a test 14

scanf () (1) Η scanf () χρησιμοποιεί μια συμβολοσειρά μορφοποίησης που λέει πώς να διαβαστεί η είσοδος. Για να διαβάσετε ένα αλφαριθμητικό, συμπεριλάβετε τον %s προσδιοριστή στη συμβολοσειρά μορφοποίησης. Η αρχή είναι ο πρώτος μη-κενός χαρακτήρας. Το τέλος μπορεί να προσδιοριστεί με δύο τρόπους. Εάν χρησιμοποιείτε το %s το αλφαριθμητικό τρέχει μέχρι τον επόμενο κενό χαρακτήρα (space, tab, ή newline). Εάν χρησιμοποιείτε %ks (όπου το k είναι μια ακέραια σταθερά), scanf () παίρνει k χαρακτήρες ή μέχρι τον επόμενο κενό χαρακτήρα, όποιο από τα δύο συμβεί πρώτο. 15

scanf () (2) Μπορείτε να διαβάσετε πολλά αλφαριθμητικά με scanf (), συμπεριλαμβάνοντας περισσότερα από ένα %s στη συμβολοσειρά μορφοποίησης. Αν εισάγετε λιγότερα αλφαριθμητικά, η scanf () συνεχίζει να ψάχνει και το πρόγραμμα δεν θα συνεχιστεί μέχρι να εισαχθούν. Εάν πληκτρολογήσετε περισσότερα, διαβάζονται από μεταγενέστερη scanf () ή άλλες δηλώσεις εισροών. Όταν διαβάζετε μόνο κείμενο, η gets() είναι προτιμότερη. Είναι καλύτερο να χρησιμοποιηθεί η scanf () συνάρτηση όταν διαβάζετε ένα συνδυασμό κειμένου και αριθμητικών δεδομένων. 16

Παραδείγματα scanf("%s%s%s", s1, s2, s3); scanf("%3s%3s%3s", s1, s2, s3); scanf("%s%s%s", s1, s2, s3); scanf("%s%s", s1, s2); scanf("%s", s3); 17

Παράδειγμα (2) #include <stdio.h> char lname[81], fname[81]; int count, id_num; int main() { } printf("enter last name, first name, ID number separated\n"); printf("by spaces, then press Enter."); count = scanf("%s%s%d", lname, fname, &id_num); printf("%d items entered: %s %s %d \n", count, fname, lname, id_num); return 0; Enter last name, first name, ID number separated by spaces, then press Enter. Jones Bradley 12345 3 items entered: Bradley Jones 12345. 18

Βιβλιοθήκη string.h #include <stdio.h> #include <string.h> char str1[10]; char str2[10]; char str3[]= "initial text"; main() { strcpy(str1,"hello"); /* str1 = 'h','e','l','l','o','\0' */ strcat(str1," sir"); /* str1 = 'h','e','l','l','o',' ','s','i','r','\0' */ len = strlen(str1); /* find the number of characters */ printf("length of <%s> is %d characters\n", str1, len); 19

... συνέχεια /* string comparison */ if (strcmp(str1, str3)) printf("<%s> and <%s> are different\n", str1, str3); else printf("<%s> and <%s> are the same\n", str1, str3); } 20

Παράδειγμα: Εξέταση password #include <stdio.h> #include <string.h> char secret[10] = "SOYSAMI"; main() { char pass[20]; printf("password : "); scanf("%s",pass); if (strcmp(pass,secret)!=0) printf("λαθοσ ΣΥΝΘΗΜΑΤΙΚΟ\n"); } else { /* εντολές του προγράμματος που προστατεύονται με το συνθηματικό */ } 21

Εύρεση θέσης του s1 που εμφανίζεται χαρακτήρας του s2 /* Δεδομένων αλφαριθμητικών s1[], s2[] */ int i; int j; int pos; pos = -1; for (i = 0; pos == -1 && s1[i]!= '\0'; i++) { for(j = 0; pos == -1 && s2[j]!= '\0'; j++) if(s2[j] == s1[i]) pos = i; } 22

Σβήσιμο από το s1 των χαρακτήρων που περιέχονται στο s2 /* Δεδομένων αλφαριθμητικών s1[], s2[] */ int i, j, k; int flag; for(i = j = 0; s1[i]!= '\0'; i++) { flag = 0; for(k = 0; s2[k]!= '\0' &&!flag; k++) if(s2[k] == s1[i]) flag = 1; if(!flag) s1[j++] = s1[i]; } s1[j] = '\0'; 23

Σβήσιμο των συνεχόμενων διπλών χαρακτήρων: Mississippi Misisipi /* Δεδομένου αλφαριθμητικού s[] */ int i, j; char prev = '\0'; for (i = j = 0; s[i]!= '\0'; i++) { if (prev!= s[i]) s[j++] = s[i]; prev = s[i]; } s[j] = '\0'; 24

Εύρεση του t μέσα στο s #include <stdio.h> main() { char s[10], t[10]; int i,j,found=0; printf("string1="); scanf("%s",s); printf("string2="); scanf("%s",t); for (i=0;s[i]!='\0 && found==0;i++) { for (j=0; t[j]!='\0 && s[i+j]==t[j];j++); if (t[j]=='\0') found=1; } if (found==1) printf("brethike STH THESI %d\n",i); else printf("den BRETHIKE\n"); } 25

Πίνακες Αλφαριθμητικών char fruits[3][10] = {"apple", "banana", "orange"}; Θέσεις μνήμης (υποθέτουμε από 6000) 6000 a p p l e \0.... 6010 b a n a n a \0... 6020 o r a n g e \0... 26

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

Σημείωμα Αναφοράς Copyright, Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών, Στεργίου Κωνσταντίνος. «Εισαγωγή στον Δομημένο Προγραμματισμό». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https: //eclass.uowm.gr/courses/icte258/ 28

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

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