ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Λαμίας ΤΕΙ ΛΑΜΙΑΣ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Λαμίας ΤΕΙ ΛΑΜΙΑΣ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ"

Transcript

1 ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ Τεχνολογικό Εκπαιδευτικό Ίδρυμα Λαμίας ΤΕΙ ΛΑΜΙΑΣ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι» ΓΛΩΣΣΑ C Δρ. ΠΑΠΑΓΕΩΡΓΙΟΥ ΕΛΠΙΝΙΚΗ ΚΑΘΗΓΗΤΡΙΑ ΕΦΑΡΜΟΓΩΝ ΣΕΠΤΕΜΒΡΙΟΣ 2010

2 Σκοπός: 1 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Γνωριμία με τη γλώσσα προγραμματισμού C, το περιβάλλον της και τον compiler της C που χρησιμοποιείται στο εργαστήριο. Βασική δομή ενός προγράμματος Δημιουργία, μεταγλώττιση και εκτέλεση απλών προγραμμάτων Μπείτε στο λογαριασμό σας και φτιάξτε ένα φάκελο μέσα στον οποίο θα γράφετε όλα τα προγράμματα για το εργαστήριο. Μπορείτε να τον ονομάσετε ProgI ή κάποιο άλλο αντιπροσωπευτικό όνομα. Μέσα σε αυτό το φάκελο φτιάξτε έναν γι'αυτό το πρώτο εργαστήριο. Μπορείτε να τον ονομάσετε lab1 ή κάποιο άλλο αντιπροσωπευτικό όνομα. Ανοιξτε τη Microsoft Visual C++ που είναι εγκατεστημένη στους υπολογιστές του εργαστηρίου, ή όποιο άλλο προγραμματιστικό περιβάλλον είναι εγκατεστημένο για τη C (περαιτέρω πληροφορίες θα δοθούν στο εκάστοτε εργαστήριο), δημιουργήστε ένα νέο project (empty workspace) και στη συνέχεια δημιουργήστε ένα νέο αρχείο για να γράψετε το πρόγραμμά σας (new C++ source file). Θα δώσετε ένα όνομα στο αρχείο που θα δημιουργήσετε για την 1 η εργαστηριακή άσκηση το οποίο θα έχει την επέκταση.cpp (π.χ. askisi1.cpp). Header files και η ντιρεκτίβα του προεπεξεργαστή (preprocessor) #include Δομή ενός προγράμματος σε C Εντολές προεπεξεργαστή Δηλώσεις συναρτήσεων Δηλώσεις μεταβλητών Κυρίως πρόγραμμα Ορισμοί συναρτήσεων Κυρίως Πρόγραμμα int main ( ) - δηλώσεις μεταβλητών - προτάσεις γλώσσας Είσοδος δεδομένων Επεξεργασία δεδομένων Έξοδος αποτελεσμάτων Συναρτήσεις εισόδου/εξόδου π.χ. printf( αλφαριθμητικό ); Δρ. Ελπινίκη Παπαγεωργίου 2

3 Χρήση σχολίων και αναγνωσιμότητα προγράμματος /* Εισαγωγή σχολίων στο πρόγραμμα σας είναι απαραίτητη για τον Καλό /* /* Προγραμματισμό! */ Γράφοντας το πρώτο πρόγραμμα σε C: Hello world! Είστε έτοιμοι να γράψετε το παρακάτω πρόγραμμα το οποίο εκτυπώνει στην οθόνη το μήνυμα Hello world! /* Display the message "Hello world!" on the screen */ int main () printf("hello world!\n"); Σώστε το αρχείο με όνομα hello_world.cpp στο φάκελο που φτιάξατε γι'αυτό το εργαστήριο. Στη συνέχεια μεταγλωττίστε (compile) και εκτελέστε (execute) το πρώτο πρόγραμμά σας. Αν δεν υπάρχουν λάθη, ο compiler θα παράγει ένα εκτελέσιμο πρόγραμμα. Τι παρατηρείτε??? Ασκηση Γράψτε ένα πρόγραμμα το οποίο κάνει το εξής: Εκτυπώνει στην οθόνη το Όνομα και το Επιθετό σας, τον ΑΜ σας και το Τμήμα στο οποίο ανήκετε, σε διαφορετικές γραμμές το καθένα με την χρήση του \n. Δρ. Ελπινίκη Παπαγεωργίου 3

4 2 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Εξάσκηση στη βασική είσοδο / έξοδο Εξάσκηση στη δήλωση και χρήση μεταβλητών Αναγνώριση και διόρθωση τυπικών συντακτικών και σημασιολογικών λαθών Ανοίξτε το περιβάλλον προγραμματισμού της C (π.χ. Microsoft Visual C++). Δημιουργήστε ένα κενό αρχείο (π.χ. lab2.cpp). Σε αυτό θα γράψετε το πρόγραμμά σας. ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ (scanf/printf) Είσοδος Δεδομένων (& τελεστής διεύθυνσης) Εντολή/Συνάρτηση scanf: scanf ( <προσδιοριστής>, &<μεταβλητή>); Είσοδος ακεραίων: scanf ( %d, &num); Είσοδος πραγματικών: scanf ( %f, &num); Προσδιοριστές: %f, %e, %g Είσοδος χαρακτήρων: scanf ( %c, &ch); % - Κωδικός μορφοποίησης Άλλοι κωδικοί: %c για χαρακτήρες και %f για αριθμούς κινητής υποδιαστολής Εξοδος αποτελεσμάτων: Εντολή/Συνάρτηση printf: printf ( <περιγραφή>, <ακολουθία μεταβλητών>); Έξοδος ακεραίων: printf ( %d, num); Προσδιοριστές: %d, %x, %o Έξοδος πραγματικών: printf ( %f, num); Προσδιοριστές: %f, %e, %g Έξοδος χαρακτήρων: printf ( %c, ch); (χαρακτήρας) printf ( %d, ch); (Κωδικός ASCII) Προσδιοριστές: %c, %d Προσδιοριστές μορφής εκτύπωσης Οθόνης: \t, \n Αριθμών: %<ακέρ><προσδιορ> (καθορισμός πλάτους πεδίου). Π.χ. %3d %[<ακέρ>][.<ακέρ>]<προσδιορ> (καθορισμός πλάτους πεδίου και δεκαδικών ψηφίων). Π.χ. %6.1f, %.2f, %6f ΔΗΛΩΣΗ ΜΕΤΑΒΛΗΤΩΝ & ΕΚΧΩΡΗΣΗ ΤΙΜΩΝ Κάθε μεταβλητή, σταθερά έχει ένα τύπο Δρ. Ελπινίκη Παπαγεωργίου 4

5 τύπος όνοµα-µεταβλητής; Τύπος Δεσµευµένη λέξη χαρακτήρας char προσηµασµένος ακέραιος int αριθµός κινητής υποδιαστολής float αριθµός κινητής υποδιαστολής διπλής ακρίβειας double απουσία τιµής void Ο τύπος καθορίζει το μέγεθος του «κουτιού» που θα δεσμευτεί στη μνήμη char: 1 byte int: 4 bytes float: 4 bytes double: 8 bytes Προσδιοριστές short int: 2 bytes long int: 8 bytes long double:.. bytes Προσδιοριστές: signed, unsigned unsigned int, unsigned char 32 bits, 8 bits , signed int, signed char 31 bits, 7 bits , Πολλαπλή δήλωση μεταβλητών Π.χ. float x, y, z; Ονοματολογία μεταβλητών όμοια με συναρτήσεις (0-9 όχι στην αρχή, γράμματα αλφαβήτου και κάτω παύλα) Η C είναι case-sensitive Π.χ. int count, COUNT; Eκχώρηση τιμών (αποτελεί εντολή): όνομα-μεταβλητής = τιμή; Παράδειγματα: counter = 100; fl = 100.1; fl = 100.0; Κάτι ακόμα για τη συνάρτηση εξόδου printf() printf("this prints the number %d", 99); printf("this displays %d, too", 99); Δρ. Ελπινίκη Παπαγεωργίου 5

6 Παράδειγµα 1 char ch; int i; float f; double d; ch= A ; i=10; f=100.1; d=150.2; printf("ch is %c, ", ch); printf("i is %d, ", i); printf("f is %f, ", f); printf("d is %f.", d); ΕΙΣΟΔΟΣ ΑΡΙΘΜΩΝ ΑΠΟ ΤΟ ΠΛΗΚΤΡΟΛΟΓΙΟ scanf( %d, &όνομα-μεταβλητής-int); Π.χ. int num; scanf("%d", &num); scanf( %f, &όνομα-μεταβλητής-float); Π.χ. float fl; scanf("%f", &fl); scanf( %lf, &όνομα-μεταβλητής- double); Π.χ. double dbl; scanf("%lf", &dbl); Παράδειγµα 2 int num; float f; double d; printf("enter an integer: "); scanf("%d", &num); printf("enter a floating point number: "); scanf("%f", &f); printf("enter a floating point number (double): "); scanf("%lf", &d); printf("%d ", num); printf("%f ", f); printf("%f", d); Δρ. Ελπινίκη Παπαγεωργίου 6

7 ΑΡΙΘΜΗΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ -Αριθµητικοί τελεστές της C Η C ορίζει ένα εκτεταμένο σύνολο αριθμητικών τελεστών: Προτεραιότητα Υψηλότερη ( ) * / % Χαµηλότερη + - Παράδειγμα 3: printf("%d", 5/2); printf(" %d", 5%2); printf(" %d", 4/2); printf(" %d", 4%2); Παράδειγµα 4 /* Αυτό είναι ένα πρόγραµµα υπολογισµού του όγκου σφαίρας όταν δίνεται η ακτίνα της. */ float pi, r, v; /* δήλωση µεταβλητών */ pi = ; /* ο αριθµός π */ printf("enter radius: "); scanf("%f", &r); /* είσοδος της ακτίνας */ v=(4.0 * pi * r * r * r) / 3.0 ; /* υπολογισµός όγκου */ printf("volume is %f", v); /* εµφάνιση αποτελέσµατος */ Εντολή Return Στην εντολή return, η συνάρτηση επιστρέφει (τερματίζει) αμέσως. Καμία εντολή μετά δεν εκτελείται. Η τιμή της return μπορεί να είναι οποιαδήποτε έγκυρη έκφραση της C. Xωρίς τιμή η Return ; Κυρίως σε συναρτήσεις τύπου void. Δρ. Ελπινίκη Παπαγεωργίου 7

8 Ασκήσεις στο Εργαστήριο 1. Λήψη δυο ακέραιων θετικών αριθμών από το πληκτρολόγιο, έστω a και b, και εμφάνιση της διαφοράς (a-b) και του γινομένου (a b). 2. Γράψτε ένα πρόγραµµα το οποίο θα υπολογίζει τον όγκο ενός ορθογώνιου παραλληλεπίπεδου. Το πρόγραµµα σας θα πρέπει να ζητά τις διαστάσεις του ορθογώνιου από τον χρήστη. Χρησιµοποιήστε σχόλια για να εξηγήσετε την ροή του προγράµµατος. 3. Γράψτε ένα πρόγραμμα το οποίο κάνει τα εξής: Εκτυπώνει στην οθόνη το μήνυμα How many students are there in a lab? Διαβάζει από το πληκτρολόγιο το πλήθος των φοιτητών ενός εργαστηρίου. Εκτυπώνει στην οθόνη το μήνυμα How many labs are there? Διαβάζει από το πληκτρολόγιο το πλήθος των εργαστηρίων. Εκτυπώνει στην οθόνη το μήνυμα There are X labs and Y students in a lab, όπου X είναι το πλήθος των φοιτητών και Υ το πλήθος των εργαστηρίων. Εκτυπώνει στην οθόνη το μήνυμα There are Z students total., όπου Ζ είναι το γινόμενο του πλήθους των φοιτητών επί του πλήθους των εργαστηρίων. Παρατηρείστε πως για να λειτουργήσει το πρόγραμμά σας θα χρειαστεί να δηλώσετε κατάλληλες μεταβλητές. Φροντίστε οι μεταβλητές σας να έχουν περιγραφικά ονόματα όπως περιγράφεται στις σημειώσεις του μαθήματος. Επιπλέον, το πρόγραμμά σας πρέπει να έχει σωστή στοίχιση και σχόλια. Το πρόγραμμά σας πρέπει να μεταγλωτίζεται χωρίς λάθη ή προειδοποιήσεις και να εκτελείται ακριβώς όπως περιγράφεται πιο πάνω. Δρ. Ελπινίκη Παπαγεωργίου 8

9 3 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Σχεσιακοί και Λογικοί Τελεστές Κατανόηση των εντολών if (συνθήκη) εντολή1 else εντολή2 και των μακροεντολών getchar(); putchar(); Ενθεση εντολών If Σχεσιακοί και λογικοί τελεστές Σχεσιακοί τελεστές της C Τελεστής Ενέργεια > µεγαλύτερο από >= µεγαλύτερο από ή ίσο µε < µικρότερο από <= µικρότερο από ή ίσο µε == ίσο µε!= άνισο (διάφορο) Λογικοί τελεστές της C Τελεστής Ενέργεια && AND OR! NOT Προτεραιότητα σχεσιακών και λογικών τελεστών Υψηλότερη! > >= < <= ==!= && Χαµηλότερη ΠΑΡΑΔΕΙΓΜΑΤΑ ΛΟΓΙΚΩΝ & ΣΧΕΣΙΑΚΩΝ ΤΕΛΕΣΤΩΝ Παράδειγμα: p=0, q=1 p&&q=0, p q=1,!p=1 Παράδειγµα 1 int xor(int a, int b); int p, q; printf("enter P (0 or 1): "); scanf("%d", &p); printf("enter Q (0 or 1): "); scanf("%d", &q); printf("p AND Q: %d\n", p && q); printf("p OR Q: %d\n", p q); printf("p XOR Q: %d\n", xor(p, q)); Δρ. Ελπινίκη Παπαγεωργίου 9

10 int xor(int a, int b) return (a b) &&!(a && b); if(έκφραση) εντολή; Έλεγχος της ροής εκτέλεσης των προγραμμάτων (IF) if(έκφραση) εντολή1; else εντολή2; αν η έκφραση είναι true ( 0) η εντολή θα εκτελεστεί αν η έκφραση είναι false (=0) η εντολή θα αγνοηθεί if(έκφραση) εντολή1; εντολή2; τµήµα κώδικα (code block) : εντολήν; else εντολή1; εντολή2; το τµήµα else είναι προαιρετικό : εντολήμ; Παράδειγµα 2 int num1, num2; printf("enter first number: "); scanf("%d", &num1); printf("enter second number: "); scanf("%d", &num2); if(num2 == 0) printf("cannot divide by zero."); else printf("answer is: %d.", num1 / num2); Παράδειγµα 3: Έστω µία µη συνεχής συνάρτηση που ορίζεται µε το παρακάτω τµήµα κώδικα. float f(float x) float value; if(x < 0) value = - x; else value = x; return value; Δρ. Ελπινίκη Παπαγεωργίου 10

11 Είσοδος χαρακτήρων από το πληκτρολόγιο Η getchar() χρησιμοποιεί line buffer και αναμένει το Enter για να επιστρέψει τον χαρακτήρα. char ch; ch = getchar(); printf(" you typed: %c", ch); H getche() χωρίς temp line character buffer επιστρέφει αμέσως τον χαρακτήρα (conio.h) Παράδειγµα 4 int a, b; char ch; printf("do you want to:\n"); printf("add, Subtract, Multiply, or Divide?\n"); printf("enter first letter: "); ch = getchar(); printf("\nenter first number: "); scanf("%d", &a); printf("enter second number: "); scanf("%d", &b); if(ch=='a') printf("%d", a+b); if(ch=='s') printf("%d", a-b); if(ch=='m') printf("%d", a*b); if(ch=='d' && b!=0) printf("%d", a/b); Παράδειγµα 5 #include <conio.h> char ch; printf("enter a character: "); ch = getche(); printf("\nits ASCII code is %d", ch); #include <conio.h> γιατί το αρχείο conio.h περιέχει το πρωτότυπο της συνάρτησης getche(). Ένθεση εντολών if (ή φωλιασμένα if) Η δεύτερη if είναι ένθετη (nested) µέσα στην πρώτη. Κλίµακα if-else-if if(έκφραση) εντολή; else if(έκφραση) εντολή; else if(έκφραση) εντολή; : : else εντολή; Δρ. Ελπινίκη Παπαγεωργίου 11

12 Παράδειγµα 6 int a, b; char ch; printf("do you want to:\n"); printf("add, Subtract, Multiply, or Divide?\n"); printf("enter first letter: "); ch = getchar(); printf("\nenter first number: "); scanf("%d", &a); printf("enter second number: "); scanf("%d", &b); if(ch=='a') printf("%d", a+b); else if(ch=='s') printf("%d", a-b); else if(ch=='m') printf("%d", a*b); else if(ch=='d' && b!=0) printf("%d", a/b); Ασκήσεις 1. Να γίνει ένα πρόγραμμα που να διαβάζει έναν χαρακτήρα από το πληκτρολόγιο και να εμφανίζει τον αντίστοιχο αριθμό ASCII σε δεκαδική, οκταδική και δεκαεξαδική μορφή. 2. Τι αποτελέσματα δίνουν οι παρακάτω πράξεις; x = 1+2*3+10/4; y = (7/3-2)*5; z = (7.0/2-2)*4; w = 2*4-16%5+2-2/3; 3. Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει έναν ακέραιο, να ελέγχει αν είναι άρτιος ή περιττός (μονός ή ζυγός) και να εμφανίζει το αντίστοιχο μήνυμα. 4. Να γίνει ένα πρόγραμμα το οποίο να δέχεται μια χρονολογία από το πληκτρολόγιο να διαπιστώνει αν το έτος αυτό είναι δίσεκτο ή όχι και να επιστρέφει το κατάλληλο μήνυμα. 5. Να γίνει ένα πρόγραμμα που θα ζητάει από το χρήστη να πληκτρολογήσει το ύψος του σε εκατοστά του μέτρου και ανάλογα με αυτό θα του επιστρέφει έναν χαρακτηρισμό σύμφωνα με τις παρακάτω συνθήκες: ύψος < 150 Είσαι κοντός 150 ύψος 180 Είσαι μέτριος 180 < ύψος Είσαι ψηλός [με απλά και με φωλιασμένα if] 6. Γράψτε ένα πρόγραμμα το οποίο θα υπολογίζει το εμβαδόν ενός κύκλου, ενός ορθογωνίου ή ενός τριγώνου. Χρησιμοποιήστε μία κλίμακα if-else-if. Δρ. Ελπινίκη Παπαγεωργίου 12

13 4 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Κατανόηση της εντολής for (αρχικοποίηση; συνθήκη; βήμα) Εντολή switch Κατανόηση των βρόχων while and do-while ΧΡΗΣΗ ΤΗΣ for for (αρχικοποίηση; συνθήκη; βήμα) π.χ. for(count=1; count<11; count++) εντολές; Παράδειγµα int answer, count; int again; for(count=1; count<11; count++) printf("what is %d + %d? ", count, count); scanf("%d", &answer); if(answer == count+count) printf("right!\n"); else printf("sorry, you're wrong\n"); printf("try again.\n "); printf("\nwhat is %d + %d? ", count, count); scanf("%d", &answer); if(answer == count+count) printf("right!\n"); else printf("wrong, the answer is %d\n", count+count); ΟΙ ΠΑΡΑΛΛΑΓΕΣ ΤΟΥ ΒΡΟΧΟΥ for /*Συνθήκη ελέγχου*/ int i; char ch = 'a'; /* give ch an initial value */ for(i=0; ch!= 'q'; i++) printf("pass: %d\n", i); ch = getchar(); /*Κενό προορισμό*/ Δρ. Ελπινίκη Παπαγεωργίου 13

14 char ch; for (ch=getchar(); ch!='q'; ch=getchar()); printf("found the q."); //ΠΡΟΓΡΑΜΜΑ που εκτυπώνει το χαρακτήρα που θα δίνετε κάθε φορά, μέχρι 10 //φορές int i; char ch; for(i=0; i<10; ch=getchar()) printf("dwse ena xaraktira ); ch = getchar(); printf( o xarakthras einai %c, ch); i=i+1; Χρήση της switch Πολλαπλές εναλλακτικές επιλογές µε την switch switch(µεταβλητή) case σταθερά1: αλληλουχία εντολών break; case σταθερά2: αλληλουχία εντολών break; : : default: αλληλουχία εντολών break; Η σταθερά είναι ακέραιος ή χαρακτήρας. Η χρήση της default και break είναι προαιρετική. switch (choice) case 1: x = a + b; break; case 2: x = a b; break; case 3: x = a * b; break; case 4: x = a / b; Δρ. Ελπινίκη Παπαγεωργίου 14

15 break; default: printf ( Ανύπαρκτη επιλογή ); break; Παράδειγµα int a, b; char ch; printf("do you want to:\n"); printf("add, Subtract, Multiply, or Divide?\n"); printf("enter first letter: "); ch = getchar(); printf("\n"); printf("enter first number: "); scanf("%d", &a); printf("enter second number: "); scanf("%d", &b); switch(ch) case 'A': printf("%d", a+b); break; case 'S': printf("%d", a-b); break; case 'M': printf("%d", a*b); break; case 'D': if(b!=0) printf("%d", a/b); while (<εκφραση>) πρόταση while (count<limit) count++; printf( count is %d\n,count); < επόμενη πρόταση> do πρόταση while(<εκφραση>) do count++; printf( count is %d\n,count); while (count<limit) <επόμενη πρόταση> ΒΡΟΧΟΙ WHILE ΚΑΙ DO-WHILE Παράδειγµα Δρ. Ελπινίκη Παπαγεωργίου 15

16 #include <conio.h> char ch; printf("enter your message.\n"); ch = getche(); while(ch!= '\r') printf("%c", ch+1); ch = getche(); Τι θα εκτυπώσει το παραπάνω πρόγραμμα? Παράδειγµα int total, i, j; total = 0; do printf("enter next number (0 to stop): "); scanf("%d", &i); printf("enter number again: "); scanf("%d", &j); if(i!= j) printf("mismatch\n"); continue; total = total + i; while(i); printf("total is %d\n", total); Ασκήσεις για λύση 1. Να φτιάξετε πρόγραμμα που να διαβάζει το μέσο όρο βαθμολογίας(μο) ενός σπουδαστή στα ΤΕΙ και αν είναι σωστός (0<=ΜΟ<=10) να εμφανίζει: FAIL αν 0<=ΜΟ<5 GOOD αν 5<=ΜΟ<6,5 VERY GOOD αν 6,5<=ΜΟ<8,5 EXCELLENT αν 8,5<=ΜΟ<10 Αλλιώς να εμφανίζει το μήνυμα «WRONG GRADE 2. Με το νέο σύστημα πληρωμής των διοδίων, οι οδηγοί των τροχοφόρων έχουν τη δυνατότητα να πληρώνουν το αντίτιμο των διοδίων µε ειδική μαγνητική κάρτα. Υποθέστε ότι υπάρχει μηχάνημα το οποίο διαθέτει είσοδο για την κάρτα και φωτοκύτταρο. Το μηχάνημα διαβάζει από την κάρτα το υπόλοιπο των χρημάτων και το αποθηκεύει σε µία μεταβλητή Υ και, µε το φωτοκύτταρο, αναγνωρίζει τον τύπο του τροχοφόρου και το αποθηκεύει σε µία μεταβλητή Τ. Δρ. Ελπινίκη Παπαγεωργίου 16

17 Υπάρχουν τρεις τύποι τροχοφόρων: δίκυκλα (D), επιβατικά (E) και φορτηγά (F), µε αντίτιμο διοδίων 1, 2 και 3 ευρώ αντίστοιχα. Να αναπτύξετε πρόγραμμα, το οποίο: α. ελέγχει τον τύπο του τροχοφόρου και εκχωρεί στη μεταβλητή Α το αντίτιμο των διοδίων, ανάλογα µε τον τύπο του τροχοφόρου β. ελέγχει την πληρωμή των διοδίων µε τον παρακάτω τρόπο. Αν το υπόλοιπο της κάρτας επαρκεί για την πληρωμή του αντιτίμου των διοδίων, αφαιρεί το ποσό αυτό από την κάρτα. Αν η κάρτα δεν έχει υπόλοιπο, το μηχάνημα ειδοποιεί µε μήνυμα για το ποσό που πρέπει να πληρωθεί. Αν το υπόλοιπο δεν επαρκεί, μηδενίζεται η κάρτα και δίνεται µε μήνυμα το ποσό που απομένει να πληρωθεί. 3. Να γίνει ένα πρόγραμμα το οποίο θα ζητάει ακέραιους αριθμούς μέχρι να λάβει την τιμή 0 (μηδέν). Γι αυτούς τους αριθμούς (με εξαίρεση του μηδενός) θα υπολογίζει το άθροισμα, το πλήθος και τη μέση τιμή. Επίσης θα επιστρέφει την τιμή του μεγαλύτερου και του μικρότερου. 4. Δημιουργήστε ένα πρόγραμμα που να τυπώνει την προπαίδεια όλων των ακεραίων από το 1 μέχρι το Να γίνει ένα πρόγραμμα που θα γεμίζει ένα γραμμικό πίνακα ακεραίων 10 στοιχείων, με τιμές από το πληκτρολόγιο και θα τον εμφανίζει σε μια γραμμή. [με for και με do while] 6. Να γίνει ένα πρόγραμμα που θα γεμίζει ένα γραμμικό πίνακα ακεραίων 15 στοιχείων, με τυχαίες τιμές [με την βοήθεια της random]. Κατόπιν, να ζητάει ένα ακέραιο από το πληκτρολόγιο, να υπολογίζει και να αποθηκεύει σε έναν άλλο πίνακα το γινόμενο του πρώτου πίνακα με τον ακέραιο αυτό και τέλος να εμφανίζει στην οθόνη τον αρχικό πίνακα και τον πίνακα του γινομένου σε μια γραμμή τον καθένα. 7. Να φτιάξετε πρόγραμμα που να διαβάζει έναν ακέραιο αριθμό Ν και να εμφανίζει στην οθόνη ένα δέντρο με Ν γραμμές από αστεράκια. Π.χ. αν Ν=4 θα πρέπει να εμφανίζεται το παρακάτω σχήμα: * *** ***** ******* Παρατήρηση: Η ι-οστή γραμμή έχει Ν-ι κενά και 2*ι-1 αστεράκια Δρ. Ελπινίκη Παπαγεωργίου 17

18 5 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Επανάληψη στη χρήση των δομών ελέγχου Χρήση Πινάκων (arrays) Επαναληπτική άσκηση στις δομές ελέγχου Γράψτε ένα πρόγραμμα το οποίο θα χρησιμοποιηθεί για τη διαχείριση των βαθμών στο εργαστήριο ενός μαθήματος. Γνωρίζουμε ότι το εργαστήριο έχει 10 φοιτητές και ότι οι βαθμοί είναι πραγματικοί αριθμοί μεταξύ 0 και 100. Το πρόγραμμά σας πρέπει να κάνει τα εξής: Ορίζει ένα πίνακα στον οποίο θα αποθηκευτούν οι βαθμοί Διαβάζει από το πληκτρολόγιο τους βαθμούς των φοιτητών και τους αποθηκεύει στον πίνακα Εκτυπώνει τους βαθμούς στην οθόνη, έναν σε κάθε γραμμή (με 2 δεκαδικά ψηφία) #include<stdio.h> #define CLASS_SIZE 10 int main (int argc, char *argv[]) double scores[class_size]; char doaverage; int i; double sum, average; /* read data */ for (i=0; i < CLASS_SIZE; i++) printf("enter score: "); scanf("%lf", &scores[i]); if (scores[i] < 0 scores[i] > 100) printf("error: Invalid value.\n"); return (1); /* print data */ for (i=0; i < CLASS_SIZE; i++) printf("%6.2f\n", scores[i]); /* request to compute average */ do printf("compute average? (y/n)"); scanf(" %c", &doaverage); while (doaverage!= 'y' && doaverage!= 'n'); /* compute and display average, if requested */ if (doaverage == 'y') sum = 0; for (i=0; i<class_size; i++) sum += scores[i]; average = sum / CLASS_SIZE; printf("%.2f\n", average); Δρ. Ελπινίκη Παπαγεωργίου 18

19 Συνέχεια άσκησης για το εργαστήριο Προσθέστε κώδικα στο πρόγραμμά σας ώστε να Για κάθε βαθμό που διαβάζει, ελέγχει ότι είναι μεταξύ 0 και 100. Αν κάποιος βαθμός δεν είναι εντός τον ορίων, το πρόγραμμα εκτυπώνει το μήνυμα "Error: Invalid grade" και τερματίζει. Αφού εκτυπώσει τους βαθμούς, εκτυπώνει το μήνυμα "Compute average? (y/n)" και διαβάζει την απάντηση του χρήστη η οποία πρέπει να είναι είτε ο χαρακτήρας 'y' είτε ο χαρακτήρας 'n'. Αν η απάντηση είναι οποιοσδήποτε άλλος χαρακτήρας, το πρόγραμμα ξαναρωτά έως ότου δοθεί έγκυρη απάντηση. Αν η απάντηση ήταν 'y', υπολογίζει και εκτυπώνει το μέσο όρο των βαθμών, διαφορετικά τερματίζει. Πίνακες 'Ενας πίνακας (array) στη C είναι ένας αριθμός από ομοειδή δεδομένα στο καθένα από τα οποία μπορούμε να αναφερθούμε με το όνομα του πίνακα και τον αύξοντα αριθμό του μέσα στον πίνακα (array). Για να δηλώσουμε έναν πίνακα χρησιμοποιούμε μία δήλωση της μορφής: τύπος_δεδομένου όνομα[πλήθος_στοιχείων]; τύπος όνομα_πίνακα[μέγεθος] int pinakas[10]; Π.χ. float bathmos[5]; Αρχικοποίηση πίνακα float bathmos[5]= 10, 8, 12.5, 15.5, 14; float bathmos[] = 10, 8, 12.5, 15.5, 14; (προσοχή στο πλήθος των αρχικών τιμών) Το πλήθος_στοιχείων θα πρέπει να είναι ακέραια σταθερά (μεγαλύτερη του μηδενός) ή σταθερή έκφραση. Ο πίνακας είναι μια δομή τυχαίας προσπέλασης. Δρ. Ελπινίκη Παπαγεωργίου 19

20 bathmos Δείκτες θέσεων bathmos[0] bathmos[1] bathmos[4] Μεταβλητές με δείκτες Δείκτης θέσης Με τον όρο αναφορά εννοούμε ότι μπορούμε να χρησιμοποιήσουμε την τιμή του στοιχείου σε μία έκφραση (π.χ. όνομα[2] + 6) ή να αλλάξουμε την τιμή του μέσω μιας έκφρασης-εκχώρησης (π.χ. όνομα[2] = 14;). 'Ενα array μπορεί, όπως και μία μεταβλητή, να αρχικοποιείται, μόνο όμως όταν η δήλωσή του βρίσκεται έξω από κάθε συνάρτηση, δεν μπορούμε δηλαδή να αρχικοποιήσουμε ένα array το οποίο δηλώνεται ως τοπικό δεδομένο σε μία συνάρτηση ή σε μία σύνθετη εντολή. Υλοποιήστε στον επεξεργαστή της C τα ακόλουθα παραδείγματα: Παράδειγμα 1 int a1[10], a2[10]; int i; for(i=1; i<11; i++) a1[i-1] = i; for(i=0; i<10; i++) a2[i] = a1[i]; for(i=0; i<10; i++) printf("%d ", a2[i]); /*Άσκηση: Αντιγραφή και αντεστραμμένα*/ Παράδειγμα 2 /* Να καταχωρηθούν ακέραιες τιμές σ έναν πίνακα 10 θέσεων και να βρεθεί η μέγιστη και η ελάχιστη τιμή του πίνακα καθώς και η μεταξύ τους διαφορά */ main() int i, a[10], max, min; clrscr(); /* καταχώρηση τιμών */ for (i=0; i<10; i++) Δρ. Ελπινίκη Παπαγεωργίου 20

21 printf("\nδώσε το %dο στοιχείο του πίνακα : ", i); scanf("%d", &a[i]); /* end of for */ max = a[0]; min = a[0]; for (i=1; i<10; i++) if (a[i] > max) max = a[i]; if (a[i] < min) min = a[i]; /* end of for */ printf("\nη μέγιστη τιμή του πίνακα είναι : %d", max); printf("\nη ελάχιστη τιμή του πίνακα είναι : %d", min); printf("\nη διαφορά μέγιστης και ελάχιστης τιμής είναι : %d", \ max-min); scanf("%d", &i); /* end of main */ Παράδειγμα 3 /*Δώστε τον αριθμό των ημερών της εβδομάδας για τις οποίες θέλετε να καταγράψετε τις θερμοκρασίες. Καταχωρήστε τις θερμοκρασίες σε πίνακα και υπολογίστε τη μέση θερμοκρασία, την ελάχιστη και τη μέγιστη. */ int temp[31], i, min, max, avg; int days; printf("how many days in the month? "); scanf("%d", &days); for(i=0; i<days; i++) printf("enter noonday temperature for day %d: ", i+1); scanf("%d", &temp[i]); /*Μέσος όρος*/ avg = 0; for(i=0; i<days; i++) avg = avg + temp[i]; printf("average temperature: %d\n", avg/days); /*Ελάχιστο/Μέγιστο*/ min = 200; /* initialize min and max */ max = 0; for(i=0; i<days; i++) if(min>temp[i]) min = temp[i]; if(max<temp[i]) max = temp[i]; printf("mini/max temperature: %d\n %d\n", min, max); Παράδειγμα 4: /*Γράψτε ένα πρόγραμμα σε C που να διαβάζει τον βαθμό και την τάξη από 20 μαθητές, να ελέγχει αν ο βαθμός ανήκει στο διάστημα 0-20 και αν η τάξη είναι μία από τις a, b ή c - μόλις διαβάσει τα στοιχεία ενός μαθητή, τοποθετεί τον βαθμό του σ έναν αντίστοιχο πίνακα ανάλογα με την τάξη που ανήκει ο μαθητής */ Δρ. Ελπινίκη Παπαγεωργίου 21

22 main() int bathmos, i; char taxi; int ia, ib, ic; /* μετρητές για τις τρεις τάξεις */ int a[20], b[20], c[20]; /* πίνακες βαθμών για κάθε τάξη */ ia=ib=ic=0; /* απόδοση τιμών σε πολλές μεταβλητές μαζί */ clrscr(); for (i=0; i<20; i++) do printf("\nδώσε τον βαθμό του %dου μαθητή : ", i); scanf("%d", &bathmos); while (bathmos < 0 bathmos > 20); do printf("\nδώσε την τάξη του %dου μαθητή : ", i); scanf("%c", &taxi); while (taxi!= a && taxi!= b && taxi!= c ); switch (taxi) case a : a[ia] = bathmos; ia++; break; case b : b[ib] = bathmos; ib++; break; case c : c[ic] = bathmos; ic++; break; default: printf("\n Κάτι δεν πήγε καλά"); /* end of switch */ /* end of for */ scanf("%d", &i); /* end of main */ Ασκήσεις για λύση 1. Να γίνει πρόγραμμα που αφού δέχεται σαν δεδομένους δύο πίνακες a και b, 10 ακεραίων ο καθένας, να υπολογίζει και αποθηκεύει σε δύο άλλους πίνακες ath και diaf το άθροισμα και την διαφορά τους αντίστοιχα. 2. Να δημιουργήσετε ένα αρχείο κειμένου με 12 πραγματικούς αριθμούς που αντιστοιχούν στις μέσες θερμοκρασίες ενός τόπου ανά μήνα. Στη συνέχεια να γίνει πρόγραμμα που αφού διαβάζει και αποθηκεύει αυτές τις θερμοκρασίες σε ένα πίνακα Δρ. Ελπινίκη Παπαγεωργίου 22

23 να υπολογίζει την μέση τιμή, την τυπική απόκλιση και την διασπορά αυτών των τιμών. 3. Να γίνει πρόγραμμα που αφού δέχεται σαν δεδομένους δύο πίνακες a και b, 10 ακεραίων ο καθένας, να τους ταξινομεί με την μέθοδο της φυσαλίδας και στη συνέχεια να τους ενοποιεί ταξινομημένα προς ένα τρίτο νέο πίνακα 20 θέσεων. Δρ. Ελπινίκη Παπαγεωργίου 23

24 6 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Εξοικείωση στη χρήση συναρτήσεων (ορισμός και κλήση συναρτήσεων) Κατανόηση της αναδρομής και του τρόπου δημιουργίας αναδρομικών συναρτήσεων ΣΥΝΑΡΤΗΣΕΙΣ Συνάρτηση (function): σύνολο εντολών που έχει ομαδοποιηθεί και τους έχει αποδοθεί ένα όνομα Κλήση (calling) : η εκτέλεση των εντολών της συνάρτησης που έχει κληθεί Ορίσματα (arguments): οι παραστάσεις που επιτρέπουν στο καλούν πρόγραμμα να μεταβιβάζει πληροφορία στη συνάρτηση π.χ. printf( Hello, World); Επιστροφή (returning): η επάνοδος στο καλούν πρόγραμμα μετά το τέλος εκτέλεσης των εντολών της συνάρτησης Επιστροφή τιμής (returning value): H επιστροφή κάποιας τιμής στο καλούν πρόγραμμα μετά το τέλος εκτέλεσης εντολών μιας συνάρτησης π.χ. n1 = GetInteger(); Δήλωση συναρτήσεων (πριν τη main) Πρωτότυπο Συνάρτησης (function prototype) επιστρεφόμενος_τύπος όνομα(όρισμα 1, όρισμα 2,...) επιστρεφόμενος_τύπος: ο τύπος δεδομένων της τιμής που επιστρέφει η συνάρτηση όνομα: το όνομα της συνάρτησης όρισμα: τύπος δεδομένων και όνομα μεταβλητής που μεταβιβάζεται ως όρισμα από το καλούν πρόγραμμα στη συνάρτηση void ορίζει ότι μια συνάρτηση δεν επιστρέφει κάποια τιμή ή δεν δέχεται κάποιο όρισμα π.χ. void function1(int a); π.χ. int function2(void); Ορισμός Συνάρτησης (μετά τη main) Για κάθε μη ενσωματωμένη (δική μας) συνάρτηση πρέπει να ορίσουμε το σώμα της στο πρόγραμμα (μετά την main) <τύπος> (<όνομα - συν> (<παράμετροι>); <δηλώσεις τοπικών μεταβλητών> <προτάσεις> return(παράσταση); παράσταση: η τιμή που επιστρέφει η συνάρτηση στο καλούν πρόγραμμα return; αν η συνάρτηση δεν επιστρέφει κάποια τιμή ο επιστρεφόμενος τύπος είναι void Δρ. Ελπινίκη Παπαγεωργίου 24

25 Κλήση Συνάρτησης (μέσα στη main) Καλείται η συνάρτηση για εκτέλεση με συγκεκριμένα ορίσματα <όνομα συν> (<παραμ1>, <παραμ2>,, <παραμν>); Τρόπος Χρήσης Συναρτήσεων main () int a, b; f(a,b); /* καθορίζω τα δεδομένα πάνω στα οποία θα γίνει η επεξεργασία */ void f(int x, int y) /* στον ορισμό της συνάρτησης αυτά τα δεδομένα έχουν καθοριστεί γενικά Παράδειγμα: Συνάρτηση Υπολογισμού Δύναμης int power(int m, int n); main() int i, res; for (i=0; i<10; i++) res = power (2, i); printf( %d %d \n, i, res); int power(int base, int n) int i, p; p =1; for (i =1; i <=n; i++) p = p*base; return p; /* να καταχωρούνται τιμές σε τρεις ακέραιες μεταβλητές και μετά να καλείται μια συνάρτηση που θα υπολογίζει τη μεγαλύτερη τιμή */ main() int a, b, c; int max; int maximum(); /* εδώ δηλώνουμε τις συναρτήσεις που θα χρησιμοποιήσει το πρόγραμμα - μια συνάρτηση επιστρέφει μία και μόνο μία τιμή στο όνομά της και όταν την δηλώνουμε, γράφουμε πριν από το όνομά της τον τύπο δεδομένων της, τον τύπο δεδομένων δηλ. της τιμής που επιστρέφει */ clrscr(); Δρ. Ελπινίκη Παπαγεωργίου 25

26 printf("\nδώσε τον πρώτο αριθμό : "); scanf("%d", &a); printf("\nδώσε τον δεύτερο αριθμό : "); scanf("%d", &b); printf("\nδώσε τον τρίτο αριθμό : "); scanf("%d", &c); max = maximum(a, b, c); /* καλείται η συνάρτηση */ printf("\nη μεγαλύτερη τιμή είναι : ", max); scanf("%d", &a); /* end of main */ /* εδώ γράφουμε τις εντολές της συνάρτησης */ int maximum(a1, b1, c1) int a1, b1, c1; /* τα a1, b1 και c1 είναι τα ορίσματα της συνάρτησης, αλλά είναι και τοπικές μεταβλητές και εδώ δηλώνεται ο τύπος δεδομένων τους */ int max1; max1=a1; if (b1>max1) max=b1; if (c1>max1) max=c1; return max1; /* end of sum() */ /* να καταχωρούνται τιμές σε μια ακέραια μεταβλητή και σε μια μεταβλητή χαρακτήρα και μετά να καλείται μια συνάρτηση τύπου void που θα εκτυπώνει τον χαρακτήρα τόσες φορές όσο είναι η τιμή της ακέραιας μεταβλητής - εκμάθηση των συναρτήσεων τύπου void */ main() int a; char ch; void ektyp(); /* μια συνάρτηση τύπου void δεν επιστρέφει καμία τιμή ή επηρεάζει δύο ή περισσότερες τιμές στο κυρίως πρόγραμμα και όταν τη δηλώνουμε, γράφουμε πριν από το όνομά της τη λέξη void */ clrscr(); printf("\nδώσε τον αριθμό : "); scanf("%d", &a); printf("\nδώσε τον χαρακτήρα : "); scanf("%c", &ch); ektyp(a, ch); /* μια συνάρτηση τύπου void καλείται με απλή αναγραφή του ονόματός της και των ορισμάτων της */ scanf("%d", &a); /* end of main */ void ektyp(a1, ch1) int a1; char ch1; Δρ. Ελπινίκη Παπαγεωργίου 26

27 int i; for (i=1; i<=a1; i++) printf(ch); /* μια συνάρτηση τύπου void δεν έχει εντολή return */ /* end of ektyp() */ Αναδρομικές Συνάρτησεις Ορισμός συνάρτησης μέσω κλήσης του εαυτού της Μία τεχνική επίλυσης προβλημάτων Π.χ. εύρεση αθροίσματος n - Κλασσική λύση int sum (int n) s=0; for (i=1; i<=n; i++) s=s+i; return s; Αναδρομική λύση sum(n) = sum (n-1) + n int sum (int n) if (n<=1) return n; Else return (sum(n-1)+n); Ασκήσεις Συνάρτηση υπολογισμού του παραγοντικού ενός ακεραίου Συνάρτηση υπολογισμού αθροίσματος, διαφοράς και γινομένου δύο αριθμών. Υπολογισμός ύψωσης δύναμης ακεραίου σε μη αρνητικό ακέραιο Υπολογισμός ν-οστού όρου ακολουθίας Fibonacci 1. Να γίνει ένα πρόγραμμα το οποίο να ζητάει έναν ακέραιο από το πληκτρολόγιο, έστω το n, και να επιστρέφει στην οθόνη το n-παραγοντικό (n!). Ο υπολογισμός του παραγοντικού να γίνει σε ξεχωριστή συνάρτηση πρώτα μη αναδρομικά και κατόπιν αναδρομικά. 2. Να γίνει μια αναδρομική συνάρτηση για την ύψωση ενός ακεραίου σε έναν άλλο και να συγκριθεί με τις προηγούμενες συναρτήσεις που έκαναν τους ίδιους υπολογισμούς σε μη αναδρομική μορφή. Επίσης, να γίνει πρόγραμμα που να την χρησιμοποιεί. (δοκιμάστε και με αρνητικό εκθέτη) 3. Να γίνει μία συνάρτηση, με αναδρομική μορφή, που να υπολογίζει και να επιστρέφει την τιμή του ν-οστού όρου της ακολουθίας του Fibonacci. Κατόπιν, να γραφεί πρόγραμμα που να την χρησιμοποιεί. Δρ. Ελπινίκη Παπαγεωργίου 27

28 7 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Χρήση αλφαριθμητικών (strings) ΑΛΦΑΡΙΘΜΗΤΙΚΑ 'Ενα αλφαριθμητικό (string) στη C είναι στην πραγματικότητα μία σειρά από χαρακτήρες των οποίων το τέλος υποδηλώνεται από την ύπαρξη του χαρακτήρα '\0'. Μία σταθερά τύπου string ορίζεται όπως έχουμε ήδη δει (συμβολισμός "..."), ενώ για να δηλώσουμε μία μεταβλητή τύπου string θα τη δηλώσουμε ως array χαρακτήρων. Το μέγεθος του array θα είναι το μέγιστο πλήθος χαρακτήρων που θέλουμε να χωράνε στο array συν ένα για το χαρακτήρα '\0'. 'Ετσι η δήλωση char my_string[50]; δηλώνει τη μεταβλητή my_string που χωράει 49 κανονικούς χαρακτήρες και το '\0'. Μία δήλωση μεταβλητής τύπου string μπορεί να έχει και αρχικοποίηση (με τους περιορισμούς που προαναφέρθησαν). Αυτή μπορεί να γίνει: με τον -πιο εύχρηστο- συμβολισμό char str[20] = "Hello"; Παρατηρούμε ότι δεν είναι απαραίτητο να βάλουμε το χαρακτήρα '\0', γιατί αυτό το κάνει ο compiler. 'Οπως και στους άλλους πίνακες έτσι και στα strings μπορούμε σε μία αρχικοποιημένη δήλωση να παραλείψουμε το πλήθος στοιχείων του array και ο compiler θα το συμπεράνει από την έκφραση που χρησιμοποιείται για να γίνει η αρχικοποίηση. Εκτύπωση printf ( Hello ); printf ( Ο αριθμός είναι: %s\n, str); Εισαγωγή scanf ( %s, str); ή scanf ( %s, &str[0]); *διαβάζει μέχρι το πρώτο κενό *προσοχή στην υπέρβαση του μεγέθους Παράδειγμα: #define MAX_CHARS 80 main () char str[max_chars]; int i; printf( Δώσε αλφαριθμητικό: ); scanf( %s, str); for (i = 0; i < 10; i++) printf( %s\n, str); Δρ. Ελπινίκη Παπαγεωργίου 28

29 Δεδομένου ότι τα strings είναι πίνακες δεν μπορούμε να χρησιμοποιήσουμε σ' αυτά τελεστές για να ελέγξουμε την ισότητα, να εκχωρήσουμε την τιμή ενός string σε κάποιο άλλο, κ.ο.κ. Για να κάνουμε αυτές τις λειτουργίες θα πρέπει να χρησιμοποιήσουμε συναρτήσεις που παρέχονται στη βασική βιβλιοθήκη της γλώσσας C. #include <string.h>. Οι πιο συχνά χρησιμοποιούμενες από αυτές είναι: α) strcpy(char str1[], char str2[]), η οποία αντιγράφει το string str2 στο string str1. Μετά την κλήση της συνάρτησης δηλαδή το str1 θα έχει τους ίδιους χαρακτήρες με το str2. β) strncpy(char str1[], char str2[], int n), με την οποία αντιγράφουμε το πολύ n χαρακτήρες από το str2 στο str1. Η συνάρτηση αυτή χρησιμοποιείται όταν δεν είμαστε βέβαιοι ότι το str1 έχει αρκετό χώρο διαθέσιμο για να αποθηκεύσει όλους τους χαρακτήρες που περιέχονται στο str2. 'Ετσι τη συνάρτηση strncpy θα τη χρησιμοποιούσαμε σε κάποια περίπτωση όπως η πιο κάτω: char str1[20], str2[50];... strncpy(str1, str2, 19); Η strncpy ενδέχεται να μην προσθέσει το χαρακτήρα '\0' στο τέλος του str1 αν το str2 έχει περισσότερους χαρακτήρες από n (εξαρτάται από την υλοποίηση του compiler). Για να είναι ασφαλής έτσι μία κλήση στη strncpy θα πρέπει να ακολουθείται από την εντολή str1[n] = '\0' γ) strcat(char str1[], char str2[]) με την οποία προσθέτουμε στο τέλος του string str1 το string str2. 'Ετσι, αν το str1 έχει την τιμή "Hello " και το str2 την τιμή "there!" τότε μετά την κλήση της strcat το str1 θα έχει την τιμή "Hello there!". Το str1 θα πρέπει να έχει αρκετό χώρο για να αποθηκεύσει τους έξτρα χαρακτήρες δ) strncat(char str1[], char str2[], int n) με την οποία προσθέτουμε το πολύ n χαρακτήρες του str2 στο τέλος του str1, το οποίο πρέπει να έχει αρκετό χώρο για να αποθηκεύσει τους έξτρα χαρακτήρες. Στο νέο τέλος του str1 προστίθεται ο χαρακτήρας '\0'. ε) size_t strlen(char s[]) η οποία επιστρέφει το πλήθος των χαρακτήρων που περιέχει το string s (ο χαρακτήρας '\0' δεν υπολογίζεται). Ο τύπος size_t ορίζεται από τον C compiler με βάση ήδη υπάρχοντες τύπους. συνήθως ορίζεται ως int ή unsigned int και είναι απόλυτα ασφαλές να εκχωρήσουμε το αποτέλεσμα της strlen (ή οποιασδήποτε άλλης συνάρτησης ή τελεστή επιστρέφει τύπο size_t) σε μία μεταβλητή τύπου int ή unsigned int στ) int strcmp(char str1[], char str2[]) που επιστρέφει έναν ακέραιο μικρότερο από το μηδέν αν το str1 είναι μικρότερο από το str2, 0 αν τα strings είναι ίσα και έναν ακέραιο μεγαλύτερο από το μηδέν αν το str1 είναι μεγαλύτερο από το str2. Η σύγκριση στα strings γίνεται με λεξικογραφική σειρά, συγκρίνονται δηλαδή χαρακτήρα προς χαρακτήρα μέχρι να βρεθεί κάποιος διαφορετικός ή να φτάσουμε στο τέλος του ενός string. Αν έχει βρεθεί διαφορετικός χαρακτήρας τότε το string στο οποίο ανήκει ο μικρότερος από τους δύο χαρακτήρες είναι το μικρότερο. Αν φτάσουμε στο τέλος του ενός string, τότε αν ταυτόχρονα Δρ. Ελπινίκη Παπαγεωργίου 29

30 φτάσαμε στο τέλος του άλλου string, τα strings είναι ίσα. αν όχι, τότε το string στο τέλος του οποίου φτάσαμε είναι το μικρότερο. ζ) int strncmp(char str1[], char str2[], int n) η οποία είναι αντίστοιχη της strcmp με τη διαφορά ότι συγκρίνονται το πολύ n χαρακτήρες από τα strings η) int atoi(char s[]) η οποία μας επιστρέφει την ακέραια τιμή που αναπαριστά το string s. Αν, π.χ. το s έχει τιμή "1201" η atoi(s) θα επιστρέψει τον ακέραιο Δεν μπορούμε να επιτύχουμε το ίδιο αποτέλεσμα με το συμβολισμό (int)s. Το s μπορεί να περιέχει πρόσημο και κενά πριν και μετά από αυτό θ) long atol(char s[]) η οποία μας επιστρέφει την τύπου long τιμή που αναπαριστά το string s. Ισχύουν οι ίδιες παρατηρήσεις με την atoi. ι) double atof(char s[]) που μας επιστρέφει την τύπου doyble τιμή που περιέχεται στο string s. Το s μπορεί να περιέχει οποιαδήποτε αναπαράσταση μιας double σταθεράς. Παράδειγμα 1 main() char str[50]; int i=0; gets(str); while (str[i]!= '\0') i++; printf("mikos %d", i); Παράδειγμα 2 #include <string.h> main() char str[256]; int n, en1, en2, i; gets(str); n = en1 = en2 = i = 0; while (str[i]!= '\0') if (str[i] >='0' && str[i] <= '9') n++; else if (str[i] >= 'a' && str[i] <= 'z') en1++; else if (str[i] >= 'A' && str[i] <= 'Z') en2++; Δρ. Ελπινίκη Παπαγεωργίου 30

31 i++; printf("ari8moi %d Mikra %d Kefalaia %d", n, en1, en2); char names[10][40]; Ένας πίνακας με10 αλφαριθμητικά, καθένα με 40 χαρακτήρες (με null). Γιά προσπέλαση καθορίζουμε μόνο τον αριστερότερο δείκτη στοιχείου. πχ. Για το 3 ο αλφαριθμητικό names[2], για το 1ο printf(names[0]). Παράδειγμα 3 #include <string.h> char str1[80], str2[80]; int i; printf("enter the first string: "); printf("enter the second string: "); gets(str1); gets(str2); printf("%s is %d chars long\n", str1, strlen(str1)); printf("%s is %d chars long\n", str2, strlen(str2)); i = strcmp(str1, str2); if(!i) printf("the strings are equal.\n"); else if(i<0) printf("%s is less than %s\n", str1, str2); else printf("%s is greater than %s\n", str1, str2); if(strlen(str1) + strlen(str2) < 80) strcat(str1, str2); printf("%s\n", str1); strcpy(str1, str2); printf("%s %s\n", str1, str2); Ασκηση σε αλφαριθμητικά και πίνακες Γράψτε μια συνάρτηση stringsearch η οποία παίρνει ως παραμέτρους μια συμβολοσειρά μήκους το πολύ 20 και ένα χαρακτήρα και επιστρέφει τη θέση στη συμβολοσειρά όπου εμφανίζεται για πρώτη φορά ο χαρακτήρας (ξεκινώντας απο το 0), ή -1 αν αυτός δεν εμφανίζεται στη συμβολοσειρά. Απαγορεύεται η χρήση συναρτήσεων από το string.h Γράψτε μια συνάρτηση main η οποία: διαβάζει από το πληκτρολόγιο μια συμβολοσειρά και ένα χαρακτήρα, χρησιμοποιεί την stringsearch για να βρεί τη θέση του χαρακτήρα στη συμβολοσειρά, αν αυτός υπάρχει, εκτυπώνει τη θέση του, αν αυτός δεν υπάρχει, εκτυπώνει σχετικό μήνυμα. Δρ. Ελπινίκη Παπαγεωργίου 31

32 #include<stdio.h> #define SIZE 20 int stringsearch (char word[], char letter); int main (int argc, char *argv[]) char word[size]; char letter; int position; printf("enter word: "); scanf("%19s", word); printf("enter letter: "); scanf(" %c", &letter); position = stringsearch(word,letter); if ( position == -1) printf(" '%c' does not appear in \"%s\"\n", letter, word); else printf(" '%c' appears at position %d in \"%s\"\n", letter, position, word); int stringsearch (char word[], char letter) int i; for (i=0; word[i]!= '\0'; i++) if (word[i] == letter) return i; return -1; Ασκήσεις για λύση 1. Να γίνει μια συνάρτηση που να δέχεται μια φράση σαν όρισμα και να επιστρέφει αν είναι καρκινική ή όχι (επιστρέφοντας μη μηδενικό ακέραιο ή μηδέν αντίστοιχα). Στην συνέχεια να γραφεί πρόγραμμα που να την χρησιμοποιεί. Σας υπενθυμίζουμε ότι καρκινική φράση ή παλίνδρομο λέγεται η φράση που μπορεί να διαβαστεί και ανάποδα (π.χ. "ΑΝΝΑ", "radar", "aman a plan a canal panama", το τελευταίο αφού εξαλειφθούν οι χαρακτήρες κενού διαστήματος). 2. Να γίνει ένα πρόγραμμα το οποίο να περιέχει μια συνάρτηση η οποία θα επιστρέφει το μήκος ενός string s (μην χρησιμοποιήσετε την strlen που υπάρχει στο string.h, φτιάξτε μια δικιά σας). Επίσης, να περιέχει κι άλλη συνάρτηση για αντιστροφή του αλφαριθμητικού s στη θέση του. Δρ. Ελπινίκη Παπαγεωργίου 32

33 8 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Κατανόηση Δεικτών Κατανόηση Δεικτών σε αλφαριθμητικά ΔΕΙΚΤΕΣ Μεταβλητές οι οποίες περιέχουν την διεύθυνση αντικειμένων στην μνήμη «Η p δείχνει στην q», αν η p περιέχει τη διεύθυνση της q. τύπος *όνομα-μεταβλητής; π.χ. int *p; Τελεστές δεικτών: *(τιμή της διεύθυνσης), &(διεύθυνση της μεταβλητής) Όνομα διάταξης χωρίς δείκτη στοιχείου (index) ~ ουσιαστικά παράγεται δείκτης (pointer) ο οποίος δείχνει στην αρχή της διάταξης. Η C δεν επιτρέπει να περάσετε μια διάταξη ως όρισμα σε μία συνάρτηση, αλλά επιτρέπει το πέρασμα ενός δείκτη προς την διάταξη Π.χ. Η συνάρτηση gets() Παράδειγμα 1 int *p, q; p = &q; /* get q's address */ /* assign q a value using a pointer */ *p = 199; printf("q's value is %d", q); int *p; *p = 10; /* incorrect - p is not pointing to anything */ Παράδειγμα 2 char *cp, ch; int *ip, i; Δρ. Ελπινίκη Παπαγεωργίου 33

34 float *fp, f; double *dp, d; cp = &ch; ip = &i; fp = &f; dp = &d; printf("%p %p %p %p\n", cp, ip, fp, dp); float balance[10][5]; float *p; p = (float *) balance; *(p + (3*5) + 1) Δείκτες σε αλφαριθμητικά /* Να χρησιμοποιήσετε το ακόλουθο απόσπασμα κώδικα για να εκτυπώνετε ένα αλφαριθμητικό */ char str[] = "Pointers are fun"; char *p; int i; p = str; for(i=0; p[i]; i++) printf("%c", p[i]); Παράδειγμα 3 #include <string.h> char str1[] = "Pointers are fun to use"; char str2[80], *p1, *p2; /* make p point to end of str1 */ p1 = str1 + strlen(str1) - 1; p2 = str2; while(p1 >= str1) *p2++ = *p1--; /* null terminate str2 */ *p2 = '\0'; printf("%s %s", str1, str2); Δρ. Ελπινίκη Παπαγεωργίου 34

35 Παράδειγμα 4 char *p[][2] = "Red Delicious", "red", "Golden Delicious", "yellow", "Winesap", "red", "Gala", "reddish orange", "Cortland", "red", "Jonathan", "red", "", "" /* terminate the table with null strings */ ; #include <string.h> int i; char apple[80]; printf("enter name of apple: "); gets(apple); for(i=0; *p[i][0]; i++) if(!strcmp(apple, p[i][0])) printf("%s is %s\n", apple, p[i][1]); Παράδειγμα 5 #include <string.h> char *p = "stop"; char str[80]; do printf("enter a string: "); gets(str); while(strcmp(p, str)); Παράδειγμα 6 Τι κάνει το παρακάτω πρόγραμμα?? char text[10][80]; int i; for(i=0; i<10; i++) Δρ. Ελπινίκη Παπαγεωργίου 35

36 printf("%d: ", i+1); gets(text[i]); do printf("enter number of string (1-10) : "); scanf("%d", &i); i--; /* adjust value to match array index */ if(i>=0 && i<10) printf("%s\n", text[i]); while(i>=0); Φτιάξτε προγράμματα στα οποία να αρχικοποιείτε ένα αλφαριθμητικό και να χρησιμοποιείτε τα παρακάτω κομμάτια κώδικα για κάθε περίπτωση. char *p = str; while (* str!= \0 ) str++; printf( %d, str p ); void strcpy(char *s, char *t) int i=0; while ((s[i]=t[i])!= \0 ) i++; void strcpy(char *s, char *t) while ((* s++=*t++)!= \0 ) ; /* να δημιουργηθεί ένας πίνακας ακεραίων 10 θέσεων, να καταχωρηθούν σ αυτόν τιμές με τη χρήση δεικτών και να κληθεί μια συνάρτηση τύπου void στην οποία θα περαστεί σαν όρισμα ο πίνακας και η συνάρτηση θα βρίσκει τη μεγαλύτερη τιμή και σε ποια θέση του πίνακα είναι - εκμάθηση της επεξεργασίας πίνακα με τη χρήση δεικτών και του περάσματος ενός πίνακα σαν όρισμα σε μια συνάρτηση */ main() int a[10]; /* Το όνομα ενός πίνακα είναι η διεύθυνση του 1ου στοιχείου του πίνακα, δηλ. ισχύει a == &a[0] και γενικά a+i == &a[i] */ int i; void maximum(); clrscr(); for (i=0; i<10; i++) printf("\nδώσε την %dη τιμή του πίνακα : ", i); scanf("%d", a+i); /* end of for */ maximum(a); Δρ. Ελπινίκη Παπαγεωργίου 36

37 /* Στη συνάρτηση περνάμε το όνομα του πίνακα, δηλ. τη διεύθυνση του 1ου στοιχείου του πίνακα που είναι στην ουσία ένας δείκτης σ ακέραιο */ scanf("%d", &i); /* end of main */ void maximum(a1) int *a1; /* Το a1 είναι δείκτης σ ακέραιο και με τη βοήθειά του έχουμε απευθείας πρόσβαση στα στοιχεία του πίνακα a[i] */ int max, i_max, i; /* Τα max και i_max είναι τοπικές μεταβλητές */ max = *a1; i_max = 0; for (i=1; i<10; i++) if (*(a1+i) > max) /* Το *(a1+i) = a1[i] = a[i] */ max = *(a1+i); i_max = i; /* end of for */ printf("\nη μεγαλύτερη τιμή είναι : %d και είναι στη θέση : %d", \ max, i_max); /* end of maximum() */ Ασκήσεις για Λύση 1. Nα γραφεί συνάρτηση με όνομα strcmp() που θα δέχεται δύο αλφαριθμητικά σαν είσοδο και θα επιστρέφει 0 αν τα δύο αλφαριθμητικά είναι ίσα, -1 αν το πρώτο αλφαριθμητικό είναι μικρότερο από το δεύτερο και 1 αν το πρώτο αλφαριθμητικό είναι μεγαλύτερο από το δεύτερο. (θα χρησιμοποιηθούν δείκτες). 2. Να φτιάξετε ένα πρόγραμμα το οποίο θα «διαβάζει» από το πληκτρολόγιο μία μεγάλη πρόταση και θα βγάζει τα εξής στοιχεία: Α) Από πόσες λέξεις αποτελείται η πρόταση; (Σημείωση: Οι λέξεις διαχωρίζονται από ένα ή και περισσότερα κενά) Β) Ποιά είναι η μικρότερη και ποια η μεγαλύτερη λέξη σε πλήθος χαρακτήρων; Σημείωση: Το πρόγραμμα να επιλυθεί αυστηρά με χρήση δεικτών (pointers). 3. Εάν έχει γίνει η δήλωση int i, j, *p, *q; Τότε ποια από τα παρακάτω είναι σωστά ποια όχι και γιατί; p = &i p = &*&i i = p q = &p q = &j i = (&)j i = *&*&j i = *p++ + *q 4. Να τροποποιηθεί η bubble sort ώστε η ανταλλαγή τιμών να γίνεται με χρήση συνάρτησης (call by reference). 5. Να γίνει πρόγραμμα με χρήση συνάρτησης που αφού δέχεται τις τιμές τριών μεταβλητών a, b, και c να μεταφέρει την τιμή του a στο b, του b στο c και του c στο a. Δρ. Ελπινίκη Παπαγεωργίου 37

38 9 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Κατανόηση δομών και typedef ΔΟΜΕΣ (STRUCTURES) Δομή είναι συλλογή από μία ή περισσότερες μεταβλητές, πιθανώς διαφορετικών τύπων, που ομαδοποιούνται με ένα μόνο όνομα. Οι δομές βοηθούν στην οργάνωση περίπλοκων δεδομένων: struct <ετικέτα δομής> <μέλη> struct Person char firstname[20]; char lastname[20]; char gender; int age; ; Δηλώσεις Μεταβλητών struct Person x; Πίνακας Δομών: struct Person people[40]; Άλλος δυνατός τρόπος: struct Person... x, people[40]; Αρχικοποίηση και Χρήση struct Person x = Μάκης, Ψ, Μ, 40; struct Person people[] = Μάκης, Ψ, Μ, 40, Κώστας, Α, Μ, 50; Χρήση: <όνομα δομή>.<μέλος> x.name x.age Δρ. Ελπινίκη Παπαγεωργίου 38

39 Εμφωλευμένες Δομές Οι δομές μπορεί να είναι αλληλένθετες, δηλαδή να φωλιάζονται η μια μέσα στην άλλη, δημιουργώντας πιο πολύπλοκες δομές: struct family struct Person father; struct Person mother; int numofchild; struct Person children[5]; ; Παράδειγμα εμφωλευμένης δομής struct family struct Person father; struct Person mother; int numofchild; struct Person children[5]; ; int main() struct Person x, y, z; struct family fml; fm1.numofchild = 2; strcpy(fml.father.firstname, Joe ); strcpy(fml.children[0].firstname, Marry ); Μεταβλητές τύπου δομής μπορούν να μεταβιβαστούν ως ορίσματα σε συναρτήσεις όπως επίσης και να επιστραφούν ως αποτελέσματα συναρτήσεων Μεταβίβαση ολόκληρης δομής ή δείκτη σε αυτή struct Person inc_age (struct Person x) x.age += 1; return x;... struct Person x1, x2; x2 = inc_age(x1); Παραδείγματα: /* να δημιουργηθεί μια δομή υπαλλήλου με τα εξής στοιχεία : επώνυμο, όνομα, ηλικία και μισθός και να καταχωρηθούν τιμές για 5 υπαλλήλους - να βρεθεί και να εκτυπωθεί το επώνυμο και το όνομα του υπαλλήλου που έχει Δρ. Ελπινίκη Παπαγεωργίου 39

40 τη μεγαλύτερη ηλικία καθώς και το επώνυμο και το όνομα του υπαλλήλου που έχει το μεγαλύτερο μισθό */ struct ypalilos char eponymo[15]; char onoma[10]; int age; long misthos; ; /* end of struct */ /* η δομή δηλώνεται πριν από τη main() και αποτελεί έναν νέο τύπο δεδομένων - μια δομή περιέχει πεδία, τα οποία μπορεί να είναι γνωστοί τύποι δεδομένων της C ή και άλλες δομές */ main() struct ypalilos ypal; /* η μεταβλητή ypal είναι του τύπου δεδομένων ypalilos, δηλ. είναι δομή (struct) */ int i, max_age, max_misthos; char max_age_eponymo[15]; /* το επώνυμο του υπαλλήλου που έχει τη μεγαλύτερη ηλικία */ char max_age_onoma[10]; /* το όνομα του υπαλλήλου που έχει τη μεγαλύτερη ηλικία */ char max_misthos_eponymo[15]; /* το επώνυμο του υπαλλήλου που έχει το μεγαλύτερο μισθό */ char max_misthos_onoma[10]; /* το όνομα του υπαλλήλου που έχει το μεγαλύτερο μισθό */ clrscr(); max_age=0; max_misthos=0; for (i=0; i<5; i++) printf("\nδώσε τα στοιχεία του %dου υπαλλήλου :", i); printf("\nεπώνυμο : "); scanf("%s", ypal.eponymo); printf("\nόνομα : "); scanf("%s", ypal.onoma); printf("\nηλικία : "); scanf("%d", &ypal.age); printf("\nμισθός : "); scanf("%ld", &ypal.misthos); printf("\n"); /* αφήνει μία σειρά κενή */ /* για να αποκτήσουμε πρόσβαση στα πεδία μιας δομής, γράφουμε το όνομα της δομής, μετά τελεία (.) και μετά το όνομα του πεδίου, π.χ. ypal.eponymo - τα πεδία μιας δομής αντιμετωπίζονται όπως όλοι οι τύποι δεδομένων της C */ if (ypal.age > max_age) Δρ. Ελπινίκη Παπαγεωργίου 40

41 max_age = ypal.age; strcpy(max_age_eponymo, ypal.eponymo); strcpy(max_age_onoma, ypal.onoma); /* η συνάρτηση strcpy() αντιγράφει τα περιεχόμενα του δεύτερου ορίσματός της, που είναι μια συμβολοσειρά χαρακτήρων, στο πρώτο όρισμά της - χρησιμοποιείται για να καταχωρούμε τιμές σε συμβολοσειρές χαρακτήρων */ if (ypal.misthos > max_misthos) max_misthos = ypal.misthos; strcpy(max_misthos_eponymo, ypal.eponymo); strcpy(max_misthos_onoma, ypal.onoma); /* end of for */ printf("\nο %s %s έχει τη μεγαλύτερη ηλικία : %d", \ max_age_eponymo, max_age_onoma, max_age); printf("\nο %s %s έχει το μεγαλύτερο βαθμό : %d", \ max_misthos_eponymo, max_misthos_onoma, max_misthos); /* end of main */ Ασκηση για την κατανόηση δομών Να γραφεί ένα πρόγραμμα, έστω το leather_store, το οποίο να ορίζει τον τύπο μιας δομής με τέσσερα μέλη: α) το όνομα ενός προϊόντος, β) τον κωδικό του, γ) την ποσότητα που βρίσκεται στην αποθήκη και δ) το κόστος του ανά τεμάχιο. Επίσης, να ορισθεί ένας γραμμικός πίνακας με Ν=500 (συμβολική σταθερά) στοιχεία, όπου το κάθε στοιχείο να είναι ίδιου τύπου με την παραπάνω δομή. Το πρόγραμμα θα πρέπει να περιέχει τις εξής συναρτήσεις: α) μια συνάρτηση για το γέμισμα του πίνακα με στοιχεία από την κονσόλα, β) μια συνάρτηση για την εκτύπωση του πίνακα υπό μορφή κατάστασης όπως στο παρακάτω παράδειγμα: Α/Α ΟΝΟΜΑ ΠΡΟΪΟΝΤΟΣ ΚΩΔΙΚΟΣ ΠΟΣΟΤΗΤΑ ΚΟΣΤΟΣ/ΤΕΜΑΧΙΟ Τσάντα δερμάτινη ,75 2 Βαλίτσα δερμάτινη ,90 3 και γ) μια συνάρτηση για την ταξινόμηση (με την μέθοδο bubble sort) του πίνακα σε αύξουσα διάταξη ως προς το πεδίο του κωδικού του προϊόντος. Το κυρίως πρόγραμμα θα καλεί τις παραπάνω συναρτήσεις με την εξής σειρά: α, β, γ, β. Δρ. Ελπινίκη Παπαγεωργίου 41

42 10 η Εργαστηριακή Ασκηση Προγραμματισμού Ι - Γλώσσα C Σκοπός: Κατανόηση δεικτών σε συναρτήσεις Κατανόηση δεικτών σε δομές ΔΕΙΚΤΕΣ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ Εκτός από pointers σε δεδομένα μπορούμε να ορίσουμε και pointers σε συναρτήσεις. 'Ενας pointer σε συνάρτηση ορίζεται με μία δήλωση της μορφής τύπος (*όνομα)(τ1, τ2,..., τν) Η πιο πάνω δήλωση ορίζει τον pointer όνομα που δείχνει σε μία συνάρτηση η οποία επιστρέφει κάποιο δεδομένο τύπου τύπος και δέχεται v παραμέτρους, η πρώτη από τις οποίες είναι τύπου τ1, η δεύτερη τ2, κ.ο.κ. Η λίστα των τύπων μέσα στις παρενθέσεις μπορεί να παραλειφθεί, αλλά είναι καλό να δίνεται προκειμένου να έχουμε έλεγχο τύπων των παραμέτρων κατά την κλήση της συνάρτησης. Οι παρενθέσεις που περιβάλουν το *όνομα είναι απαραίτητες γιατί ο συμβολισμός τύπος *όνομα(τ1, τ2,..., τν) δεν ορίζει pointer σε συνάρτηση, αλλά είναι το πρότυπο μιας συνάρτησης που ονομάζεται όνομα, επιστρέφει δεδομένο τύπου τύπος * (δηλ. pointer σε δεδομένα τύπου τύπος) και δέχεται v παραμέτρους, η πρώτη από τις οποίες είναι τύπου τ1, κ.λ.π. Για να ορίσουμε ότι κάποιος pointer σε συνάρτηση δείχνει σε κάποια συγκεκριμένη συνάρτηση χρησιμοποιούμε το συμβολισμό function_pointer = function_name; (όπου function_pointer είναι ένας pointer σε συνάρτηση και function_name το όνομα κάποιας συνάρτησης, χωρίς να ακολουθείται από παρενθέσεις. Φυσικά επιτρέπεται μία εκχώρηση της μορφής function_pointer1 = function_pointer2; Για να καλέσουμε τώρα μία συνάρτηση που δείχνεται από έναν pointer σε συνάρτηση χρησιμοποιούμε το συμβολισμό (*function_pointer)(p1, p2,..., pν); 'Οταν χρησιμοποιούμε το συμβολισμό αυτό θα πρέπει να είμαστε απόλυτα βέβαιοι ότι ο pointer function_pointer δείχνει σε κάποια συνάρτηση, αλλιώς τα αποτελέσματα θα είναι καταστροφικά. Στο πρόγραμμα του σχήματος 23 φαίνεται η συνάρτηση sum, που δέχεται δύο παραμέτρους a και b τύπου double και έναν pointer f σε συνάρτηση που δέχεται ως όρισμα έναν double και επιστρέφει έναν double. Η συνάρτηση πιστρέφει την τιμή του ορισμένου ολοκληρώματος από a έως b της συνάρτησης που δείχνεται από τον pointer f, υπολογισμένη κατά αριθμητικό τρόπο. Η συνάρτηση main() καλεί τη συνάρτηση sum() να υπολογίσει το ορισμένο ολοκλήρωμα της exp(x) (ex) από 0 έως 2 και του λογαρίθμου με βάση 10 (log10(x)) από 10 έως 20 και εκτυπώνει τα αποτελέσματα. #include <math.h> double sum(double a, double b, double (*f)(double)) double step = (b - a) / 100, value = 0.0; while (a < b) Δρ. Ελπινίκη Παπαγεωργίου 42

Τύποι Δεδομένων Είσοδος/Έξοδος

Τύποι Δεδομένων Είσοδος/Έξοδος Εργαστήριο 2 ο Τύποι Δεδομένων Είσοδος/Έξοδος Εισαγωγή Σκοπός του εργαστηρίου αυτού είναι η εισαγωγή μας στους τύπους δεδομένων της C και η εξοικείωση μας με συναρτήσεις του ρεπερτορίου της ANSI C σχετικές

Διαβάστε περισσότερα

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

Διαβάστε περισσότερα

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 10 η Αλφαριθμητικά Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

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

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια

Διαβάστε περισσότερα

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

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

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Εισαγωγή στον προγραμματισμό Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Δομή Προγράμματος Όλα τα προγράμματα που γράψαμε έχουν λίγο πολύ την ακόλουθη μορφή: Κάποιος κώδικας εδώ main( ) {

Διαβάστε περισσότερα

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

Διαβάστε περισσότερα

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τον ορισμό, τη δήλωση και τη χρήση των χαρακτήρων, συνεπώς και των αλφαριθμητικών, της Γλώσσας

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Υπολογισμός - Εντολές Ελέγχου

Υπολογισμός - Εντολές Ελέγχου Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Ελέγχου ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

Διαβάστε περισσότερα

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

Διαβάστε περισσότερα

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αλφαριθμητικά Αλφαριθμητικά (strings) Ένα αλφαριθμητικό είναι μια ακολουθία αλφαβητικών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 1 Εισαγωγή Ο προγραμματισμός είναι μια διαδικασία επίλυσης προβλημάτων με χρήση Η/Υ. Ένα πρόγραμμα είναι ένα σύνολο εντολών κάποιας γλώσσας προγραμματισμού,

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Πέμπτη (5 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/

Διαβάστε περισσότερα

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής:

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής: Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 3 ο Μέρος 3 ο Μέρος Παραστάσεις και Τελεστές Εντολή καταχώρησης Για να καταχωρήσουμε μία τιμή σε μια μεταβλητή χρησιμοποιούμε τον τελεστή καταχώρησης

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

Διαβάστε περισσότερα

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

Διαβάστε περισσότερα

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρμογή

C: Από τη Θεωρία στην Εφαρμογή Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) ΚΑΤΑΛΟΓΟΣ ΕΡΩΤΗΣΕΩΝ ΕΡΩΤΗΣΕΙΣ ΕΙ ΙΚΩΝ ΓΝΩΣΕΩΝ (γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές: Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εντολές ελέγχου ροής προγράμματος (if-else & switch) Η εντολή if-else Η εντολή if-else υπάρχει σχεδόν σε όλες τις γλώσσες προγραμματισμού. Χρησιμοποιείται για τον έλεγχο της

Διαβάστε περισσότερα

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Μορφές Εντολών Είδη εντολών Απλές εντολές Εκτελούν κάποια ενέργεια Εντολές ελέγχου Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές Εντολές και παραστάσεις Μιαεντολήείναιμιαπαράστασηπου ακολουθείται

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

Διαβάστε περισσότερα

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for) 4.1 Μετρητές Ένας μετρητής (counter) είναι μία μεταβλητή η οποία ξεκινά με μία αρχική τιμή και αυξάνεται κατά ένα κάθε φορά που εκτελείται. Ο αλγόριθμος για έναν μετρητή

Διαβάστε περισσότερα

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου (Διάλεξη 7) 1 Είσοδος/Έξοδος Σε σχεδόν όλα τα προγράμματα πρέπει να πάρουμε κάποια δεδομένα και να δώσουμε αποτέλεσμα Συνάρτηση εισόδου

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #5 2 Γενικά Στο Τετράδιο #5 του Εργαστηρίου θα ασχοληθούμε με πιο προχωρημένα θέματα υλοποίησης

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Σκοπός της Άσκησης ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραµµατισµού C: τη δοµή των προγραµµάτων της,

Διαβάστε περισσότερα

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

Διαβάστε περισσότερα

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

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

Διαβάστε περισσότερα

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. 58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο

Διαβάστε περισσότερα

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Αλφαριθμητικά θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι πίνακες στη C (μονοδιάστατοι -συμβολοσειρές) Γενικά για τους πίνακες Ο πίνακας είναι μια αρκετά διαδεδομένη δομή που προσφέρεται από σχεδόν κάθε γλώσσα προγραμματισμού. Πρόκειται

Διαβάστε περισσότερα

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου (Διάλεξη 7) 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράμματα πρέπει να πάρουμε κάποια δεδομένα και να δώσουμε αποτέλεσμα Συνάρτηση εισόδου

Διαβάστε περισσότερα

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

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

Διαβάστε περισσότερα

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1 ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

οµές (structures) και Eνώσεις (unions)

οµές (structures) και Eνώσεις (unions) οµές (structures) και Eνώσεις (unions) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: οµές, φωλιασµένες δοµές, τρόποι δήλωσης δοµών, δοµές ως παράµετροι σε συναρτήσεις, δείκτες σε δοµές, χρήση

Διαβάστε περισσότερα

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα