Αλγόριθμοι. Χρυσόστομος Στύλιος. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής. Δομές Δεδομένων & Αλγόριθμοι 1

Σχετικά έγγραφα
Αλγόριθμοι. Χρυσόστομος Στύλιος. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής. Δομές Δεδομένων & Αλγόριθμοι 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 17

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

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

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

Διαδικασία Ανάπτυξης Λογισμικού

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

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

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

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

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

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

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

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

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

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

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

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

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

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

TMHMA TEXNΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛ/ΝΙΩΝ Προγραμματισμός Ι ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ , Α ΕΞΑΜΗΝΟ Βασίλης Μποζαντζής. Βασίλης Μποζαντζής

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

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

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

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

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

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

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

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

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

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

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

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

Δομές Δεδομένων (Data Structures)

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

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

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

Διάλεξη 22η: Επιπλέον στοιχεία της C

Transcript:

Αλγόριθμοι Χρυσόστομος Στύλιος stylios@teiep.gr Πληροφορικής Αλγόριθμοι 1

Εργασία Αντικείμενο: υλοποίηση αλγορίθμων και δομών δεδομένων σε C++ Τμήματα: - Θεωρητική μελέτη - Κώδικας με σχόλια - Πειραματικές μετρήσεις 2

Προτεινόμενα Βιβλία Δομές Δεδομένων Αλγόριθμοι και Εφαρμογές στη C++ (2004) Sartaj Shani Μετάφραση: Ι. Μανωλόπουλος, Ι. Θεοδωρίδης (Εκδόσεις Τζιόλα) Δομές Δεδομένων (Έννοιες, Τεχνικές & Αλγόριθμοι) (2002) Γεώργιος Γεωργακόπουλος (Πανεπιστημιακές εκδόσεις Κρήτης) Αλγόριθμοι στην Java, (2005) Robert Lafore (Εκδόσεις Γκιούρδας) Δομές Δεδομένων (2006) Παναγιώτης Μποζάνης, (Εκδόσεις Τζιόλα) Εισαγωγή στους Αλγορίθμους (2006) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (Πανεπιστημιακές Εκδόσεις Κρήτης) 3

Βιβλιογραφία "Data Structures and Algorithms in C++", M. T. Goodrich, R. Tamassia and D. Mount, Wiley, 2004 "Data Structures and Algorithm Analysis'', Clifford A. Shaffer, Prentice Hall, 1997 "Algorithms Data Structures and Problem Solving Using C++'', Mark Allen Weis, Addison-Wesley, 2000 "Data Structures & Algorithm Analysis in C++, Mark Allen Weis, Addison-Wesley, 1999 4

Διδασκαλία του Μαθήματος Βασικές γνώσεις C++ (Διδάσκεται σε διαφορετικό μάθημα) Βασικές γνώσεις αλγορίθμων Θα μελετηθούν οι απαραίτητες βασικές έννοιες ώστε να προχωρήσουμε με άνεση. Δομές Δεδομένων και αλγόριθμοι 5

Στόχοι Διδασκαλίας 1. Κατανόηση της αρχής ότι κάθε δομή δεδομένων έχει υπέρ και κατά 2. Εκμάθηση των πιο δημοφιλών δομών δεδομένων Αυτές σχηματίζουν ένα βασικό σύνολο εργαλείων πάνω στις δομές δεδομένων, το οποίο είναι χρήσιμο για έναν προγραμματιστή 3. Κατανόηση των τεχνικών μέτρησης του κόστους μιας δομής δεδομένων ή ενός προγράμματος Αυτές οι τεχνικές επίσης επιτρέπουν να κριθεί η αξία νέων δομών δεδομένων που μπορεί να ανακαλυφθούν στο μέλλον 6

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

Δομές Δεδομένων Αναπαράσταση δεδομένων στην μνήμη Δομές Αρχείων: αναπαράσταση δεδομένων στον δίσκο Μια συλλογή εγγραφών μπορεί να αναπαριστάνεται με λίστα ή δέντρο Τααποδοτικά προγράμματα απαιτούν αποδοτικές δομές δεδομένων Ένα πρόβλημα πρέπει να λυθεί μέσα στα όρια χρόνου και μνήμης της εφαρμογής 8

Περιορισμοί Προβλήματος Κάθε πρόβλημα βάζει περιορισμούς χρόνου και χώρου μνήμης π.χ., παράδειγμα τράπεζας: άνοιγμα λογαριασμού: μερικά λεπτά συναλλαγές: μερικά δευτερόλεπτα κλείσιμο λογαριασμού: όλη τη νύκτα Μια λύση είναι αποδοτική εάν λύνει το πρόβλημα μέσα στα όρια μνήμης και χρόνου που έχουν δοθεί Κόστος της λύσης: ποσοστό των πόρων που καταναλώθηκαν 9

Στα πλαίσια του μαθήματος Διδασκαλία δομών δεδομένων για την κύρια μνήμη και τον δίσκο Διδασκαλία αλγορίθμων για διαφορετικά προβλήματα και δομές δεδομένων Διδασκαλία της ιδέας των διλημμάτων Υπάρχουν κόστη και κέρδη που συνδέονται με κάθε δομή δεδομένων και κάθε αλγόριθμο Διδασκαλία μεθόδων μέτρησης της αποτελεσματικότητας αλγορίθμων και δομών δεδομένων 10

Επιλέγοντας Δομές Δεδομένων 1. Ανάλυση του προβλήματος για να καθοριστούν τα όρια των πόρων που η λύση πρέπει να τηρεί 2. Καθορισμός των διαδικασιών που πρέπει να υποστηρίζονται από την εφαρμογή π.χ., αναζήτηση, εισαγωγή, διαγραφή δεδομένων 3. Ποσοτικοποιήστε τα όρια για κάθε λειτουργία π.χ., η αναζήτηση πρέπει να είναι γρήγορη 4. Επιλογή της δομής δεδομένων που ικανοποιεί καλύτερα αυτές τις απαιτήσεις 11

Κόστος & Κέρδος Κάθε δομή δεδομένων χρειάζεται: Χώρο για τον κάθε τύπο δεδομένων που αποθηκεύει Χρόνο εκτέλεσης κάθε λειτουργίας Προγραμματιστική προσπάθεια για να αναπτυχθεί Κάθε δομή δεδομένων έχει κόστη και κέρδη Σπάνια μια δομή δεδομένων είναι καλύτερη από μια άλλη σε όλες τις περιπτώσεις Κάποια μπορεί να επιτρέπει γρηγορότερη αναζήτηση (ή εισαγωγή ή διαγραφή) από μια άλλη Είναι όλες οι διαδικασίες το ίδιο σημαντικές; 12

Διάρθρωση Μαθήματος Εισαγωγή στη C και C++ Θέματα αλγορίθμων & απόδοσης αλγορίθμων Αναπαράσταση δεδομένων Πίνακες Λίστες, Στοίβες, Ουρές Δένδρα (Δυαδικά, Αναζήτησης, AVL) Σωροί Αναζήτηση και Ταξινόμηση Κατακερματισμός 13

Εισαγωγή στις γλώσσες C και C++ 14

Βασικά Στοιχεία Γλωσσών Οι γλώσσες προγραμματισμού αποτελούν εργαλεία για την ανάπτυξη πακέτων λογισμικού (προγράμματα). Πρόγραμμα = Υλοποίηση Αλγορίθμων + Υλοποίηση Δομών Δεδομένων 15

Διαχωρισμός Γλωσσών Δομημένες Γλώσσες Προγραμματισμού, όπως Pascal, C Γλώσσες Βασισμένες στα Αντικείμενα (object-oriented), C++, Java. 16

Ένα Απλό Παράδειγμα C # include <stdio.h> main ( ) { int x, y; x = 5; y=4; printf ( x + y = %d, x+y); } 17

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

Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής στην πράξη Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέως φάσματος συστημάτων και εφαρμογών Έχει χρησιμοποιηθεί ως βάση για πληθώρα άλλων γλωσσών: C++, Java 19

Εκτέλεση Προγραμμάτων Πηγαίος κώδικας (source) demo.c Προεπεξεργαστής C (preprocessor) Μεταγλωττιστής C (compiler) stdio.h Αρχεία επικεφαλίδας (header files) Object code demo.obj Εκτελέσιμο πρόγραμμα (executable) demo.exe Συνδέτης (linker) printf Βιβλιοθήκη (library) 20

Πιο Σύνθετο Παράδειγμα C #include <stdio.h> #include <math.h> #define PI 3.14 main () { float e,p,r; printf( Δώσε την ακτίνα του κύκλου: \n"); scanf("%f", &r); /* Εισαγωγή της ακτίνας από το χρήστη*/ e=pi*pow(r,2); /* Εύρεση του εμβαδού του κύκλου από τον τύπο Ε=π*r2 */ p=2*pi*r; /* Εύρεση της περιμέτρου του κύκλου από τον τύπο Π=2*π*r */ printf("to εμβαδό του κύκλου είναι ίσο με %.2f και η" "περίμετρος του κύκλου είναι ίση με %.2f", e, p); } 21

Βασικοί Τύποι Δεδομένων char, signed char, unsigned char signed short int, unsigned short int signed int, unsigned int signed long int, unsigned long int float, double, long double 22

Μεταβλητές int x; int x, y, z; double r; unsigned long abc; int x = 1; int x, y = 0, z = 2; double r = 1.87; unsigned long abc = 42000000; 23

Σταθερές ακέραιες σταθερές 42 0-1 δεκαδικές 037 οκταδικές 0x1f δεκαεξαδικές 42U 42L 42UL unsigned & long σταθερές κινητής υποδιαστολής 42.0-1.3 δεκαδικές 2.99e8 με δύναμη του 10 42.0F 42.0L float & long double 24

Σταθερές (συνέχεια) χαρακτήρα 'a' '0' '$' ειδικοί χαρακτήρες \n αλλαγή γραμμής \' απόστροφος \\ χαρακτήρας \ (backslash) \t αλλαγή στήλης (tab) \" εισαγωγικό \0 χαρακτήρας με ASCII = 0 (null) \037» με ASCII = 37 (οκταδικό) \x1f» με ASCII = 1f (δεκαεξαδικό) 25

Σταθερές (συνέχεια) συμβολοσειρές "abc" "Hello world!\n" "a\"51\"" δηλώσεις σταθερών const int size = 10, num = 5; const double pi = 3.14159; const char newline = '\n'; 26

printf ( ): εκτύπωση απλοί τύποι δεδομένων int %d char %c double %lf string %s παράδειγμα printf("%d %lf %c %s\n", 42, 1.2, 'a', aloha"); αποτέλεσμα 42 1.200000 a aloha 27

scanf ( ): ανάγνωση Ίδιοι κωδικοί για τους απλούς τύπους Παράδειγμα int n; double d; char c; scanf("%d", &n); scanf("%lf", &d); scanf("%c", &c); 28

Τελεστές και Εκφράσεις αριθμητικοί τελεστές + - * / % σχεσιακοί τελεστές ==!= < > <= >= λογικοί τελεστές && λογική σύζευξη (και) λογική διάζευξη (ή)! λογική άρνηση (όχι) π.χ. (x % 3!= 0) &&!finished 29

Τελεστές και Εκφράσεις (συνέχεια) τελεστές bit προς bit (bitwise) & σύζευξη bit (AND) διάζευξη bit (OR) ^ αποκλειστική διάζευξη bit (XOR) ~ άρνηση (NOT) << ολίσθηση bit αριστερά >> ολίσθηση bit δεξιά παράδειγμα (0x0101 & 0xfff0) << 2 0x0400 30

Τελεστές και Εκφράσεις (συνέχεια) τελεστής συνθήκης (a >= b)? a : b τελεστής παράθεσης a-1, b+5 τελεστές ανάθεσης a = b+1 a += x ισοδύναμο με a = a + x τελεστές αύξησης και μείωσης a++ a-- τιμή πριν τη μεταβολή ++a --a τιμή μετά τη μεταβολή 31

Έλεγχος Ροής Προγράμματος Εντολή if if (a >= b) max = a; else max = b; 32

Έλεγχος Ροής Προγράμματος Σύνθετη εντολή if (a >= b) { min = b; max = a; } else { max = b; min = a; } Ορίζει νέα εμβέλεια if (x < y) { int temp = x; } x = y; y = temp; 33

Έλεγχος Ροής Προγράμματος while (συνθήκη) εντολή Εντολή while int i = 1, s = 0; while (i <= 10) { s += i; i++; } συνθήκη αληθής εντολή ψευδής 34

Έλεγχος Ροής Προγράμματος do εντολή while (συνθήκη); Εντολή do-while int i = 1, s = 0; do { s += i++; } while (i <= 10); εντολή συνθήκη ψευδής αληθής 35

Έλεγχος Ροής Προγράμματος for (αρχικοποίηση ; συνθήκη ; βήμα) εντολή Εντολή for int i, s; for (i=1, s=0; i <= 10; i++) s += i; αρχικοποίηση συνθήκη αληθής εντολή βήμα ψευδής 36

Εντολή break int s; for (i=0, s=0; i < 10; i++) { int x; scanf("%d", &x); if (x < 0) break; s += x; } printf("sum is: %d\n", s); 37

Εντολή continue int s; for (i=0, s=0; i < 10; i++) { int x; scanf("%d", &x); if (x < 0) continue; s += x; } printf("sum is: %d\n", s); 38

switch (ch) { Eντολή switch } case 'a': printf("alpha\n"); break; case 'b': case 'c': printf("beta or c\n"); break; default: printf("other\n"); 39

Εντολή goto int i = 1, s = 0; loop: s += i++; if (i < 10) goto loop; printf("the sum is %d\n", s); Όχι goto: δομημένος προγραμματισμός! 40

Αντικειμενοστρεφής Προγραμματισμός Τι είναι: Μοντέλο προγραμματισμού -> Ένας τρόπος σκέψης Τυπικός ορισμός: Η αντικειμενοστρέφεια (object-orientation) είναι μία προσέγγιση στην ανάπτυξη λογισμικού που οργανώνει τόσο το πρόβλημα όσο και τη λύση του ως μία συλλογή από διακριτά αντικείμενα. Τα αντικείμενα αλληλεπιδρούν για την επίλυση του προβλήματος 41

Αντικειμενοστρεφής Προγραμματισμός 1967: Simula67 (Νορβηγία) -> πρώτη αντικειμενοστρεφής γλώσσα 70: Smalltalk (Palo Alto, CA) -> κάθε στοιχείo ένα αντικείμενο Αρχές 80: o αντικειμενοστρεφής τρόπος σκέψης εισάγεται σε ακαδημαϊκούς κύκλους 80: C++ (Stroustrup, AT&T): σοβαρή, αποδοτική γλώσσα, πρότυπο στη βιομηχανία 1995: JAVA, Sun Microsystems 42