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

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

Δομές Δεδομένων και Αλγόριθμοι

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

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

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

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

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

Transcript:

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

Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων τα οποία έχουν εσκεμμένα διαταχθεί με συγκεκριμένο τρόπο. Αλγόριθμος Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών που αποσκοπεί στην εκτέλεση μιας εργασίας. Οι αλγόριθμοι υπάρχουν μαζί με τις δομές δεδομένων πάνω στις οποίες επενεργούν. Algorithms + Data Structures = Programs Σχετικά πεδία με τους αλγορίθμους και τις δομές δεδομένων από το χώρο της επιστήμης υπολογιστών είναι οι βάσεις δεδομένων, ο αντικειμενοστραφής προγραμματισμός, η τεχνολογία λογισμικού........................................ 2 / 14

Παραδείγματα Δομών Δεδομένων Πίνακες (arrays) Δομές (structs) Αντικείμενα (objects) Λίστες (lists) Σύνολα (sets) Στοίβες (stacks) Ουρές (queues) Λεξικά (dictionaries) Δένδρα (trees) Σωροί (heaps) Γραφήματα (graphs) Κατακερματισμένοι πίνακες (hash tables)........................................ 3 / 14

Βασικές αλγοριθμικές έννοιες Επανάληψη (iteration): Εκτέλεση των ίδιων εντολών πολλές φορές. Πολυπλοκότητα αλγορίθμων (algorithmic complexity): Εκτίμηση για την απόδοση ενός αλγορίθμου Αντικείμενα (objects): Ενισχυμένη δομή δεδομένων με λειτουργίες που μπορούν να εφαρμοστούν πάνω της. Αναδρομή (recursion): Κλήση του αλγορίθμου από τον ίδιο τον αλγόριθμο. Κατακερματισμός (hashing): Μετασχηματισμός πληροφορίας σε ένα μικρού μεγέθους κλειδί που αναπαριστά το περιεχόμενο της πληροφορίας......................................... 4 / 14

Παραδείγματα Αλγορίθμων Mergesort Quicksort Binary Search Dijkstra s Shortest Path Huffman coding Hashing Bloom filters........................................ 5 / 14

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

Βιβλιογραφία "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 7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πιο Σύνθετο Παράδειγμα 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); } 24

Βασικοί Τύποι Δεδομένων 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 25

Μεταβλητές 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; 26

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

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

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

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 30

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

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

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

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

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

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

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

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

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

Εντολή 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); 40

Εντολή 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); 41

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

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

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

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