Η γλώσσα C. Προγραµµατισµός Ι 1

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

Download "Η γλώσσα C. Προγραµµατισµός Ι 1"

Transcript

1 Η γλώσσα C Προγραµµατισµός Ι lalis@inf.uth.gr 1

2 Περί C Είναι µια γλώσσα «προστακτικού» (imperative) προγραµµατισµού µε σχετικά λίγες εντολές. Έχει «αδύναµο» σύστηµα ελέγχου τύπων. Ηελάχιστηµονάδα υποπρογράµµατος (δόµησης κώδικα) είναι η συνάρτηση (function). Ένα πρόγραµµα Cµεταφράζεται και µετά εκτελείται. Υποστηρίζεται ξεχωριστή µετάφραση διαφορετικών υποπρογραµµάτων µε στατικήήδυναµική σύνδεση. Είναι ιδιαίτερα διαδεδοµένη, σε επίπεδο υλοποίησης λειτουργικών συστηµάτων αλλά και εφαρµογών. Οι γλώσσες C++ και Java είναι «απόγονοι» της C. Προγραµµατισµός Ι lalis@inf.uth.gr 2

3 Μορφοποίηση κειµένου Σχεδόν κάθε εντολή τερµατίζεται µε ';'. Μπορούµε να γράφουµε πολλές διαδοχικές εντολές στην ίδια γραµµή του κειµένου. Χρησιµοποιούµε τον όρο«σώµα» ή «µπλοκ» για να αναφερθούµε σεµιαήπερισσότερεςεντολέςπου δίνονται ανάµεσα σε '{' και ''. Σχόλια (κείµενο που δεν λαµβάνει υπ όψη του ο µεταφραστής) δίνονται ανάµεσα σε ' /*' και ' */'. Κενοί χαρακτήρες και γραµµές που βρίσκονται ανάµεσα σε εντολές δεν λαµβάνονται υπ όψη από τον µεταφραστή χρησιµεύουν, όπως και τα σχόλια, αποκλειστικά για την αναγνωσιµότητα του κώδικα. Προγραµµατισµός Ι 3

4 Ησυνάρτησηωςυποπρόγραµµα Ηκύριαµονάδα υποπρογράµµατος (δόµησης κώδικα σε ξεχωριστή οµάδα εντολών) είναι η συνάρτηση. Μια συνάρτηση µπορεί να βασίζεται σε άλλες συναρτήσεις, που µε τηνσειράτουςµπορεί να βασίζονται σε άλλες συναρτήσεις κλπ. Ησυνάρτησηmain (κυρίως συνάρτηση) καλείται από το περιβάλλον εκτέλεσης (λειτουργικό) γιανααρχίσει η εκτέλεση του προγράµµατος ανεξάρτητα από το αν το πρόγραµµα έχει και άλλες συναρτήσεις. Σηµείωση: αρχικά, για ευκολία, θα εστιάσουµε σε προγράµµατα που αποτελούνται µόνο από την main. Προγραµµατισµός Ι 4

5 Η µορφή της συνάρτησης main int main(int argc, char *argv[]) { <δηλώσεις µεταβλητών> <εντολές εισόδου, εξόδου, ελέγχου και εντολές επεξεργασίας µεταβλητών> Προγραµµατισµός Ι lalis@inf.uth.gr 5

6 #include <stdio.h> int main(int argc, char* argv[]) { printf("hello world\n"); το όνοµα του προγράµµατος µεταγλώτισης (compiler) το όνοµα του αρχείου µε τον κώδικα C το όνοµα του αρχείου όπου θα αποθηκευτεί ο κώδικας µηχανής >gcc myprog.c o myprog<enter> > >./myprog<enter> ακολουθεί το όνοµα του αρχείου hello world όπου πρέπει να αποθηκευτεί το > αποτέλεσµα (κώδικας µηχανής), µόνο αν η µετάφραση είναι επιτυχής Προγραµµατισµός Ι lalis@inf.uth.gr 6

7 #include <stdio.h> int main(int argc, char* argv[]) { putchar('h'); putchar('e'); putchar('l'); putchar('l'); putchar('o'); putchar(' '); putchar('w'); putchar('o'); putchar('r'); putchar('l'); putchar('d'); putchar('\n'); >./myprog<enter> hello world > Προγραµµατισµός Ι lalis@inf.uth.gr 7

8 #include <stdio.h> int main(int argc, char* argv[]) { putchar('5'); putchar(' '); putchar('+'); putchar(' '); putchar('2'); putchar(' '); putchar('='); putchar(' '); putchar('9'); putchar('\n'); >./myprog<enter> = 9 > Προγραµµατισµός Ι lalis@inf.uth.gr 8

9 Είσοδος / Έξοδος Προγραµµατισµός Ι lalis@inf.uth.gr 9

10 Εντολές εισόδου / εξόδου Οι εντολές εισόδου/εξόδου είναι ειδικές συναρτήσεις που βρίσκονται στην βιβλιοθήκη stdio που πρέπει να χρησιµοποιεί το πρόγραµµα (εντολή include). getchar: διαβάζει ένα (τον επόµενο) χαρακτήρα από τήν είσοδο του προγράµµατος (πληκτρολόγιο). putchar: γράφει ένα χαρακτήρα χαρακτήρα στην έξοδο του προγράµµατος (οθόνη). scanf: διαβάζει από την είσοδο χαρακτήρες και αναθέτει τιµές σε συγκεκριµένες µεταβλητές (διαβάζονται όσοι χαρακτήρες είναι απαραίτητοι). printf: εκτυπώνει στην έξοδο κείµενο καθώς και τιµές από συγκεκριµένες µεταβλητές. Προγραµµατισµός Ι lalis@inf.uth.gr 10

11 Οι συναρτήσεις putchar και getchar Η putchar εκτυπώνει ένα χαρακτήρα στην έξοδο και η getchar διαβάζει ένα (τον επόµενο) χαρακτήρα από την είσοδο του προγράµµατος. Χρησιµοποιούναι συνήθως όταν επιθυµούµε µια επεξεργασία της εισόδου / εξόδου χαρακτήρα προς χαρακτήρα (αντί της πιο προχωρηµένης επεξεργασίας που παρέχουν οι συναρτήσεις printf και scanf). Με τις putchar και getchar, ο προγραµµατιστής µπορεί να υλοποιήσει «δικές» του συναρτήσεις εισόδου/εξόδου, σύµφωνα µε την λειτουργικότητα που επιθυµεί. Προγραµµατισµός Ι lalis@inf.uth.gr 11

12 #include <stdio.h> int main(int argc, char* argv[]) { char c1,c2,c3; putchar('3'); putchar(' '); putchar('c'); putchar('h'); putchar('a'); putchar('r'); putchar('s'); putchar(':'); putchar('\n'); c1=getchar(); c2=getchar(); c3=getchar(); putchar(c1); putchar(c2); putchar(c3); putchar('\n'); >./myprog<enter> 3 chars: a2$<enter> a2$ > >./myprog<enter> 3 chars: a bcdefg<enter> a b > το πρόγραµµα δεν διαβάζει τα «επιπλέον» δεδοµένα αφού δεν υπάρχουν αντίστοιχες εντολές στον κώδικα Προγραµµατισµός Ι lalis@inf.uth.gr 12

13 Ησυνάρτησηprintf έχεται µια παράµετρο σε µορφή συµβολοσειράς από εκτυπώσιµους χαρακτήρες ASCII, και προαιρετικά έναν απεριόριστο αριθµό εκφράσεων αποτίµησης. Η πρώτη παράµετρος περιέχει (α) το κυριολεκτικό κείµενο προς εκτύπωση, και (β) τους προσδιορισµούς εκτύπωσης για τις τιµές κάθε µιαςέκφρασηςπου δίνεται ως επιπλέον παράµετρος. Για τις συµβάσεις των προσδιορισµών εκτύπωσης βλέπε (οπωσδήποτε) το εγχειρίδιο της γλώσσας! Σηµείωση: δεν ελέγχεται η αντιστοιχία ούτε και η συµβατότητα ανάµεσα στους προσδιορισµούς εκτύπωσης και στους τύπους των εκφράσεων αποτίµησης που δίνονται σαν παράµετροι. Προγραµµατισµός Ι 13

14 #include <stdio.h> int main(int argc, char* argv[]) { int a=1,b=2; printf("a is %d, b is %d and a+b is %d\n",a,b,a+b); >./myprog<enter> a is 1, b is 2 and a+b is 3 > Προγραµµατισµός Ι lalis@inf.uth.gr 14

15 Ησυνάρτησηscanf έχεται µια παράµετρο σε µορφή συµβολοσειράς από εκτυπώσιµους χαρακτήρες ASCII, και έναν απεριόριστο αριθµό διευθύνσεων µεταβλητών. Η πρώτη παράµετρος περιέχει τους προσδιορισµούς ανάγνωσης για τις τιµές κάθε µιας µεταβλητής η διεύθυνση της οποίας δίνεται ως παράµετρος. Για τις συµβάσεις των προσδιορισµών εκτύπωσης βλέπε (οπωσδήποτε) το εγχειρίδιο της γλώσσας! Σηµείωση: δεν ελέγχεται η αντιστοιχία ούτε και η συµβατότητα ανάµεσα στους προσδιορισµούς ανάγνωσης και στους τύπους των µεταβλητών αποτίµησης που δίνονται σαν παράµετροι. Προγραµµατισµός Ι 15

16 #include <stdio.h> int main(int argc, char* argv[]) { int a,b; printf("enter 2 int values: "); προσοχή: πάντα να υπάρχει το & πριν το όνοµα τηςµεταβλητής (επεξήγηση σε λίγο) scanf("%d %d",&a,&b); printf("a is %d and b is %d\n",a,b); >./myprog<enter> enter 2 int values: <enter> a is 5 and b is 10 > το πρόγραµµα δεν διαβάζει τα «επιπλέον» δεδοµένα αφού δεν υπάρχουν αντίστοιχες εντολές στον κώδικα Προγραµµατισµός Ι lalis@inf.uth.gr 16

17 Ανακατεύθυνση εισόδου / εξόδου Οι πράξεις εισόδου / εξόδου διαβάζουν / γράφουν από την είσοδο / έξοδο του προγράµµατος. Συνήθως η είσοδος αντιστοιχεί στο πληκτρολόγιο (µε εκτύπωση των χαρακτήρων που εισάγονται στην οθόνη) και η έξοδος στην οθόνη. Τόσο η είσοδος όσο και η έξοδος ενός προγράµµατος µπορούν να ανακατευθυνθούν, π.χ. σε αρχεία έτσι ώστε οι πράξεις εισόδου να διαβάζουν δεδοµένα από ένα αρχείο και οι πράξεις εξόδου να γράφουν δεδοµένα σε ένα αρχείο. Τα αρχεία που δίνονται για είσοδο πρέπει να είναι ASCII και τα αρχεία που δηµιουργούνται είναι ASCII. Προγραµµατισµός Ι lalis@inf.uth.gr 17

18 έξοδος είσοδος πρόγραµµα πρόγραµµα αρχείο αρχείο πρόγραµµα αρχείο πρόγραµµα αρχείο Προγραµµατισµός Ι 18

19 #include <stdio.h> int main(int argc, char* argv[]) { char c1,c2,c3; c1=getchar(); c2=getchar(); c3=getchar(); putchar(c1); putchar(c2); putchar(c3); διάβασµα abcd efgh αρχείο intxt γράψιµο abc αρχείο outtxt >./myprog < intxt<enter> abc> ανακατεύθυνση εισόδου >./myprog > outtxt<enter> abcdefghij<enter> > ανακατεύθυνση εξόδου Προγραµµατισµός Ι lalis@inf.uth.gr 19

20 Σχόλιο Όταν το πρόγραµµα φτάσει σε µια εντολή εισόδου (π.χ. getchar ή scanf) τότε η εκτέλεση σταµατά µέχρι να υπάρξουν δεδοµένα έτοιµα προς ανάγνωση. Αν τα δεδοµένα εισάγονται από το πληκτρολόγιο τότε οι χαρακτήρες «στέλνονται» στο πρόγραµµα αφού πατηθεί το πλήκτρο <enter> (µέσω του οποίου δηµιουργείται αυτόµατα και ο χαρακτήρας '\n'). Αν τα δεδοµένα εισόδου δίνονται µέσω ενός αρχείου (µε ανακατεύθυνση), και το πρόγραµµα επιχειρήσει να διαβάσει χωρίς να υπάρχουν άλλα δεδοµένα τότε επιστρέφεται η τιµή (σταθερά) EOF (end of file). Το πρόγραµµα πρέπει να κάνει κατάλληλο έλεγχο. Προγραµµατισµός Ι 20

21 Βιβλιοθήκη stdio Οι συναρτήσεις εισόδου/εξόδου υλοποιούνται στην βιβλιοθήκη stdio ηχρήσητηςοποίαςπρέπεινα δηλώνεται στην αρχή του προγράµµατος µε την εντολή #include<stdio.h> Εκτός των getchar, putchar, scanf, printf, υπάρχουν πολλές άλλες συναρτήσεις (που όµως δεν θα εξετάσουµε στοµάθηµα φυσικά µπορείτε να διαβάσετε µόνοι σας τα εγχειρίδια της γλώσσας). Περισσότερα για το τι είναι και πως φτιάχνεται µια βιβλιοθήκη προς το τέλος του µαθήµατος... Προγραµµατισµός Ι 21

22 Τύποι, Κυριολεκτικά, Μεταβλητές, Τελεστές, Μετατροπές Τύπων Προγραµµατισµός Ι 22

23 Βασικοί τύποι όνοµα τύπος / κωδικοποίηση µέγεθος char χαρακτήρας ASCII 1 int ακέραιος (2 s complement) 2(*) float πραγµατικός απλής ακριβείας 4 double πραγµατικός διπλής ακριβείας 8 void µη ύπαρξη τιµής (...) (*) Το µέγεθος του τύπου int εξαρτάται από την αρχιτεκτονική του επεξεργαστή (2 ή 4bytes). Προγραµµατισµός Ι lalis@inf.uth.gr 23

24 Προσδιορισµοί µεγέθους / πεδίου τιµών όνοµα τύποι / ερµηνεία µέγεθος short µικρό int 1(*) long µεγάλο int / double 4(*) / 16 όνοµα τύποι πεδίο signed int / char µε πρόσηµο [-2 Ν Ν-1-1] unsigned int / char χωρίς πρόσηµο [0...2 Ν -1] (*) Το µέγεθος του short/long int εξαρτάται από την αρχιτεκτονική του επεξεργαστή (1/4 ή 2/8 bytes). Όταν οι προσδιορισµοί χρησιµοποιούνται µόνοι τους τότε εννοείται ο τύπος int, και όταν δεν αναφέρεται προσδιορισµός για το πρόσηµο εννοείται signed. Προγραµµατισµός Ι lalis@inf.uth.gr 24

25 Πίνακας τύπων, µεγεθών και πεδίων τιµών unsigned char 1 byte char 1 byte unsigned int 2 bytes ,535 short int 2 bytes -32, ,767 int 2 bytes -32, ,767 unsigned long 4 bytes ,294,967,295 long 4 bytes -2,147,483, ,147,483,647 float 4 bytes * (10^-38) * (10^+38) double 8 bytes * (10^-308) * (10^+308) long double 16 bytes 3.4 * (10^-4932) * (10^4932) Προγραµµατισµός Ι lalis@inf.uth.gr 25

26 /* εκτύπωση µεγέθους βασικών τύπων */ #include <stdio.h> int main(int argc, char *argv[]) { printf("sizeof(char)=%d bytes\n",sizeof(char)); printf("sizeof(short)=%d bytes\n",sizeof(short); printf("sizeof(int)=%d bytes\n",sizeof(int)); printf("sizeof(long)=%d bytes\n", sizeof(long)); printf("sizeof(float)=%d bytes\n",sizeof(float)); printf("sizeof(double)=%d bytes\n",sizeof(double)); printf("sizeof(long double) = %d bytes\n", sizeof (long double)); printf("\n"); Προγραµµατισµός Ι lalis@inf.uth.gr 26

27 Κωδικοποίηση ακεραίων θέση unsigned: 1*2 7 +0*2 6 +1*2 5 +0*2 4 +1*2 3 +0*2 2 +1*2 1 +0*2 0 = = 170 signed: -1*2 7 +0*2 6 +1*2 5 +0*2 4 +1*2 3 +0*2 2 +1*2 1 +0*2 0 = = -86 Προγραµµατισµός Ι lalis@inf.uth.gr 27

28 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value hex binary value Α Β C D E F Προγραµµατισµός Ι lalis@inf.uth.gr 28

29 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value hex binary value Α Β C D E F Προγραµµατισµός Ι 29

30 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value Προγραµµατισµός Ι 30

31 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value hex binary value Α Β C D E F Προγραµµατισµός Ι 31

32 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value* / / / / / / / /135 hex binary value* / /137 8Α /138 8Β /139 8C /140 8D /141 8E /142 8F /141 (*) εξαρτάται από τον τύπο/κωδικοποίηση signed/unsigned Προγραµµατισµός Ι 32

33 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value* / / /146 / (*) εξαρτάται από τον τύπο/κωδικοποίηση signed/unsigned Προγραµµατισµός Ι lalis@inf.uth.gr 33

34 εκαεξαδική κωδικοποίηση ακεραίων (8 bits) hex binary value* F /240 F /241 F /242 F /243 F /244 F /245 F /246 F /247 hex binary value* F /248 F /249 FΑ /250 FΒ /251 FC /252 FD /253 FE /254 FF /255 (*) εξαρτάται από τον τύπο/κωδικοποίηση signed/unsigned Προγραµµατισµός Ι 34

35 Ερµηνεία δυαδικών δεδοµένων Το υλικό του Η/Υ δεν γνωρίζει την σηµασία των δεδοµένων που αποθηκεύονται στην µνήµη. Τα bits ερµηνεύονται µε βάση την κωδικοποίηση που αντιστοιχεί στον τύπο που έχει η µεταβλητή µέσω της οποίας προσπελαύνεται η µνήµη. Π.χ.: : 'a' (char) ή 193 (short) : -1 (short) ή 255 (unsigned short) Η ερµηνεία των περιεχοµένων της µνήµης πρέπει να γίνεται µε πλήρη επίγνωση και ιδιαίτερη προσοχή, έτσι ώστε να µην γίνονται σηµασιολογικά λάθη. Προγραµµατισµός Ι 35

36 ηλώσεις µεταβλητών Οι δηλώσεις µεταβλητών δίνονται πριν από (σχεδόν) όλες τις υπόλοιπες εντολές ενός προγράµµατος. Η µορφή των εκφράσεων δήλωσης είναι: <τύπος> <όνοµα> ; <τύπος> <όνοµα>,..., <όνοµα> ; <τύπος> <όνοµα> = <τιµή> ; Κάθε µεταβλητή (και συνάρτηση) πρέπει να έχει διαφορετικό όνοµα. Κατά την δήλωση της, µια µεταβλητή µπορεί προαιρετικάναλάβεικαιµια αρχική τιµή. Το πρόθεµα const σε συνδυασµό µε την ανάθεση αρχικής τιµής υποδηλώνει ότι η τιµή της µεταβλητής δεν θα αλλάξει κατά την διάρκεια της εκτέλεσης. Προγραµµατισµός Ι lalis@inf.uth.gr 36

37 char c; /* µεταβλητή χαρακτήρα µε όνοµα c */ short si=1; /* µεταβλητή µικρού ακεραίου µε όνοµα si και αρχική τιµή 1 */ const float pi=3.1415; /* µεταβλητή πραγµατικού αριθµού απλής ακριβείας µε όνοµα pi και σταθερή τιµή */ int c; /* µεταβλητή ακεραίου µε όνοµα c */ ο µεταφραστής θα διαµαρτυρηθεί, καθώς το όνοµα c χρησιµοποιείται Προγραµµατισµός Ι lalis@inf.uth.gr 37

38 Μεταβλητές και µνήµη Κατά την εκτέλεση του προγράµµατος, η δήλωση µιας µεταβλητής οδηγεί, στην δέσµευση αντίστοιχου χώρου µνήµης για την αποθήκευση των τιµών της. Ηδέσµευση µνήµης γίνεται όταν «ενεργοποιείται» ηδήλωσητηςµεταβλητής περισσότερα σε λίγο... Οι µεταβλητές ενός προγράµµατος καταλαµβάνουν (συνήθως) συνεχόµενες περιοχές µνήµης: εκεί που τελειώνει η περιοχή της µεταβλητής που δηλώθηκε πρώτη, αρχίζει η περιοχή της µεταβλητής που δηλώθηκε δέυτερη, κλπ. Σηµείωση: αυτό δεν ισχύει πάντα, καθώς εξαρτάται από την υλοποίηση του µεταφραστή ή/και του περιβάλλοντος εκτέλεσης της γλώσσας. Προγραµµατισµός Ι 38

39 char a; int b; float c; διεύθυνση περιεχόµενα Προγραµµατισµός Ι lalis@inf.uth.gr 39

40 Αποθήκευση ακεραίων στη µνήµη Οι τύποι short int, int και long int έχουν (συνήθως) µέγεθος αποθήκευσης πάνω από 1 byte. Με ποιά σειρά αποθηκεύονται τα bytes στην µνήµη; Σύστηµα big endian: τα πιο σηµαντικά bytes αποθηκεύονται στις µικρότερες θέσεις µνήµης. Σύστηµα little endian: τα λιγότερο σηµαντικά bytes αποθηκεύονται στις µικρότερες θέσεις µνήµης. Ο προγραµµατιστής δεν καταλαβαίνει τη διαφορά όσο χρησιµοποιεί κανονικές πράξεις πρόσβασης. Η διαφορά γίνεται αισθητή όταν κανείς χρησιµοποιεί γλώσσα µηχανής ή/και προσπελαύνει τα δεδοµένα που βρίσκονται στη µνήµη µε άµεσο τρόπο βλέπε επόµενα µαθήµατα... Προγραµµατισµός Ι lalis@inf.uth.gr 40

41 int a=1; 1 ο πιο «χαµηλό» byte 2 ο πιο «χαµηλό» byte little endian int a=1; big endian Προγραµµατισµός Ι lalis@inf.uth.gr 41

42 Τελεστής ανάθεσης Το σύµβολο της ανάθεσης είναι το = (προσοχή: το σύµβολο ισότητας είναι το ==). Η µορφή των προτάσεων ανάθεσης είναι: <όνοµα> = <έκφραση> 1. Αποτιµάται η έκφραση στο δεξί µέρος. 2. Η τιµή που παράγεται αποθηκεύεται στην µεταβλητή το όνοµα της οποίας δίνεται στο αριστερό µέρος. Σηµείωση: η έκφραση µπορεί να συµπεριλαµβάνει µεταβλητές, στην οποία περίπτωση επιστρέφεται ητιµή που έχει αποθηκευτεί στην µνήµη τους. Σηµείωση 2: στο δεξί µέρος µπορεί να εµφανίζεται ηίδιαµεταβλητή που εµφανίζεται και το αριστερό. Προγραµµατισµός Ι lalis@inf.uth.gr 42

43 Τελεστής ανάθεσης (2) Η ανάθεση αποτελεί µια έκφραση αποτίµησης που επιστρέφει την τιµή που ανατίθεται! Μια έκφραση ανάθεσης µπορεί να χρησιµοποιηθεί ως τµήµα άλλων, πιο πολύπλοκων εκφράσεων. Π.χ. επιτρέπονται εκφράσεις «αλυσιδωτής» ανάθεσης τιµών (από δεξιά προς τα αριστερά), όπου όλες οι µεταβλητές παίρνουν την τιµή πουεµφανίζεται στο δεξί µέρος. Προγραµµατισµός Ι 43

44 int i,j,k; i = 1; /* i γίνεται 1 */ j = 1+1; /* j γίνεται 2 */ k = i+j; /* k γίνεται 3 */ i = k = j; /* i,k γίνονται 2 */ j = (i=3) + k; /* i γίνεται 3, j γίνεται 5 */ i = i+1; /* i γίνεται 4 */ Προγραµµατισµός Ι lalis@inf.uth.gr 44

45 Τελεστής ανάθεσης (3) Πολλές φορές χρησιµοποιούµε την ανάθεση για να αλλάξουµε την τιµή µιας µεταβλητής σε σχέση µε την παλιά τιµή της(ίδιας µεταβλητής). Για το πετύχουµε αυτό, γράφουµε: <όνοµα> = <όνοµα><op>(<έκφραση>) όπου <op> ένας δυαδικός τελεστής. Το ίδιο αποτέλεσµα µπορεί να επιτευχθεί µε χρήση της «σχετικής» ανάθεσης <op>=, ως εξής: <όνοµα> <op> = <έκφραση> Προσοχή στις προτεραιότητες, καθώς η έκφραση που εµφανίζεται στα δεξιά αποτιµάται πριν εφαρµοστεί ο τελεστής <op> Προγραµµατισµός Ι lalis@inf.uth.gr 45

46 int i,j,k; i = 1; j = 2; i += 2; /* i γίνεται 3 */ j *= i+1; /* j γίνεται 8 */ k = (i+=j) + 1; /* i γίνεται 11, k γίνεται 12 */ Προγραµµατισµός Ι lalis@inf.uth.gr 46

47 Τελεστές αυξοµείωσης Μια ειδική περίπτωση ανάθεσης είναι η αύξηση ή µείωση της τιµής µιας µεταβλητής κατά 1: <όνοµα> = <όνοµα><op>1 <όνοµα><op> = 1 όπου <op> οτελεστής + ή - Παρόµοιο αποτέλεσµα µπορεί να επιτευχθεί µε χρήση των τελεστών ++ ή -- : <όνοµα> ++ ή <όνοµα> <όνοµα> ή -- <όνοµα> Όταν ο τελεστής εµφανίζεται πριν / µετά το όνοµα της µεταβλητής, τότε ως αποτέλεσµα της έκφρασης επιστρέφεται η νέα / παλιά τιµή τηςµεταβλητής. Προγραµµατισµός Ι lalis@inf.uth.gr 47

48 int i,j,k; i = 0; i++; /* i γίνεται 1 */ j = i++; /* j γίνεται 1, i γίνεται 2 */ k = --j; /* k γίνεται 0, j γίνεται 0 */ i = (k++) + 1; /* i γίνεται 1, k γίνεται 1 */ i = (++k) + 1; /* i γίνεται 3, k γίνεται 2 */ Προγραµµατισµός Ι lalis@inf.uth.gr 48

49 Σχόλιο Μπορεί να κατασκευαστούν συντακτικά ορθές εκφράσεις που δίνουν µη προφανή αποτελέσµατα. Ησηµασιολογία κάποιων από αυτές τις εκφράσεις µπορεί να µην ορίζεται (ξεκάθαρα) από τη γλώσσα. Καλό είναι να µην χρησιµοποιούνται εκφράσεις όταν δεν γνωρίζουµε την ακριβή σηµασιολογία τους (π.χ. δεν έχουµε διαβάσει το εγχειρίδιο γλώσσας). Σηµείωση: είναι προγραµµατιστικό λάθος να χρησιµοποιούνται εκφράσεις των οποίων η σηµασιολογία δεν ορίζεται από την γλώσσα (το αποτέλεσµα εξαρτάται από το µεταφραστή, µε άλλα λόγια προγραµµατίζουµε «στην τύχη»). Προγραµµατισµός Ι 49

50 int i; i = 0; i = (i++); /* i γίνεται 0 */ i = 0; i = (++i); /* i γίνεται 1 */ i = 0; i = (i=i+1); /* i γίνεται 1 */ i = 0; i = (i++) + (i++); /* i γίνεται 2 */ i = 0; i = (++i) + (++i); /* i γίνεται 4 */ i = 0; i = (i=i+1) + (i=i+1); /* i γίνεται 3 */ Προγραµµατισµός Ι lalis@inf.uth.gr 50

51 Αριθµητικοί τελεστές για int/float/double + - * / % πρόσθεση δύο τιµών αφαίρεση δύο τιµών πολλαπλασιασµός δύο τιµών διαίρεση δύο τιµών υπόλοιπο διαίρεσης δύο τιµών Τα / και % έχουν µεγαλύτερη προτεραιότητα αποτίµησης σε σχέση µε τα + και -. Ηαποτίµηση γίνεται από αριστερά προς τα δεξιά. Σηµείωση: ισχύει ότι x = x/y + x%y, όµως δεν ισχύει πάντα η «µαθηµατική» ιδιότητα του υπολοίπου (>=0), π.χ. όταν ο αριθµητής είναι αρνητικός. Π.χ. -5%4 ή -5%-4. Προγραµµατισµός Ι lalis@inf.uth.gr 51

52 Τελεστές σε επίπεδο bits & ^ ~ δυαδικό «and» δυαδικό «or» δυαδικό «xor» δυαδικό «not» >> δεξιά ολίσθηση (msb -> lsb) << αριστερή ολίσθηση (lsb -> msb) Προσοχή: στην αριστερή ολίσθηση τα «λιγότερο σηµαντικά» bitsπαίρνουν πάντα την τιµή 0, ενώ στην δεξιά ολίσθηση τα «περισσότερο σηµαντικά» bits παίρνουν την τιµή του περισσότερο σηµαντικού bit (arithmetic shift) ή 0 (logical shift), ανάλογα µε αν το όρισµα ερµηνεύεται ως signed ή unsigned. Προγραµµατισµός Ι lalis@inf.uth.gr 52

53 char a,b,c; unsigned char d; a = 'a'; /* a γίνεται */ b = 'b'; /* b γίνεται */ c = a b; /* c γίνεται */ c = a&b; /* c γίνεται */ c = a^b; /* c γίνεται */ d = c = ~a; /* d,c γίνεται */ d = d>>3; /* d γίνεται */ c = c>>3; /* c γίνεται */ Προγραµµατισµός Ι lalis@inf.uth.gr 53

54 Γρήγορος πολλαπλασιασµός / διαίρεση Με τον τελεστή ολίσθησης bits µπορούµε να υλοποιήσουµε γρήγορες πράξεις πολλαπλασιασµού και διαίρεσης µε τιµές που είναι δυνάµεις του 2: v = v<<i; /* v = v*2 i */ v = v>>i; /* v = v/2 i */ Και φυσικά µπορούµε να υπολογίσουµε εύκολα τις δυνάµεις του 2: v = 1<<i; /* v = 2 i */ Προγραµµατισµός Ι lalis@inf.uth.gr 54

55 short int i; i = 5; /* i γίνεται */ i = i<<4; /* i γίνεται */ i = i>>2; /* i γίνεται */ i = 1<<3; /* i γίνεται */ i = 1<<8; /* i γίνεται */ Προγραµµατισµός Ι lalis@inf.uth.gr 55

56 Σχεσιακοί και λογικοί τελεστές ==,!= >,>= <,<=! ισότητα, ανισότητα µεγαλύτερο, µεγαλύτερο ίσο µικρότερο, µικρότερο ίσο λογική άρνηση Οι σχεσιακοί και λογικοί τελεστές χρησιµοποιούνται για την κατασκευή λογικών εκφράσεων (συνθηκών). εν υπάρχει λογικός τύπος (boolean). Το αποτέλεσµα µιας λογικής έκφρασης είναι 0 ή 1 (γιαψευδέςήαληθές), και µπορεί να χρησιµοποιηθεί και ως ακέραιος κλασική πηγή λαθών στην C. Επίσης, η τιµή 0 ερµηνεύεται ως «ψευδές» (false) και οποιαδήποτε τιµή διάφορη του 0 ως «αληθές» (true). Προγραµµατισµός Ι lalis@inf.uth.gr 56

57 int a=1, b=2, c; c = (a==b); /* c γίνεται 0 */ c = (a!=b); /* c γίνεται 1 */ c = (a<=b); /* c γίνεται 1 */ c = ((c+a)!=b); /* c γίνεται 0 */ c = (!a==!b); /* c γίνεται 1 */ c = (a!=b) +!(a==b); /* c γίνεται 2 */ c =!( (a!=b) +!(a==b) ); /* c γίνεται 0 */ Προγραµµατισµός Ι lalis@inf.uth.gr 57

58 Λογικοί σύνδεσµοι λογικό «ή» && λογικό «και» Οι λογικοί σύνδεσµοι χρησιµοποιούνται για την κατασκευή σύνθετων λογικών εκφράσεων. Ηαποτίµηση των λογικών εκφράσεων γίνεται από «τα αριστερά προς τα δεξιά» και µόνο όσο χρειάζεται για να διαπιστωθεί το τελικό αποτέλεσµα της έκφρασης (conditional evaluation). Για το ηαποτίµηση σταµατά µόλις η ενδιάµεση τιµή γίνει διάφορη του 0, ενώ για το && ηαποτίµηση σταµατά µόλις η ενδιάµεση τιµή γίνει 0. Σηµείωση: προσοχή στις παρενέργειες! Προγραµµατισµός Ι 58

59 int a=1, b=0, c; c = a&&b; /* c γίνεται 0 */ c = (a==1) (b==1); /* c γίνεται 1 */ c = (a++>1); /* c γίνεται 0, a γίνεται 2 */ c = b && (a++); /* c γίνεται 0, a παραµένει 2 */ c = (b++) && (a++); /* c γίνεται 0, b γίνεται 1, a παραµένει 2 */ c = (--b) (a++); /* c γίνεται 1, b γίνεται 0, a γίνεται 3 */ Προγραµµατισµός Ι lalis@inf.uth.gr 59

60 Παρενέργειες Οόροςπαρανέργεια χρησιµοποιείται για να αναφερθούµε σεαλλαγήτιµής µιας µεταβλητής χωρίς αυτό να είναι εύκολα ορατό από τον κώδικα. Η τεχνική αποτίµησης λογικών εκφράσεων µπορεί να οδηγήσει σε κώδικα µε παρενέργειες, π.χ. <lexpr> && (a++) οδηγεί σε αλλαγή της τιµής της µεταβλητής a µόνο όταν η <lexpr> αποτιµάται ως αληθής, πράγµα που (στη γενικότερη περίπτωση) δεν είναι εύκολο να εκτιµηθεί διαβάζοντας τον (υπόλοιπο) κώδικα. Ο προγραµµατιστµός µε παρενέργειες θεωρείται κακό στύλ, καθώς οδηγεί σε κώδικα που είναι αρκετά δύσκολο να κατανοηθεί. Προγραµµατισµός Ι lalis@inf.uth.gr 60

61 Υπόλοιποι τελεστές Ο τελεστής <lexpr>?<expr1>:<expr2> αποτιµά την έκφραση lexpr και εφόσον η τιµή της είναι διάφορη του 0 αποτιµά και επιστρέφει το αποτέλεσµα της έκφρασης expr1, διαφορετικά αποτιµά και επιστρέφει το αποτέλεσµα της έκφρασης expr2. Ο τελεστής expr1,expr2,,exprn αποτιµά τις εκφράσεις expr1, expr2 µέχρι και exprn, «από αριστερά προς τα δεξιά», και επιστρέφει το αποτέλεσµα της τελευταίας. Π.χ.: int a=1,b=2,c,d; c = (a<b)?a:b; /* c == 1 */ d = (c=a,a=b,b=c,c=0); /* a,b,c,d == 2,1,0,0 */ Προγραµµατισµός Ι lalis@inf.uth.gr 61

62 Προτεραιότητες τελεστών µέγιστη ελάχιστη () []. ->! ~ * & (cast) (ατοµικοί) * / % + - << >> > >= < <= ==,!= & ^ &&? : = += -= *= /= %= &= = <<= >>=, Προγραµµατισµός Ι lalis@inf.uth.gr 62

63 Κυριολεκτικά Κάποιες µεταβλητές του προγράµµατος πρέπει συνήθως να αρχικοποιηθούν µε συγκεκριµένη τιµή. Υπάρχει επίσης η περίπτωση να επιθυµούµε να χρησιµοποιήσουµε µια ειδική συγκεκριµένη τιµή σε εκφράσεις αποτίµησης, π.χ. γνωστές σταθερές. Μια έκφραση που ορίζει µια τιµή χωρίς αναφορά σε κάποια µεταβλητή ονοµάζεται «κυριολεκτικό». Για κάθε τύπο δεδοµένων ορίζονται διαφορετικές µορφές προσδιορισµού κυριολεκτικών. Ητιµή των κυριολεκτικών, καθώς και εκφράσεων που χρησιµοποιούν αποκλειστικά και µόνο κυριολεκτικά, είναι ήδη γνωστή πριν την εκτέλεση του κώδικα. Προγραµµατισµός Ι 63

64 Κυριολεκτικά char Η έκφραση της µορφής '<c>' συµβολίζει τον αντίστοιχο εκτυπώσιµο χαρακτήραascii <c>. Ηέκφραση'\<c>' συµβολίζει τον αντίστοιχο ειδικό µη εκτυπώσιµο χαρακτήρα ASCII (βλέπε manual). Ηέκφραση'\x<d 1 d 2 >' συµβολίζει τον χαρακτήρα ASCII µε τον αντίστοιχο δεκαεξαδικό κωδικό d 1 d 2. Ηέκφραση'\<d 1 d 2 d 3 >' συµβολίζει τον χαρακτήρα ASCII µε τον αντίστοιχο οκταδικό κωδικό d 1 d 2 d 3. Π.χ.: 'a','\x61','\141' '\n','\x0a','\012' χαρακτήρας a newline / linefeed Προγραµµατισµός Ι lalis@inf.uth.gr 64

65 εκαεξαδική κωδικοποίηση ASCII A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2! " # $ % & ( ) * +, -. / : ; < = >? A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { ~ DEL Σηµείωση: οι αλφαβητικοί χαρακτήρες έχουν διαδοχικές τιµές, αν ερµηνευτούν ως ακέραιοι. Σηµείωση 2: οι χαρακτήρες των δεκαδικών ψηφίων έχουν διαδοχικές τιµές, αν ερµηνευτούν ως ακέραιοι. Προγραµµατισµός Ι lalis@inf.uth.gr 65

66 Κυριολεκτικά int Αν η έκφραση αρχίζει µε δεκαδικό ψηφίο διαφορετικό του 0, τότε ερµηνεύεται µε το δεκαδικό σύστηµα. Αν έκφραση αρχίζει µε 0 τότε ερµηνεύεται σύµφωνα µε το οκταδικό σύστηµα, και αν αρχίζει µε 0x τότε ερµηνεύεται σύµφωνα µε το δεκαεξαδικό σύστηµα. Εκφράσεις µε κατάληξηl ή L ερµηνεύονται ως long int, µε κατάληξη u ή U ως unsigned int, µε κατάληξη ul ή UL ως unsigned long int, διαφορετικά ως int. Π.χ.: 0xFF 32768u 0123 τιµή 83 τιµή 255 (-1 ως char) τιµή ( ως short) Προγραµµατισµός Ι lalis@inf.uth.gr 66

67 Κυριολεκτικά float και double Η έκφραση πρέπει να δίνεται σε συµβατική µορφή, δηλαδή σε δεκαδικό σύστηµα. Προαιρετικά, µπορεί να δίνεται µε δεκαδικά ψηφία ή/και µε δεκαδικό εκθέτη που µπορεί να λαµβάνει και αρνητικό πρόσηµο. Εκφράσεις µε κατάληξηf ή F ερµηνεύονται ως float, ενώ µε κατάληξηl ή L ως long double, διαφορετικά ως double. Προγραµµατισµός Ι lalis@inf.uth.gr 67

68 Μετατροπές τιµών διαφορετικών τύπων Γίνονται αυτόµατα σε αποτιµήσεις και αναθέσεις: char -> int, short -> int, float -> double αν ένα από τα ορίσµατα µιαςπράξηςείναιlong double, double, float, long, unsigned, int τότε και το άλλο όρισµα «προάγεται» αντίστοιχα Προσοχή στην µετατροπή char -> int καθώς γίνεται sign extension αν το char είναι signed. Όταν µια «µεγάλη» τιµή ανατίθεταισε«µικρότερη» µεταβλητή τότε χάνεται µέρος των δεδοµένων. Ο προγραµµατιστής µπορεί να εκβιάσει µια «παράνοµη» µετατροπή µε το λεγόµενο type casting. Προγραµµατισµός Ι 68

69 char c1= \xff ; unsigned char c2= \xff ; short i1; unsigned short i2; i1 = i2 = c1; /* i1,i2 γίνεται -1,65535(=2 16-1) */ i1 = i2 = c2; /* i1,i2 γίνεται 255,255 */ double d1=10.0,d2; int i1=3,i2=10; d2 = d1/i1; /* d2 γίνεται 3.33 */ d2 = (double)i2/i1; /* d2 είναι 3.33 */ d2 = (double)(i2/i1); /* d2 είναι 3.0 */ int i; char c; i = 256; /* i γίνεται 256 */ c = i; /* c γίνεται 0 */ i = c; /* i γίνεται 0 */ Προγραµµατισµός Ι lalis@inf.uth.gr 69

70 Αριθµητική µε χαρακτήρες Ένα (από τα πολλά) «φαινόµενα» της αυτόµατης µετατροπής τύπων είναι η αριθµητική µε χαρακτήρες. Μπορούµε να συνδυάσουµε έναχαρακτήραµε ένα ακέραιο ή ένα χαρακτήρα µε ένα χαρακτήρα: 'a' + 1 /* 98,0x62,'b' */ 'b' 'a' /* 1 */ '5' '3' + '0' /* 50,0x32,'2' */ Μια συνάρτηση που δέχεται παράµετρο ένα ακέραιο, µπορεί να δεχτεί σαν παράµετρο έναν χαρακτήρα putchar(97); /* 'a' */ putchar('a'+2); /* 'c' */ Προγραµµατισµός Ι lalis@inf.uth.gr 70

71 /* ανάγνωση δύο δεκαδικών ψηφίων, υπολογισµός της διαφοράς τους και εκτύπωση της ως ακέραιος */ #include <stdio.h> int main(int argc, char *argv[]) { char c1,c2; int i; printf("enter two chars: "); c1 = getchar(); c2 = getchar(); i = c1-c2; printf("%d\n",i); Προγραµµατισµός Ι lalis@inf.uth.gr 71

72 /* ανάγνωση δύο δεκαδικών ψηφίων, υπολογισµός της διαφοράς / αθροίσµατος τους και εκτύπωση του αποτελέσµατος ως δεκαδικό ψηφίο */ #include <stdio.h> int main(int argc, char *argv[]) { char c1,c2,c3; printf("enter two chars (0-9): "); c1 = getchar(); c2 = getchar(); c3 = c1-c2+'0'; putchar(c3); putchar('\n'); c3 = c1+c2-'0'; putchar(c3); putchar('\n'); Προγραµµατισµός Ι lalis@inf.uth.gr 72

73 οµές Ελέγχου Προγραµµατισµός Ι 73

74 οµές ελέγχου Με τις εντολές εισόδου, εξόδου και επεξεργασίας των τιµών των µεταβλητών µπορεί να γραφτούν κάποια απλά προγράµµατα. Οι δυνατότητες είναι περιορισµένες, καθώς το πρόγραµµα ακολουθεί µια µοναδική και εκ των προτέρων προδιαγεγραµµένη εκτέλεση. Με τις δοµές ελέγχου, ο προγραµµατιστής µπορεί να αφήσει το ίδιο το πρόγραµµα να πάρει αποφάσεις σχετικά µε την εκτέλεση (ή µη) κάποιων εντολών. Αυτές οι αποφάσεις λαµβάνονται την ώρα της εκτέλεσης, µε βάσητις(τρέχουσες) τιµές των µεταβλητών του προγράµµατος. οµές ελέγχου: εκτέλεση υπό συνθήκη & επανάληψη. Προγραµµατισµός Ι 74

75 Εκτέλεση υπό συνθήκη: if-else if <lexpr> <body1> lexpr true body1 else false <body2> body2 Αν η συνθήκη lexpr αποτιµηθεί σε τιµή διάφορη του 0, τότε η εκτέλεση συνεχίζεται µε τοbody1, διαφορετικά µε το εναλλακτικό body2. Το εναλλακτικό σκέλος else είναι προαιρετικό: αν δεν υπάρχει και η συνθήκη lexpr αποτιµηθεί σε 0 τότε απλά παρακάµπεται το body1. Προγραµµατισµός Ι lalis@inf.uth.gr 75

76 /* b λαµβάνει την απόλυτη τιµή του a */ #include <stdio.h> int main(int argc, char *argv[]) { int a,b; scanf("%d", &a); if (a >= 0) { b = a; else /* a < 0 */ { b = -a; printf("%d\n", b); Προγραµµατισµός Ι lalis@inf.uth.gr 76

77 /* d λαµβάνει την µέγιστη τιµή των a,b,c */ #include <stdio.h> int main(int argc, char *argv[]) { int a,b,c,d; scanf("%d %d %d", &a, &b, &c); if (a > b) { if (a > c) { d = a; else /* a <= c */ { d = c; else /* a <= b */ { if (b > c) { d = b; else /* b <= c */ { d = c; printf("%d\n", d); Προγραµµατισµός Ι lalis@inf.uth.gr 77

78 /* d λαµβάνει την µέγιστη τιµή των a,b,c */ #include <stdio.h> int main(int argc, char *argv[]) { int a,b,c,d; scanf("%d %d %d", &a, &b, &c); d = a; if (d < b) { d = b; if (d < c) { d = c; printf("%d\n", d); Προγραµµατισµός Ι lalis@inf.uth.gr 78

79 Σώµα εντολών σε δοµές ελέγχου Το σώµα µιας εντολής ελέγχου (π.χ. του if-else) δίνεται υποχρεωτικά ανάµεσα σε { όταν αυτό αποτελείται από πολλές εντολές. Οι { είναι προαιρετικές µόνο όταν το σώµα αποτελείται από µια εντολή (σηµείωση: µια δοµή ελέγχου θεωρείται συντακτικά ως µια εντολή). Η χρήση{ και η µορφοποίηση του κειµένου του προγράµµατος µε κενούς χαρακτήρες και κατανοµή σε ξεχωριστές γραµµές είναι θέµα «γούστου», αλλά επηρεάζει σαφώς την αναγνωσιµότητα. Ένας άπειρος προγραµµατιστής καλό είναι να χρησιµοποιεί πάντα {, ακόµα και για σώµατα εντολών που περιέχουν µια µοναδική εντολή. Προγραµµατισµός Ι lalis@inf.uth.gr 79

80 /* εκτύπωση ονόµατος ηµέρας µε τον κωδικό day */ #include <stdio.h> int main(int argc, char *argv[]) { int day; scanf("%d", &day); if (day == 1) { printf("mon\n"); else if (day == 2) { printf("tue\n"); else if (day == 3) { printf("wed\n"); else if (day == 4) { printf("thu\n"); else if (day == 5) { printf("fri\n"); else if (day == 6) { printf("sat\n"); else if (day == 7) { printf("sun\n"); else { printf("wrong code %d\n",day); Προγραµµατισµός Ι lalis@inf.uth.gr 80

81 if (day == 1) { printf("mon\n"); else if (day == 2) { printf("tue\n"); else if (day == 3) { printf("wed\n"); else if (day == 4) { printf("thu\n"); else if (day == 5) { printf("fri\n"); else if (day == 6) { printf("sat\n"); else if (day == 7) { printf("sun\n"); else { printf("wrong code %d\n",day); Προγραµµατισµός Ι lalis@inf.uth.gr 81

82 if (day == 1) printf("mon\n"); else if (day == 2) printf("tue\n"); else if (day == 3) printf("wed\n"); else if (day == 4) printf("thu\n"); else if (day == 5) printf("fri\n"); else if (day == 6) printf("sat\n"); else if (day == 7) printf("sun\n"); else printf("wrong code %d\n",day); Προγραµµατισµός Ι 82

83 if (day == 1) printf("mon\n"); else if (day == 2) printf("tue\n"); else if (day == 3) printf("wed\n"); else if (day == 4) printf("thu\n"); else if (day == 5) printf("fri\n"); else if (day == 6) printf("sat\n"); else if (day == 7) printf("sun\n"); else printf("wrong code %d\n",day); Προγραµµατισµός Ι 83

84 if (day == 1) printf("mon\n"); else if (day == 2) printf("tue\n"); else if (day == 3) printf("wed\n"); else if (day == 4) printf("thu\n"); else if (day == 5) printf("fri\n"); else if (day == 6) printf("sat\n"); else if (day == 7) printf("sun\n"); else printf("wrong code %d\n",day); Προγραµµατισµός Ι 84

85 if (day == 1) { printf("mon\n"); else { if (day == 2) { printf("tue\n"); else { if (day == 3) { printf("wed\n"); else { if (day == 4) { printf("thu\n"); else { if (day == 5) { printf("fri\n"); else { if (day == 6) { printf("sat\n"); else { if (day == 7) { printf("sun\n"); else { printf("wrong code %d\n",day); Προγραµµατισµός Ι lalis@inf.uth.gr 85

86 Εκτέλεση υπό συνθήκη: switch-case switch <iexpr> { case <v1>: <body1> case <v2>: <body2> case <vn>: <bodyn> default: <bodyd> iexpr==v1 false iexpr==v2 false iexpr==vn true true true body1 body2 bodyn break break break false bodyd Αποτιµάται (µια φορά) ηαριθµητική έκφραση iexpr και επιλέγεται και εκτελείται το bodyx της πρώτης περίπτωσης που έχει την ίδια τιµή valx. Αν το σώµα bodyx δεν περιέχει την εντολή break στη συνέχεια εκτελείται το επόµενο σώµα bodyx+1. Το σκέλος default είναι προαιρετικό, και επιλέγεται αν δεν επιλεγεί άλλη περίπτωση. Προγραµµατισµός Ι lalis@inf.uth.gr 86

87 /* εκτύπωση ονόµατος ηµέρας µε τον κωδικό day */ #include <stdio.h> int main(int argc, char *argv[]) { int day; scanf("%d", &day); χωρίς την εντολή break το πρόγραµµα θα συνέχιζε την εκτέλεση µε το σώµα της επόµενης περίπτωσης case switch (day) { case 1: { printf("monday\n"); break; case 2: { printf("thuesday\n"); break; case 3: { printf("wednesday\n"); break; case 4: { printf("thursday\n"); break; case 5: { printf("friday\n"); break; case 6: { printf("saturday\n"); break; case 7: { printf("sunday\n"); break; default:{ printf("wrong day code %d\n",day); Προγραµµατισµός Ι lalis@inf.uth.gr 87

88 Επανάληψη εκτέλεσης: while while <lexpr> <body> lexpr body true false Όσο η συνθήκη επανάληψης lexpr αποτιµάται σε µια τιµή διάφορητου0 τότε εκτελείται το body, διαφορετικά η εκτέλεση συνεχίζεται µετά το while. Το body µπορεί να µην εκτελεσθεί καθόλου αν την πρώτη φορά η lexpr αποτιµηθεί σε 0, ή επ άπειρο, αν η lexpr δεν αποτιµηθεί ποτέ σε 0 (κάτι που µπορεί να συµβεί λόγω προγραµµατιστικού λάθους). Προγραµµατισµός Ι lalis@inf.uth.gr 88

89 Παράδειγµα: υπολογισµός x! Θέλουµε τοy = 1*2*3* *(x-1)*x; Πρόβληµα: αν το x λαµβάνει τιµή από το χρήστη, τότε δεν γνωρίζουµε τηντιµή του την ώρα που γράφουµε τον κώδικα µας, συνεπώς δεν γνωρίζουµε µέχρι ποιά τιµή να συνεχίσουµε τον πολλαπλασιασµό. Λύση: µετασχηµατίζουµε την παραπάνω (στατική) έκφραση ως (δυναµική) επανάληψη των εντολών: y = y * i; i = i + 1; Η επανάληψη πρέπει να γίνει τόσες φορές όσες η τιµή τηςµεταβλητής x δηλαδή µέχρι η µεταβλητή i να περάσει την τιµή τηςx : i <= x. Οι αρχικές τιµές είναι: y = 1; i = 2; Προγραµµατισµός Ι lalis@inf.uth.gr 89

90 /* y=x! */ #include <stdio.h> int main(int argc, char *argv[]) { int x,y,i; scanf("%d", &x); y = 1; i = 2; while (i <= x) { y = y*i; i = i+1; printf("%d\n", y); Προγραµµατισµός Ι lalis@inf.uth.gr 90

91 /* µέγιστος κοινός διαιρέτης x,y */ #include <stdio.h> int main(int argc, char *argv[]) { int x,x1,y,y1; scanf("%d %d", &x, &y); x1 = x; y1 = y; while (x1!= y1) { if (x1 > y1) { x1 = x1-y1; else /* x1 <= y1 */ { y1 = y1-x1; printf("%d\n", x1); Προγραµµατισµός Ι lalis@inf.uth.gr 91

92 Επανάληψη εκτέλεσης: do-while do <body> while <lexpr> true body lexpr false Η συνθήκη επανάληψης lexpr αποτιµάται αφού εκτελεσθεί πρώτα το body, και αν η τιµή της είναι διάφορη του 0 τότε το body εκτελείται ξανά. Το body θα εκτελεσθεί τουλάχιστον µια φορά, και επ άπειρο αν η lexpr δεν αποτιµηθεί ποτέ σε 0 (συνήθως από προγραµµατιστικό λάθος). Προγραµµατισµός Ι lalis@inf.uth.gr 92

93 /* αντιγραφή χαρακτήρων από είσοδο σε έξοδο µέχρι να διαβαστεί ο χαρακτήρας ~ */ #include <stdio.h> int main(int argc, char *argv[]) { char c; do { c = getchar(); putchar(c); while (c!= '~'); Προγραµµατισµός Ι lalis@inf.uth.gr 93

94 /* ανάγνωση αριθµητικής τιµής σύµφωνα µε την έκφραση number={spacedigit{spaceblank */ #include <stdio.h> int main(int argc, char *argv[]) { char c; int v; do { c = getchar(); while (c == ' '); v = 0; do { v = v + c-'0'; c = getchar(); while (c!= ' '); printf("%d\n", v); Προγραµµατισµός Ι lalis@inf.uth.gr 94

95 Ισοδυναµία while <-> do-while <body> while <lexpr> <body> do <body> while <lexpr> while <lexpr> <body> if <lexpr> do <body> while <lexpr> Για κάθε πρόγραµµα που χρησιµοποιεί while µπορεί πάντα να φτιαχτεί ένα ισοδύναµο πρόγραµµα που χρησιµοποιεί do-while, και το αντίστροφο. Προγραµµατισµός Ι 95

96 Επανάληψη εκτέλεσης: for for (<expr1>;<lexpr>;<expr2>) <body> expr1 lexpr true body false expr2 Ηέκφρασηexpr1 αποτιµάται µια µοναδική φορά, και όσο η συνθήκη επανάληψης lexpr αποτιµάται σε τιµή διάφορη του 0 τότε εκτελείται το body και µετά ηέκφρασηexpr2. Οι εκφράσεις expr1 και expr2 χρησιµοποιούνται συνήθως για την «αρχικοποίηση» και «πρόοδο» των µεταβλητών της συνθήκης επανάληψης lexpr. Προγραµµατισµός Ι lalis@inf.uth.gr 96

97 /* s=1+2+ +n */ #include <stdio.h> int main(int argc, char *argv[]) { int n,s,i; scanf("%d", &n); s = 0; for (i=1; i<=n; i++) { s = s+i; printf("%d\n", s); Προγραµµατισµός Ι lalis@inf.uth.gr 97

98 /* s=1+2+ +n */ #include <stdio.h> int main(int argc, char *argv[]) { int n,s,i; scanf("%d", &n); for (s=0,i=1; i<=n; i++) { s = s+i; printf("%d\n", s); Προγραµµατισµός Ι lalis@inf.uth.gr 98

99 /* s=1+2+ +n */ #include <stdio.h> int main(int argc, char *argv[]) { int n,s,i; scanf("%d", &n); for (s=0,i=1; i<=n; s=s+i,i++) { printf("%d\n", s); Προγραµµατισµός Ι lalis@inf.uth.gr 99

100 /* s=1+2+ +n */ #include <stdio.h> int main(int argc, char *argv[]) { int n,s,i; scanf("%d", &n); for (s=0,i=1; i<=n; s=s+i++) { printf("%d\n", s); Προγραµµατισµός Ι lalis@inf.uth.gr 100

101 /* πολλαπλασιασµός µε πρόσθεση z=x*y, y>=0 */ #include <stdio.h> int main(int argc, char *argv[]) { int x,y,z,i; scanf("%d %d", &x, &y); z =0; for (i=0; i<y; i++) { z = z+x; printf("%d\n", z); Προγραµµατισµός Ι lalis@inf.uth.gr 101

102 /* συνδυασµοί <i,j> µε i:[0,n) και j:[0,m) */ #include <stdio.h> int main(int argc, char *argv[]) { int n,m,i,j; scanf("%d %d", &n, &m); for (i=0; i<n; i++) { for (j=0; j<m; j++) { printf("%d,%d\n", i, j); Προγραµµατισµός Ι lalis@inf.uth.gr 102

103 for (i=0; i<n; i++) { for (j=0; j<m; j++) { printf("%d,%d\n", i, j); for (i=0; i<n; i++) for (j=0; j<m; j++) printf("%d,%d\n", i, j); Προγραµµατισµός Ι lalis@inf.uth.gr 103

104 Ισοδυναµία while <-> for <expr1> while <lexpr> { <body> <expr2> for (expr1;lexpr;expr2) <body> Για κάθε πρόγραµµα που χρησιµοποιεί while µπορεί πάντα να φτιαχτεί ένα ισοδύναµο πρόγραµµα που χρησιµοποιεί for, και το αντίστροφο. Ηδοµή for επιτυγχάνει καλύτερη αναγνωσιµότητα (και υπό προυποθέσεις την παραγωγή πιο αποδοτικού κώδικα από τον µεταφραστή), καθώς ξεχωρίζει τις εκφράσεις «αρχικοποίησης» και «πρόδου» από τον υπόλοιπο κώδικα της επανάληψης. Προγραµµατισµός Ι lalis@inf.uth.gr 104

105 Ηεντολέςbreak και continue Η κανονική έξοδος µέσα από µια δοµή επανάληψης πραγµατοποιείται όταν η αντίστοιχη συνθήκη ελέγχου αποτιµάται (κάποια στιγµή) σε 0, πριν ή µετά την εκτέλεση του αντίστοιχου «σώµατος» / «µπλοκ». Σε κάποιες περιπτώσεις αυτό µπορεί να είναι αρκετά περιοριστικό και να κάνει τον κώδικα πολύπλοκο. Με την εντολή break επιτυγχάνεται «εξόδος» από οποιοδήποτε σηµείο του κώδικα της επανάληψης. Με την εντολή continue παρακάµπτονται οι (υπόλοιπες) εντολές του κώδικα της επανάληψης, χωρίς έξοδο από την επανάληψη. Σηµείωση: στη δοµή for το continue δεν παρακάµπτει την έκφραση «προόδου». Προγραµµατισµός Ι lalis@inf.uth.gr 105

106 /* εκτύπωση ζυγών αριθµών στο διάστηµα [1..n) */ #include <stdio.h> int main(int argc, char *argv[]) { int n,i; scanf("%d", &n); for (i=1; i<n; i++) { if (i%2!= 0) { continue; printf("%d ", i); printf("\n"); Προγραµµατισµός Ι lalis@inf.uth.gr 106

107 /* ανάγνωση και πρόσθεση δύο θετικών αριθµών, µέχρι να δοθεί µια τιµή µικρότερη-ίση 0 */ #include <stdio.h> int main(int argc, char *argv[]) { int a,b; while (1) { printf("enter 2 ints > 0 or 0 to stop: "); scanf("%d",&a); scanf("%d",&b); if ((a <= 0) (b <= 0)) { break; printf("%d plus %d is %d\n", a, b, a+b); Προγραµµατισµός Ι lalis@inf.uth.gr 107

108 Ηεντολήgoto Με την εντολή goto <label> η εκτέλεση συνεχίζεται από το σηµείο µε την ετικέτα <label>. Η goto δίνει µεγάλη ευελιξία καθώς επιτρέπει την µεταφορά του ελέγχου σε οποιοδήποτε σηµείο του προγράµµατος, µε άµεση έξοδο «µέσα από» πολλά επίπεδα επανάληψης. Χρειάζεται προσοχή ώστε να µην δηµιουργούνται δυσνόητα προγράµµατα, κάτι που πολύ εύκολα µπορεί να συµβεί µε πρόχειρη χρήση της goto. Η goto χρησιµοποιείται ως τελευταία λύση, όταν όλοι οι υπόλοιποι συνδυασµοί δοµών και εντολών ελέγχου κάνουν τον κώδικα λιγότερο ευανάγνωστο. Προγραµµατισµός Ι 108

109 /* αντιπαράδειγµα */ get: c = getchar(); goto check1; cont1: goto check2; cont2: putchar(c); goto get; check1: if (c == '\n') { goto theend; else { goto cont1; check2: if (( c>= 'a') && (c <= 'z')) { c = c-32; goto cont2; theend: putchar('\n'); do { c = getchar(); if ((c >= 'a') && (c <= 'z')) { c = c-32; putchar(c); while (c!= '\n'); Προγραµµατισµός Ι lalis@inf.uth.gr 109

110 /* και µια πιο ενδεδειγµένη χρήση */ while ( ) { for ( ) { do { if ( ) { goto abort; while ( ); abort: Προγραµµατισµός Ι lalis@inf.uth.gr 110

111 οµές επανάληψης χωρίς σώµα Στις δοµές ελέγχου while, do-while και for µπορεί να µην χρειάζεται να βάλουµε κάποιο σώµα εντολών (πως µπορεί κάτι τέτοιο να έχει λογική;). Η C δεν υποστηρίζει την απουσία σώµατος. Σε αυτή την περίπτωση έχουµε την επιλογή ανάµεσα στην χρήση της «κενής» εντολής ; (που δεν κάνει τίποτα) του «άδειου» σώµατος εντολών { (που δεν περιέχει καµία εντολή) Το αποτέλεσµα είναι το ίδιο (δεν εκτελείται τίποτα). Προγραµµατισµός Ι lalis@inf.uth.gr 111

112 /* υπολογισµός s=1+2+ Ν */ int i,s; το «άδειο» σώµα χωρίς εντολές for (i=1,s=0; i<=ν; s=s+i++) { /* υπολογισµός s=1+2+ Ν */ int i,s; η «κενή» εντολή που δεν κάνει τίποτα for (i=1,s=0; i<=ν; s=s+i++) ; Προγραµµατισµός Ι lalis@inf.uth.gr 112

113 Γιατί τόσες δοµές ελέγχου; Κάθε δοµή ελέγχου έχει τα πλεονεκτήµατα της, κυρίως όσον αφορά την αναγνωσιµότητα του κώδικα. Μερικές δοµές διευκολύνουν τον µεταφραστή στην παραγωγή καλύτερου κώδικα µηχανής. Πολλές φορές η επιλογή γίνεται µε βάσητο προσωπικό στύλ του καθενός φυσικά, διαφορετικοί άνθρωποι έχουν και διαφορετικά γούστα... Πρωταρχικός στόχος για εσάς: αναγνωσιµότητα! Σηµείωση: ηόποια«βελτιστοποίηση» του κώδικα γίνεται αφού σιγουρευτούµε ότι το πρόγραµµα είναι σωστό (και αφού γίνουν κατάλληλες µετρήσεις που θα δείξουν το σηµείοόπουχρειάζεταικάτιτέτοιο). Προγραµµατισµός Ι 113

114 Σχόλιο Μην προσπαθείτε να φανείτε υπερβολικά (και προκαταβολικά) «έξυπνοι» όταν γράφετε κώδικα. Να φροντίζετε να γράφετε ένα πρόγραµµα µε πρώτο κριτήριο την αναγνωσιµότητα του δυστυχώς είναι εύκολο να γράφει κανείς ακατανόητο κώδικα. Βάζετε σχόλια στον κώδικα, και όταν χρειάζεται. Τυπικές περιπτώσεις όπου ένα σχόλιο βοηθάει: (α) περιγραφή λειτουργικότητας σε ψηλό επίπεδο, (β) τεκµηρίωση «περίεργου» κώδικα µε παρενέργειες, (γ) χρησιµότητα µεταβλητών του προγράµµατος. Συχνά, η (σωστή) µορφοποίηση του κειµένου είναι από µόνη της η πιο χρήσιµη περιγραφή του κώδικα. Προγραµµατισµός Ι 114

115 /* αντιπαράδειγµα */ #include <stdio.h> int main(int argc, char *argv[]) { int i; /* µεταβλητή ακεραίος i */ int s,n; /*άλλες δύο τέτοιες µεταβλητές*/ /* αρχικοποίηση µεταβλητών */ i=1; /* i γίνεται 1 */ s=0; /* s γίνεται 0 */ scanf("%d", &n); /* διάβασε τιµή */ /* αρχίζουµε τον υπολογισµό µας */ while (i<=n) /* δεν έχουµε τελειώσει */ { s=s+i; /* αύξησε s κατά i */ i++; /* αύξησε i κατά 1 */ printf("%d\n", s); /* τύπωσε αποτέλεσµα */ Προγραµµατισµός Ι lalis@inf.uth.gr 115

116 /* αντιπα ρά δειγµα */ #include <stdio.h> int main(int argc, char *argv[]) { int i;/* µεταβλητή ακεραίος i */ int s,n;/*άλλες δύο τέτοιες µεταβλητές*/ /* αρχικοποίηση µεταβλητών */ i=1; /* i γίνεται 1 */ s=0; /* s γίνεται 0 */ scanf("%d", &n); /* διάβασε τιµή */ /* και τώρα αρχίζουµε τον υπολογισµό µας */ while (i<=n) /* δεν έχουµε τελειώσει */ { s=s+i;/* αύξησε s κατά i */ i++;/* αύξησε i κατά 1 */ printf("%d\n", s); /* τέλος */ Προγραµµατισµός Ι lalis@inf.uth.gr 116

117 /* καλύτερα */ #include <stdio.h> int main(int argc, char *argv[]) { int n; /* από είσοδο */ int i; /* µετρητής από 1 µέχρι (και) n */ int s; /* s == i-1 */ scanf("%d", &n); i = 1; s = 0; while (i <= n) { s = s+i; i++; printf("%d\n", s); Προγραµµατισµός Ι lalis@inf.uth.gr 117

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

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

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

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών ΑΝΑΚΟΙΝΩΣΕΙΣ 2 Από την επόµενη εβδοµάδα αλλάζουν οι ώρες των εργαστηρίων. Οι νέες ώρες θα ανακοινωθούν σήµερα στη

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Βασικοί τύποι της C 2 Όνομα Τύπος / Κωδικοποίηση Μέγεθος (bytes) char Χαρακτήρας 1 int Ακέραιος 2 ή 4 (*) float Πραγματικός

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 5: Κυριολεκτικά Συνδυασμοί / Μετατροπές Τύπων Αριθμητική Χαρακτήρων Κυριολεκτικά (literals) 2 Κάποιες μεταβλητές του προγράμματος πρέπει συνήθως να αρχικοποιηθούν με συγκεκριμένη

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 7: Δομές Επανάληψης - Αναγνωσιμότητα 19/10/2015 Επανάληψη εκτέλεσης: while 2 while () lexpr true false body Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #4 κυριολεκτικά & μετατροπή τύπων 1 Σπύρος Λάλης Κυριολεκτικά (literals) Συχνά θέλουμε να αρχικοποιήσουμε μεταβλητές του προγράμματος με μια συγκεκριμένη τιμή υπάρχει επίσης η

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 6: Δομές Ελέγχου Δομές ελέγχου 2 Με τις εντολές εισόδου, εξόδου και επεξεργασίας των τιμών των μεταβλητών μπορεί να γραφτούν απλά προγράμματα. Οι δυνατότητες είναι περιορισμένες.

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #3 τελεστές 1 Σπύρος Λάλης Τελεστής ανάθεσης Το σύμβολο της ανάθεσης είναι το = προσοχή: το σύμβολο ελέγχου ισότητας είναι το == Η μορφή των προτάσεων = 1. Αποτιμάται

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #5 εκτέλεση υπό συνθήκη 1 Σπύρος Λάλης Ροή εκτέλεσης Μέχρι στιγμής η ροή εκτέλεσης του κώδικα είναι αυστηρά γραμμική Οι εντολές που γράφουμε στον κώδικα μας εκτελούνται μια προς

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #2 δομή προγράμματος C τύποι δεδομένων λειτουργίες εισόδου / εξόδου 1 Σπύρος Λάλης Η γλώσσα προγραμματισμού C Από τις παλιές γλώσσες προγραμματισμού Γλώσσα «προστακτικού» (imperative)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 2: Μνήμη Εισαγωγή στη C Μνήμη Μια διάταξη από «δωμάτια» κάθε ένα από τα οποία μπορεί να χρησιμοποιηθεί για την αποθήκευση 1 bit (0 / 1). 8 τέτοια δωμάτια οργανώνονται

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 2: Μνήμη Εισαγωγή στη C Μνήμη Μια διάταξη από «δωμάτια» κάθε ένα από τα οποία μπορεί να χρησιμοποιηθεί για την αποθήκευση 1 bit (0 / 1). 8 τέτοια δωμάτια οργανώνονται

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 3ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΕΚΤΥΠΩΣΗ ΚΕΙΜΕΝΟΥ Ένα κείμενο μπορεί να εκχωρηθεί ως τιμή μιας μεταβλητής

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

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

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

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8) Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις (Διάλεξη 8) 8-1 Τι θα δούμε σήμερα Η εντολή if else Η εντολή if else ιf - -else H εντολή switch Λογικές παραστάσεις Σχεσιακοί

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

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

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 2: Μνήµη Εισαγωγή στη C Μνήµη 2 Μια διάταξη από «δωµάτια» κάθε ένα από τα οποία µπορεί να χρησιµοποιηθεί για την αποθήκευση 1 bit (0 / 1). 8 τέτοια δωµάτια οργανώνονται

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

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009 Προγραµµατισµός Ι (ΗΥ10) ιάλεξη : Πίνακες, Αλφαριθµητικά Πίνακες Ο πίνακας είναι µια ειδική δοµή για την αποθήκευση µιας σειράς από δεδοµένα του ίδιου τύπου. Η δήλωσηενός πίνακα γίνεται όπως για µια κανονική

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Δείκτες Δείκτες Υπάρχουν περιπτώσεις που δεν ενδιαφέρει το περιεχόμενο αλλά η μιας μεταβλητής. Χρειάζεται κατάλληλος μηχανισμός αναφοράς και επεξεργασίας τιμών που

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

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

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

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

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

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

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

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

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

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

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

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

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

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

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

Παρακάτω δίνεται 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 ο Εργαστήριο

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

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Αναπαράσταση Δεδομένων ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Αναπαράσταση δεδομένων Κατάλληλη συμβολική αναπαράσταση δεδομένων, για απλοποίηση βασικών πράξεων, όπως πρόσθεση Πόσο εύκολο είναι

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

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

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

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

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

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

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

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

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

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

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

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

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Λογικό και (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0) 0ι Λογικοί Τελεστές: Πρόκειται για τελεστές που μας επιτρέπουν να συνδυάσουμε απλές εκφράσεις συσχετισμού και να δημιουργήσουμε πιό πολύπλοκες λογικές εκφράσεις. Εχουμε λοιπόν: && Λογικό "και" (AND) μας

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2 Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

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

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

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1 Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών

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

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

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

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

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

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

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

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

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

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

Προγραμματισμό για ΗΜΥ

Προγραμματισμό για ΗΜΥ ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

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

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

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

Κεφάλαιο 1. Συστήματα αρίθμησης και αναπαράστασης

Κεφάλαιο 1. Συστήματα αρίθμησης και αναπαράστασης Κεφάλαιο 1 Συστήματα αρίθμησης και αναπαράστασης 1.1 Εισαγωγή Οι υπολογιστές αναπαριστούν όλα τα είδη πληροφορίας ως δυαδικά δεδομένα. Έτσι, για την ευκολότερη και ταχύτερη επεξεργασία των διαφόρων πληροφοριών,

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

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

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

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

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

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

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

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

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

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

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

Αντικειµενοστρεφής Προγραµµατισµός

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

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

8. Συνθήκες ελέγχου, λογικοί τελεστές Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 8. Συνθήκες ελέγχου, λογικοί τελεστές Ιωάννης Κατάκης Σήμερα o Λογικές παραστάσεις Σχεσιακοί τελεστές Λογικοί τελεστές o if -else o switch Λογικές παραστάσεις

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 12: Συναρτήσεις & Δείκτες Αλλαγή του «εξωτερικού» περιβάλλοντος Αν σαν παράμετρος μιας συνάρτησης δοθεί μια μεταβλητή, σαν πραγματική παράμετρος θα περαστεί η τιμή της.

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