Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κεφάλαιο 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Γιώργος Γιαγλής.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κεφάλαιο 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Γιώργος Γιαγλής."— Μεταγράφημα παρουσίασης:

1 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κεφάλαιο 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Γιώργος Γιαγλής

2 Το σημερινό μάθημα 2 Ταξινόμηση γλωσσών προγραμματισμού Γλώσσες Προγραμματισμού Γλώσσες μηχανής (1η γενιά) Συμβολικές γλώσσες (2η γενιά) Γλώσσες υψηλού επιπέδου (3η γενιά) Γλώσσες πολύ υψηλού επιπέδου (4η γενιά) Μεταφραστές Γλωσσών Προγραμματισμού Aλγόριθμοι Η έννοια του αλγόριθμου Παράσταση αλγόριθμων Παράσταση αλγόριθμων με ψευδοκώδικα Παράσταση αλγόριθμων με διαγράμματα ροής Βασικές δομές διαδικασιακού προγραμματισμού ακολουθία, επιλογή, επανάληψη

3 Ταξινόμηση γλωσσών ανάλογα με το επίπεδο προγραμματισμού 3  Πολύ χαμηλού επιπέδου ή 1 ης γενιάς είναι οι γλώσσες μηχανής  Χαμηλού επιπέδου ή 2 ης γενιάς είναι οι συμβολικές γλώσσες (assembly)  Υψηλού επιπέδου ή 3 ης γενιάς είναι οι FORTRAN, COBOL, BASIC, PASCAL, C, C++, JAVA, κλπ  Πολύ υψηλού επιπέδου ή 4 ης γενιάς είναι οι SQL, PROLOG, κλπ

4 Γλώσσα Μηχανής (1 ης γενιάς) 4  Γλώσσα πολύ χαμηλού επιπέδου, άμεσα εκτελέσιμη που αποτελείται από μία ακολουθία 0 και 1 (δυαδικών ψηφίων)  Είναι διαφορετική για κάθε κατηγορία υπολογιστή  Είναι δυσνόητη αφού απαιτεί βαθιά γνώση του υλικού του συγκεκριμένου υπολογιστή (low-level language)  Χρησιμοποιήθηκε στους πρώτους υπολογιστές, ενώ σήμερα παράγεται αυτόματα από τις γλώσσες προγραμματισμού υψηλού επιπέδου

5 Παράδειγμα Πρόγραμμα πρόσθεσης δυο αριθμών σε γλώσσα μηχανής (το πρόγραμμα του παραδείγματος του κεφ. 5) 5 Γλώσσα μηχανήςΕπεξήγηση o Οι εντολές κωδικοποιούνται σε οκτώ δυαδικά ψηφία (π.χ. η LOAD είναι ) o Οι διευθύνσεις μνήμης κωδικοποιούνται σε τέσσερα δυαδικά ψηφία o Η πρώτη εντολή φορτώνει στο συσσωρευτή (LOAD) τα περιεχόμενα της θέσης μνήμης 0110 o Η δεύτερη εντολή προσθέτει στο συσσωρευτή (ADD) τα περιεχόμενα της θέσης μνήμης 0111 o Η τρίτη εντολή αποθηκεύει τα περιεχόμενα του συσσωρευτή (STORE) στη μνήμη στη θέση 1010 o Η τέταρτη εντολή τερματίζει το πρόγραμμα (STOP) και δεν έχει μέρος διεύθυνσης (0000)

6  Γλώσσα χαμηλού επιπέδου που αποτελείται από συντομογραφίες εντολών στην αγγλική γλώσσα (π.χ. ADD, LDA, κλπ)  Είναι διαφορετική για κάθε κατηγορία υπολογιστή  Είναι λιγότερο δύσκολη στη χρήση αλλά εξακολουθεί να απαιτεί βαθιά γνώση του υλικού του υπολογιστή (medium-level language)  Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει συμβολομεταφραστή (assembler) Συμβολική Γλώσσα (2 ης γενιάς) 6

7 Παράδειγμα Πρόγραμμα πρόσθεσης δυο αριθμών σε συμβολική γλώσσα (το πρόγραμμα του παραδείγματος του κεφ. 5) 7 Συμβολική ΓλώσσαΕπεξήγηση LOAD 0110 ADD 0111 STORE 1010 STOP o Η πρώτη εντολή φορτώνει στο συσσωρευτή (LOAD) τα περιεχόμενα της θέσης μνήμης 0110 o Η δεύτερη εντολή προσθέτει στο συσσωρευτή (ADD) τα περιεχόμενα της θέσης μνήμης 0111 o Η τρίτη εντολή αποθηκεύει τα περιεχόμενα του συσσωρευτή (STORE) στη μνήμη στη θέση 1010 o Η τέταρτη εντολή τερματίζει το πρόγραμμα (STOP) και δεν έχει μέρος διεύθυνσης

8 Γλώσσες Υψηλού επιπέδου (3 ης γενιάς) 8  Αποτελούνται από κατανοητές εντολές συνήθως στην αγγλική γλώσσα (π.χ.PRINT, INPUT κλπ)  Είναι ίδιες για κάθε υπολογιστή που διαθέτει μεταγλωττιστή ή διερμηνευτή της συγκεκριμένης γλώσσας (FORTRAN, COBOL, BASIC, PASCAL, κλπ)  Είναι εύκολες στη χρήση (high-level languages)  Παράγουν αυτόματα γλώσσα μηχανής (machine-language) μέσω μετάφρασης από τον κατάλληλο μεταφραστή (μεταγλωττιστή ή διερμηνευτή)

9 FORTRAN 9  Θεωρείται η πρώτη γλώσσα υψηλού επιπέδου (δεκαετία 1960)  Χρησιμοποιήθηκε ευρύτατα για έρευνα και ανάπτυξη επιστημονικών εφαρμογών  Είναι αποδοτική για μαθηματικούς υπολογισμούς αλλά υστερεί στη διαχείριση αρχείων  Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει μεταγλωττιστή (compiler)  Σήμερα έχει σχεδόν εγκαταλειφθεί, παρόλο που γνώρισε πολλές βελτιώσεις μέχρι και πρόσφατα

10 COBOL 10  Αναπτύχθηκε τη δεκαετία του 1960 για να καλύψει τις αδυναμίες της FORTRAN στο χειρισμό αρχείων  Έγινε η πρώτη γλώσσα προγραμματισμού που χρησιμοποιήθηκε ευρύτατα για ανάπτυξη εμπορικών - λογιστικών - τραπεζικών εφαρμογών  Είναι αποδοτική στη διαχείριση αρχείων αλλά υστερεί στους υπολογισμούς  Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει μεταγλωττιστή  Χρησιμοποιείται ακόμα και σήμερα σε κάποιες περιπτώσεις παλιότερων εφαρμογών (legacy systems), έχοντας γνωρίσει πολλές βελτιώσεις

11 ALGOL 11  Αναπτύχθηκε τη δεκαετία του 1960 ως αλγοριθμική γλώσσα γενικής χρήσης  Είχε στόχο να ενσωματώσει τις αρετές της FORTRAN και της COBOL σε μία γλώσσα, αλλά απέτυχε πρακτικά (εμπορικά)  Καθιέρωσε όμως το δομημένο προγραμματισμό  Επηρέασε αρκετές μεταγενέστερες γλώσσες (π.χ. PASCAL)  Αποτελεί θεμέλιο λίθο των αλγοριθμικών ή διαδικασιακών (procedural) γλωσσών

12 PASCAL 12  Αναπτύχθηκε τη δεκαετία του 1970 με βάση την ALGOL  Χρησιμοποιήθηκε αρκετά για ανάπτυξη εφαρμογών γενικής χρήσης  Είναι πολύ καλή για εκπαίδευση (εισαγωγή στον προγραμματισμό) και θεωρείται ακόμα πρότυπο εύχρηστης αλγοριθμικής γλώσσας  Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει μεταγλωττιστή (compiler)  Αποτέλεσε βάση για ανάπτυξη άλλων δομημένων γλωσσών όπως οι ADA, DELPHI, κλπ

13 BASIC 13  Αποτέλεσε την πρώτη σχετικά διαδεδομένη σε μη προγραμματιστές αλγοριθμική γλώσσα και χρησιμοποιήθηκε αρχικά σε μικροϋπολογιστές (PC) τη δεκαετία του 1980  Χρησιμοποιήθηκε για ανάπτυξη εφαρμογών γενικής χρήσης  Είναι ιδανική για αρχάριους και εύκολη στην εκμάθηση  Παράγει αυτόματα γλώσσα μηχανής αφού διαθέτει διερμηνευτή (interpreter)  Σήμερα χρησιμοποιούνται ευρέως αρκετοί ‘κλώνοι’ της, όπως η Visual Basic

14 C 14  Η C είναι μία πολύ ισχυρή αλγοριθμική γλώσσα υψηλού επιπέδου που ενσωματώνει όμως και αρετές γλωσσών χαμηλού επιπέδου.  Χρησιμοποιείται ευρύτατα για προγραμματισμό συστημάτων και ανάπτυξη επιστημονικών εφαρμογών  Το λειτουργικό σύστημα Unix έχει γραφτεί σε γλώσσα C  Σήμερα η C συνεχίζει να εξαπλώνεται και ιδιαίτερα η αντικειμενοστραφής εξέλιξή της, η C++, έχει πολλές εφαρμογές  Το ίδιο ισχύει και για γλώσσες ανάπτυξης εφαρμογών σε κινητά τηλέφωνα και tablets, όπως η γλώσσα Objective C (για κινητά τηλέφωνα Apple με λειτουργικό iOS) και η γλώσσα C# (για λειτουργικό Windows Phone)

15 JAVA 15  Είναι αντικειμενοστραφής γλώσσα υψηλού επιπέδου  Χρησιμοποιείται ευρύτατα για ανάπτυξη εφαρμογών στο διαδίκτυο (internet)  Είναι αποδοτική σε κατανεμημένα περιβάλλοντα  Σήμερα εξαπλώνεται με ιδιαίτερα ταχείς ρυθμούς

16 Γλώσσες Πολύ υψηλού επιπέδου (4 ης γενιάς) 16  Απευθύνονται όχι μόνο σε προγραμματιστές αλλά και σε απλούς χρήστες  Μία εντολή γλώσσας 4ης γενιάς αντιστοιχεί τυπικά σε πολλές εντολές γλώσσας 3ης γενιάς  Δίνουν έμφαση στο τι (αποτέλεσμα) και όχι στο πως (αλγόριθμος), γι ᾽ αυτό και θεωρούνται ευκολότερες στην εκμάθηση.  Χρησιμοποιούνται για ειδικές εφαρμογές ή ως γλώσσες ερωτήσεων σε βάσεις δεδομένων (π.χ. SQL)

17 Ταξινόμηση γλωσσών ανάλογα με το τρόπο προγραμματισμού 17  Αλγοριθμικές ή διαδικασιακές (procedural) όπως FORTRAN, COBOL, ALGOL, PASCAL, BASIC κλπ  Μη διαδικαστικές (non procedural) ή λογικές όπως η PROLOG  Αντικειμενοστραφείς (object – oriented) όπως SMALLTALK, C++, JAVA, κλπ  Οπτικές (visual) όπως VISUAL BASIC, VISUAL C++, κλπ  Συναρτησιακές (functional) όπως η LISP  Ερωταπαντήσεων (query languages) όπως η SQL

18 Ταξινόμηση γλωσσών ανάλογα με τη χρήση 18  Γενικής χρήσης όπως PASCAL, BASIC κλπ Επιστημονικής κατεύθυνσης (science oriented languages) π.χ. FORTRAN Εμπορικής κατεύθυνσης (business-oriented language) π.χ. COBOL  Προγραμματισμού συστημάτων (system programming languages) όπως η C  Τεχνητής νοημοσύνης όπως LISP, PROLOG κλπ  Ειδικών (εξειδικευμένων) χρήσεων (π.χ. γραφικά, ρομποτική, εκπαίδευση, βάσεις δεδομένων, κλπ)

19 Μεταφραστές Γλωσσών Προγραμματισμού 19 Οι μεταφραστές (translators) μεταφράζουν ένα πρόγραμμα που έχει γραφτεί σε κάποια γλώσσα προγραμματισμού σε αντίστοιχο πρόγραμμα σε γλώσσα μηχανής Διακρίνονται σε: (compiler) Μεταγλωττιστές (compiler) Σύνταξη προγράμματος  πηγαίο πρόγραμμα Μεταγλώττιση  αντικείμενο πρόγραμμα Σύνδεση (φόρτωση)  εκτελέσιμο πρόγραμμα Εκτέλεση (interpreter) Διερμηνευτές (interpreter) Σύνταξη προγράμματος  πηγαίο πρόγραμμα Διερμήνευση Εκτέλεση

20 Βασικές έννοιες Προγραμματισμού Ένα πρόγραμμα είναι ένα σύνολο από οδηγίες που μπορούν να εκτελεστούν σε προγραμματιστικά περιβάλλοντα. Στην περίπτωση του διαδικασιακού προγραμματισμού (procedural programming) οποιοδήποτε πρόγραμμα μπορεί να γραφτεί με συνδυασμό τριών βασικών δομών: της ακολουθίας, της επιλογής και της επανάληψης. – Ακολουθία: Κάθε αλγόριθμος είναι μια ακολουθία εντολών, οι οποίες εκτελούνται σειριακά. – Επιλογή: Μια εντολή μπορεί να ελέγξει κατά πόσο ισχύει μια συνθήκη και να επιλέξει την εκτέλεση ενός τμήματος προγράμματος αν η συνθήκη είναι αληθής ή ενός άλλου τμήματος προγράμματος αν η συνθήκη είναι ψευδής. – Επανάληψη: Η εκτέλεση ενός τμήματος προγράμματος μπορεί να επαναλαμβάνεται για όσο διάστημα ισχύει μια συνθήκη. 20

21 Υλοποίηση ακολουθίας, επιλογής και επανάληψης με ψευδοκώδικα (πάνω) και διάγραμμα ροής (κάτω) Ακολουθία-Επιλογή-Επανάληψη 21

22 Αλγόριθμοι Αλγόριθμος (algorithm) είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν ένα τρόπο επίλυσης ενός προβλήματος Η αναπαράσταση ενός αλγόριθμου σε γλώσσα κατανοητή από τον υπολογιστή ονομάζεται πρόγραμμα (program) Η αναπαράσταση ενός αλγορίθμου μπορεί να γίνει: 1.Σε αυστηρά δομημένη φυσική γλώσσα (ψευδοκώδικας) 2.Σε αυστηρά ορισμένο διάγραμμα (Διάγραμμα Ροής) 22

23 Πρόβλημα Λύση 1 Λύση 2 Λύση ν... Αλγόριθμος 1 Αλγόριθμος 2 Αλγόριθμος ν... Πρόγραμμα 1.1 Πρόγραμμα 1.2 Πρόγραμμα 1... Πρόγραμμα 2.1 Πρόγραμμα Πρόγραμμα ν... Πρόγραμμα v.1 Πρόγραμμα v.2... Αλγόριθμοι 23

24 Παράδειγμα Πρόβλημα: Να ταξινομηθούν σε αύξουσα σειρά τρεις ακέραιοι αριθμοί, έστω αρ1-αρ2-αρ3 Λύση 1: να συγκρίνουμε συνεχώς τους αριθμούς ανά δυο και να τους αντιμεταθέτουμε αν δεν είναι σε αύξουσα σειρά μέχρι να τελειώσουμε. Λύση 2: να βρίσκουμε κάθε φορά το μικρότερο αριθμό και να τον βάζουμε πρώτο στη σειρά των αριθμών που δεν έχουμε ακόμα δει μέχρι να τελειώσουμε. 24

25 Παράδειγμα Αλγόριθμος για τη Λύση 1. Σύγκρινε τον αρ1 με τον αρ2 και αν δεν είναι σε αύξουσα σειρά αντιμετάθεσε τους. Έπειτα, σύγκρινε τον αρ2 με τον αρ3 και αν δεν είναι σε αύξουσα σειρά αντιμετάθεσε τους. Τέλος, σύγκρινε τον αρ1 με τον αρ2 και αν δεν είναι σε αύξουσα σειρά αντιμετάθεσε τους. Αλγόριθμος για τη Λύση 2. Βρες το μικρότερο από τους {αρ1, αρ2, αρ3} και βάλε τον στη θέση του αρ1, αλλάζοντας του θέση με αυτόν. Έπειτα, βρες το μικρότερο από τους {αρ2, αρ3} και βάλε τον στη θέση του αρ2, αλλάζοντας του θέση με αυτόν. 25

26 Χαρακτηριστικά αλγόριθμων Ένας αλγόριθμος πρέπει να έχει πεπερασμένο αριθμό βημάτων, πρέπει δηλαδή να έχει ορισμένη αρχή και τέλος. – Είναι απαραίτητο η εκτέλεση του αλγορίθμου κάποια στιγμή να τερματίζεται. Ένας αλγόριθμος αντιστοιχεί σε μια πιθανή λύση ενός προβλήματος. Η ορθότητα του αλγόριθμου εξαρτάται από το πόσο είναι αυτός σε θέση να βρίσκει τη λύση σε κάθε περίπτωση Η πολυπλοκότητα του κάθε αλγόριθμου ορίζει το βαθμό απλότητας της λύσης που αυτός υλοποιεί. 26

27 Παράσταση αλγόριθμων: ψευδοκώδικας Ο ψευδοκώδικας (pseudocode) επιτρέπει την περιγραφή των αλγορίθμων σε φυσική γλώσσα χωρίς την χρήση συντακτικού γλώσσας προγραμματισμού. O ψευδοκώδικας: – Δεν μπορεί να εκτελεστεί ή και να μεταγλωττιστεί – Δεν απαιτεί γνώση κάποιας γλώσσας προγραμματισμού 27

28 Βασική Δομή Προγράμματος ΕντολήΣημασία ΑΡΧΗ - ΤΕΛΟΣ Συμβολίζουν την αρχή και το τέλος ενός τμήματος κώδικα. Είναι πάντα σε ζεύγη (κάθε ΤΕΛΟΣ αντιστοιχίζεται στην κοντινότερη του ΑΡΧΗ, η οποία δεν έχει ακόμα αντιστοιχιστεί) ΑΛΓΟΡΙΘΜΟΣ Αποτελεί την επικεφαλίδα ενός προγράμματος και ακολουθείται από το όνομα του προγράμματος αυτού ΔΕΔΟΜΕΝΑ Συμβολίζουν την αρχή του τμήματος ενός προγράμματος στο οποίο ορίζονται τα δεδομένα που χρησιμοποιεί το πρόγραμμα αυτό. Στο τμήμα δεδομένων ορίζονται ονόματα μεταβλητών και οι τύποι τους. μετ1, μετ2,... : τύπος Ορίζει λίστες από ονόματα μεταβλητών που χωρίζονται μεταξύ τους με κόμματα. Στο τέλος της λίστας και μετά το σύμβολο : ορίζεται ο τύπος των μεταβλητών αυτών. Οι συνηθέστεροι τύποι είναι ΑΚΕΡΑΙΟΣ ( INTEGER ), ΠΡΑΓΜΑΤΙΚΟΣ ( REAL ) και ΧΑΡΑΚΤΗΡΑΣ ( CHAR ). := Εντολή εκχώρησης. Συμβολίζει την απόδοση τιμής σε μια μεταβλητή, π.χ. a:=1 ; Συμβολίζει το τέλος μιας εντολής 28

29 Βασική Δομή Προγράμματος ΕντολήΣημασία ΔΙΑΒΑΣΕ () Εντολή ανάγνωσης τιμών που θα δώσει ο χρήστης (τα ονόματα των μεταβλητών στις οποίες θα καταχωρηθούν οι τιμές αυτές περιλαμβάνονται μέσα σε παρένθεση, διαχωρισμένα με κόμματα) ΤΥΠΩΣΕ () Εντολή εμφάνισης τιμών στην οθόνη (τα που θα τυπωθούν περιλαμβάνονται μέσα σε παρένθεση, διαχωρισμένα με κόμματα, και ανάμεσα σε “ ” αν πρόκειται για κυριολεκτικά λεκτικά) 29

30 Βασική Δομή Προγράμματος ΕντολήΣημασία ΕΑΝ συνθήκη ΤΟΤΕ εντολές1 ΑΛΛΙΩΣ εντολές2 ΕΑΝ-ΤΕΛΟΣ Εντολή επιλογής. Αν ισχύει η συνθήκη, τότε εκτελούνται οι εντολές1. Αν δεν ισχύει η συνθήκη, τότε εκτελούνται οι εντολές2 (οι οποίες είναι προαιρετικές). ΟΣΟ συνθήκη εντολές ΟΣΟ-ΤΕΛΟΣ Εντολή επανάληψης. Ελέγχεται η συνθήκη και, αν ισχύει, τότε εκτελούνται οι εντολές. Στη συνέχεια ελέγχεται η συνθήκη και πάλι και, αν ισχύει, τότε εκτελούνται οι εντολές ξανά. Η διαδικασία αυτή επαναλαμβάνεται συνεχώς μέχρι να μην ισχύει πια η συνθήκη, οπότε η εντολή τερματίζεται (αν η συνθήκη δεν ισχύει από την αρχή, οι εντολές δεν εκτελούνται καμία φορά). ΕΠΑΝΕΛΑΒΕ εντολές ΜΕΧΡΙ συνθήκη Εντολή επανάληψης. Εκτελούνται οι εντολές και στη συνέχεια ελέγχεται η συνθήκη. Αν δεν ισχύει, τότε οι εντολές εκτελούνται ξανά και στη συνέχεια ελέγχεται η συνθήκη και πάλι. Η διαδικασία αυτή επαναλαμβάνεται συνεχώς μέχρι να ισχύει η συνθήκη, οπότε η εντολή τερματίζεται (οι εντολές εκτελούνται τουλάχιστον καμία φορά, έστω και αν η συνθήκη ισχύει από την αρχή). ΓΙΑ μετρητής:=τιμή1 ΕΩΣ τιμή2 ΕΠΑΝΕΛΑΒΕ εντολές ΓΙΑ-ΤΕΛΟΣ Εντολή επανάληψης. Ο μετρητής παίρνει αρχικά την τιμή1. Ελέγχεται αν η τιμή αυτή είναι μικρότερη ή ίση με την τιμή2 και, αν είναι, εκτελούνται οι εντολές. Στη συνέχεια, ο μετρητής αυξάνεται κατά 1 και ελέγχεται πάλι αν η τιμή του είναι μικρότερη ή ίση με την τιμή2 και, αν είναι, εκτελούνται οι εντολές. Η διαδικασία αυτή επαναλαμβάνεται μέχρι η τιμή του μετρητή να γίνει μεγαλύτερη από την τιμή2, οπότε η εντολή τερματίζεται. 30

31 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

32 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

33 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

34 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

35 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

36 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

37 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους:“); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar2>ar3 ΤΟΤΕ temp:=ar2; ar2:=ar3; ar3:=temp; ΕΑΝ-ΤΕΛΟΣ; ΕΑΝ ar1>ar2 ΤΟΤΕ temp:=ar2; ar2:=ar1; ar1:=temp; ΕΑΝ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(”Σε αύξουσα σειρά:”); ΤΥΠΩΣΕ(ar1,ar2, ar3); ΤΕΛΟΣ

38 Ψευδοκώδικας για τον αλγόριθμο ΑΛΓΟΡΙΘΜΟΣ Taksinomisi2; ΔΕΔΟΜΕΝΑ ar1,ar2,ar3,min,temp : INTEGER; ΑΡΧΗ ΤΥΠΩΣΕ(”Δώσε 3 ακέραιους: “); ΔΙΑΒΑΣΕ(ar1, ar2, ar3); ΕΑΝ ar1

39 Παράσταση αλγόριθμων: Διαγράμματα Ροής Το διάγραμμα ροής επιτρέπει την περιγραφή των αλγόριθμων σχηματικά. 39 Βασικοί συμβολισμοί διαγραμμάτων ροής

40 Παράδειγμα 40 Υλοποίηση του αλγόριθμου για την ταξινόμηση τριών ακεραίων σε διάγραμμα ροής

41 Παράσταση αλγόριθμων: PASCAL program Taksinomisi; var ar1, ar2, ar3, temp : integer; begin write(”Δώσε τρεις ακέραιους: “); readln(ar1, ar2, ar3); if ar1>ar2 then begin temp:=ar2; ar2:=ar1; ar1:=temp; end; if ar2>ar3 then begin temp:=ar2; ar2:=ar3; ar3:=temp; end; if ar1>ar2 then begin temp:=ar2; ar2:=ar1; ar1:=temp; end; write(”Σε αύξουσα σειρά:”); writeln(ar1,ar2, ar3); end. 41

42 Παράσταση αλγόριθμων: C 42 void main (void) { int ar1, ar2, ar3, temp; printf(“Δώσε τρεις ακέραιους: “); scanf(“%d%d%d”, &ar1, &ar2, &ar3); if (ar1>ar2) { temp=ar2; ar2=ar1; ar1=temp; } if (ar2>ar3) { temp=ar2; ar2=ar3; ar3=temp; } if (ar1>ar2) { temp=ar2; ar2=ar1; ar1=temp; } printf(”Σε αύξουσα σειρά:”); printf(“%d %d %d\n”,ar1,ar2,ar3); }

43 Ασκηση: Έστω ότι μας ζητείται να υπολογίσουμε το άθροισμα όλων των άρτιων (ζυγών) αριθμών από το 1 έως το , δηλαδή το άθροισμα

44 Μια λύση 44 ΑΛΓΟΡΙΘΜΟΣ Athroisma_Zygwn; ΔΕΔΟΜΕΝΑ athroisma, orisma: INTEGER; ΑΡΧΗ athroisma := 0; orisma := 1; ΟΣΟ orisma <= ΕΑΝ orisma mod 2 = 0 athroisma := athroisma + orisma; ΤΕΛΟΣ-ΕΑΝ; orisma := orisma + 1; ΟΣΟ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(“Το άθροισμα είναι: “, athroisma); ΤΕΛΟΣ

45 Άλλη λύση 45 ΑΛΓΟΡΙΘΜΟΣ Athroisma_Zygwn2; ΔΕΔΟΜΕΝΑ athroisma, orisma: INTEGER; ΑΡΧΗ athroisma := 0; orisma := 2; ΟΣΟ orisma <= athroisma := athroisma + orisma; orisma := orisma + 2; ΟΣΟ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(“Το άθροισμα είναι: “, athroisma); ΤΕΛΟΣ

46 Και άλλη λύση ΑΛΓΟΡΙΘΜΟΣ Athroisma_Zygwn3; ΔΕΔΟΜΕΝΑ athroisma,orisma: INTEGER; ΑΡΧΗ athroisma := 0; ΓΙΑ orisma:=2 ΕΩΣ ΜΕ ΒΗΜΑ 2 ΕΠΑΝΕΛΑΒΕ athroisma := athroisma + orisma; ΓΙΑ-ΤΕΛΟΣ; ΤΥΠΩΣΕ(“Το άθροισμα είναι: “, athroisma); ΤΕΛΟΣ


Κατέβασμα ppt "ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κεφάλαιο 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Γιώργος Γιαγλής."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google