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

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

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

Εισαγωγή. Ανάπτυξη Συστημάτων Λογισμικού. Οργάνωση μαθήματος. #1. Εισαγωγή στον Προγραμματισμό

ΕΠΛ Εισαγωγή στον Προγραµµατισµό: Λογισµικό. Το λογισµικό του συστήµατος: 1 Εισαγωγή ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Μεθοδολογία. Aνάλυσης Προβλήµατος. Τι είναι αλγόριθµος? Σχεδιάσµος Αλγορίθµου

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

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

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

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

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

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

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 9

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

Προγραμματισμός Η/Υ. Ενότητα 1: Εισαγωγή στον Προγραμματισμό

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

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 9

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

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

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

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

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

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

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Αρχιτεκτονικές Υπολογιστών

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

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

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

Το «κλειστό» σύστημα. Ανοικτές επικοινωνίες... Εισαγωγή στην Τεχνολογία της Πληροφορικής. Εισαγωγή στην τεχνολογία της πληροφορικής

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία Διάλεξη 9

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

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

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

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

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

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

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

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

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

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

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

Η βασική λειτουργία σε όλες αυτές τις συναρτήσεις είναι η εκτύπωση γραµµών.

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

Πληροφορική και Υπολογιστές

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

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

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

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

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

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

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Βασικές Έννοιες της Πληροφορικής

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

Μαλούτα Θεανώ Σελίδα 1

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

(Ψηφιακοί)Υπολογιστές ENIAC Πληροφορική και Υπολογιστές. ΕΠΛ 031: Εισαγωγή στον (FORTRAN) Γιώργος Χρυσάνθου. Ποτε? ~1940 ΕΝΙΑC. Γιατι?

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

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

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

6. 1 Η έννοια του προγράμματος

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

Δεδομένα & Αναπαράσταση Πληροφορίας

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

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

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

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

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

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

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

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

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

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

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

Transcript:

ΕΠΛ 131 ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι Βασικοί Στόχοι Απόκτηση Επιδεξιότητας στην Επίλυση Προβληµάτων Θεµελίωση της Αλγοριθµικής Σκέψης Βιβλία J.R. Hanly και E.B. Koffman, Problem Solving & Program Design in C, τρίτη έκδοση, Addison-Wesley, 1999. Α.. Καµέας, Τεχνικές Προγραµµατισµού, Τόµος Β της Θεµατικής Ενότητας Εισαγωγή στην Πληροφορική, Ελληνικό Ανοικτό Πανεπιστήµιο, 2000. Κ. Θραµπουλίδης, Γλώσσες Προγραµµατισµού, Τόµος της Θεµατικής Ενότητας Εισαγωγή στην Πληροφορική, Ελληνικό Ανοικτό Πανεπιστήµιο, 2000.

ΕΠΛ131 ΕΠΛ221 ΕΠΛ132 ΕΠΛ224 ΕΠΛ441 ΕΠΛ223 ΕΠΛ231 ΕΠΛ434 ΕΠΛ233 ΕΠΛ131 Αρχές Προγραµµατισµού Ι ΕΠΛ132 Αρχές Προγραµµατισµού ΙΙ ΕΠΛ231 οµές εδοµένων και Αλγόριθµοι ΕΠΛ233 Αντικειµενοστρεφής Προγραµµατισµός ΕΠΛ221 Οργάνωση Υπολογιστών και Συµβολικός Προγραµµατισµός ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών ΕΠΛ224 Επικοινωνίες και ίκτυα ΕΠΛ434 Λογικός Προγραµµατισµός και Τεχνητή Νοηµοσύνη ΕΠΛ441 Παράλληλη και Κατανεµηµένη Τεχνολογία Λογισµικού 2

Επίλυση Προβληµάτων Προδιαγραφή Προβλήµατος Σχεδιασµός Λύσεων ΑΛΓΟΡΙΘΜΟΙ Αξιολόγηση Λύσεων Προγραµµατισµός Ο σχεδιασµός αλγορίθµων και η υλοποίησή τους σε γλώσσες προγραµµατισµού για την επίλυση προβληµάτων. Αλγόριθµος Πρόγραµµα 3

Βασική οµή Υπολογιστή ευτερεύουσα Μνήµη Είσοδος (πληκτρολόγιο) Πρωτεύουσα Μνήµη Έξοδος (οθόνη, εκτυπωτές) Κεντρική Μονάδα Επεξεργασίας 4

Πρωτεύουσα Μνήµη (αποτελείται από ένα σύνολο κυψελίδων memory cells) ιεύθυνση 0 1 2 3 4.. 998 999 Περιεχόµενα -27.2 354 0.005-26 Η.. Χ 75.62 byte απαιτούµενος χώρος για την αποθήκευση ενός χαρακτήρα bit - binary digit (0 ή 1) µικρότερο στοιχείο που µπορεί να επεξεργαστεί ο υπολογιστής bit 00101100 byte 5

Έννοια Αποθηκευµένου Προγράµµατος (Stored Program Concept) Οι εντολές που αποτελούν το πρόγραµµα αποθηκεύονται στην πρωτεύουσα µνήµη πριν την εκτέλεση του προγράµµατος. Αποθήκευση πληροφοριών: Καταχώριση των τιµών 0 ή 1 στα ατοµικά bits µίας κυψελίδας. Τα προηγούµενα περιεχόµενα της κυψελίδας χάνονται. Ανάκτηση πληροφοριών: Αντιγραφή των περιεχοµένων δεδοµένης κυψελίδας σε κάποιο άλλο χώρο αποθήκευσης. Τα περιεχόµενα της κυψελίδας δεν επηρεάζονται. Πρωτεύουσα Μνήµη Τυχαίας προσπέλασης random access memory (RAM) Μνήµη µόνο ανάγνωσης read-only memory (ROM) Πρόσκαιρη µνήµη volatile memory ευτερεύουσα Μνήµη Πολύ µεγαλύτερης χωρητικότητας Για τη µόνιµη αποθήκευση πληροφοριών σε αρχεία (files), οργανωµένα σε καταλόγους (directories) και υποκαταλόγους (subdirectories) 6

Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit CPU) Συντονίζει όλες τις λειτουργίες του υπολογιστή εκτελώντας αριθµητικές και λογικές πράξεις σε δεδοµένα. Κύκλος Προσκόµισης και Εκτέλεσης Εντολής (Fetch- Execute Cycle). Εντολή 1 Εντολή 2 Εντολή 3..... Εντολή n εδοµένα IR Καταχωρητής Εντολής Instruction Register 7

Λογισµικό Υπολογιστή Λογισµικό Εφαρµογών (Application Software) Γλώσσες Υπολογιστή (Computer Languages) Λειτουργικό Σύστηµα (Operating System) Υλικό (Hardware) Λειτουργικό Σύστηµα Λογισµικό που ελέγχει τη διεπαφή του χρήστη µε το υλικό του υπολογιστή, το οποίο διαχειρίζεται την κατανοµή των πόρων του υπολογιστή, π.χ. Unix, MS-DOS, VMS, κτλ. 8

Γλώσσες Υπολογιστή Γλώσσα Μηχανής (machine language). Γλώσσα δυαδικών κωδικών, κατανοητή µόνο από δεδοµένη κεντρική µονάδα επεξεργασίας. Συµβολική Γλώσσα (assembly language). Χρήση µνηµονικών κωδικών που αντιστοιχούν σε εντολές της γλώσσας µηχανής. Γλώσσα Υψηλού Επιπέδου (high-level language). Γλώσσα προγραµµατισµού, ανεξάρτητη υπολογιστή, η οποία συνδυάζει Αγγλικές λέξεις και συµβατούς µαθηµατικούς συµβολισµούς. Προσανατολισµένη στην επίλυση προβληµάτων. 9

Γλώσσες Υψηλού Επιπέδου Σύνταξη: Κανόνες γραµµατικής της γλώσσας. Σηµασιολογία: Τι σηµαίνουν οι προτάσεις της γλώσσας. Μεταφραστής γλώσσας: ιερµηνέας (interpreter) Μεταγλωττιστής (compiler) Μεταγλωττιστής Πηγαίος κώδικας source file π.χ. myprog.c Λογισµικό το οποίο µεταφράζει πρόγραµµα, σε υψηλού επιπέδου γλώσσα, σε γλώσσα µηχανής Κώδικας αντικειµένου object file π.χ. myprog Παραδείγµατα Γλωσσών Υψηλού Επιπέδου COBOL Επεξεργασία εδοµένων Data Processing FORTRAN Επεξεργασία Αριθµών Numerical Processing LISP Επεξεργασία Λιστών List Processing κτλ, κτλ. 10

Μέθοδος Ανάπτυξης Λογισµικού 1. Προδιαγραφή Απαιτήσεων Προβλήµατος. 2. Ανάλυση Προβλήµατος. 3. Σχεδίαση Αλγόριθµου για την Επίλυση του Προβλήµατος. 4. Υλοποίηση Αλγόριθµου. 5. οκιµή & Επαλήθευση του Ολοκληρωµένου Προγράµµατος. 6. Συντήρηση & Ενηµέρωση του Προγράµµατος. Αρχές Προγραµµατισµού Ανεξάρτητες γλωσσών προγραµµατισµού. Αλγόριθµος αρχές Πρόγραµµα σε Γλώσσα 1 Πρόγραµµα σε Γλώσσα n 11

Μοντέλα Προγραµµατισµού ιαδικασιακό ή Προστακτικό εντολή/διαδικασία, π.χ. C, Pascal, Modula-2, κτλ Αντικειµενοστρεφές αντικείµενο/ενδοπερίβληµακληρονοµικότητα, π.χ. C++, Smalltalk, Java, κτλ Συναρτησιακό συνάρτηση/αποτίµηση εκφράσεων, π.χ. Miranda, ML, κτλ Λογικό σχέση/µηχανισµός συνεπαγωγής, π.χ. Prolog Προστακτικές έναντι ηλωτικές Γλώσσες ηλωτικές γλώσσες έχουν υψηλότερη αφαιρετικότητα. εν υπάρχει η έννοια της αποθήκευσης σε σχέση µε αυτές τις γλώσσες και εποµένως του τελεστή ανάθεσης τιµών (assignment operator). 12

ιαδικασιακό Μοντέλο Κεντρική έννοια η εντολή ή προσταγή Η έννοια της διαδικασίας παρέχει το βασικό µηχανισµό για αφαιρετικότητα Η ροή ελέγχου είναι ακολουθιακής µορφής εντολές αλλαγής ροής ελέγχου Υπάρχει η έννοια της αποθήκευσης int age; /* δήλωση µεταβλητής age */ age κατανοµή χώρου στην age µεγέθους int age = 12; /* αρχικοποίηση της age */ age 12 καταχώριση της τιµής 12 στο χώρο που ανήκει στην age age = age + 1; /* ανάθεση νέας τιµής στην age */ age 13 Μεταβλητές (age) έχουν διεύθυνση (χώρο µνήµης), τύπο (int) και τιµή (12). 13

Ένα Απλό Πρόγραµµα: Μετατρέπει Μίλια σε Χιλιόµετρα /* * Μετατρέπει δεδοµένη απόσταση σε µίλια σε χιλιόµετρα. */ #include <stdio.h> /* ορισµοί για printf, scanf */ #define KMS_PER_MILE 1.609 /* σταθερά µετατροπής */ int main (void) { double miles, /* είσοδος απόσταση σε µίλια */ kms; /* έξοδος απόσταση σε χιλιόµετρα */ /* Εισδοχή απόστασης σε µίλια */ printf( ώσε την απόσταση σε µίλια> ); scanf( %lf, &miles); /* Μετατροπή απόστασης σε χιλιόµετρα */ kms = KMS_PER_MILE * miles; /* Παρουσίαση της απόστασης σε χιλιόµετρα */ printf( Αυτή ισούται µε %f χιλιόµετρα. \n, kms); } return(0); Αρχείο convert.c Εκτέλεση Προγράµµατος $ gcc o convert convert.c $ convert ώσε την απόσταση σε µίλια> 10 Αυτή ισούται µε 16.090000 χιλιόµετρα. $ 14

Αλγόριθµος Εκφράζεται σε διάφορα επίπεδα αφαιρετικότητας. Αρχικά προδιαγράφεται τι είναι το δεδοµένο και τι το επιδιωκόµενο αποτέλεσµα. Αυτό σταδιακά εκλεπτύνεται. Στο χαµηλότερο επίπεδο ο αλγόριθµος διατυπώνει µε σαφήνεια την ακριβή διαδικασία παραγωγής της λύσης του προβλήµατος, δηλαδή τη διαδικασία µετασχηµατισµού του δεδοµένου στο αποτέλεσµα. Εκφράζεται σε ψευδογλώσσα. Παράδειγµα Να υπολογιστεί ο µέσος όρος µίας, απροσδιορίστου µήκους, σειράς θετικών αριθµών. Η σειρά τερµατίζεται µε ένα µη-θετικό αριθµό. α 1, α 2,.., α n (n άγνωστο) aver (Σ α i )/n 15

Αρχικός Αλγόριθµος Πρόσθεσε όλους τους αριθµούς Μέτρησε πόσοι είναι οι αριθµοί ιαίρεσε το άθροισµα µε το πλήθος των αριθµών Εκλεπτυσµένος Αλγόριθµος /* αλγόριθµος για τον υπολογισµού του µέσου όρου µίας, απροσδιορίστου µήκους, σειράς θετικών αριθµών. Η σειρά τερµατίζεται από ένα µη-θετικό αριθµό */ set total to zero /* µεταβλητή για άθροισµα */ set numbers to zero /* µεταβλητή για πλήθος αριθµών */ do /* επανέλαβε για κάθε αριθµό */ scan (value) /* διάβασε επόµενο αριθµό */ if value is positive then add value to total add 1 to numbers while value is positive /* ενόσω ο αριθµός είναι θετικός */ set average to total/numbers print (average) 16

Περαιτέρω Εκλέπτυνση total 0 /* µεταβλητή για άθροισµα */ numbers 0 /* µεταβλητή για πλήθος αριθµών */ do /* επανέλαβε για κάθε αριθµό */ scan (value) /* διάβασε επόµενο αριθµό */ if (value > 0) then total total + value numbers numbers + 1 while (value> 0) /* ενόσω ο αριθµός είναι θετικός */ if (numbers = 0) then print ( Λάθος Καθόλου εδοµένα ) else average total / numbers print ( Ο µέσος όρος είναι ) print (average) ψευδοκώδικας 17

Κώδικας #include <stdio.h> int main (void) { double total = 0, value, average; int numbers = 0; } printf( \nfind average of a list of positive numbers ); printf( \nlist is terminated with a non-positive number ); do { printf( \nenter Number: ); scanf( %lf, &value); if (value > 0) { total = total + value; numbers = numbers + 1; } } while (value > 0); if (numbers == 0) printf( \nerror No Data\n ); else { average = total / numbers; printf( \naverage is %f \n, average); }; return (0); aver.c 18

Eκτέλεση Προγράµµατος $ gcc o aver aver.c $ aver Find Average of a List of Positive Numbers List is terminated with a non-positive number Enter Number: 67 Enter Number: 32 Enter Number: 89 Enter Number: 28 Enter Number: 18 Enter Number: 10 Enter Number: 0 Average is 40.666667 $ aver Find Average of a List of Positive Numbers List is terminated with a non-positive number Enter Number: 0 Error No Data $ 19

Σταδιακή Εκλέπτυνση Stepwise Refinement Σχεδίαση από πάνω προς τα κάτω. Το πρόβληµα σταδιακά διασπάζεται σε ένα αριθµό απλούστερων υποπροβληµάτων. Η σταδιακή διάσπαση (εκλέπτυνση) συνεχίζεται µέχρις ότου φτάσουµε σε ατοµικά υποπροβλήµατα, δηλαδή υποπροβλήµατα που δεν είναι λογικό/δυνατό να διασπασθούν περαιτέρω. Πρόβληµα υποπρόβληµα-1 υποπρόβληµα-2 20

Σταδιακή Εκλέπτυνση Π π 1 π 2 π 3....... π 7 Π π 1 π 2 π 1,1 π 1,2 π 1,3 π 2,1 π 2,2 π 2,1,1 π 2,1,2 αρθρωτός σχεδιασµός (modular design) Αφαιρετικότητα ιαχωρισµός ανάµεσα στο τι και το πως ιατύπωση διεπαφών Παράλληλη ανάπτυξη Επαναχρησιµοποίηση 21

Τύποι εδοµένων Απλοί τύποι αριθµοί χαρακτήρες λογικές τιµές Συναθροιστοί τύποι πίνακες δοµές/εγγραφές λίστες/δέντρα Τύποι εδοµένων Συγκεκριµένοι ιαφάνεια ως προς την υλοποίηση τους. Απευθείας πρόσβαση. Αφηρηµένοι Αδιαφάνεια ως προς την υλοποίηση τους. ιεπαφή διαµέσου συναρτήσεων πρόσβασης. Και πάλι διαχωρισµός ανάµεσα στο τι και το πως 22

Αφαιρετικότητα (Abstraction) Πολύ σηµαντική έννοια στον Προγραµµατισµό και γενικά στην Επιστήµη της Πληροφορικής. Η µοντελοποίηση ενός συστήµατος, η λύση ενός προβλήµατος, σχεδιάζονται σε διάφορα επίπεδα αφαιρετικότητας. ιευκολύνει τον έλεγχο της πολυπλοκότητας την γενίκευση λύσεων την άρθρωση (modularity) Αφαιρετικότητα Προγράµµατος (διαδικασίες/συναρτήσεις) Αφαιρετικότητα εδοµένων (δοµές/αφηρηµένοι τύποι) 23

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