Προγραµµατισµός. Αλγόριθµοι και Προγράµµατα

Σχετικά έγγραφα
ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Κεφάλαιο : Εισαγωγή Στον Προγραμματισμό. (Διάλεξη 2) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ. Περιεχόμενα

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Κεφάλαιο : Εισαγωγή Στον Προγραμματισμό. (Διάλεξη 2) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

ΕΠΛ 032.3: Προγραµµατισµός Μεθόδων Επίλυσης Προβληµάτων

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ

ΕΠΛ 032 Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ. Γενική Περιγραφή

ΠαράδειγµαΠρογραµµατισµού

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 1. Εισαγωγή. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

ΕΠΛ 032 Προγραµµατισµός Μεθόδων Επίλυσης Προβληµάτων

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Αλγόριθµοι και Προγράµµατα

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

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

ΕΠΛ 131 ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι

Προγραµµατισµός Η/Υ. Μέρος2

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

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

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

Α. Ερωτήσεις Ανάπτυξης

Προγραμματισμός Αλγόριθμοι και Προγράμματα

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

Α. 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 (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

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

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

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

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

Πληροφορική 2. Αλγόριθμοι

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

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

6. Εισαγωγή στον προγραµµατισµό

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Επιµέλεια Θοδωρής Πιερράτος

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

Εισαγωγή στην επιστήμη των υπολογιστών

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

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

Θέματα Προγραμματισμού Η/Υ

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

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

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Transcript:

Προγραµµατισµός Αλγόριθµοι και Προγράµµατα Προγραµµατισµός

Α Μέρος Εισαγωγή στον προγραµµατισµό Προγραµµατισµός

Υλικό: Hardware ευτερεύουσα µνήµη Συσκευές εισόδου RAM (κύρια µνήµη) Συσκευές εξόδου CPU HY (κεντρική µονάδα επεξεργασίας) Προγραµµατισµός 3

Ανατοµία ενός ΗΥ Μέσω των συσκευών εισόδου δεδοµένα και προγράµµατα εισάγονται από τον έξω κόσµο στον Η/Υ. Μέσω των συσκευών εξόδου δεδοµένα και ενέργειες του Η/Υ καθίστανται διαθέσιµα στον εξωτερικό κόσµο. Η µνήµη είναι µια συλλογή από κελιά (cells) το καθένα από τα οποία έχει µια µοναδική φυσική διεύθυνση. Υπάρχει η κύρια και η δευτερεύουσα µνήµη. Η κεντρική µονάδα επεξεργασίας δέχεται εντολές και δεδοµένα. Τα δεδοµένα επεξεργάζονται σύµφωνα µε τις εντολές που έχουν δοθεί και τα αποτελέσµατα διαβιβάζονται στις κατάλληλες µονάδες ή στη µνήµη. Προγραµµατισµός 4

Οργάνωση ενός ΗΥ Προγραµµατισµός 5

Μνήµη Είναι ο χώρος όπου αποθηκεύει προσωρινά ο επεξεργαστής τα δεδοµένα και τις εντολές που επεξεργάζεται. Σε κάθε θέση αποθηκεύεται ένα αριθµός από δυαδικά ψηφία (bits) 0,1. Ένα byte αποτελείται από 8 bit και είναι ο χώρος που απαιτείται για την αποθήκευση ενός χαρακτήρα Προγραµµατισµός 6

Λογισµικό / Software (προγράµµατα) Συστήµατος: λειτουρικό σύστηµα, µεταφραστές, οδηγοί συσκευών, utilities Γενικής χρήσης: επεξεργαστές κειµένου, αναπαραγωγή video, WWW browsing κτλ Προγραµµατισµός 7

Προγραµµατισµός και Αλγόριθµοι Πρόγραµµα = Αλγόριθµος σε µια συγκεκριµένη γλώσσα υπολογιστή Γλώσσα Μηχανής: η µόνη γλώσσα που πραγµατικά καταλαβαίνει ο υπολογιστής Γλώσσες Προγραµµατισµού Χαµηλού επιπέδου, πιο κοντά στη γλώσσα µηχανής Μεσαίου Υψηλού, πιο κοντά στην καθοµιλουµένη Η επιλογή της γλώσσας προγραµµατισµού εξαρτάται από την εφαρµογή Συνήθως το πρόγραµµα γράφεται «ευκολότερα» (είναι πιο σύντοµο) στις υψηλού επιπέδου γλώσσες όµως εκτελείται µε µικρότερη ταχύτητα σε σύγκριση µε µια χαµηλού επιπέδου υλοποίηση. Πολλά όµως εξαρτώνται και από τον προγραµµατιστή. Οι µεταφραστές έχουν εξελιχθεί Η γλώσσα C µπορεί να παράξει ταχύτατα προγράµµατα Προγραµµατισµός 8

Οικογένειες Γλωσσών Προγραµµατισµού Μερικές σηµαντικές κλάσεις: ιαδικαστικές (Procedural) : C, Pascal, Fortran Παραδοσιακός τρόπος προγραµµατισµού Σειρά εντολών - ρουτίνες Συναρτησιακές (Functional) : Lisp, Mathematica Σειρά εντολών Οι συναρτήσεις συµβολισµοί είναι αντίστοιχοι µε τα µαθηµατικά ηλωτικές (Declarative) : Prolog, XML Αποτελούνται από σειρά ορισµούς και δηλώσεις Λογικός Προγραµµατισµός (Logic Programming) Προγραµµατισµός µε βάση Περιορισµούς (Constraint Programming) Αντικειµενοστραφής Προγραµµατισµός Παράλληλος Προγραµµατισµός ιαδικτυακός Προγραµµατισµός Προγραµµατισµός 9

Γλώσσες προγραµµατισµού Γλώσσα Μηχανής- Machine Language: Είναι η «φυσική» γλώσσα των Η/Υ. Είναι κώδικας σε δυαδική µορφή (0,1). Έχει 1-1 αντιστοιχία µε την assembly (κατανοητή από ανθρώπους) ιακρίνεται (διακρινόταν) για την ταχύτητα εκτέλεσης των εντολών της και την βέλτιστη χρήση της κύριας µνήµης. Είναι δύσκολη στην χρήση της, στον εντοπισµό και διόρθωση λαθών Προγραµµατισµός 10

Γλώσσες προγραµµατισµού Γλώσσες υψηλού επιπέδου Bρίσκονται πιο κοντά στις ανθρώπινες γλώσσες. Χρησιµοποιούν ένα µικρό σύνολο από αγγλικές λέξεις. Για να εκτελεστεί ένα τέτοιο πρόγραµµα γίνεται χρήση µεταγλωττιστών (Compilers) Παραδείγµατα: Fortran, Basic, Pascal, C. Προγραµµατισµός 11

ιερµηνευµένες Γλώσσες (Interpreted) Αλγόριθµος Γραµµή εντολών (κώδικας) (π.χ. move arm, show image, run script A1, move west ) ιερµηνέας (Interpreter), ανάλυση και εκτέλεση εντολής Εκτελέσιµο Προγραµµατισµός 12

Συγγραφή, µεταγλώττιση και εκτέλεση ενός προγράµµατος σε γλώσσα υψηλού επιπέδου Προγραµµατισµός 13

Προγραµµατιστική επίλυση προβληµάτων Περιγραφή του προβλήµατος. Προσδιορισµός απαιτήσεων. Ανάλυση του προβλήµατος. Προσδιορισµός εισόδων, εξόδων. Προσδιορισµός της λύσης. Σχεδίαση της λύσης του προβλήµατος. Ανάλυση αλγορίθµου. Σχεδιασµός διαγράµµατος ροής. ηµιουργία ψευδοκώδικα. Κωδικοποίηση του αλγορίθµου σε γλώσσα προγραµµατισµού. οκιµή, έλεγχος και διόρθωση λαθών. Συντήρηση και τεκµηρίωση του προγράµµατος Προγραµµατισµός 14

Αλγόριθµοι Μια ακολουθία από βήµατα/ενέργειες που είναι: Καλώς (σαφώς) ορισµένα Αποτελεσµατικά (µπορούν να εκτελεστούν) Πεπερασµένα (τερµατισµός) Συνήθως δέχονται δεδοµένα Παραδείγµατα αλγορίθµων Υπολογισµού ηµεροµηνίας Πάσχα Υπολογισµός ριζών Πολλ/σµός Αντιστροφής πινάκων Αναζήτησης και Ταξινόµησης Εύρεσης συντοµότερου µονοπατιού Πρόβλεψης Ανάλυσης ιατρικών εικόνων ροµολόγησης πακέτων στο Internet Προγραµµατισµός 15

Αλγόριθµοι Απαιτήσεις - Πρόβληµα Προδιαγραφές Σχεδίαση - Ορθότητα Πολυπλοκότητα (µε βάση το µέγεθος των δεδοµένων Ν) (προαιρετική για το µάθηµα µας) Υπολογιστικό Κόστος Κόστος σε Μνήµη Βελτιστοποίηση (προαιρετική για το µάθηµα µας) Υλοποίηση Προγραµµατισµός 16

Παράδειγµα (1/3) Πρόβληµα: µε είσοδο τη λίστα φοιτητών όλου του τµήµατος, τύπωσε τα ονοµάτα των φοιτητών του πρώτου έτους 1 2 3 1 1 3 2 1 1 Προγραµµατισµός 17

Παράδειγµα (2/3) εδοµένα Εισόδου: STUDENTS.DAT Αποτέλεσµα (Έξοδος): Τα ονόµατα των φοιτητών του 1ου έτους. Για να επεξεργαστούµε µια εγγραφή θα πρέπει να προσπελασθεί από το δίσκο (DISK) στη µνήµη (RAM) Hard disk Προγραµµατισµός 18

Παράδειγµα (3/3) Λύση: 1. Άνοιξε το αρχείο. 2. ιάβασε µια εγγραφή από το δίσκο στη µνήµη. 3. Αν είναι φοιτητής του πρώτου έτους, τύπωσε το όνοµά του. 4. Αν υπάρχει επόµενη εγγραφή διάβασε την και µετά επανέλαβε το βήµα 3-4. Προγραµµατισµός 19

ιάγραµµα Ροής Προγραµµατισµός 20

Ψευδοκώδικας /* This is a comment */ start /* Start program*/ open STUDENT.DAT /* Open file */ read rec /* Read Record */ while not EOF do /* repeat until end */ if rec.year==1 then print rec.name read rec /* Read next record*/ end while close STUDENT.DAT /* Close file */ end /* End of program */ Προγραµµατισµός 21

Κώδικας C #include <stdio.h> #define MAX 100 int main() { FILE *fp; char line[max], *c; /* open file*/ fp = fopen("student.dat","r"); if (fp==null) { printf("unable to open file!\n"); exit(-1); } /* read line (one record) */ c = fgets(line, MAX, fp); while (c!= NULL) { /* getyear() returns the year */ if (getyear(line) == 1) printf("%s", line); /* read next line (one record) */ c = fgets(line, MAX, fp); } fclose(fp); return 0; } Προγραµµατισµός 22

Μετάφραση - Εκτέλεση Προγραµµατισµός 23

Έλεγχος Επέστρεψε το πρόγραµµα τις αναµενόµενες τιµές? Davis Albert none 1668-78-9226 Weller Anthony none 1780-52-0498 Costello Barbara none 1599-98-7962 Biggert Barney none 1058-86-1065 Hastert Baron speaker@volcano.com 1075-45-4923 Ναι! Το πρόγραµµα πρέπει να ελεγχθεί και µε άλλες τιµές εισόδου πριν να χρησιµοποιηθεί. Αν βρεθούν λάθη τότε αυτά πρέπει να διορθωθούν Προγραµµατισµός 24

Συντήρηση Συντήρηση προγράµµατος: Συγγραφή τεκµηρίωσης Το λογισµικό εγκαθίσταται και ξεκινά η λειτουργία του. Το περιβάλλον αλλάζει, άρα αλλάζει και το πρόγραµµα Οι χρήστες επιθυµούν / χρειάζονται περισσότερα από το πρόγραµµα Προγραµµατισµός 25

Άνθρωπος - Μηχανή Χρήση υπολογιστή αν: Έχουµε πολλά στοιχεία να επεξεργαστούµε. Παράγονται πολλά αποτελέσµατα. Μέθοδος επίλυσης εξαιρετικά πολύπλοκη ή βαρετή για ένα άνθρωπο. Χρησιµοποιούµε την ίδια µέθοδο πολλές φορές. Ο Η/Υ εκτελεί «πράξεις» γρηγορότερα από τον άνθρωπο. Ο Η/Υ µπορεί να «θυµάται» περισσότερα πράγµατα από τον άνθρωπο. Ο Η/Υ µπορεί να εκτελέσει µε ακρίβεια και πειθαρχεία µια λογική σειρά εντολών. Ο Η/Υ δεν κουράζεται ούτε βαριέται Προγραµµατισµός 26

Ορισµοί Αλγόριθµος: ονοµάζουµε µια ταξινοµηµένη ακολουθία µηδιφορούµενων βηµάτων που οδηγούν στη λύση ενός προβλήµατος. Πρόγραµµα: ονοµάζουµε την αναπαράσταση ενός ή πολλών αλγορίθµων σε µορφή κατανοητή από τον υπολογιστή Προγραµµατισµός: Η διαδικασία της ανάπτυξης ενός αλγορίθµου σε συνδυασµό µε τη συγγραφή του προγράµµατος. Γλώσσα Προγραµµατισµού: Το σύνολο των γραµµατικών και συντακτικών κανόνων που µας επιτρέπει να δίνουµε εντολές στον Η/Υ µέσω ενός προγράµµατος. Κύκλος Ανάπτυξης Προγράµµατος: Η διαδικασία που ακολουθούµε για την ανάπτυξη ενός προγράµµατος Προγραµµατισµός 27

Κύκλος Ανάπτυξης Προγράµµατος Ο κύκλος ανάπτυξης προγράµµατος αναλύεται σε έξι βασικά βήµατα: 1. Περιγραφή του προβλήµατος, καθορισµός απαιτήσεων. 2. Ανάλυση προβλήµατος, προσδιορισµός της λύσης. 3. Σχεδίαση της λύσης του προβλήµατος: Ανάπτυξη αλγορίθµου Σχεδιασµός διαγράµµατος ροής ηµιουργία ψευδοκώδικα 4. Κωδικοποίηση σε γλώσσα προγραµµατισµού. 5. Έλεγχος, διόρθωση λαθών. 6. Συντήρηση προγράµµατος, τεκµηρίωση. Προγραµµατισµός 28

Περιγραφή του προβλήµατος & καθορισµός απαιτήσεων (1/2) Ξεκάθαρη διατύπωση του προβλήµατος. Αποµονώνουµε και καταγράφουµε µε απλά βήµατα τις πραγµατικές συνιστώσες ενός προβλήµατος, τοποθετώντας τις σε λογική σειρά µεταξύ τους. Εξαλείφουµε άσχετες πληροφορίες Αποσαφηνίζουµε διφορούµενες πληροφορίες. Ζητούµε, εάν χρειάζεται, επιπλέον πληροφορίες από το άτοµο που διατυπώνει το πρόβληµα. Αποσαφηνίζουµε τους στόχους που επιδιώκουµε να υλοποιήσουµε µε αναλυτικό τρόπο προκειµένου να καταγραφεί το πλαίσιο απαιτήσεων της όλης προσπάθειας. Προγραµµατισµός 29

Περιγραφή του προβλήµατος & καθορισµός απαιτήσεων (2/2) Πρόβληµα: To µάθηµα ΗΥ150 προσφέρεται από το Τµήµα Επιστήµης Υπολογιστών. Το µάθηµα παρακολούθησαν το εαρινό εξάµηνο του 2011, 100 άτοµα. Ταξινοµήστε τα άτοµα αυτά ανάλογα µε τη βαθµολογία της τελικής εξέτασης. Επιπλέον Πληροφορίες: Ποια δεδοµένα θα δοθούν (ονόµατα, βαθµοί, τηλέφωνο, ) και πώς (από αρχείο, ή από το χρήστη). Τα αποτελέσµατα πως θα παρουσιάζονται? Θα τυπώνονται ή θα φυλάσσονται σε αρχείο; Άσχετες Πληροφορίες: To µάθηµα ΕΠΛ003 προσφέρεται από το Τµήµα Πληροφορικής. Το µάθηµα παρακολούθησαν το χειµερινό εξάµηνο του 2011, 100 άτοµα. ιφορούµενες Πληροφορίες: Ταξινοµήστε (αύξουσα ή φθίνουσα σειρά)? Προγραµµατισµός 30

Ανάλυση του προβλήµατος & προσδιορισµός της λύσης (1/2) Ως µέρος της ανάλυσης απαντούµε στις πιο κάτω ερωτήσεις: ποια είναι τα δεδοµένα εισόδου (inputs) ποια είναι τα εξαγώµενα/αποτελέσµατα (outputs) ποια είναι η λύση (σχετικές αριθµητικές πράξεις) Είσοδος Λογισµικό Έξοδος Προγραµµατισµός 31

Ανάλυση του προβλήµατος & προσδιορισµός της λύσης (2/2) Σκιαγραφούµε ένα προσχέδιο της επίλυσης του προβλήµατος. Ελέγχουµε αν η λύση καλύπτει τους στόχους που έχουν τεθεί και αν παράγει τα επιθυµητά δεδοµένα εξόδου. ιερευνούµε την πιθανότητα ύπαρξης περισσοτέρων λύσεων. Επιλέγουµε τη βέλτιστη λύση µε βάση τις προδιαγραφές που έχουν τεθεί. ΠΡΟΣΟΧΗ: ΛΑΘΟΣ ΑΝΑΛΥΣΗ => ΛΑΘΟΣ ΛΥΣΗ Προγραµµατισµός 32

Σχεδιασµός της λύσης Αναπτύσσουµε τον αλγόριθµο επίλυσης του προβλήµατος ακολουθία αυστηρά δοµηµένων βηµάτων προκειµένου να επιλύσουµε το πρόβληµα. Για την περιγραφή της λύσης ενός προγράµµατος χρησιµοποιούµε: τον ψευδοκώδικα ή/και το λογικό διάγραµµα Αλγόριθµος: ένα σύνολο εκτελέσιµων και σαφών εντολών που κατευθύνει µία διαδικασία που τερµατίζει Ένα διατεταγµένος και περασµένο σύνολο εντολών για τον υπολογισµό µιας συνάρτησης Η λέξη αλγόριθµος (ή αλγόρισµος) προέρχεται από τον Πέρση µαθηµατικό, γεωγράφο και αστρονόµο, υπότροφο του Παλατιού της Βαγδάτης, Muḥammad ibn Musa al-khwarizmi, από τον οποίο προέρχεται και η λέξη Άλγεβρα επίσης. Προγραµµατισµός 33

Αλγόριθµοι Γιατί να καταγράψω τον αλγόριθµο; Για ιδίαν χρήση ε χρειάζεται να ξανασκεφτείτε το πρόβληµα Ώστε άλλοι να µπορούν να το επιλύσουν, χωρίς να ξέρουν πολλά γύρω από αυτό ε χρειάζεται να καταλάβουν τις αρχές πίσω από αυτό το πρόβληµα. Απλώς ακολουθούν τις εντολές. Η νοηµοσύνη είναι «κωδικοποιηµένη στον αλγόριθµο» Για να σας βοηθήσει να καταλάβετε αν επιλύει ορθά το πρόβληµα, να βρείτε αν είναι αποδοτικός Προγραµµατισµός 34

Αλγόριθµοι Παραδείγµατα αλγορίθµων Οδηγίες πλυντηρίου Οδηγίες για συναρµολόγηση επίπλου Συνταγές Στην Πληροφορική Ταξινόµηση Λίστας Αριθµών Εύρεση Μέσου Όρου Μιας Λίστας Αριθµών Προγραµµατισµός 35

Αφαίρεση (Αφαιρετικότητα)-Abstraction Βασική έννοια στον Προγραµµατισµό Γνώση του τι γίνεται χωρίς τη γνώση του πως γίνεται Η διαδικασία προγραµµατισµού αποτελείται από σχεδιασµό λύσεων σε διάφορα επίπεδα αφαίρεσης Προγραµµατισµός 36

Αφαίρεση Ένας αλγόριθµος εκφράζεται σε διάφορα επίπεδα αφαίρεσης. Τι είναι το δεδοµένο και τι το επιδιωκόµενο αποτέλεσµα. Η σταδιακή διάσπαση (εκλέπτυνση, ή «πιο λιανά») συνεχίζεται µέχρι σ ότου φτάσουµε σε ατοµικά υπο-προβλήµατα, δηλαδή προβλήµατα που δεν είναι λογικό/δυνατό να διασπαστούν περαιτέρω. Στο χαµηλότερο επίπεδο, ο αλγόριθµος διατυπώνει µε σαφήνεια την ακριβή διαδικασία παραγωγής της λύσης του προβλήµατος Προγραµµατισµός 37

Σχεδιασµός λύσης ιάσπαση (εκλέπτυνση) του κυρίως προβλήµατος σε υποπροβλήµατα (topdown approach, δοµηµένος, αρθρωτός προγραµµατισµός). Αφαίρεση. Μας ενδιαφέρει τι γίνεται και όχι το πώς γίνεται. Αρχίζοντας από τα χαµηλά επίπεδα αναπτύσσουµε αλγόριθµο για κάθε υποσύστηµα. Προγραµµατισµός 38

ιαγράµµατα ροής Σχεδιασµός διαγράµµατος ροής: Σχηµατικός τρόπος αναπαράστασης της ροής των οδηγιών που συνθέτουν έναν αλγόριθµο. Προγραµµατισµός 39

Παράδειγµα Πρόβληµα: Έχουµε µια λίστα µε ονόµατα. Θέλουµε να βρούµε τους φοιτητές του 1ου έτους Προγραµµατισµός 40

Ψευδοκώδικας Είναι ένα µίγµα αγγλικών και, κοινών σε διάφορες γλώσσες προγραµµατισµού, όρων (εντολών), που χρησιµοποιούνται για να εκφράσουµε τη λύση. open STUDENT.DAT /* Open the file that contains the student list */ read student_name /* Read the 1 st student name */ while not EOF do /* Begin the main loop */ read student_info /* Read student info */ if YEAR=1 then print student_name /* conditional structure */ read student_name /* Read the next student name */ end while close STUDENT.DAT /* Close the input file */ end /* End of program */ Προγραµµατισµός 41

Κώδικας Αξιοποιείται η διαδικασία του σχεδιασµού Πραγµατοποιείται η συγγραφή του προγράµµατος σε µια γλώσσα προγραµµατισµού. Μέσω µεταγλωττιστή (compiler) το πρόγραµµα µετατρέπεται σε γλώσσα µηχανής η οποία είναι αναγνωρίσιµη από τον υπολογιστή (πολύ βαρετή και επίπονη για τον άνθρωπο εργασία). Στο στάδιο αυτό γίνεται ο έλεγχος συντακτικών λαθών Προγραµµατισµός 42

Έλεγχος και διόρθωση Σφάλµατα σύνταξης (syntax errors): Σφάλµατα που σχετίζονται µε το αν χρησιµοποιήσαµε σωστά τη σύνταξη της γλώσσας προγραµµατισµού στη διάρκεια της υλοποίησης Λογικά σφάλµατα: σφάλµατα που σχετίζονται µε το σχεδιασµό της λύσης. ουλεύει πάντα: λύσε το πρόβληµα µε το χέρι για ένα σύνολο δεδοµένων και σύγκρινέ το µε τις εξόδους του προγράµµατος Σφάλµατα Run-time: Σφάλµατα κατά τη διάρκεια εκτέλεσης του προγράµµατος π.χ. απότοµος τερµατισµός εκτέλεσης του προγράµµατος Προγραµµατισµός 43

Συντήρηση Συντήρηση προγράµµατος: Συγγραφή τεκµηρίωσης Το λογισµικό εγκαθίσταται και ξεκινά η λειτουργία του. Το περιβάλλον αλλάζει και, άρα, αλλάζει και το πρόγραµµα Οι χρήστες επιθυµούν / χρειάζονται περισσότερα από το πρόγραµµα Προγραµµατισµός 44

Τεκµηρίωση Συνοπτική περιγραφή των απαιτήσεων Περιγραφή εισόδων, εξόδων, περιορισµών και τύπων Ψευδοκώδικας ή διάγραµµα ροής του αλγορίθµου Ο ίδιος ο πηγαίος κώδικας (source code) Οδηγός για τη χρήση του προγράµµατος Προγραµµατισµός 45

Αξιολόγηση Ορθότητα Λύσεων Αναλυτικές Μέθοδοι Αποδείξεις Εµπειρικές Μέθοδοι - οκιµές Τεκµηρίωση Λύσεων Σχόλια στον κώδικα Ευκολία κατανόησης Εκτίµηση Απόδοσης: ταχύτητα, ανάγκη σε µνήµη Ευχρηστίας: φιλικότητα προς το χρήστη Επεκτασιµότητα / Επαναχρησιµότητα Προγραµµατισµός 46

Αλγόριθµοι Απαιτήσεις - Πρόβληµα Προδιαγραφές Υπολογίστε το άθροισµα 1+2+3+ +Ν Σχεδίαση (Υπολογίζω κανονικά το άθροισµα ξεκινώντας από το 1) Σ = 0 //άθροισµα Για κ=1 Ν //µετρητής Σ = Σ + κ Ορθότητα Πολυπλοκότητα Υπολογιστικό Κόστος, 2*Ν -> Ο(Ν) Κόστος σε Μνήµη, 2 -> Ο(1) Βελτιστοποίηση: Σ = Ν*(Ν+1) / 2 Πολυπλοκότητα Υπολογιστικό Κόστος, 3 -> Ο(1) Κόστος σε Μνήµη, 1 -> Ο(1) Προγραµµατισµός 47

Παράδειγµα (1/5) Γράψετε ένα πρόγραµµα το οποίο να µετατρέπει µίλια σε χιλιόµετρα. Προγραµµατισµός 48

Βήµα 1. Κατανόηση Τι µας ζητά; Τι µίλια; αγγλικά µίλια, ναυτικά µίλια; Από πού παίρνουµε τις πληροφορίες; Από το χρήστη, από αρχείο; Προγραµµατισµός 49

Βήµα 2. Ανάλυση εδοµένα (εισόδου): µίλια εδοµένα (εξόδου): χιλιόµετρα Άλλα δεδοµένα: µαθηµατική σχέση 1mile = 1.609Km Υπολογισµός (απλή µέθοδος των τριών): Παράδειγµα: Πόσα Km είναι 10 µίλια? 1.609*10 = 16.09 χιλιόµετρα Προγραµµατισµός 50

Βήµα 3. Σχεδιασµός λύσης Αλγόριθµος 1 η Εκλέπτυνση 1. Πάρε τα δεδοµένα εισόδου 2. Κάνε τη µετατροπή 3. Παρουσίασε το αποτέλεσµα 1. ιάβασε τα Μίλια 2. Κάνε τον υπολογισµό: Χλµ.=Μίλια * 1.609 3. είξε το αποτέλεσµα στην οθόνη Προγραµµατισµός 51

Βήµα 3. Σχεδιασµός λύσης 2 η Εκλέπτυνση ιάγραµµα Ροής 1. ιάβασε τα Μίλια και αποθήκευσέ τα στη µεταβλητή miles 2. Κάνε τον υπολογισµό: Kms.=Miles * 1.609 3. είξε το αποτέλεσµα στην οθόνη Προγραµµατισµός 52

Βήµα 4. Υλοποίηση Προγραµµατισµός 53

Β Μέρος Εισαγωγή στη C Προγραµµατισµός

Η γλώσσα C Η γλώσσα C αναπτύχθηκε το 1972 από τον Dennis Ritchie στα ΑΤ&Τ (Bell) Laboratories Γλώσσα γενικού σκοπού και µια από τις πιο διαδεδοµένες γλώσσες υψηλού επιπέδου Χρησιµοποιήθηκε για την κατασκευή συστηµάτων, π.χ. το λειτουργικό σύστηµα UNIX Προγραµµατισµός 55

Προτερήµατα C είναι µικρή µε λίγες εντολές C είναι standard C είναι φορητή C είναι ισχυρή C είναι αρθρωτή C είναι η βάση της C++ και της Java C είναι γρήγορη Προγραµµατισµός 56

οµή ενός προγράµµατος στη C Οι γλώσσες προγραµµατισµού είναι ένα σύνολο από συντακτικούς κανόνες (και βιβλιοθήκες). Ένα πρόγραµµα σε C, αποτελείται από εντολές (οργανωµένα συνήθως µέσα σε συναρτήσεις) και δεδοµένα (µεταβλητές). Προγραµµατισµός 57

οµή ενός προγράµµατος στη C Οδηγίες στον προεπεξεργαστή ενσωµάτωση βιβλιοθηκών δηλώσεις σταθερών ηλώσεις συναρτήσεων Ορισµός κύριας συνάρτησης (main) δηλώσεις µεταβλητών εντολές (εκφράσεις, κλήσεις συναρτήσεων κτλ) Υλοποίηση συναρτήσεων Σχόλια Προγραµµατισµός 58

Παράδειγµα Προγραµµατισµός 59

Α) Εντολές προς τον προεπεξεργαστή (1/3) Οι πιο κοινές εντολές στον προεπεξεργαστή : #include, για ενσωµάτωση βιβλιοθήκης #define, για δήλωση σταθεράς ίδονται πάντα µε χρήση του συµβόλου # Οι εντολές του προεπεξεργαστή µετατρέπουν το κείµενο του προγράµµατος (κώδικα) πριν παραδοθεί στον µεταφραστή Προγραµµατισµός 60

Α) Εντολές προς τον προεπεξεργαστή (2/3) Η εντολή: #include Χρησιµοποιείται για ενσωµάτωση βιβλιοθηκών στον πηγαίο κώδικα. Μια βιβλιοθήκη (library file) είναι µια συλλογή χρήσιµων συναρτήσεων και σταθερών. Σύνταξη: #include <standard library file> π.χ.: #include <stdio.h> #include <math.h> υπάρχουν πολλές διαθέσιµες C βιβλιοθήκες Προγραµµατισµός 61

Α) Εντολές προς τον προεπεξεργαστή (3/3) Ενσωµάτωση επιτρέπει τη χρήση συναρτήσεων και σταθερών µιας βιβλιοθήκης στον πηγαίο κώδικα. Παραδείγµατα: Η βιβλιοθήκη stdio.h περιέχει, ανάµεσα σε άλλα, τις συναρτήσεις printf(), για εκτύπωση πληροφοριών, και scanf(), για εισδοχή πληροφοριών, καθώς επίσης όλη τη λειτουργικότητα για ανάγνωση / γραφή πληροφοριών σε αρχεία. Η βιβλιοθήκη math.h περιέχει διάφορες µαθηµατικές συναρτήσεις. Προγραµµατισµός 62

Ονοµατολογία για σταθερών, µεταβλητών και συναρτήσεων Αποτελούνται από γράµµατα του αγγλικού αλφαβήτου (a z, A Z), ψηφία (0 9) και underscores ( _ ). ε µπορεί να αρχίζουν µε ψηφίο. Σύµβολα όπως &, #, $ δεν επιτρέπονται. Το όνοµα µιας µεταβλητής δεν περιέχει κενό εσµευµένες λέξεις (θα εξηγηθούν αργότερα) δε µπορούν να χρησιµοποιηθούν ως ονοµασίες για κάτι άλλο. Ονοµασίες που ορίζονται σε κάποια από τις βασικές βιβλιοθήκες δεν πρέπει να ξαναορίζονται (πχ printf()) GOOD BAD RESERVED KMS_PER_MILE 1Letter double miles one new printf kms new-fn scanf Προγραµµατισµός 63

Ονοµατολογία σταθερών, µεταβλητών και συναρτήσεων Η C ειναι CASE SENSITIVE, δηλαδή κεφαλαία και µικρά γράµµατα θεωρούνται διαφορετικά: foo και FOO είναι δυο διαφορετικά ονόµατα One, one και ONE είναι όλα διαφορετικά ονόµατα. Είναι καλή πρακτική το να χρησιµοποιείτε αυτοεπεξηγηµατικά ονόµατα Π.χ. η ονοµασία age είναι πολύ καλύτερη από την ονοµασία Α για µία µεταβλητή στην οποία θα καταχωρούνται ηλικίες. Προγραµµατισµός 64

εσµευµένες λέξεις auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Προγραµµατισµός 65

Μεταβλητές Εισαγωγή Μια περιοχή στη µνήµη (RAM) του υπολογιστή όπου µπορούµε να αποθηκεύσουµε προσωρινά δεδοµένα. Κατά τη διάρκεια εκτέλεσης αυτή η τιµή µπορεί να αλλάξει όσες φορές θέλουµε/χρειάζεται π.χ. ένας µετρητής, η ηλικία του χρήστη, κτλ Οι τιµές προέρχονται από α) το δίσκο β) κάποια µονάδα εισόδου (π.χ. πληκτρολόγιο) γ) παράγονται κατά τη διάρκεια εκτέλεσης του προγράµµατος Προγραµµατισµός 66

Μεταβλητές Ερµηνεία Αποθήκευση και ανάγνωση τιµών Κάθε µεταβλητή έχει: τύπο βασικοί: int, char, float, double µέγεθος: 4Β, 1Β, 4Β, 8Β (κάθε κυψελίδα: 1 Byte) Εξαρτάται από το λειτουργικό σύστηµα τιµή όνοµα αντιστοιχεί σε συγκεκριµένη διεύθυνση στη µνήµη Προγραµµατισµός 67

Μεταβλητές ήλωση Σύνταξη: τύπος λίστα-µεταβλητών ; double miles; int count; double kms; double miles, kms; int count = 0; /* αρχικοποίηση παράλληλα µε δήλωση */ Κάθε µεταβλητή που χρησιµοποιείται σε κάποιο πρόγραµµα χρειάζεται να δηλωθεί. Η δήλωσή της έχει ως αποτέλεσµα την παραχώρηση µνήµης για τη δηµιουργία της. Ο τύπος (double, int, κτλ) της µεταβλητής προσδιορίζει τον απαιτούµενο χώρο µνήµης. Προγραµµατισµός 68

Μεταβλητές ήλωση Προγραµµατισµός 69

Μεταβλητές Χρήση Μια µεταβλητή πρέπει να δηλωθεί πριν χρησιµοποιηθεί Εάν η µεταβλητή βρίσκεται στα αριστερά του τελεστή ανάθεσης (=), η τιµή του αποτελέσµατος της έκφρασης στα δεξιά του τελεστή ανάθεσης αποθηκεύεται στη διεύθυνση της µεταβλητής. Αλλιώς χρησιµοποιείται η τιµή της µεταβλητής kms = KMS_PER_MILE * miles; Προγραµµατισµός 70

Σταθερές Εισαγωγή Οδηγία προς τον προεπεξεργαστή. Ακολουθούν τις οδηγίες προς τον προεπεξεργαστή για ενσωµάτωση βιβλιοθηκών. Σταθερές έχουν: τιµή όνοµα, όχι όµως διεύθυνση Μεταγλωττιστής αντικαθιστά το όνοµα µε την τιµή Η χρήση σταθερών Αυξάνει την αναγνωσιµότητα του προγράµµατος ιευκολύνει τροποποιήσεις Μια σταθερά πρέπει να δηλωθεί στην αρχή του προγράµµατος πριν χρησιµοποιηθεί Ε µπορεί να αλλάξει τιµή κατά τη διάρκεια εκτέλεσης ενός προγράµµατος. Προγραµµατισµός 71

Σταθερές ήλωση Σύνταξη: #define ονοµασία τιµή #define PI 3.1453 #define FALSE 0 #define TRUE 1 #define KMS_PER_MILE 1.609 Προγραµµατισµός 72

Κύρια συνάρτηση: main() Συνάρτηση: Σύνολο εντολών που προσδιορίζουν τις υπολογιστικές λειτουργίες που θα εκτελεστούν µιας συγκεκριµένης εργασίας). Κάθε C πρόγραµµα έχει µία συνάρτηση µε το όνοµα main() από όπου αρχίζει η εκτέλεση του προγράµµατος. Σύνταξη: int main () { } σώµα συνάρτησης Προγραµµατισµός 73

Κύρια συνάρτηση: main() Το σώµα µίας συνάρτησης αποτελείται από δηλώσεις (declarations) και εντολές (executable statements). #include <stdio.h> int main (void) { int a; a = 5; printf( Hello %d\n,a); return 0; } Προγραµµατισµός 74

Ροή Έλεγχου (control flow) Η ροή ελέγχου στη C είναι ακολουθιακής µορφής - sequential Ξεκινά από την πρώτη εντολή της main() Εντολές εκτελούνται σε σειρά Υπάρχουν γλώσσες µή-ακολουθιακές αλλά δε θα µας απασχολήσουν σ αυτό το µάθηµα. Προγραµµατισµός 75

Σχόλια Σύνταξη: ξεκινούν µε /* και τελειώνουν µε */ Καµιά συνέπεια αλλά πολύ σηµαντικό µέρος ενός προγράµµατος (τεκµηρίωση) Ο µεταγλωττιστής αγνοεί τα σχόλια /* auto einai ena sxolio*/ /* kai auto * einai * ena * sxolio */ Προγραµµατισµός 76

Παράδειγµα /*Filename: 00-my_first_program.c Author: X. Zabulis Date: 14/03/07 Function: Prints the following string of characters: Hello world! */ #include <stdio.h> int main() { printf( Hello world!\n ); return 0; } Προγραµµατισµός 77

Σωστό ή λάθος; /* auto * ti* einai **/ /***********ayto??? ***************/ /* lathos sxolio */ giati? */ */ einai lathos??? /* */ ayto? * / Προγραµµατισµός 78

Βασικά σηµεία (1/2) #include <stdio.h> περιέχεται στην αρχή κάθε προγράµµατος και περιλαµβάνει οδηγίες για τον προεπεξεργαστή main ( ) Το σηµείο έναρξης του προγράµµατος είναι η «κύρια» συνάρτηση main. { } δηλώνουν το χώρο των δηλώσεων και των εντολών, οι οποίες περιλαµβάνονται στη συνάρτηση main και πρέπει να εκτελεσθούν Προγραµµατισµός 79

Βασικά σηµεία (2/2) printf() είναι µια συνάρτηση της βιβλιοθήκης stdio.h της C και εµφανίζει στην οθόνη ότι δίνεται µέσα στην παρένθεση \n κινεί το δροµέα (cursor) να πάει στην επόµενη γραµµή εξόδου ; όλες οι δηλώσεις και εντολές των C- προγραµµάτων καταλήγουν σε αυτό το σύµβολο (semicolon). Χρησιµοποιείται προκειµένου να φανεί που τερµατίζεται µια δήλωση /* */ Μεταξύ των συµβόλων αυτών γράφονται τα σχόλια. Προγραµµατισµός 80

Παράδειγµα: σχεδιασµός και κατανόηση Γράψτε ένα πρόγραµµα που µετατρέπει δολλάρια σε ευρώ. Π.χ.: 10 δολλάρια, 1 δολλάριο = 0.71 ευρώ εδοµένα (εισόδου): δολλάρια Σταθερή τιµή για τη µετατροπή: RATE εδοµένα (εξόδου): ευρώ Υπολογισµός: ευρώ = δολλάρια * RATE Προγραµµατισµός 81

Παράδειγµα: Υλοποίηση Επεξεργαστής κειµένου Μεταφράστης C /* metatroph: dollaria se euro */ #define RATE 0.71 int main() { } float dollaria; float euro; dollaria = 45.53; euro = dollaria * RATE; return 0; /* input*/ /* output*/ Προγραµµατισµός 82

Παράδειγµα: Υλοποίηση /* programma poy metatrepei dollaria se euro */ #include <stdio.h> #define RATE 0.71 int main() { float dollaria; /* input*/ float euro; /* output*/ /* eisagwgh dedomenwn */ printf( Enter dollaria: ); scanf( %f,&dollaria); euro = dollaria * RATE; /*exagwgh dedomenwn*/ printf( %.2f dollaria antistoixoun se %.2f euro\n, dollaria, euro); return 0; } Προγραµµατισµός 83

Μετάφραση, εκτέλεση, έλεγχος > gcc exchange.c o exchange > exchange Enter dollaria: 100 100.00 dollaria antistoixoun se 71.00 euro 53.38 dollaria antistoixoun se XXX euro Προγραµµατισµός 84