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

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

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

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

Εισαγωγή στους Αλγορίθμους

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

Εισαγωγή στους Αλγορίθμους

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

Διδακτική Πληροφορικής

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

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

Διοικητική Λογιστική

Εισαγωγή στους Η/Υ. Ενότητα 2α: Χάρτης Karnaugh (Βοηθητικό υλικό)

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Πληροφορική ΙΙ Ενότητα 1

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Μηχανολογικό Σχέδιο Ι

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

Εισαγωγή στους Αλγορίθμους

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διδακτική Πληροφορικής

Εισαγωγή στους Η/Υ. Ενότητα 5α: Λειτουργικά Συστήματα ΙΙ (Παραδείγματα Διαδρομών)

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

Διδακτική Πληροφορικής

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Κβαντική Επεξεργασία Πληροφορίας

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Διδακτική Πληροφορικής

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

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Διδακτική της Πληροφορικής

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Βέλτιστος Έλεγχος Συστημάτων

Διοικητική Λογιστική

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τεχνικό Σχέδιο - CAD

Διδακτική Πληροφορικής

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

Εισαγωγή στους Υπολογιστές

Κβαντική Επεξεργασία Πληροφορίας

Τεχνολογία Πολιτισμικού Λογισμικού

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διδακτική Πληροφορικής

Βάσεις Περιβαλλοντικών Δεδομένων

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

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

Διδακτική Πληροφορικής

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Διδακτική Πληροφορικής

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Βάσεις Περιβαλλοντικών Δεδομένων

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

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

ΔΡΔ: Διαγράμματα Ροής Δεδομένων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Διδακτική Πληροφορικής

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

Δομές Δεδομένων Ενότητα 1

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

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

Ιστορία της μετάφρασης

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Εξελικτική Ψυχολογία: Κοινωνικο-γνωστική ανάπτυξη

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 6: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ: ΠΡΟΒΛΗΜΑ ΑΝΑΖΗΤΗΣΗΣ

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Τεχνικό Σχέδιο - CAD

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Τεχνικό Σχέδιο - CAD

Διδακτική της Πληροφορικής

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Λειτουργία και εφαρμογές της πολιτιστικής διαχείρισης

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

Transcript:

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

Σκοποί ενότητας Απόκτηση δεξιοτήτων στην επίλυση προβλημάτων με διαδικαστικό τρόπο (μέσω προγραμματισμού) Ανάπτυξη αλγοριθμικής σκέψης Θεμελίωση βασικών αρχών προγραμματισμού, αλγοριθμικών τεχνικών και δομών δεδομένων Σχεδίαση, υλοποίηση, εκτέλεση και αποσφαλμάτωση προγραμμάτων, καθώς και αξιολόγηση εναλλακτικών λύσεων Εκμάθηση μιας υψηλού επιπέδου γλώσσας προγραμματισμού (C) 2

Περιεχόμενα ενότητας Συστήματα Λογισμικού Στυλ και Γλώσσες Προγραμματισμού 3

Μέρος 1 ο Συστήματα Λογισμικού

Συστήματα Λογισμικού Ανάπτυξη Συστημάτων Λογισμικού

Ανάπτυξη Συστημάτων Λογισμικού Οι Η/Υ είναι σήμερα παντού 1960: ~ 100 Η/Υ 2000: Δισεκατομμύρια Η/Υ Πληθώρα εφαρμογών Αυτοματοποίηση Απλοποίηση επίλυσης προβλήματος Αύξηση αποτελεσματικότητας Μείωση κόστους Κοινωνία Πληροφορικής Διαδίκτυο (Internet) Παγκόσμιος Ιστός Πληροφοριών (World Wide Web) 6

Τεχνολογία Λογισμικού Η συστηματική εφαρμογή διαδικασιών, μεθόδων, εργαλείων και τεχνικών για την επίτευξη μιας καθορισμένης απαίτησης ενός συστήματος λογισμικού Ιστορικά στοιχεία 1968 NATO Conference Στόχος: η επίλυση της «κρίσης» του λογισμικού (software crisis) Χτίσιμο μιας γέφυρας vs. «Χτίσιμο» ενός λειτουργικού συστήματος Τι γίνεται σε περίπτωση κατάρρευσης (collapse); Πολυπλοκότητα Συντήρηση 7

Κύκλος Ζωής Λογισμικού (Software Life Cycle) Ο τρόπος που παράγουμε λογισμικό. Περιλαμβάνει: Μοντέλο κύκλου ζωής Άτομα που εμπλέκονται: αναλυτές, προγραμματιστές, managers,... Εργαλεία ανάπτυξης λογισμικού (CASE *) *CASE: Computer Aided Software Engineering 8

Κύκλος Ζωής Λογισμικού (Software Life Cycle) Βασικές φάσεις κύκλου ζωής: Ανάλυσης Απαιτήσεων (Requirements) Καθορισμού Προδιαγραφών (Specifications) Σχεδιασμού (Design) Υλοποίησης (Implementation) Συνένωσης Κώδικα (Integration) Συντήρησης (Maintenance) Απόσυρσης (Retirement) 9

Μοντέλα Κύκλου Ζωής Λογισμικού Αφορούν τη σειρά των βημάτων μέσω των οποίων ένα προϊόν λογισμικού αναπτύσσεται. Παρέχουν οδηγίες για τις εργασίες που πρέπει να γίνουν, τη χρονική τους σειρά και τα κριτήρια μετάβασης από τη μία στην άλλη. Υπάρχει ποικιλία μοντέλων: Όλα έχουν δυνατά σημεία και αδύνατα σημεία Κριτήρια επιλογής οργάνωση management προσωπικό προϊόν 10

Μοντέλο «build and fix» Εικόνα 1: Λογισμικό μοντέλο build and fix Δεν γίνεται καθορισμός προδιαγραφών Δεν γίνεται σχεδιασμός Δουλεύει καλά μόνο σε περιπτώσεις που το λογισμικό δεν ξεπερνά τις 100-200 γραμμές κώδικα 11

Μοντέλο καταρράκτη (waterfall model) Εικόνα 2: Λογισμικό μοντέλο καταρράκτη 12

Αρχιτεκτονική ενός Η/Υ Εικόνα 3: Σχέδιο λειτουργίας του Η/Υ 13

Μητρική πλακέτα (motherboard) Εικόνα 4: Η Μητρική Πλακέτα του Η/Υ 14

Βασική λειτουργία ΚΜΕ Κύκλος Προσκόμισης και Εκτέλεσης Εντολής (Fetch-Execute Cycle) 0 0 1 X=(N) X=X+1 X 149 + 2 (N)=X N 149 Εικόνα 5: Πρώτο βήμα εκτέλεσης μιας εντολής 15

Βασική λειτουργία ΚΜΕ Κύκλος Προσκόμισης και Εκτέλεσης Εντολής (Fetch-Execute Cycle) 1 0 1 X=(N) X=X+1 X 149 150 + 1 2 (N)=X N 149 Εικόνα 6: Δεύτερο βήμα εκτέλεσης μιας εντολής 16

Βασική λειτουργία ΚΜΕ Κύκλος Προσκόμισης και Εκτέλεσης Εντολής (Fetch-Execute Cycle) 0 1 X=(N) X=X+1 X 150 + 2 2 (N)=X N 150 149 Εικόνα 7: Τρίτο βήμα εκτέλεσης μιας εντολής 17

Φάση Υλοποίησης Εικόνα 8: Διάγραμμα υλοποίησης προγράμματος 18

Μεταγλώττιση Μεταγλωττιστής (compiler): Λογισμικό το οποίο μεταφράζει γλώσσα υψηλού επιπέδου (στην οποία είναι γραμμένη ένα πρόγραμμα) σε γλώσσα μηχανής (η οποία είναι «κατανοητή» από τον Η/Υ) Εξαρτάται από τη γλώσσα Παράμετροι (βλ. εγχειρίδιο χρήσης) <όνομα μεταγλωττιστή> [<λίστα παραμέτρων>] <όνομα αρχείου> > wcc test > gcc -g test.c 19

Μεταγλώττιση Πλήρως αυτοματοποιημένη διαδικασία Ανεύρεση λαθών: Παράλειψη τελευταίας αγκύλης /* Ένα απλό πρόγραμμα σε C*/ #include <stdio.h> main() { printf( hello world ); } > Error! E1077: Missing } > Parse error at end of input 20

Σύνδεση Ακολουθεί τη μεταγλώττιση: Είναι κι αυτή πλήρως αυτοματοποιημένη Στα περισσότερα περιβάλλοντα ανάπτυξης, καλείται αυτόματα (χωρίς μεσολάβηση του προγραμματιστή) μετά από επιτυχημένη μεταγλώττιση Περίπτωση gcc Αποτέλεσμα σύνδεσης: Δημιουργία εκτελέσιμου (executable) κώδικα, ή Αναφορά προβλημάτων Π.χ. αδυναμία εντοπισμού μιας συνάρτησης ή μιας εξωτερικής μεταβλητής 21

Σύνδεση Δυνατότητες: Σύνδεση περισσοτέρων του ενός αρχείων αντικείμενου (object) κώδικα Αναζήτηση συναρτήσεων (π.χ. printf) σε βιβλιοθήκες #include <stdio.h> 22

Μέρος 2 ο Στυλ και Γλώσσες Προγραμματισμού

Στυλ και Γλώσσες Προγραμματισμού Βασικές Μορφές Προγραμματισμού

Βασικές μορφές (στυλ) προγραμματισμού Διαδικασιακός ή Προστακτικός: Δεδομένα και ενέργειες (actions) C, Pascal, Ada, Algol, Fortran Αντικειμενοστραφής: Αντικείμενο (object) Κληρονομικότητα, π.χ. C++, Smalltalk, Java, Simula 25

Συναρτησιακός: Συνάρτηση (function) Lisp, Miranda, ML Βασικές μορφές (στυλ) προγραμματισμού Λογικός: Μηχανισμός εξαγωγής συμπερασμάτων Prolog Προσοχή: Στην πράξη, μια γλώσσα προγραμματισμού σπάνια υποστηρίζει μια μόνο μορφή προγραμματισμού 26

Γλώσσες Προγραμματισμού Γλώσσες Υψηλού Επιπέδου (High Level Language): Ανεξάρτητες του Η/Υ Συνδυάζουν αγγλικές λέξεις και «συνήθεις» μαθηματικούς συμβολισμούς Συχνά, είναι προσανατολισμένες στην επίλυση προβλημάτων συγκεκριμένου τύπου COBOL: επεξεργασία επιχειρησιακών δεδομένων BASIC: Beginners All-purpose Symbolic Instruction Code 27

Γλώσσες Προγραμματισμού Γλώσσες Χαμηλού Επιπέδου (Low Level Language): Κατανοητές από (και «εξαρτημένες» με) συγκεκριμένη Κεντρική Μονάδα Επεξεργασίας Γλώσσα Μηχανής (machine language) Γλώσσα δυαδικών εντολών Συμβολική Γλώσσα (assembly language) Χρήση μνημονικών κωδικών που αντιστοιχούν σε εντολές της γλώσσας μηχανής (δύσχρηστη) LOAD MASS MPY ACCEL_CONST STORE FORCE 28

Γιατί C; Πλεονεκτήματα: Γλώσσα προγραμματισμού χαμηλού επιπέδου (Άμεση πρόσβαση στους πόρους του Η/Υ) Γλώσσα προγραμματισμού υψηλού επιπέδου (Πληθώρα διαθέσιμων βιβλιοθηκών) Μικρή (σχετικά) και εύκολη στην εκμάθηση Υποστήριξη top-down και αρθρωτού (modular) σχεδιασμού Υποστήριξη δομημένου (structured) προγραμματισμού 29

Γιατί C; Πλεονεκτήματα: Αποτελεσματική (Συμπαγή και γρήγορα στην εκτέλεση προγράμματα) Φορητή, ευέλικτη και με ισχυρές δυνατότητες Ευρύτατα χρησιμοποιούμενη γλώσσα (Μαζί με τις C++ και Java) Πολύ καλό εφόδιο για το «πέρασμα» στον αντικειμενοστραφή προγραμματισμό 30

Προγραμματισμός Ανάπτυξη αλγορίθμων και υλοποίηση τους σε γλώσσες προγραμματισμού για την επίλυση προβλημάτων Μεθοδολογία: Ορισμός προβλήματος Ανάλυση προβλήματος Δεδομένα (inputs), αποτελέσματα, εξαγόμενα (outputs) Τι πρέπει να γίνει 31

Προγραμματισμός Ανάπτυξη αλγορίθμου επίλυσης προβλήματος Υλοποίηση αλγορίθμου (πρόγραμμα) Δοκιμή και επαλήθευση Αποσφαλμάτωση (προηγούμενα βήματα) Συντήρηση Διορθωτική Επαυξητική Τελειοποίησης Προσαρμογής 32

Αλγόριθμος Πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος Αναπαράσταση / διατύπωση της διαδικασίας μετασχηματισμού δεδομένων στα επιθυμητά αποτελέσματα Ψευδοκώδικας (pseudocode) 33

Αλγόριθμος Σχεδιασμός αλγορίθμου: Σταδιακή εκλέπτυνση (stepwise refinement) από πάνω προς τα κάτω (topdown design) Το αρχικό πρόβλημα διασπάται σταδιακά σε απλούστερα προβλήματα Η σταδιακή αυτή διάσπαση (εκλέπτυνση) συνεχίζεται μέχρις ότου φτάσουμε σε προβλήματα που δεν είναι δυνατό να διασπασθούν περαιτέρω Επαλήθευση και Αξιολόγηση Εικόνα 9: Σχεδιασμός απλούστευσης του αρχικού προβλήματος 34

Σταδιακή εκλέπτυνση Σπονδυλωτός σχεδιασμός (modular design) Αφαιρετικότητα (abstraction): Διαχωρισμός ανάμεσα στο τι και το πώς Διάφορα επίπεδα αφαιρετικότητας Διατύπωση διαπροσωπειών (interface) και διασυνδέσεων: Παράμετροι εισόδου και εξόδου (input/output, I/O) Λειτουργικότητα 35

Σταδιακή εκλέπτυνση Παράλληλη ανάπτυξη (parallel development) Επαναχρησιμοποίηση (reuse) Επαλήθευση και Αξιολόγηση 36

Αφαιρετικότητα Αφαιρετικότητα μεθοδολογίας: Ορισμός προβλήματος Ανάλυση προβλήματος Ανάπτυξη αλγορίθμου επίλυσης προβλήματος Ανεξάρτητα της γλώσσας προγραμματισμού Υλοποίηση αλγορίθμου (πρόγραμμα) Δοκιμή και επαλήθευση Συντήρηση Εικόνα 10: Ανάπτυξη αλγορίθμου για την επίλυση του προβλήματος 37

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

Ένα απλό παράδειγμα Ορισμός Προβλήματος: Να γραφεί πρόγραμμα που να υπολογίζει το εμβαδόν ενός ορθογωνίου: Εμβαδόν = Μήκος x Πλάτος Ανάλυση: Δεδομένα: δύο πραγματικοί αριθμοί Αποτέλεσμα: ένας πραγματικός αριθμός 39

Ένα απλό παράδειγμα Ανάπτυξη αλγορίθμου: Διάβασε τα δεδομένα Υπολόγισε το εμβαδόν Προβολή αποτελέσματος Ανάπτυξη αλγορίθμου: Διάβασε τα δεδομένα διάβασε_δεδομένα(μήκος, πλάτος) Υπολόγισε το εμβαδόν ε=υπολόγισε_εμβαδόν(μήκος, πλάτος) Προβολή αποτελέσματος προβολή_αποτελ(μήκος, πλάτος, ε) 40

Ένα απλό παράδειγμα Εικόνα 11: Σχέδιο ανάπτυξης για την επίλυση του προβλήματος του παραδείγματος 41

Ένα απλό παράδειγμα Πίνακας 1: Παράμετροι και Λειτουργικότητα Παράμετροι Ι/Ο Λειτουργικότητα Π1 Π2 Π3 Διαβάζει και επιστρέφει δύο τιμές (μήκος, πλάτος) Λαμβάνει δύο παραμέτρους (μήκος, πλάτος) Επιστρέφει εμβαδόν Λαμβάνει τρεις παραμέτρους (μήκος, πλάτος, εμβαδόν) Διάβασε μήκος και πλάτος Έλεγξε αν είναι θετικά Υπολόγισε εμβαδόν (εμβαδόν=μήκος*πλάτος) Πρόβαλε το αποτέλεσμα 42

Ένα απλό παράδειγμα Π: Πρόβλημα Π1: Διάβασε δεδομένα Π2: Υπολόγισε εμβαδόν Π3: Πρόβαλε αποτελέσματα Π1.1: Διάβασε μήκος και πλάτος Π1.2: Έλεγχος Π2.1: Εμβαδόν = Μήκος * Πλάτος Π3.1: Πρόβαλε μήκος, πλάτος και εμβαδόν Εικόνα 12: Ανάπτυξη του παραδείγματος 43

Ένα απλό παράδειγμα Περαιτέρω εκλέπτυνση του Π1: get(μήκος) /* διάβασε μήκος */ get(πλάτος) /* διάβασε πλάτος */ /* έλεγχος για μήκος */ if (μήκος<=0) print( λάθος τιμή για μήκος ) exit /* έλεγχος για πλάτος */ if (πλάτος<=0) print( λάθος τιμή για πλάτος ) exit 44

Ένα απλό παράδειγμα Υλοποίηση: Επιτυχής υλοποίηση προϋποθέτει γνώση γλώσσας προγραμματισμού Χρησιμοποίηση ονομάτων που βοηθούν στην εύκολη ερμηνεία του κώδικα Τεκμηρίωση: Να συμπεριλαμβάνετε σχόλια στον κώδικα σας 45

Ένα απλό παράδειγμα Εκτέλεση προγράμματος: Επαλήθευση και αξιολόγηση λύσεων (ταχύτητα κλπ.) Μηνύματα προς τον χρήστη Enter length in meters 17 Enter width in meters 2 The area of a rectangle with 17 m length and 2 m width is 34m 2 Enter length in meters -0.5 Enter width in meters 12 error: length should be positive 46

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στο πλαίσιο του εκπαιδευτικού έργου των διδασκόντων. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 48

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Πολυτεχνική Σχολή, Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών, Νίκος Καρακαπιλίδης, Δημήτρης Σαραβάνος. Νίκος Καρακαπιλίδης, Δημήτρης Σαραβάνος. «Προγραμματισμός Η/Υ.». Έκδοση: 1.0. Πάτρα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/mech1207/ 49

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 50

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 51

Σημείωμα Χρήσης Έργων Τρίτων Οποιοδήποτε έργο στην παρούσα ενότητα, έχει δημιουργηθεί από τους διδάσκοντες του μαθήματος ή/και την Τμηματική Ομάδα Εργασίας και παρέχεται με την ίδια άδεια CC BY-NC-SA 4.0 52