slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.) PowerPoint Presentation
Download Presentation
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.)

Loading in 2 Seconds...

play fullscreen
1 / 194

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.) - PowerPoint PPT Presentation


  • 194 Views
  • Uploaded on

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.). ΣΚΟΠΟΣ ΜΑΘΗΜΑΤΟΣ. Το μάθημα έχει ως σκοπό να αναπτύξει την σκέψη των μαθητών, ώστε να κατανοούν και να επιλύουν « προβλήματα » με τη βοήθεια του Η/Υ.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (Α.Ε.Π.Π.)' - vaughan


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ(Α.Ε.Π.Π.)
slide2
ΣΚΟΠΟΣΜΑΘΗΜΑΤΟΣ
  • Το μάθημα έχει ως σκοπό να αναπτύξει την σκέψη των μαθητών, ώστε να κατανοούν και να επιλύουν «προβλήματα» με τη βοήθεια του Η/Υ.
  • Η επίλυση γίνεται με τη δημιουργία αλγορίθμων στο χαρτί και στη συνέχεια προγραμμάτων σε μια υποθετική γλώσσα προγραμματισμού με όνομα «ΓΛΩΣΣΑ»
  • Η «ΓΛΩΣΣΑ», ακολουθεί τις γενικές αρχές των πραγματικών γλωσσών προγραμματισμού, αλλά δεν παράγει αληθινές εφαρμογές (ψευδογλώσσα)
  • Χρησιμοποιείται ώστε να μας εισάγει με ένα γενικό τρόπο στον συναρπαστικό κόσμο του προγραμματισμού Η/Υ
  • Η μετατροπή ενός προγράμματος από «ΓΛΩΣΣΑ» σε πραγματική γλώσσα προγραμματισμού (π.χ. Pascal, C, Fortran, Java, Visual Basic κ.λπ.) είναι απλή υπόθεση
  • Κάθε γλώσσα προγραμματισμού, σχεδιάζεται για συγκεκριμένο σκοπό, αλλά όλες έχουν κοινά χαρακτηριστικά και επεξεργάζονται τους ίδιους τύπους δεδομένων, με παρόμοιο λεξιλόγιο
slide4
ΟΡΙΣΜΟΣΠρόβλημα, θεωρείται μια κατάσταση την οποία πρέπει να επιλύσουμε, χωρίς να είναι απαραίτητα γνωστή ή προφανής η λύσης της.

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

ΤΙ ΕΙΝΑΙ «ΠΡΟΒΛΗΜΑ»
slide5
ΚΑΤΑΝΟΗΣΗ ΠΡΟΒΛΗΜΑΤΟΣ

Η κατανόηση ενός προβλήματος προϋποθέτει:

  • Σαφήνεια διατύπωσής του από αυτόν που μας το αναθέτει
  • Σωστή ερμηνεία από εμάς που αναλαμβάνουμε να το επιλύσουμε

Οδηγούμαστε σε προβληματικές καταστάσεις αν ένα από τα παραπάνω δεν πληρείται (χάσιμο χρόνου, χρημάτων, εργατοωρών κ.λπ.). Η επόμενη διαφάνεια το απεικονίζει απόλυτα!

slide6

2. Τι καταλάβαμε

1. Τι μας ζήτησαν

4. Πως διορθώσαμε

3. Τι περιγράψαμε

6. Τι παραδώσαμε

5. Τι προγραμματίσαμε

Το αποτέλεσμα δεν είναι πάντα το αναμενόμενο
slide7
ΓΙΑ ΤΗΝ ΕΠΙΛΥΣΗ ΕΝΟΣ ΠΡΟΒΛΗΜΑΤΟΣ

Η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του προβλήματος

1. ΚΑΤΑΝΟΗΣΗ

Το αρχικό πρόβλημα διασπάται σε άλλα επί μέρους απλούστερα προβλήματα (υποπροβλήματα)

2. ΑΝΑΛΥΣΗ

Υλοποιείται η λύση του προβλήματος, λύνοντας τα επιμέρους προβλήματα

3. ΕΠΙΛΥΣΗ

slide8
ΔΟΜΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ
  • Κάθε πρόβλημα έχει μια δομή την οποία πρέπει να αναλύσουμε και να αποτυπώσουμε.
  • Η καταγραφή της δομής του προβλήματος, σημαίνει και την ανάλυσή του σε μικρότερα και απλούστερα υποπροβλήματα.

ΟΡΙΣΜΟΣ

Δομή προβλήματος, είναι τα επιμέρους τμήματα που αποτελούν το πρόβλημα (υποπροβλήματα) και ο τρόπος αλληλοσύνδεσής τους.

slide9
ΔΙΑΓΡΑΜΜΑΤΙΚΗ ΑΠΕΙΚΟΝΙΣΗ ΔΟΜΗΣ ΕΝΟΣ ΠΡΟΒΛΗΜΑΤΟΣ

Απλοποιούμε (αποδομούμε) όσο το δυνατόν περισσότερο το πρόβλημα σε ευκολότερα τμήματα

slide10
ΚΑΘΟΡΙΣΜΟΣ ΑΠΑΙΤΗΣΕΩΝ
  • Για τη σωστή επίλυση ενός προβλήματος :
      • Προσδιορίζουμε τα δεδομένα που μας παρέχονται
      • Καταγράφουμε τα ζητούμενα
  • Δεν είναι πάντα εύκολο να διακρίνουμε τα δεδομένα. Δεν υπάρχει συγκεκριμένη μέθοδολογία.
  • Το ίδιο ισχύει και για τα ζητούμενα.
slide11
ΟΡΙΣΜΟΙ
  • Δεδομένο, είναι οποιοδήποτε στοιχείο μπορούμε να αντιληφθούμε σε ένα πρόβλημα και αναπαρίσταται με κάποια τιμή (αριθμητική, ημερομηνία, κείμενο, κλπ). Π.χ. 1562, 24/5/2005, «ΚΑΛΗΜΕΡΑ ΣΑΣ»
  • Πληροφορία, είναι το αποτέλεσμα της επεξεργασίας δεδομένων.
  • Επεξεργασία δεδομένων, είναι η διαδικασία με την οποία ο μηχανισμός επίλυσης ενός προβλήματος δέχεται δεδομένα, τα επεξεργάζεται με συγκεκριμένο τρόπο και παράγει πληροφορία.
slide12
ΚΑΤΗΓΟΡΙΕΣ ΠΡΟΒΛΗΜΑΤΩΝ

Βάσει της δυνατότητας επίλυσης τους:

  • ΕπιλύσιμαΗ λύση τους μπορεί να διατυπωθεί χωρίς πρόβλημα
  • ΑνοικτάΕίναι αυτά που πιθανώς λύνονται, αλλά δεν έχει βρεθεί ακόμα η λύση τους
  • ΆλυταΑπλά δεν επιλύονται
slide13
ΚΑΤΗΓΟΡΙΕΣ ΠΡΟΒΛΗΜΑΤΩΝ (συνέχεια)

Βάσει της δομής των λύσεων τους:

  • ΔομημέναΜπορούν να αυτοματοποιηθούν με συγκεκριμένη διαδικασία (π.χ. στα μαθηματικά)
  • ΗμιδομημέναΥπάρχουν διαφορετικές γνωστές λύσεις, αλλά αφήνεται στον ανθρώπινο παράγοντα η επιλογή τους.
  • ΑδόμηταΔεν μπορούν να δομηθούν οι λύσεις τους. Προέχει η ανθρώπινη διαίσθηση
slide14
ΚΑΤΗΓΟΡΙΕΣ ΠΡΟΒΛΗΜΑΤΩΝ (συνέχεια)

Βάσει του είδους επίλυσής τους:

  • ΑπόφασηςΑπάντηση με τη μορφή ΝΑΙ ή ΟΧΙ (αληθές ή ψευδές)
  • ΥπολογιστικάΗ λύση στηρίζεται σε υπολογισμούς ώστε να βρούμε τις τιμές που ικανοποιούν τα δεδομένα
  • ΒελτιστοποίησηςΌπου ζητούμε τη βέλτιστη λύση με τα δεδομένα που έχουμε.
slide15
ΠΡΟΒΛΗΜΜΑΤΑ ΣΕ Η/Υ
  • Ο Η/Υ δεν έχει νόηση όπως ο άνθρωπος
  • Ο λόγος που αναθέτουμε την επίλυση ενός προβλήματος σε Η/Υ είναι γιατί:
      • Κάνει πολύπλοκους υπολογισμούς
      • Εκτελεί επαναληπτικές διαδικασίες
      • Χειρίζεται τεράστιο πλήθος δεδομένων
      • Είναι ταχύτατος και...
      • Δεν παραπονιέται!
  • Και όλα αυτά, ο Η/Υ μπορεί να τα κάνει μόνο με προσθέσεις,συγκρίσειςκαιμεταφορά!
slide16
ΠΑΡΑΔΕΙΓΜΑ

Να βρεθεί η λύση της συνάρτησης:f(x) = 2x2 – 3x + 4

ΚΑΤΑΝΟΗΣΗ

  • Πρόκειται για β’ θμια εξίσωση με α=2, β=-3, γ=4

ΑΝΑΛΥΣΗ

  • Για να βρεθεί η λύση πρέπει να βρούμε τη διακρίνουσα (Δ). Ο τύπος που δίνει τη διακρίνουσα είναι Δ = β2 – 4αγ
  • Έλεγχος για Δ < 0 ;
  • Η λύση προκύπτει από τον τύπο x1,x2 = (-β ±√Δ) / 2α

ΕΠΙΛΥΣΗ

  • Το μόνο που μένει είναι να εφαρμόσουμε τα παραπάνω βήματα (αλγόριθμο) σε Η/Υ

Το παραπάνω πρόβλημα είναι επιλύσιμο, δομημένο και υπολογιστικό

slide18
ΤΙ ΕΙΝΑΙ ΑΛΓΟΡΙΘΜΟΣ
  • Αλγόριθμος, είναι μια πεπερασμένη σειρά αυστηρά καθορισμένων και εκτελέσιμων βημάτων (ενεργειών), που στοχεύουν στην επίλυση ενός προβλήματος
  • Ο αλγόριθμος ΔΕΝ είναι το ίδιο το πρόγραμμα
  • Τα προγράμματα δημιουργούνται, μετατρέποντας τον αλγόριθμο, χρησιμοποιώντας μια γλώσσα προγραμματισμού (π.χ. ΓΛΩΣΣΑ) σε ειδικό περιβάλλον εργασίας.

Ιστορικό σημείωμα:

Η λέξη προέρχεται από έναν Πέρση μαθηματικό του825 μ.Χ., τον Abu Jafar Mohammed ibn Musa al Khowarizmi.

Ο αλγόριθμος είναι σαν μια συνταγή μαγειρικής που διαχειρίζεται συγκεκριμένα υλικά (δεδομένα εισόδου), όπου μετά το μαγείρεμα με ένα συγκεκριμένο τρόπο (επεξεργασία), παράγεται το φαγητό (έξοδος)

slide19

ΕΙΣΟΔΟΣ

ΕΠΕΞΕΡΓΑΣΙΑ

ΕΞΟΔΟΣ

ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Κάθε αλγόριθμος ικανοποιεί τα παρακάτω:

  • Δέχεται είσοδο (input) δεδομένων, δηλ. καμία ή περισσότερες τιμές
  • Παράγει έξοδο (output), δηλαδή τουλάχιστον ένα αποτέλεσμα
  • Αποτελείται από καθορισμένα βήματα (όχι ασάφειες)π.χ. Σε μια συνταγή λέει : «Βάζουμε λίγο αλάτι...». Δηλ. πόσο;
  • Αποτελείται από πεπερασμένα βήματα, δηλ. δεν εκτελείται επ’ άπειρον (περατότητα)
  • Είναι αποτελεσματικός (κάθε βήμα είναι απλό και εκτελέσιμο)π.χ. Η εντολή «Βρες το μεγαλύτερο από 100 αριθμούς» δεν υπάρχει. Πρέπει να αναλυθεί σε πολλές απλούστερες εντολές, δηλ. Πάρε με τη σειρά κάθε αριθμό, έλεγξε αν αυτός είναι ο μεγαλύτερος και αφού τελειώσουν εμφάνισε τον.
slide20
ΜΕΛΕΤΗ ΑΛΓΟΡΙΘΜΩΝ

Η Πληροφορική μελετά τους αλγορίθμους από τις ακόλουθες σκοπιές :

  • Του υλικού
    • Επηρεάζεται η εκτέλεση ενός προγράμματος από την απόδοση ή την αρχιτεκτονική του υλικού;
  • Των γλωσσών προγραμματισμού
    • Αν κάποια γλώσσα μπορεί να υποστηρίξει τον αλγόριθμο, ή χρειάζονται περισσότερες εντολές
  • Θεωρητική
    • Αν υπάρχει κάποιος αποδοτικός αλγόριθμος για τη λύση ενός προβλήματος
  • Αναλυτική
    • Μελετώνται οι πόροι που απαιτούνται από έναν αλγόριθμο (μνήμη, χρόνος, είσοδος/έξοδος, κλπ)
slide21
ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΩΝ
  • Με ελεύθερο κείμενο (free text)Δεν είναι αποτελεσματικός γιατί επιδέχεται παρανόηση
  • Με διαγράμματαροής (flow charts)Σπανίζουν ωστόσο, γιατί είναι δύσχρηστα και καταλαμβάνουν πολύ χώρο. Παρόλα αυτά, μπορείτε να τα χρησιμοποιήσετε.
  • Με ψευδοκώδικα (pseudocode)Μια υποθετική γλώσσα (ψευδοκώδικας), πιο κοντά στη φυσική γλώσσα, αλλά με συγκεκριμένη σύνταξη και δομή, που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο.
slide22
ΑΛΓΟΡΙΘΜΟΣ ΜΕ ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ(παράδειγμα)

ΕΙΣΟΔΟΣ: Δύο αριθμοί Α και Β

ΕΞΟΔΟΣ: Πηλίκο της διαίρεσής Α/Β αρκεί Β ≠ 0

  • Κάνε εισαγωγή του Α και του Β
  • Έλεγξε αν ο Β ≠ 0
  • Αν ναι, υπολόγισε το αποτέλεσμα Α / Β και τοποθέτησέ το στο Χ και εμφάνισέ το
  • Αλλιώς, εμφάνισε το μήνυμα «ΛΑΘΟΣ στο Β»
slide23

ΑΡΧΗ

Διάβασε Α και Β

ΟΧΙ

ΝΑΙ

ΙΣΧΥΕΙ Η ΣΥΝΘΗΚΗ;

Β ≠ 0 ;

ΟΧΙ

ΝΑΙ

Χ  Α / Β

Εκτύπωσε «ΛΑΘΟΣ στο Β»

Εκτύπωσε Χ

ΤΕΛΟΣ

ΑΛΓΟΡΙΘΜΟΣ ΜΕ ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ (παράδειγμα)

ΑΡΧΗ

Δηλώνει την αρχή ή τέλος του αλγορίθμου

ΤΕΛΟΣ

Διακλάδωση εκτέλεσης οδηγιών του αλγορίθμου

Είσοδος ή έξοδος δεδομένων

Είσοδος ή Έξοδος

Αριθμητική πράξη, εκχώρηση τιμής, κ.λπ.

Εκτέλεσηενέργειας

Όλα τα σχήματα ενώνονται με γραμμές που καταλήγουν σε βέλος

slide24
ΑΛΓΟΡΙΘΜΟΣ ΜΕ ΨΕΥΔΟΚΩΔΙΚΑ (παράδειγμα)

Αλγόριθμος Πηλίκο

Διάβασε Α, Β

Αν Β <> 0 τότε

Χ  Α / Β

Εμφάνισε Χ

Αλλιώς

Εμφάνισε «ΛΑΘΟΣ στο Β»

Τέλος_αν

Τέλος Πηλίκο

slide25
ΣΥΝΙΣΤΩΣΕΣΑΛΓΟΡΙΘΜΟΥ
  • Δομή ακολουθίαςΕκτέλεση των βημάτων του αλγορίθμου βάσει της σειράς εμφάνισης τους. Στο εξής τα βήματα θα τα ονομάζουμε εντολές
  • Δομές επιλογής (4)Η εκτέλεση των εντολών διακλαδώνεται με βάση την επαλήθευση ή όχι, κάποιας συνθήκης.
  • Δομές επανάληψης (3)Η εκτέλεση των εντολών μπορεί να γίνεται επαναληπτικά.
slide26
ΣΤΟΙΧΕΙΑ ΑΛΓΟΡΙΘΜΟΥ
  • Μεταβλητές (variables)Θέσεις μνήμης με όνομα, στις οποίες εκχωρούμε κάποια τιμή η οποία μπορεί αργότερα να αλλάξει.
  • Σταθερές (constants)Θέσεις μνήμης με όνομα, αλλά με προκαθορισμένη τιμή, σταθερή πάντα (π.χ. Π : 3,14 ή ΦΠΑ : 21%)
  • Τελεστές (operators)Είναι τα σύμβολα που χρησιμοποιούνται στην τέλεση των πράξεων(+, - , * , / , < , > ,  , ΚΑΙ, Ή, ΟΧΙ, ^ , MOD, DIV, κ.λπ.)
  • Εντολές (commands) και ΣυναρτήσειςΕίναι ειδικές δεσμευμένες λέξεις και δομές, τις οποίες χρησιμοποιούμε με συγκεκριμένο συντακτικό κατά την εκτέλεση των βημάτων και άλλων υπολογισμών του αλγορίθμου
  • Εκφράσεις/παραστάσεις (expressions)Αποτελούνται από μεταβλητές ή σταθερές και παράγουν ένα αποτέλεσμα που εκχωρείται () σε μεταβλητή.Π.χ. Στη μεταβλητή Α εκχωρείται το αποτέλεσμα της έκφρασης Χ + 15 / ΥΑ  Χ + 15 / Υ
  • Σχόλια προγραμματιστήΕίναι ελεύθερο κείμενο που συμπληρώνει ο προγραμματιστής σε σημεία του αλγορίθμου που τον ενδιαφέρουν, ώστε να κάνει τον αλγόριθμο πιο κατανοητό. Πρέπει να ξεκινούν με το χαρακτήρα του θαυμαστικού (!)
slide27
1. ΜΕΤΑΒΛΗΤΕΣ

Χρησιμοποιούμε μεταβλητές όταν θέλουμε να αποθηκεύσουμε μια τιμή. Οι μεταβλητές είναι θέσεις μνήμης με όνομα, τύπο και περιεχόμενο

  • Το όνομα μπορεί να είναι ένα απλό γράμμα ή μια μόνο λέξηκαι δεν μπορεί να αρχίζει με αριθμό ή άλλο σύμβολο. Το μόνο επιτρεπτό σύμβολο είναι η κάτω παύλα ( _ ) για χρήση ανάμεσα στα γράμματα του όνοματος

π.χ. Επώνυμο, ΑΒ_Κ12, Status, Χ, Υποχρεωτικό Μέσος όρος,1ΑΒ, @35Επώνυμο

*** Επίσης, οι μεταβλητές απαγορεύεται να ονομάζονται χρησιμοποιώντας δεσμευμένες λέξεις (π.χ. Αλγόριθμος) ***

  • Τύπος, είναι το είδος των πιθανών τιμών που μπορεί να λάβει η μεταβλητή

π.χ. Ακέραιος, δεκαδικός, κείμενο (χαρακτήρας/αλφαριθμητικό), λογική τιμή (δηλ. «Αληθές» ή «Ψευδές») κ.λπ.

Σημ.: Ορίζουμε τον τύπο όταν γράφουμε σε

γλώσσα προγραμματισμού (π.χ. «ΓΛΩΣΣΑ»). Όχι σε αλγόριθμο.

  • Τιμή, είναι το περιεχόμενο της μεταβλητής

π.χ. 50, 45.23 , «ΝΙΚΟΣ», ΑΛΗΘΕΣ

Κάθε μεταβλητή μπορεί να έχει μόνο μια τιμή τη φορά. >>> Αν θέσουμε νέα τιμή, η προηγούμενη αντικαθίσταται. <<<

ΣΩΣΤΕΣ

ΛΑΘΟΣ

slide28

ΑΙΘΡΙΟΣ ΚΑΙΡΟΣ

Status

200

201

Y3

Y3

300

Χ

1. ΜΕΤΑΒΛΗΤΕΣ (παραδείγματα)

Η εκχώρηση τιμής σε μεταβλητή γίνεται με τον τελεστή δηλ. από τα δεξιά προς τα αριστερά

  • Εκχώρηση της τιμής «ΑΙΘΡΙΟΣΚΑΙΡΟΣ», στη μεταβλητή με όνομα StatusStatus  “ΑΙΘΡΙΟΣ ΚΑΙΡΟΣ”
  • Εκχώρηση της τιμής 200, στη μεταβλητή με όνομα Y3Y3  200
  • Εκχώρηση του αποτελέσματος της έκφρασης Υ3 + 100, στη μεταβλητή Χ, δηλαδή ό,τι περιέχει η μεταβλητή Υ3 συν 100Χ  Υ3 + 100
  • Αύξηση της τιμής Υ3 κατά 1. Υπολογίζεται πρώτα η έκφραση Υ3 + 1 με την τρέχουσα τιμή της Υ3 και εκχωρείται το αποτέλεσμα πάλι στην Υ3Υ3  Υ3 + 1
slide29

21%

Π.χ. ΦΠΑ

2. ΣΤΑΘΕΡΕΣ
  • Οι σταθερές, μοιάζουν με τις μεταβλητές,στο ότι είναι κι αυτές θέσεις μνήμης με όνομα και περιεχόμενο. Ο τύπος υπονοείται βάσει της αρχικής τιμής.
  • Η τιμή αυτή όμως είναι πάντα σταθερή σε όλο τον αλγόριθμο και είναι προκαθορισμένη στην αρχή (πριν τις δηλώσεις μεταβλητών). Η εκχώρηση τιμής σε σταθερές γίνεται με το σύμβολο (=), π.χ. Π=3.14
  • Αντί λοιπόν της ίδιας της τιμής της σταθεράς, μπορούμε να χρησιμοποιήσουμε το όνομα της (πολύ βολικό αν την αναφέρουμε σε διάφορα σημεία στον αλγόριθμο)

Αν τυχόν αργότερα αποφασίσουμε ότι, η αρχική τιμή της σταθεράς πρέπει να είναι άλλη, θα κάνουμε τη ρύθμιση αυτή μόνο μια φορά στην αρχή και όχι σε κάθε σημείο που θα χρησιμοποιούσαμε την τιμή της.

Το παρακάτω παράδειγμα είναι απολύτως αντιπροσωπευτικό:

slide30
2. ΣΤΑΘΕΡΕΣ (παράδειγμα)

Έστω ότι πρέπει να υπολογίσουμε το ποσό που αντιστοιχεί στο ποσοστό ΦΠΑ (21%) τριών προϊόντων. Αυτό προκύπτει αν πολλαπλασσιάσουμε την αρχική αξία του κάθε προϊόντος, με το αντίστοιχο ποσοστό ΦΠΑ (Αρχική_αξία x ποσοστό_ΦΠΑ)

ΦΠΑ_παπουτσιών 50.00 x 0.21

ΦΠΑ_παντελονιών 60.00 x0.21

ΦΠΑ_παλτό 150.00 x 0.21

Παρατηρείτε ότι το 0.21 χρησιμοποιείται 3 φορές στον παραπάνω αλγόριθμο. Αν αλλάξει η νομοθεσία και το ποσοστό γίνει 0.23, τότε πρέπει να κάνουμε την αλλαγή και στα 3 σημεία. Αυτό δεν είναι ευέλικτο και σε μεγάλες εφαρμογές οδηγεί σε πολλά σφάλματα.

Μπορούμε να αλλάξουμε τον αλγόριθμο εισάγοντας μια σταθερά για τον ΦΠΑ:

Ποσοστό_ΦΠΑ = 0.21

ΦΠΑ_παπουτσιών  50.00 xΠοσοστό_ΦΠΑ

ΦΠΑ_παντελονιών  60.00 x Ποσοστό_ΦΠΑ

ΦΠΑ_παλτό  150.00 xΠοσοστό_ΦΠΑ

Αν το ποσοστό ΦΠΑ αλλάξει σε 0.23, αρκεί να κάνουμε την αλλαγή μόνο μία φορά στην αρχή του αλγορίθμου, αφού χρησιμοποιούμε μόνο το όνομα της σταθεράς

Σταθερά με αρχική τιμή

Χρήση ονόματος της σταθεράς

slide31
3. ΤΕΛΕΣΤΕΣ

Οι τελεστές είναι τα σύμβολα τα οποία χρησιμοποιούμε σε διάφορες εκφράσεις για να εκτελέσουμε κάποιον υπολογισμό.

slide33
4. ΣΥΝΑΡΤΗΣΕΙΣ(Ενσωματωμένες)
  • Οι ενσωματωμένες συναρτήσεις έχουν την ίδια χρήση όπως και στα μαθηματικά.
  • Μπορούν να χρησιμοποιηθούν συνδυαστικά. Π.χ :ΖΗΜ(ΣΥΝ ( Χ ) + Α_Μ ( Υ ) ) + 50
slide34
ΠΩΣ ΓΡΑΦΟΥΜΕ ΑΛΓΟΡΙΘΜΟ ΜΕ ΨΕΥΔΟΚΩΔΙΚΑ (Γενική θεώρηση)

Παράδειγμα

  • Ξεκινάμε πάντα με τη δήλωση:Αλγόριθμος όνομα_αλγορίθμου
  • Αρχικοποιούμε τυχόν σταθερές.
  • Δίνουμε τιμή στις απαραίτητες μεταβλητές, είτε με την εντολή Διάβασε, είτε με απ’ ευθείας εκχώρηση ().
  • Χρησιμοποιούμε όπου χρειάζεται δομές διακλάδωσης (Αν ), και δομές επανάληψης Για , Όσο, Μέχρις_ότου)
  • Κάνουμε τους υπολογισμούς μας εκχωρώντας τα αποτελέσματα πάλι σε μεταβλητές ()
  • Εμφανίζουμε (σε οθόνη ή εκτυπωτή) τα αποτελέσματα με τις εντολές:Εμφάνισε ή εκτύπωσεμεταβλητή1,2...Ν
  • Τα βήματα 2 ως 6 μπορεί να εμφανίζονται αρκετές φορές και με οποιαδήποτε σειρά, ανάλογα με το πρόβλημα
  • Τελειώνουμε πάντα με τη δήλωσηΤέλος όνομα_αλγορίθμου (ίδιο όνομα με το βήμα 1)

Αλγόριθμος εμβαδό_κύκλου

π = 3.14

Διάβασε ρ

Εμβ  π * ρ ^ 2

Εμφάνισε“Eμβαδό=“,Εμβ

Τέλος εμβαδό_κύκλου

slide35
ΠΩΣ ΓΡΑΦΟΥΜΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΣΕ «ΓΛΩΣΣΑ» (Γενική θεώρηση)

Παράδειγμα

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

ΠΡΟΓΡΑΜΜΑ εμβαδό_κύκλου

ΣΤΑΘΕΡΕΣ

π = 3.14

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ: Εμβ, ρ

ΑΡΧΗ

ΔΙΑΒΑΣΕ ρ

Εμβ  π * ρ ^ 2

ΓΡΑΨΕ“Eμβαδό=“,Εμβ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Τα κεφαλαία γράμματα στις εντολές δεν είναι υποχρεωτικά αλλά ΣΥΝΙΣΤΩΝΤΑΙ

slide36
ΔΙΑΦΟΡΕΣ ΣΤΗ ΣΥΓΓΡΑΦΗ ΑΛΓΟΡΙΘΜΟΥ & ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΕ «ΓΛΩΣΣΑ»

Ένας αλγόριθμος γραμμένος με ψευδοκώδικα, έχει λίγες μόνο διαφορές στη συγγραφή του, από ένα πρόγραμμα γραμμένο σε «ΓΛΩΣΣΑ», γι’ αυτό πιθανώς να υπάρξει μια μικρή σύγχυση. Αναλυτικότερα έχουμε:

  • Η έναρξη στον αλγόριθμο γίνεται με τη δήλωση Αλγόριθμος, ενώ στο πρόγραμμα με τη δήλωση ΠΡΟΓΡΑΜΜΑ
  • Οι μεταβλητές και οι σταθερές δηλώνονται μόνο στο πρόγραμμα. Στον αλγόριθμο, απλά γράφουμε //μεταβλητή1, μεταβλητή2,...// στην αρχή
  • Μόνο στο πρόγραμμα έχουμε έναρξη του κύριου σώματος με τη δήλωση ΑΡΧΗ
  • Στον αλγόριθμο η έξοδος γίνεται με την εντολή Εμφάνισε, ενώ στο πρόγραμμα με την εντολή ΓΡΑΨΕ
  • Το τέλος στον αλγόριθμο, γίνεται με το Τέλος όνομα_αλγορίθμου ενώ στο πρόγραμμα, μόνο με το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
slide37
ΣΥΝΙΣΤΩΣΕΣΑΛΓΟΡΙΘΜΟΥ
  • Δομή ακολουθίαςΕκτέλεση των βημάτων του αλγορίθμου βάσει της σειράς εμφάνισης τους. Στο εξής τα βήματα θα τα ονομάζουμε εντολές
  • 4 δομές επιλογήςΗ εκτέλεση των εντολών διακλαδώνεται με βάση την επαλήθευση ή όχι, κάποιας συνθήκης.
  • 3 δομές επανάληψηςΗ εκτέλεση των εντολών μπορεί να γίνεται επαναληπτικά.
slide38
4. ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣΠαράδειγμα #1

Σημαίνει ότι η εκτέλεση των εντολών, γίνεται με τη σειρά που εμφανίζονται (ακολουθιακά)

Αλγόριθμοςμέσος_όρος

Διάβασε χ1, χ2, χ3

Πλήθος  3

ΜΟ  (χ1+χ2+χ3) / Πλήθος

Εμφάνισε ΜΟ

Τέλος μέσος_όρος

Δήλωση έναρξης αλγορίθμου

Εισαγωγή τιμών στις χ1,χ2,χ3 από το χρήστη

Εκχώρηση τιμής στη μεταβλητή Πλήθος

Υπολογισμός και εκχώρηση τιμής στη MO

Εμφάνιση αποτελέσματος ΜΟ

Δήλωση τέλους αλγορίθμου

slide39

ΑΡΧΗ

Διάβασε χ1, χ2, χ3

Πλήθος  3

ΜΟ  (χ1 + χ2 + χ3) / Πλήθος

Εμφάνισε ΜΟ

ΤΕΛΟΣ

4. ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ Παράδειγμα #1 (συνέχεια)

Με διάγραμμα ροής

Με ψευδοκώδικα

Με πρόγραμμα

Αλγόριθμοςμέσος_όρος

Διάβασε χ1, χ2, χ3

Πλήθος  3

ΜΟ  (χ1+χ2+χ3) / Πλήθος

Εμφάνισε ΜΟ

Τέλος μέσος_όρος

ΠΡΟΓΡΑΜΜΑμέσος_όρος

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: χ1,χ2,χ3,Πλήθος

ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ

ΑΡΧΗ

ΔΙΑΒΑΣΕχ1, χ2, χ3

Πλήθος  3

ΜΟ  (χ1+χ2+χ3) / Πλήθος

ΓΡΑΨΕ ΜΟ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide40
4. ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ Παράδειγμα #2

Ο κλασσικός τρόπος αντιμετάθεσης (Swap) τιμών δύο μεταβλητών

ΤΟ ΛΑΘΟΣ ΠΟΥ ΓΙΝΕΤΑΙ

ΤΟ ΣΩΣΤΟ

5

8

8

8

5

5

5

8

8

Ζ

Χ

Υ

Χ

Υ

1. Ζ  Χ

1. Χ  Υ

ΒΟΗΘΗΤΙΚΗΜΕΤΑΒΛΗΤΗ

2. Χ  Υ

3. Υ  Ζ

Χάνουμε την τιμή της Χ και κάνουμε και τις δύο ίσες

slide41

ΑΡΧΗ

Διάβασε x,y

z x

x y

y z

Εμφάνισε χ, y

ΤΕΛΟΣ

4. ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ Παράδειγμα #2 (Αντιμετάθεσης συνέχεια)

Με διάγραμμα ροής

Με ψευδοκώδικα

Με πρόγραμμα

ΑλγόριθμοςSwap

Διάβασε x, y

z x

x y

y z

Εμφάνισεx,y

ΤέλοςSwap

ΠΡΟΓΡΑΜΜΑ Swap

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: x, y, z

ΑΡΧΗ

ΔΙΑΒΑΣΕx, y

z x

x y

y z

ΓΡΑΨΕx, y

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

boole george boole
ΑΛΓΕΒΡΑ BOOLE( Εισαγωγή στις Λογικές Πράξεις – George Boole, Άγγλος μαθημ. )

Χρησιμοποιούνται κατά κόρον στον προγραμματισμό

Σε συγκρίσεις, δομές επιλογής και επανάληψης, δηλ. παντού

Κάνουν χρήση τουλάχιστον μιας συνθήκης

Το αποτέλεσμα είναι πάντα μια από τις τιμές(ΑΛΗΘΗΣ,ΨΕΥΔΗΣ )

Λογικοί τελεστές(κατά σειρά προτεραιότητας)

1. ΌΧΙ (ένας τελεστέος)

Αντιστρέφει την πρόταση που την ακολουθεί

2. ΚΑΙ (δύο τελεστέοι, λογική σύζευξη)

Πρέπει και οι δύο προτάσεις να έχουν τιμή ΑΛΗΘΗΣγια να είναι τελικά ΑΛΗΘΗΣ

3. Ή (δύο τελεστέοι, λογική διάζευξη)

Πρέπει τουλάχιστον η μια πρόταση να είναι ΑΛΗΘΗΣγια να είναι τελικά ΑΛΗΘΗΣ

boole1
ΑΛΓΕΒΡΑ BOOLE(με παραδείγματα λογικών τελεστών)

ΌΧΙ(Χ = 5) ισούται με (Χ<>5)

ΌΧΙ (ΑΛΗΘΗΣ) ισούται με ΨΕΥΔΗΣ

ΌΧΙ (ΑΠΑΝΤΗΣΗ = «Ν») ισούται με ΑΠΑΝΤΗΣΗ <> «Ν»

(Χ=5) ΚΑΙ (Χ=10) είναι ΨΕΥΔΗΣ

(Χ>5) ΚΑΙ (Χ<10) είναι ΑΛΗΘΗΣ για 5<Χ<10 ΨΕΥΔΗΣ για κάθε άλλο Χ

(Α=Β) ΚΑΙ (Α=Γ) είναι ΑΛΗΘΗΣ για Β=Γ ΨΕΥΔΗΣ για Β<>Γ

(ΠΟΛΗ = «ΠΑΤΡΑ») ΚΑΙ (ΟΝΟΜΑ <> «ΝΙΚΟΣ»)

(Χ=5) Ή (Χ=10) είναι ΑΛΗΘΗΣ για Χ=5 ή Χ=10 και ΨΕΥΔΗΣ για κάθε άλλο Χ

(Χ>5) Ή (Χ<10) είναι ΑΛΗΘΗΣ πάντα

(ΠΟΛΗ=«ΠΑΤΡΑ») Ή (Χ=15)

boole2
ΑΛΓΕΒΡΑ BOOLE(Εξάσκηση)

Να συμπληρώσετε τους παρακάτω πίνακες με τις τιμές ΑΛΗΘΗΣ,ΨΕΥΔΗΣ

ΨΕΥΔΗΣ

ΑΛΗΘΗΣ

ΑΛΗΘΗΣ

ΨΕΥΔΗΣ

ΨΕΥΔΗΣ

ΑΛΗΘΗΣ

ΑΛΗΘΗΣ

ΑΛΗΘΗΣ

ΑΛΗΘΗΣ

ΨΕΥΔΗΣ

ΨΕΥΔΗΣ

ΑΛΗΘΗΣ

ΨΕΥΔΗΣ

ΑΛΗΘΗΣ

ΨΕΥΔΗΣ

ΑΛΗΘΗΣ

slide46
ΣΥΝΙΣΤΩΣΕΣΑΛΓΟΡΙΘΜΟΥ
  • Δομή ακολουθίαςΕκτέλεση των βημάτων του αλγορίθμου βάσει της σειράς εμφάνισης τους. Στο εξής τα βήματα θα τα ονομάζουμε εντολές
  • 4 δομές επιλογήςΗ εκτέλεση των εντολών διακλαδώνεται με βάση την επαλήθευση ή όχι, κάποιας συνθήκης.
  • 3 δομές επανάληψηςΗ εκτέλεση των εντολών μπορεί να γίνεται επαναληπτικά.
slide47
4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ (Απλή)

Η εντολή Αν/τότε

Η ροή εκτέλεσης των εντολών του αλγορίθμου εξαρτάται από την επαλήθευση ή όχι, μιας συνθήκης

Αλγόριθμοςαποτελέσματα

Διάβασε μ1, μ2, μ3

Πλήθος  3

ΜΟ  (μ1+μ2+μ3) / Πλήθος

Αν ΜΟ >= 10 τότε

Εμφάνισε «ΠΕΡΑΣΕΣ»Εμφάνισε ΜΟ

τέλος_αν

Τέλος αποτελέσματα

Αν συνθήκη_ισχύει τότεεντολές.............Τέλος_Αν

slide48

ΑΡΧΗ

Διάβασε χ1, χ2, χ3

Πλήθος  3

ΜΟ  (χ1 + χ2 + χ3) / Πλήθος

ΜΟ >= 10

ΟΧΙ

ΝΑΙ

Εμφάνισε «ΠΕΡΑΣΕΣ»

Εμφάνισε ΜΟ

ΤΕΛΟΣ

4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ(Απλή)(συνέχεια)

Με διάγραμμα ροής

Με πρόγραμμα

ΠΡΟΓΡΑΜΜΑ αποτελέσματα

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: μ1,μ2,μ3,Πλήθος

ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ

ΑΡΧΗ

ΔΙΑΒΑΣΕ μ1, μ2, μ3

Πλήθος  3

ΜΟ  (μ1+μ2+μ3) / Πλήθος

ΑΝΜΟ >= 10ΤΟΤΕ

ΓΡΑΨΕ«ΠΕΡΑΣΕΣ»ΓΡΑΨΕΜΟ

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide49
4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ(Σύνθετη)

Αλγόριθμοςαποτελέσματα

Διάβασε μ1, μ2, μ3

Πλήθος  3

ΜΟ  (μ1+μ2+μ3) / Πλήθος

Αν ΜΟ >= 10 τότε

Εμφάνισε «ΠΕΡΑΣΕΣ»Εμφάνισε ΜΟαλλιώςΕμφάνισε «ΚΟΠΗΚΕΣ»

τέλος_αν

Τέλος αποτελέσματα

Μια άλλη συνήθης μορφή

Αν συνθήκη_ισχύει τότεεντολές............αλλιώςεντολές..............Τέλος_Αν

slide50

ΑΡΧΗ

Διάβασε χ1, χ2, χ3

Πλήθος  3

ΜΟ  (χ1 + χ2 + χ3) / Πλήθος

ΜΟ >= 10

ΟΧΙ

ΝΑΙ

Εμφάνισε«ΚΟΠΗΚΕΣ»

Εμφάνισε «ΠΕΡΑΣΕΣ»

Εμφάνισε ΜΟ

ΤΕΛΟΣ

4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ(Σύνθετη)(συνέχεια)

Με διάγραμμα ροής

Με πρόγραμμα

ΠΡΟΓΡΑΜΜΑ αποτελέσματα

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: μ1,μ2,μ3,Πλήθος

ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ

ΑΡΧΗ

ΔΙΑΒΑΣΕ μ1, μ2, μ3

Πλήθος 3

ΜΟ  (μ1+μ2+μ3) / Πλήθος

ΑΝΜΟ >= 10ΤΟΤΕ

ΓΡΑΨΕ«ΠΕΡΑΣΕΣ»ΓΡΑΨΕΜΟ

ΑΛΛΙΩΣ

ΓΡΑΨΕ«ΚΟΠΗΚΕΣ»

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide51
4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ(Πολλαπλή)

Η πλήρης μορφή της Αν

Αν συνθήκη_1_ισχύει τότεεντολές ...............αλλιώς_αν συνθήκη_2_ισχύει τότεεντολές ...............αλλιώς_αν συνθήκη_Ν_ισχύει τότεεντολές ...............αλλιώςεντολές ................Τέλος_Αν

Αλγόριθμοςαποτελέσματα

Διάβασε μ1, μ2, μ3

Πλήθος  3

ΜΟ  (μ1+μ2+μ3) / Πλήθος

Αν ΜΟ < 10 τότε

Εμφάνισε «ΚΟΠΗΚΕΣ»αλλιώς_αν ΜΟ <= 15 τότεΕμφάνισε «ΜΕΤΡΙΑ»αλλιώς_αν ΜΟ <= 18 τότεΕμφάνισε «ΠΟΛΥ ΚΑΛΑ»αλλιώςΕμφάνισε «ΑΡΙΣΤΑ»

τέλος_αν

Τέλος αποτελέσματα

slide52

ΜΟ < 10

ΝΑΙ

ΟΧΙ

Εμφάνισε «ΚΟΠΗΚΕΣ»

ΟΧΙ

ΜΟ <= 15

ΝΑΙ

Εμφάνισε «ΜΕΤΡΙΑ»

ΜΟ <= 18

ΟΧΙ

ΝΑΙ

Εμφάνισε «ΑΡΙΣΤΑ»

Εμφάνισε «ΠΟΛΥ ΚΑΛΑ»

ΤΕΛΟΣ

4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ(Πολλαπλή)(συνέχεια)

Με διάγραμμα ροής

Με πρόγραμμα

ΠΡΟΓΡΑΜΜΑαποτελέσματα

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: μ1,μ2,μ3,Πλήθος

ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ

ΑΡΧΗ

ΔΙΑΒΑΣΕ μ1, μ2, μ3

Πλήθος  3

ΜΟ  (μ1+μ2+μ3) / Πλήθος

ΑΝΜΟ < 10ΤΟΤΕ

ΓΡΑΨΕ«ΚΟΠΗΚΕΣ»ΑΛΛΙΩΣ_ΑΝ ΜΟ <= 15 ΤΟΤΕΓΡΑΨΕ«ΜΕΤΡΙΑ»ΑΛΛΙΩΣ_ΑΝ ΜΟ <= 18 ΤΟΤΕΓΡΑΨΕ«ΠΟΛΥ ΚΑΛΑ»ΑΛΛΙΩΣΓΡΑΨΕ«ΑΡΙΣΤΑ»

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide53
4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ(Πολλαπλή)

Αλγόριθμοςαποτελέσματα

Διάβασε ηλικία

ΕπίλεξεηλικίαΠερίπτωση< 1Εμφάνισε «βρέφος»Περίπτωση< 5Εμφάνισε «νήπιο»Περίπτωση< 12Εμφάνισε «παιδί»Περίπτωση< 19Εμφάνισε «ανήλικος»Περίπτωση< 65Εμφάνισε «ενήλικας»Περίπτωση αλλιώςΕμφάνισε «ηλικιωμένος»Τέλος_επιλογώνΤέλος αποτελέσματα

Άλλη μορφή πολλαπλής επιλογής

Επίλεξε μεταβλητή Περίπτωση τιμή1ή σύγκριση ......... Περίπτωση τιμή2 ή σύγκριση ........ Περίπτωση τιμή3 ή σύγκριση ........ Περίπτωση αλλιώς ........Τέλος_επιλογώνΛειτουργεί ακριβώς όπως και η πολλαπλή ΑΝ

slide54
4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ (Φωλιασμένη)

Αλγόριθμοςαποτελέσματα

Διάβασε μ1, μ2, μ3

Πλήθος  3

Ηλικία  14

ΜΟ  (μ1+μ2+μ3) / Πλήθος

Αν ΜΟ < 10 τότε Αν Ηλικία < 15 τότε

Εμφάνισε «ΚΟΠΗΚΕΣ ΜΙΚΡΕ»αλλιώς Εμφάνισε «ΚΟΠΗΚΕΣ ΜΕΓΑΛΕ»τέλος_αναλλιώς Αν Ηλικία < 15 τότε

Εμφάνισε «ΠΕΡΑΣΕΣ ΜΙΚΡΕ»αλλιώς Εμφάνισε «ΠΕΡΑΣΕΣ ΜΕΓΑΛΕ»τέλος_αντέλος_αν

Τέλος αποτελέσματα

Φωλιασμένη εντολή Αν μέσα σε Αν

Αν συνθήκη_1_ισχύει τότε Αν συνθήκη_2_ισχύει τότεεντολέςαλλιώςεντολέςτέλος_αναλλιώς Αν συνθήκη_3_ισχύει τότεεντολέςαλλιώςεντολέςτέλος_αντέλος_αν

slide55

ΜΟ < 10

ΟΧΙ

ΝΑΙ

Ηλικία < 15

Ηλικία < 15

ΟΧΙ

ΝΑΙ

ΟΧΙ

ΝΑΙ

Εμφάνισε «ΠΕΡΑΣΕΣΜΕΓΑΛΕ»

Εμφάνισε «ΠΕΡΑΣΕΣΜΙΚΡΕ»

Εμφάνισε «ΚΟΠΗΚΕΣΜΕΓΑΛΕ»

Εμφάνισε «ΚΟΠΗΚΕΣΜΙΚΡΕ»

ΤΕΛΟΣ

4. ΔΟΜΗ ΕΠΙΛΟΓΗΣ (Φωλιασμένη)(συνέχεια)

Με διάγραμμα ροής

Με πρόγραμμα

ΠΡΟΓΡΑΜΜΑ αποτελέσματα

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: μ1,μ2,μ3,Πλήθος, Ηλικία

ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ

ΑΡΧΗ

ΔΙΑΒΑΣΕ μ1, μ2, μ3

Πλήθος  3

Ηλικία  14

ΜΟ  (μ1+μ2+μ3) / Πλήθος

ΑΝ ΜΟ < 10 ΤΟΤΕ Αν Ηλικία < 15 ΤΟΤΕ

ΓΡΑΨΕ «ΚΟΠΗΚΕΣ ΜΙΚΡΕ»αλλιώς ΓΡΑΨΕ «ΚΟΠΗΚΕΣ ΜΕΓΑΛΕ»ΤΕΛΟΣ_ΑΝΑΛΛΙΩΣ ΑΝ Ηλικία < 15 ΤΟΤΕ

ΓΡΑΨΕ «ΠΕΡΑΣΕΣ ΜΙΚΡΕ»ΑΛΛΙΩΣ ΓΡΑΨΕ «ΠΕΡΑΣΕΣ ΜΕΓΑΛΕ»ΤΕΛΟΣ_ΑΝΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide56
ΣΥΝΙΣΤΩΣΕΣΑΛΓΟΡΙΘΜΟΥ
  • Δομή ακολουθίαςΕκτέλεση των βημάτων του αλγορίθμου βάσει της σειράς εμφάνισης τους. Στο εξής τα βήματα θα τα ονομάζουμε εντολές
  • 4 δομές επιλογήςΗ εκτέλεση των εντολών διακλαδώνεται με βάση την επαλήθευση ή όχι, κάποιας συνθήκης.
  • 3 δομές επανάληψηςΗ εκτέλεση των εντολών μπορεί να γίνεται επαναληπτικά.
slide57
4. ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (ή Βρόχοι)(Τί είναι ;)

Οι δομές επανάληψης χρησιμοποιούνται στις περιπτώσεις όπου μια ακολουθία εντολών πρέπει να εκτελεστεί πολλές φορές

Προσοχή! Εννοούμε την ίδια ακολουθία εντολών, δηλαδή τις ίδιες ενέργειες συνεχώς. Π.χ. :

Εμφάνιση ενός μηνύματος πολλές φορές

Εισαγωγή πολλών στοιχείων

Εισαγωγή στοιχείου μέχρι να δοθεί κάποιο συγκεκριμένο (έλεγχος εισόδου)

Επαναλαμβανόμενες πράξεις σε μια αριθμητική ακολουθία

Οι δομές επανάληψης πρέπει να ολοκληρώνονται!

Αλγοριθμικό κριτήριο περατότητας

slide58
4. ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (ή Βρόχοι)(Τι θα κάναμε χωρίς αυτές ;)

Εμφάνισε 1

Εμφάνισε 2

Εμφάνισε 3

Εμφάνισε 4

................

................

................

................

Εμφάνισε 15

Άθροισμα  0

Διάβασε Βαθμός1

Άθροισμα  Άθροισμα + Βαθμός1

Διάβασε Βαθμός2

Άθροισμα  Άθροισμα + Βαθμός2

......................

......................

Διάβασε Βαθμός6

Άθροισμα  Άθροισμα + Βαθμός6

ΜΟ  Άθροισμα / 6

Θετικοί  0

Διάβασε Αριθμός1

Αν Αριθμός1 > 0 Τότε

Θετικοί  Θετικοί + 1

Τέλος_Αν

.....................

.....................

Διάβασε Αριθμός7

Αν Αριθμός7 > 0 Τότε

Θετικοί  Θετικοί + 1

Τέλος_Αν

ΕμφάνισεΘετικοί

Χ1Όσο Χ <= 15

Εμφάνισε ΧΧΧ + 1

Τέλος_επανάληψης

Άθροισμα  0

Χ  1

Αρχή_επανάληψης ΔιάβασεΒαθμός

Άθροισμα  Άθροισμα + Βαθμός

Χ  Χ + 1Μέχρις_ότου X > 6ΜΟ  Άθροισμα / 6

Θετικοί 0

Για Χ από 1 μέχρι 3

ΔιάβασεΑριθμός

Αν Αριθμός2 > 0 Τότε

Θετικοί  Θετικοί + 1

Τέλος_Αν

Τέλος_επανάληψης

ΕμφάνισεΘετικοί

slide59
4. ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (ή Βρόχοι)(Τι κερδίσαμε;)

Πολύ χρόνο

Φανταστείτε στην προηγούμενη διαφάνεια, να είχαμε 1000 βαθμούς

Απλότητα, καθαρότητα στον αλγόριθμο

Εύκολα κάποιος αντιλαμβάνεται ότι θέλεις να τυπώσεις 15 αριθμούς ή να προσθέσεις 6 βαθμούς

Εκφραστικότητα

Εκφράζουμε πιο σωστά τη μέθοδο επίλυσης του προβλήματος

slide60
4. ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (ή Βρόχοι)

Όλες οι δομές επανάληψης περιλαμβάνουν :

Μια ακολουθία εντολών που εκτελείται.Ενδέχεται να περιλαμβάνονται άλλοι βρόχοι σ’ αυτή την ακολουθία (Επανάληψη μέσα σε άλλη επανάληψη)

Μια συνθήκη που ελέγχει (ή στην αρχή ή στο τέλος) εάν η επανάληψη πρέπει να ολοκληρωθεί ή να τερματιστεί

Προσοχή…

Πρέπει μέσα στο βρόγχο να υπάρχουν εντολές που αλλάζουν την συνθήκη, αλλιώς η επανάληψη θα εκτελείται επ’ άπειρον.

Π.χ. αν θέλω να εμφανίσω ένα μήνυμα 10 φορές, στο βρόγχο, εκτός από την εντολή «Εμφάνισε» πρέπει να υπάρχει και μια μεταβλητή που θα μετράει πόσες φορές έγινε εμφάνιση του μηνύματος και θα αυξάνεται κάθε φορά, ώστε κάποια στιγμή να σταματήσει.

slide61
4. ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ (Βρόχοι)(Τα είδη)
  • Υπάρχουν 3 είδη δομών επανάληψης :
  • Όσο ισχύει μια συνθήκη (κριτήριο). Π.χ.
    • Όσο η μεταβλητή Χ είναι μεγαλύτερη του 0 συνέχισε τη μείωσή της κατά 5
    • Συνεχής εισαγωγή ακεραίων όσο δεν πληκτρολογούμε το 0
  • Μέχρις ότου ισχύσει μια συνθήκη. Π.χ.
    • Αύξησε την τιμή της Κ κατά 10, μέχρις ότου η τρέχουσα ώρα γίνει 14:00μμ.
    • Διάβασμα αρχείων μέχρι να τελειώσει το περιεχόμενό τους
  • Για γνωστό πλήθος επαναλήψεων. Π.χ.
    • 1+2+3+.... +Ν ή 5+10+15+...+ Ν-5 + Ν ή Ν! (Ν παραγοντικό)
    • Ταξινόμηση συγκεκριμένης λίστας στοιχείων
    • Δημιουργία όλων των τιμών μιας συνάρτησης F(x) όπου x 1-100
slide62

περιοχή εντολών

4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ»

Χρησιμοποιείται σε ΟΛΕΣ τις περιπτώσεις και σίγουρα όταν ΔΕΝ είναι γνωστός ο αριθμός επαναλήψεων

Όσομια_συνθήκη_ισχύει επανάλαβε εντολές ............Τέλος_επανάληψης

Όπου:

μια_συνθήκη_ισχύει : είναι μια έκφραση, της οποίας το αποτέλεσμα είναι η λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ (π.χ. ΜΟ >= 10)

  • Η συνθήκη της δομής «ΟΣΟ» αποτιμάται στην αρχή, γι’ αυτό πρέπει να είναι ήδη ΑΛΗΘΗΣ, αλλιώς δεν θα εκτελεστούν ποτέ οι εντολές.
  • Καθώς εκτελούνται οι εντολές, πρέπει κάποια στιγμή να αλλάξουν τη συνθήκη, γιατί...
  • Μετά από κάθε επανάληψη των εντολών, η τιμή της συνθήκης αποτιμάται και πάλι, ώστε να αποφασιστεί η έξοδος ή όχι, από τη δομή.
  • Αν λοιπόν σε κάθε επανάληψη, η συνθήκη παραμένει πάντα ΑΛΗΘΗΣ, τότε θα εκτελείται επ’ άπειρον (ατέρμων βρόχος) και θα παρατηρήσουμε ότι η εφαρμογή μας έχει κολλήσει.

x  20Όσοx >= 10επανάλαβεy y + 2 * x + 5 x  x – 1τέλος_επανάληψης

slide63
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ» (διαγραμματικά)

Αρχικοποίηση συνθήκης

Συνθήκη ισχύει ακόμη;

Εντολές.(Περιλαμβάνουν και την αλλαγή της συνθήκης)

ΝΑΙ

ΌΧΙ

slide64
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ»Παράδειγμα #1

Να γραφεί αλγόριθμος ο οποίος να εμφανίζει όλους τους ακεραίους αριθμούς μεταξύ 1 και 100

Εδώ, παρόλο που γνωρίζουμε το πλήθος των επαναλήψεων, μπορούμε να χρησιμοποιήσουμε τη δομή «ΟΣΟ»

Πριν ακόμη εκτελεστεί η «ΟΣΟ», η συνθήκη της είναι ΑΛΗΘΗΣ (το i είναι 1 δηλ. ≤ 100), οπότε η εκτέλεση των εντολών αρχίζει

Σε κάθε εκτέλεση, το (i) που συμμετέχει στη συνθήκη, αλλάζει

Μετά από κάθε εκτέλεση, η ροή πηγαίνει ξανά στην αρχή όπου αποτιμάται και πάλι η συνθήκη. Αν είναι και πάλι ΑΛΗΘΗΣ, οι εντολές ξαναεκτελούνται

Μόλις η i γίνει 101, η συνθήκη παύει να ισχύει, και η ροή συνεχίζει μετά το τέλος_επανάληψης

Αλγόριθμος ακέραιοι_1_100

i 1

Όσοi <=100επανάλαβε

Εμφάνισεi

i i + 1

τέλος_επανάληψης

Εμφάνισε «ΤΕΛΟΣ»

Τέλος ακέραιοι_1_100

slide65
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ»Παράδειγμα #2

Να γραφεί αλγόριθμος που να διαβάζει ένα άγνωστο πλήθος αριθμών και να εμφανίζει τελικά το άθροισμα τους

  • Εδώ πρέπει να καθορίσουμε πότε πρέπει να σταματήσει να εκτελείται ο αλγόριθμος (περατότητα)
  • Αν εκτελούνταν από εμάς, κάθε φορά που θα προσθέταμε έναν αριθμό στο τρέχον άθροισμα, θα μπορούσαμε να σταματήσουμε.
  • Στον Η/Υ όμως, παρουσιάζεται η ιδιομορφία ότι πρέπει να λάβει εντολή για να σταματήσει (δεν έχει νόηση όπως έχουμε πει)
  • Κάνουμε λοιπόν τη σύμβαση ότι πρέπει να συνεχίζει όσο λαμβάνει τιμή ≠0 (το μηδέν δεν προσφέρει έτσι κι αλλιώς τίποτε στο άθροισμα – ουδέτερο στοιχείο πρόσθεσης)
  • Η γραμμή (στο σχόλιο SOS) χρειάζεται οπωσδήποτε, για να δώσουμε την ευκαιρία να ξανααποτιμηθεί η συνθήκη, αλλιώς θα εγκλωβιστούμε σε ατέρμονα βρόχο.

Αλγόριθμος Αθροίσματος

S 0

Διάβασε α

Όσο α ≠ 0 επανάλαβε

S  S +α

Διάβασε α !!! SOS !!!

τέλος_επανάληψης

ΕμφάνισεS

Τέλος Αθροίσματος

slide66
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ»Παράδειγμα #3

Να γραφεί αλγόριθμος ο οποίος να εμφανίζει τον μέγιστο και τον ελάχιστο, ενός μη δεδομένου πλήθους θετικών αριθμών μεταξύ 1 και 100, καθώς επίσης και το ίδιο το πλήθος

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

Επίσης, πρέπει να καθορίσουμε πότε θα τελειώσει η διαδικασία υπολογισμού (περατότητα).

Ας θεωρήσουμε ότι τελειώνει όταν δοθεί αριθμός <1 ή >100

Θα αποθηκεύουμε τα αποτελέσματα στις αντίστοιχες μεταβλητές

Το πλήθος θα αυξάνεται κατά 1, για κάθε αριθμό που δίνουμε

Η γραμμή (στο σχόλιο SOS) χρειάζεται οπωσδήποτε, για να δώσουμε την ευκαιρία να ξανααποτιμηθεί η συνθήκη, αλλιώς θα εγκλωβιστούμεσε ατέρμονα βρόχο.

ΑλγόριθμοςMinMax

Μέγ  0 !!! Σίγουρα θα βρεθεί μεγαλύτερος

Ελάχ101 !!! Σίγουρα θα βρεθείμικρότερος

Πλήθος  0

Διάβασε α

Όσο α >= 1 ΚΑΙ α <= 100 επανάλαβε

Αν α > Μέγτότε Μέγα

Αν α < Ελάχτότε Ελάχα

Πλήθος  Πλήθος + 1

Διάβασε α !!!!SOS !!!!

τέλος_επανάληψης

Εμφάνισε Ελάχ, Μέγ, Πλήθος

ΤέλοςMinMax

slide67
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ» Παράδειγμα #4

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

  • Παίρνουμε δύο θετικούς ακέραιους αριθμούς Α, Β
  • Διπλασιάζουμε τον Α και υποδιπλασιάζουμε τον Β (αγνοώντας τα δεκαδικά ψηφία)
  • Συνεχίζουμε όσο ο Β είναι > 0
  • Προσθέτουμε τους αριθμούς της 1ης στήλης για τους οποίους ο αριθμός στη 2η στήλη είναι περιττός
  • Το άθροισμα που προκύπτει είναι το γινόμενο των δύο αρχικών αριθμών
slide68
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΟΣΟ»Παράδειγμα #4 –ΠΟΛ/ΣΜΟΣ ΑΛΑ ΡΩΣΙΚΑ (συνέχεια)

Με διάγραμμα ροής

Με ψευδοκώδικα

ΑΡΧΗ

ΑλγόριθμοςAλά_Ρώσικα

Διάβασε α, β

S 0

Όσο β > 0επανάλαβε

Αν β MOD 2 = 1 τότε

S  S +α

τέλος_αν

α  α * 2

β  β DIV 2

τέλος_επανάληψης

ΕμφάνισεS

ΤέλοςAλά_Ρώσικα

ΔΙΑΒΑΣΕ

α, β

β ← β DIV 2

α ← α*2

S← 0

S← S +α

ΟΧΙ

β > 0

β MOD 2 = 1

ΝΑΙ

ΝΑΙ

ΟΧΙ

Εμφάνισε S

ΤΕΛΟΣ

slide69

περιοχή εντολών

4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΜΕΧΡΙΣ ΟΤΟΥ»

Χρησιμοποιείται επίσης όταν ΔΕΝ είναι γνωστός ο αριθμός επαναλήψεων

Αρχή_επανάληψης εντολές ............Μέχρις_ότου μια_συνθήκη_ισχύσει

Όπου:

μια_συνθήκη_ισχύσει : είναι μια έκφραση, της οποίας το αποτέλεσμα είναι η λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ. π.χ. ΜΕΣΟΣ_ΟΡΟΣ >= 10ήΤΑΞΗ = “Γ” κ.λπ.

  • Οι εντολές θα εκτελεστούν τουλάχιστον μία φορά, αφού η συνθήκη αποτιμάται στο τέλος.
  • Καθώς εκτελούνται οι εντολές, πρέπει κάποια στιγμή να αλλάξουν τη συνθήκη, ώστε να αποφασιστεί η έξοδος ή όχι, από τη δομή.
  • Αν λοιπόν σε κάθε επανάληψη, η συνθήκη παραμένει πάντα ΨΕΥΔΗΣ, τότε θα εκτελείται επ’ άπειρον (ατέρμων βρόχος) και θα παρατηρήσουμε ότι η εφαρμογή μας έχει κολλήσει.
  • Διαφέρει από τη δομή «ΟΣΟ», στο ότι (α) η συνθήκη εξετάζεται στο τέλος και (β) η συνθήκη είναι η αντίθετη (έχουμε επανάληψη όσο είναι ΨΕΥΔΗΣ)

x  50Αρχή_επανάληψηςy y + 2 * x + 5 x  x – 1Μέχρις_ότου x = 0

slide70
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΜΕΧΡΙΣ ΟΤΟΥ»(διαγραμματικά)

Εντολές

(Περιλαμβάνουν

Και την αλλαγή

της συνθήκης)

Συνθήκηισχύειακόμη;

ΟΧΙ

ΝΑΙ

slide71
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΜΕΧΡΙΣ_ΟΤΟΥ»Παράδειγμα #1

Να γραφεί αλγόριθμος ο οποίος να εμφανίζει όλους τους ακεραίους αριθμούς μεταξύ 1 και 100

Εδώ, παρόλο που γνωρίζουμε το πλήθος των επαναλήψεων, μπορούμε να χρησιμοποιήσουμε τη δομή «ΜΕΧΡΙΣ_ΟΤΟΥ»

Η εκτέλεση των εντολών αρχίζει έτσι κι αλλιώς, αφού δεν υπάρχει κάποια συνθήκη να τη σταματήσει

Σε κάθε εκτέλεση, το (i) που συμμετέχει στη συνθήκη, αλλάζει

Μετά από κάθε εκτέλεση, αποτιμάται η συνθήκη. Αν είναι και πάλι ΨΕΥΔΗΣ, οι εντολές ξαναεκτελούνται

Μόλις η i γίνει 101, η συνθήκη ισχύει, και η ροή συνεχίζει μετά την εντολή μέχρις_ότου

Αλγόριθμος ακέραιοι_1_100

i 1

Αρχή_επανάληψης

ΕμφάνισεI

i i + 1

μέχρις_ότουi > 100

Εμφάνισε «ΤΕΛΟΣ»

Τέλος ακέραιοι_1_100

slide72
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΜΕΧΡΙΣ_ΟΤΟΥ»Παράδειγμα #2

Να γραφεί αλγόριθμος που να διαβάζει ένα άγνωστο πλήθος αριθμών και να εμφανίζει τελικά το άθροισμα τους

  • Εδώ πρέπει να καθορίσουμε πότε πρέπει να σταματήσει να εκτελείται ο αλγόριθμος (περατότητα)
  • Αν εκτελούνταν από εμάς, κάθε φορά που θα προσθέταμε έναν αριθμό στο τρέχον άθροισμα, θα μπορούσαμε να σταματήσουμε.
  • Στον Η/Υ όμως, παρουσιάζεται η ιδιομορφία ότι πρέπει να λάβει εντολή για να σταματήσει (δεν έχει νόηση όπως έχουμε πει)
  • Κάνουμε λοιπόν τη σύμβαση ότι πρέπει να σταματήσει όταν λάβει την τιμή 0 (το μηδέν δεν προσφέρει έτσι κι αλλιώς τίποτε στο άθροισμα – ουδέτερο στοιχείο πρόσθεσης)

Αλγόριθμος Αθροίσματος

S 0

Αρχή_επανάληψης

Διάβασεα

S  S +α

Μέχρις_ότουα = 0

ΕμφάνισεS

Τέλος Αθροίσματος

slide73
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΜΕΧΡΙΣ_ΟΤΟΥ»Παράδειγμα #3

Να γραφεί αλγόριθμος ο οποίος να εμφανίζει τον μέγιστο και τον ελάχιστο, ενός μη δεδομένου πλήθους θετικών αριθμών μεταξύ 1 και 100, καθώς επίσης και το ίδιο το πλήθος

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

Επίσης, πρέπει να καθορίσουμε πότε θα τελειώσει η διαδικασία υπολογισμού (περατότητα).

Ας θεωρήσουμε ότι τελειώνει όταν δοθεί αριθμός εκτός του ορίου 1 - 100

Θα αποθηκεύουμε τα αποτελέσματα στις αντίστοιχες μεταβλητές

Το πλήθος θα αυξάνεται κατά 1, για κάθε αριθμό που δίνουμε

Όταν η έκφραση (α < 1 ‘Η α > 100)γίνει ΑΛΗΘΗΣ, τότε η επανάληψη σταματά

ΑλγόριθμοςMinMax

Μέγ  0 !!! Σίγουρα θα βρεθεί μεγαλύτ.

Ελάχ101 !!! Σίγουρα θα βρεθείμικρότ.

Πλήθος  0

Αρχή_επανάληψης

Διάβασε α

Αν α > Μέγτότε Μέγα

Αν α < Ελάχτότε Ελάχα

Πλήθος  Πλήθος + 1 Μέχρις_ότου α < 1 ‘Η > 100

Εμφάνισε Ελάχ, Μέγ, Πλήθος

ΤέλοςMinMax

slide74

περιοχή εντολών

4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ»

Για xαπό1μέχρι 10y y + 2 * x + 5 z  x – 1Εμφάνισεy, zτέλος_επανάληψης

Χρησιμοποιείται όταν ΕΙΝΑΙ γνωστός ο αριθμός επαναλήψεων

Για μεταβλητή1 από Χ μέχρι Υ με βήμα Ζ εντολές ............Τέλος_επανάληψης

Όπου :μεταβλητή1 : η μεταβλητή της οποίας η τιμή θα περάσει από το κάτω όριο στο άνω όριοΧ : κάτω όριοΥ : άνω όριο, μεγαλύτερο ή ίσο του ΧΖ : βήμα μεταβολής (Αν είναι 1, τότε η φράση με βήμα Ζ , παραλείπεται. Αν είναι αρνητικό, πρέπει Χ >= Υ)

  • Η δομή «ΓΙΑ» αναλαμβάνει αυτόματα την μεταβολή της μεταβλητής1 σε κάθε επανάληψη και συνεπώς την αποτίμηση της συνθήκης, η οποία σε αντίθεση με τις εντολές ΟΣΟ/ΜΕΧΡΙΣ_ΟΤΟΥ, λειτουργεί στο παρασκήνιο. Είναι σίγουρο λοιπόν, ότι η επανάληψη θα τελειώσει.
  • Οι εντολές, μπορούν να κάνουν χρήση της μεταβλητής1. Δεν επιτρέπεται όμως, να αλλάζουν την τιμή της, γιατί θα αλλοιώσουν το πλήθος επαναλήψεων.
slide75
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ» (διαγραμματικά)

Αρχικοποίηση συνθήκης

Συνθήκη ισχύει ακόμη;

Εντολές (Περιλαμβάνουν και την αλλαγή της συνθήκης)

ΝΑΙ

ΌΧΙ

Διαγραμματικά είναι ίδια με την δομή επανάληψης «ΟΣΟ»

slide76
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ»

Πόσες φορές θα εκτελεστούν οι παρακάτω επαναλήψεις;

Για Α από 10 μέχρι 20

Για Β από 10 μέχρι 10

Για Ε από 30 μέχρι 20

A1  10A2  21Για ΜΕΤΡΗΤΗαπό Α1 μέχρι Α2

Για Γ από -10 μέχρι 10

Για Δ από -10 μέχρι -20

 11 φορές

 1 φορά

 Καμία φορά

 12 φορές

 21 φορές

 Καμία φορά

slide77

ΑΡΧΗ

i 1

Sum  0

ii + 1

Sum  Sum + i

i<= 100

ΝΑΙ

ΟΧΙ

Εμφάνισε Sum

ΤΕΛΟΣ

4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ»παράδειγμα #1

Υπολογισμός του αθροίσματος 1+2+3+....+100

Με διάγραμμα ροής

Με ψευδοκώδικα

Αλγόριθμος άθροισμα_100

Sum 0

Γιαiαπό1μέχρι100Sum Sum + iΤέλος_επανάληψηςΕμφάνισε Sum

Τέλος άθροισμα_100

Διαγραμματικά είναι ίδια με τη δομή επανάληψης ΟΣΟ

slide78
4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ»παράδειγμα #2

Να γραφεί αλγόριθμος που θα υπολογίζει το άθροισμα όλων των περιττών αριθμών από το 1 ως το 10

1ος Τρόπος

2ος Τρόπος

Αλγόριθμος ΔΠ3

Άθροισμα  0

Γιαi από 1 μέχρι 10 με_βήμα 2

Άθροισμα  Άθροισμα + i

Τέλος_επανάληψης

Εμφάνισε Άθροισμα

Τέλος ΔΠ3

Αλγόριθμος ΔΠ3

Άθροισμα  0

Γιαi από 1 μέχρι 10

Ανi MOD 2 = 1 Τότε

Άθροισμα  Άθροισμα + i

Τέλος_Αν

Τέλος_επανάληψης

Εμφάνισε Άθροισμα

Τέλος ΔΠ3

Γιατί εκτελείται πιο αργά;

slide79

ΑΡΧΗ

γ3t 1

S 1 / 2 * γ * t^2

Εμφάνισεt, S

tt + 5

t<= 100

ΝΑΙ

ΟΧΙ

ΤΕΛΟΣ

4. ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ «ΓΙΑ»παράδειγμα #3

Διάστημα βολήςγια t από 1 ως 100sec κάθε 5sec και γ=3m/sec2

s = ½ . γ .t2

Με διάγραμμα ροής

Με ψευδοκώδικα

Αλγόριθμος Διάστημα

γ  3

Γιαtαπό1μέχρι100 με_βήμα 5

s  1 / 2 * γ * t^2

Εμφάνισεt, s

Τέλος_επανάληψηςΤέλος Διάστημα_100

Διαγραμματικά είναι ίδια με τη δομή επανάληψης ΟΣΟ

slide80
ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΑΝΤΙΣΤΟΙΧΙΑ

Στις περισσότερες περιπτώσεις, μπορούν να χρησιμοποιηθούν και οι τρεις δομές επανάληψης. Π.χ.:Να γραφεί αλγόριθμος που να εμφανίζει τους αριθμούς 1-100

ΑλγόριθμοςΧρήση_Όσο

i1

Όσο i <= 100επανάλαβε

Εμφάνισεi

i  i + 1

Τέλος_επανάληψηςΤέλοςΧρήση_Όσο

ΑλγόριθμοςΧρήση_Μέχρις_ότου

i1

Αρχή_επανάληψης

Εμφάνισεi

i  i + 1

Μέχρις_ότουi > 100

ΤέλοςΧρήση_Μέχρις_ότου

ΑλγόριθμοςΧρήση_Για

Γιαiαπό1μέχρι100

Εμφάνισεi

Τέλος_επανάληψηςΤέλοςΧρήση_Για

ΓΕΝΙΚΑΧρησιμοποιείται σε όλες τις περιπτώσεις συνθηκών (αριθμητικών και μη), είτε απλών είτε σύνθετων

ΓΕΝΙΚΑΙσχύουν τα ίδια με την ΟΣΟ, με τη διαφορά ότι οι εντολές επανάληψης εκτελούνται σίγουρα μια φορά.

ΓΕΝΙΚΑΧρησιμοποιείται μόνο σε γνωστό πλήθος επαναλήψεων.

slide81
ΕΜΦΩΛΕΥΜΕΝΗ «ΓΙΑ»

Ο εσωτερικός βρόχος βρίσκεται πάντα ολόκληρος μέσα στον εξωτερικό, δηλ. ο βρόχος που ξεκινάει τελευταίος ολοκληρώνεται πρώτος

Η είσοδος σε κάθε βρόχο γίνεται υποχρεωτικά από την αρχή του

ΔΕΝ πρέπει να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσότερων βρόχων (x,y,z)

Η «Αν» θα εκτελεστεί 100x100x100 φορές!

Αλγόριθμος Λύσεις

Γιαxαπό 1 μέχρι 100

Γιαyαπό 1 μέχρι 100

Γιαzαπό 1 μέχρι 100

Αν 3*x+2*y-7*z=5 τότε

Τύπωσεx, y, z

Τέλος_Αν

Τέλος_επανάληψης

Τέλος_επανάληψης

Τέλος_επανάληψης

Τέλος Λύσεις

slide83
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ(Τα βασικά)
  • Δεδομένα
    • Ακατέργαστα στοιχεία (π.χ. ονόματα, ποσά, ημερομηνίες, βάρος, φύλο, κλπ)
    • Ως αυτόνομες τιμές, δεν έχουν κάποια αξία
  • Πληροφορίες
    • Είναι το αποτέλεσμα της επεξεργασίας των δεδομένων, ώστε να χρησιμοποιηθεί για τις κατάλληλες αποφάσεις
  • Αλγόριθμος
    • Ο τρόπος εξαγωγής της πληροφορίας (επεξεργασία) από τη χρήση των δεδομένων

ΘΕΩΡΙΑ ΠΛΗΡΟΦΟΡΙΩΝ (Information Theory)

  • Είναι ένας κλάδος της επιστήμης της Πληροφορικής, που ασχολείται με τη μέτρηση, κωδικοποίηση και μετάδοση της πληροφορίας
slide84
ΜΕΛΕΤΗ ΤΩΝ ΔΕΔΟΜΕΝΩΝ

Η Πληροφορική μελετά τα δεδομένα από τις ακόλουθες σκοπιές:

  • Υλικό
    • Με ποια μορφή αποθηκεύονται τα δεδομένα στη μνήμη, στα μέσα αποθήκευσης (π.χ. ASCII,UNICODE, αριθμός bits, κλπ.)
  • Γλώσσες προγραμματισμού
    • Πώς περιγράφονται τα δεδομένα στις γλώσσες προγραμματισμού, οι τύποι τους, πώς ο μεταφραστής βελτιστοποιεί την αποθήκευσή τους
  • Δομές δεδομένων
    • Σύνολο αλληλένδετων δεδομένων + Λειτουργίες σε αυτά(π.χ. Δομή=εγγραφή πελάτη : Επώνυμο, όνομα, τηλ., και Λειτουργίες=Εισαγωγή νέου, διαγραφή, μεταβολή, κλπ)
  • Ανάλυση δεδομένων
    • Τρόποι μοντελοποίησης των συσχετίσεων μεταξύ δεδομένων και καταγραφής αυτών. (π.χ. Bάσεις δεδομένων, Data modeling)
slide85
ΤΙ ΕΙΝΑΙ ΔΟΜΗ ΔΕΔΟΜΕΝΩΝ
  • Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.
  • Λειτουργίες είναι οι ακόλουθες:

Βασικότερες

Υπάρχει εξάρτηση μεταξύ της δομής δεδομένων και του αλγορίθμου που την επεξεργάζεται. Έτσι ο Niklaus Wirth(κατασκεύασε τη γλώσσα προγρ/σμού PASCAL) έγραψετο 1976:Αλγόριθμοι + Δομές δεδομένων = Προγράμματα

slide86
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΠΟΔΟΤΙΚΟΤΗΤΑ

Διαφορετικές δομές δεδομένων, χρειάζονται διαφορετικές λειτουργίες επεξεργασίας τους, άρα έχουν διαφορετική απόδοση.

ΠΑΡΑΔΕΙΓΜΑ

Έστω ότι θέλουμε έναν αλγόριθμο, που να δέχεται ως είσοδο το όνομα ενός συνδρομητή τηλεφωνίας και να δίνει ως έξοδο το τηλέφωνό του.

Θα δοθεί λύση με δύο τρόπους, δηλ. με δύο διαφορετικές δομές δεδομένων με τις οποίες αποθηκεύονται τα στοιχεία και συνεπώς η επεξεργασία των δομών αυτών, θα γίνει με δύο διαφορετικές λειτουργίες. Αυτό που διαφέρει είναι η αποδοτικότητα τους.

slide87
ΛΥΣΗ 1η

Η δομή για την αποθήκευση των δεδομένων μας είναι η παρακάτω αταξινόμητη λίστα ονομάτων/τηλεφώνων:

(Ον1,Τηλ1) (Ον2,Τηλ2) ..........(ΟνΝ,ΤηλΝ)

Πλεονεκτήματα;

Μειονεκτήματα;

slide88
ΛΥΣΗ 2η

Χρησιμοποιούμε δύο δομές:

1. Μία δομή, όπου τα δεδομένα μας είναι σε ταξινομημένη λίστα ονομάτων/τηλεφώνων (Ον1,Τηλ1) (Ον2,Τηλ2) ..........(ΟνΝ,ΤηλΝ)

2. Μια δεύτερη δομή, όπου αποθηκεύουμε το πού ξεκινά η κάθε αλλαγή στο αρχικό γράμμα των ονομάτων(Α,Ν1) (Β,Ν2) (Γ,Ν3) (Δ,Ν4).....(Ω,Ν24)

slide89
ΚΑΤΗΓΟΡΙΕΣ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ
  • Στατικές δομές δεδομένων
    • Αποθηκεύουν τα δεδομένα σε συνεχόμενες θέσεις.
    • Το μέγεθος στη μνήμη είναι γνωστό από τη στιγμή του προγραμματισμού τους και όχι κατά την εκτέλεσή τους και παραμένει το ίδιο, μέχρι το τέλος του προγράμματος.
  • Δυναμικές δομές δεδομένων
    • Τα δεδομένα δεν αποθηκεύονται συνεχόμενα, αλλά γίνεται δυναμικά παραχώρηση, όπου βρεθεί χώρος στη μνήμη.
    • Είναι μεταβλητού μεγέθους (π.χ. όταν προσθέτουμε ή διαγράφουμε στοιχεία).
    • Πρέπει να υποστηρίζονται από τη γλώσσα προγραμματισμού

Οι παραπάνω κατηγορίες δομών δεδομένων, υλοποιούνται με ΠΙΝΑΚΕΣ. Εμείς θα ασχοληθούμε μόνο με τις στατικές δομές. Είναι πιο εύκολες στη διαχείρισή τους.

slide90

i

Γράμμα [ 7 ]

Γ

2

4

4

14

2

14

2

4

14

14

2

4

7

38

48

7

48

38

7

58

18

Τ

18

58

7

9

8

9

24

8

24

24

8

24

Α

9

9

8

5

15

5

5

15

15

Ν

5

5

5

5

15

5

9

14

8

9

14

Ρ

9

8

8

9

8

14

14

4

4

35

53

53

53

35

35

35

4

Ε

53

4

3

3

3

31

31

3

3

3

31

Ψ

31

3

3

Γράμμα[4]

j

Θερμ[ 3,7 ]

i

Θερμ[3,6]

Θερμ[ 3,7,3 ]

k

j

i

Θερμ[1,4,3]

ΠΙΝΑΚΕΣ
  • Είναι στατικές δομές δεδομένων που αποθηκεύουν δεδομένα ίδιου τύπου (π.χ. Ακεραίους, χαρακτήρες, κλπ)
  • Μπορούν να είναι οποιασδήποτε διάστασης (μονοδιάστατοι (1Δ), δισδιάστατοι (2Δ), Νδιάστατοι). Η αρίθμησηόλων των διαστάσεων ξεκινά από το 1.
  • Η αναφορά στα στοιχεία τους, γίνεται με τη χρήση του ονόματός τους, σε συνδυασμό με το δείκτη θέσης τους. (π.χ. Ον[ 3 ], Τηλ[ 8 ], Θερμ[ 2, 5 ] κλπ).
  • Ειδικά για τους δισδιάστατους, όταν το μέγεθος των δύο διαστάσεων είναι ίδιο, λέγονται τετραγωνικοί (όπως και στα μαθηματικά).
  • Η δομή επανάληψης «ΓΙΑ» είναι η καταλληλότερη για την προσπέλαση των στοιχείων. Ο δείκτης της επανάληψης, χρησιμοποιείται ως δείκτης στα στοιχεία του πίνακα
slide91
ΠΙΝΑΚΕΣΕκχώρηση τιμών και χρήση τους
  • Για να εισάγουμε τιμή σε μια θέση ενός πίνακα, ακολουθούμε ότι ισχύει και στις απλές μεταβλητές, μόνο που κάνουμε χρήση του δείκτη θέσης (και όχι μόνο το όνομα του πίνακα):
    • Αριθμ[ 5 ]  26
    • Πελάτης[ i ] “ΙΩΑΝΝΟΥ”
    • ΔΙΑΒΑΣΕ Ημέρα_εβδομάδας[ 12, 3 ]
    • ΔΙΑΒΑΣΕ Θερμοκρασία[ i ]
  • Για να χρησιμοποιήσουμε την τιμή ενός στοιχείου του πίνακα:
    • Πλήθος  Πλήθος + Αριθμ[ i ]
    • ΓΡΑΨΕ Πελάτης[ i + 4, 43 ]
    • Πίν[ i]  Πίν[ i ] + 10
slide92
ΠΟΤΕ ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ ΠΙΝΑΚΕΣ;
  • Όταν θέλουμε να διαχειριστούμε πολλά δεδομένα ίδιου τύπου. (Π.χ. αν θέλουμε τους μέσους όρους 10 μαθητών, δεν θα δηλώσουμε 10 διαφορετικές μεταβλητές, αλλά έναν πίνακα 10 θέσεων).
  • Όταν θέλουμε να συνεχίσουμε τημαζική επεξεργασία στα ίδια στοιχεία(Π.χ εύρεση ελαχίστου/μεγίστου στοιχείου, υπολογισμός αθροισμάτων κλπ)
  • Όταν πρέπει να εργαστούμε με ταξινομημένα στοιχεία ή να κάνουμε αναζητήσεις
  • Για να κάνουμε το πρόγραμμα πιο ευανάγνωστο(δε χρειάζεται να σκεφτούμε τα ονόματα πολλών μεταβλητών και επίσης μπορούμε να χρησιμοποιήσουμε την εντολή «ΓΙΑ»)
slide93
ΠΙΝΑΚΕΣΜΕΡΙΚΑ ΜΕΙΟΝΕΚΤΗΜΑΤΑ
  • Απαιτούν τη μνήμη από την αρχή μέχρι το τέλος του προγράμματος.
  • Αν οι απαιτήσεις του προγράμματος αλλάξουν και χρειάζονται περισσότερες θέσεις στον πίνανα, πρέπει να αλλάξουμε το πρόγραμμα
  • Τα παραπάνω, είναι σχεδόν ασήμαντα μπροστά στη χρησιμότητα των πινάκων, συνεπώς η χρήση τους συνιστάται ανεπιφύλακτα, παρόλο που μερικά προβλήματα λύνονται και χωρίς αυτούς.
slide94
ΠΙΝΑΚΕΣΤΥΠΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ
  • Μερικές από τις πιο τυπικές επεξεργασίες στα στοιχεία ενός πίνακα είναι:
    • Υπολογισμός αθροισμάτων
    • Εύρεση μεγίστου/ελαχίστου στοιχείου
    • Ταξινόμηση στοιχείων
    • Αναζητήσεις
    • Συγχωνεύσεις δύο ή περισσότερων πινάκων
  • Σχεδόν σε όλες τις επεξεργασίες πινάκων, χρειάζεται να εξετάσουμε στοιχείο προς στοιχείο τα περιεχόμενά τους. Η διαδικασία ονομάζεται «σάρωση» του πίνακα
slide95
ΠΙΝΑΚΕΣΠΩΣ ΓΙΝΕΤΑΙ Η ΣΑΡΩΣΗΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ
  • Χρησιμοποιούμε κάποια δομή επανάληψης (συνήθως την «ΓΙΑ»).
  • Η μεταβλητή της δομής επανάληψης, χρησιμοποιείται ως δείκτης στα στοιχεία του πίνακα
  • Από τη στιγμή που δείχνει στη θέση του στοιχείου που μας ενδιαφέρει, το στοιχείο αντιμετωπίζεται όπως και οι απλές μεταβλητές, δηλ. μπορούμε να εκχωρήσουμε ή να διαβάσουμε την τιμή του

K 10ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ5

Πίνακας[ i ] KK K + 5

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

i

Πίνακας[ 5 ]

Πίνακας[ ]

10

15

20

25

30

slide96
ΠΙΝΑΚΕΣΜΟΝΟΔΙΑΣΤΑΤΟΣ ΠΙΝΑΚΑΣ – Παράδειγμα
  • Να γεμίσετε έναν μονοδιάστατο πίνακα 10 θέσεων με αριθμούς από το πληκτρολόγιο.
  • Να τους εμφανίσετε στην οθόνη, με την αντίστροφη σειρά εισαγωγής τους

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Αριθμός[10]

ΑΡΧΗ

ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ 10

ΓΡΑΨΕ “ΔΩΣΕ TON “, i, “o ΑΡΙΘΜΟ ”

ΔΙΑΒΑΣΕΑριθμός[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑiΑΠΟ10ΜΕΧΡΙ1ΜΕ_ΒΗΜΑ -1

ΓΡΑΨΕΑριθμός[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide97
ΠΙΝΑΚΕΣΜΗΔΕΝΙΣΜΟΣ ΣΤΟΙΧΕΙΩΝΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ
  • Δίδονται δύο πίνακες 100 θέσεων. Ο ένας περιλαμβάνει αριθμούς και ο άλλος χαρακτήρες.
  • Να μηδενιστούν όλα τα στοιχεία του πρώτου
  • Τα στοιχεία του δεύτερου να αντικατασταθούν με τον κενό χαρακτήρα (“”), δηλ. να διαγραφούν τα κείμενα

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Αριθμός[100]

ΧΑΡΑΚΤΗΡΕΣ: Κείμενα[100]

ΑΡΧΗ

ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ 100

Αριθμός[ i ]0

Κείμενα[ i ] “”

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide98
ΠΙΝΑΚΕΣΑΝΤΙΓΡΑΦΗ ΣΕ ΑΛΛΟ ΠΙΝΑΚΑ
  • Να γεμίσετε έναν μονοδιάστατο πίνακα 5 θέσεων, με τους αριθμούς 5,7,14,3,26
  • Μετά να αντιγράψετε αυτά τα στοιχεία, σε έναν νέο πίνακα με την αντίστροφη σειρά

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Αριθμός[5], Νέος[5]

ΑΡΧΗ

Αριθμός[ 1 ]  5

Αριθμός[ 2 ]  7

Αριθμός[ 3 ]  14

Αριθμός[ 4 ]  3

Αριθμός[ 5 ]  26

ΓΙΑiΑΠΟ1ΜΕΧΡΙ5

Νέος[ i ] Αριθμός[ 6 – i]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide99

_____Γ

47325A

29346B

=

+

ΠΙΝΑΚΕΣΜΑΘΗΜΑΤΙΚΑ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ
  • Να γίνει η μαθηματική πρόσθεση των παρακάτω πινάκων Α και Β

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Α[5], Β[5], Γ[5]

ΑΡΧΗ

ΓΙΑiΑΠΟ1ΜΕΧΡΙ5

Γ[ i ] Α[ i] + Β[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide100

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Αριθμός[10], θέση_μεγ

ΑΡΧΗ

ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ 10

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ “ΔΩΣΕ TON ”, i, “oΑΡΙΘΜΟ (θετικό) ”

ΔΙΑΒΑΣΕΑριθμός[ i ]

ΜΕΧΡΙΣ_ΟΤΟΥ Αριθμός[ i ] > 0

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

θέση_μεγ  1ΓΙΑiΑΠΟ2ΜΕΧΡΙ10

ΑΝΑριθμός[ i ] > Αριθμός[ θέση_μεγ ] ΤΟΤΕ

θέση_μεγ  i

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ“Θέση = ”, θέση_μεγ

ΓΡΑΨΕ ”Μέγιστος = “, Αριθμός[ θέση_μεγ ]

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΙΝΑΚΕΣΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ ΣΤΟΙΧΕΙΟΥ
  • Να γεμίσετε έναν μονοδιάστατο πίνακα 10 θέσεων, με τη βαθμολογία (>0) των μαθητών σε ένα μάθημα από το πληκτρολόγιο.
  • Μετά, να εμφανίσετε το μεγαλύτερο στοιχείο του καθώς και τη θέση του
  • Θεωρήστε ότι οι αριθμοί δεν επαναλαμβάνονται
slide101
ΠΙΝΑΚΕΣΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ

Είναι η σάρωση ενός πίνακα από το πρώτο προς το τελευταίο στοιχείο του, μέχρι να βρεθεί το αναζητούμενο στοιχείο.

Χρησιμοποιείται όταν ο πίνακας :

  • Είναι μη ταξινομημένος(αφού δεν ξέρουμε τη σειρά των στοιχείων, πρέπει να σαρώσουμε τον πίνακα μέχρι να βρούμε το ζητούμενο, ή όλες τις επαναλήψεις του)
  • Είναι μικρού μεγέθους (μερικές εκατοντάδες στοιχεία)(Όταν τα στοιχεία είναι πάρα πολλά (π.χ. Χιλιάδες) η αναζήτηση διαρκεί πάρα πολύ)
  • Δεν χρησιμοποιείται συχνά για αναζητήσεις(Αν γίνονται σπάνια αναζητήσεις, τότε μπορούμε να κάνουμε μια εξαίρεση σε σχέση με το πλήθος στοιχείων)
slide102

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: i, όνομα[10], αναζητ

ΛΟΓΙΚΕΣ: ΒρέθηκεΑΚΕΡΑΙΕΣ: πλήθος

ΑΡΧΗ

ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ 10

ΔΙΑΒΑΣΕόνομα[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ πλήθος  0

ΔΙΑΒΑΣΕ αναζητ ΓΙΑiΑΠΟ1ΜΕΧΡΙ10

ΑΝ όνομα[ i ] = αναζητ ΤΟΤΕ

ΓΡΑΨΕ“Βρέθηκε στη θέση:”, i πλήθος  πλήθος + 1

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

AN πλήθος = 0 ΤΟΤΕ

ΓΡΑΨΕ“ΔΕΝ ΒΡΕΘΗΚΕ”

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΙΝΑΚΕΣΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ – Παράδειγμα #1
  • Να γεμίσετε έναν μονοδιάστατο πίνακα 10 θέσεων, με ονόματα από το πληκτρολόγιο
  • Μετά, να αναζητήσετε κάποιο από αυτά, εμφανίζοντας σε πόσες και σε ποιες θέσεις βρίσκεται
  • Αν δε βρεθεί, εμφανίστε το κατάλληλο μήνυμα
  • Εδώ πρέπει να σαρώσουμε όλο τον πίνακα με την ΓΙΑ, αφού το στοιχείο μπορεί να είναι οπουδήποτε
slide103

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: i, όνομα[10], αναζητ

ΛΟΓΙΚΕΣ: Βρέθηκε

ΑΡΧΗ

ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ 10

ΔΙΑΒΑΣΕόνομα[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΔΙΑΒΑΣΕ αναζητ

Βρέθηκε ΨΕΥΔΗΣ

i  1

ΌΣΟ (i <= 10)ΚΑΙ (ΟΧΙ Βρέθηκε) ΕΠΑΝΑΛΑΒΕ

ΑΝ όνομα[ i ] = αναζητ ΤΟΤΕ

ΓΡΑΨΕ“Βρέθηκε στη θέση:”, i

Βρέθηκε ΑΛΗΘΗΣ

ΑΛΛΙΩΣi  i + 1ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

AN Βρέθηκε = ΨΕΥΔΗΣ ΤΟΤΕ

ΓΡΑΨΕ“ΔΕΝ ΒΡΕΘΗΚΕ”

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΙΝΑΚΕΣΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ – Παράδειγμα #2
  • Όπως και στην προηγούμενη άσκηση αναζήτησης, να γεμίσετε έναν μονοδιάστατο πίνακα 10 θέσεων, με ονόματα από το πληκτρολόγιο
  • Μετά να αναζητήσετε κάποιο από αυτά, σταματώντας την αναζήτηση, στο πρώτο που θα βρεθεί.
  • Αν δε βρεθεί, εμφανίστε μήνυμα
  • Τώρα θα χρησιμοποιήσουμε την ΟΣΟ για όλο μεν τον πίνακα, αλλά με συνθήκη η οποία να διακόπτει την επανάληψη αν βρεθεί το στοιχείο. Η ΓΙΑ δεν μπορεί να μας βοηθήσει εδώ.
  • Αν θέλουμε να βρούμε το τελευταίο, απλά θα ξεκινήσουμε από το τέλος, με δείκτη i 10 μειώνοντάς τον κατά 1 και με συνθήκη i >= 1
  • Παρατήρηση: Τα παρακάτω είναι ισοδύναμαOXIΒρέθηκε  Βρέθηκε=ΨΕΥΔΗΣ
slide104
ΑΡΧΕΙΑ ΔΕΔΟΜΕΝΩΝ (ή εγγραφών) - Μια μικρή εισαγωγή
  • Σε πραγματικές εφαρμογές, το μέγεθος της φυσικής μνήμης RAM, δεν επαρκεί, οπότε διατηρούμε τα δεδομένα (συνήθως και διαφορετικών τύπων – Χαρακτήρες, Ακέραιοι, Πραγματικοί, Λογικοί) σε αποθηκευτικά μέσα, με τη μορφή αρχείων εγγραφών
  • Παράδειγμα εγγραφών είναι οι μαθητές, με στοιχεία (πεδία) διαφορετικών τύπων, όπως: επώνυμο(Χ), όνομα(Χ), τηλέφωνο(Α), Μ.Ο. βαθμολογίας(Π), τάξη(Χ), τμήμα(Χ) και αρ. μητρώου(Α) το οποίο τον ταυτοποιεί (πρωτεύον κλειδί).
  • Η αναζήτηση, μπορεί να γίνει βάσει διαφόρων πεδίων. Υποψήφια μπορεί να είναι το ονοματεπώνυμο, το τμήμα, ο αρ. Μητρώου
  • Στοιχεία όπως αυτά του μαθητή παραπάνω, δεν μπορούν να αποθηκευτούν σε ένα πίνακα με τη χρήση της «ΓΛΩΣΣΑΣ». Συνεπώς πρέπει να ακολουθήσουμε έναν εναλλακτικό τρόπο:

τους “παράλληλους”πίνακες.

slide105
ΠΙΝΑΚΕΣΠΑΡΑΛΛΗΛΟΙ ΠΙΝΑΚΕΣ
  • Δεν μπορούμε να αποθηκεύσουμε τα διπλανά δεδομένα (εγγραφές) σε έναν δισδιάστατο πίνακα, γιατί δεν είναι του ίδιου τύπου.
  • Τα αποθηκεύουμε σε ανεξάρτητους μονοδιάστατους πίνακες ίδιου μεγέθους, ο καθένας με τον κατάλληλο τύπο, τους οποίους μπορούμε να γεμίσουμε ταυτόχρονα στην ίδια επανάληψη ΓΙΑ. Έτσι, φαίνεται ως δισδιάστατος πίνακας, στην ουσία όμως είναι πολλοί μονοδιάστατοι δίπλα-δίπλα (παράλληλοι)
  • Όταν θέλουμε να ψάξουμε ένα στοιχείο, σαρώνουμε έναν από αυτούς (ανάλογα με το πρόβλημα) και χρησιμοποιούμε απ’ ευθείας τη θέση εύρεσης, ως δείκτη στους άλλους πίνακες
  • Αν όμως και οι τρεις στήλες είναι του ίδιου τύπου, τότε ένας κανονικός δισδιάστατος πίνακας αρκεί. Οπότε θα κάνουμε χρήση δύο δεικτών θέσης, ψάχνοντας όμως κάποια τιμή, με τον ίδιο τρόπο

i =

slide106
ΠΙΝΑΚΕΣΤΑΞΙΝΟΜΗΣΗ
  • Είναι η αντιμετάθεση ή τακτοποίηση των στοιχείων του πίνακα με συγκεκριμένη διάταξη, είτε αύξουσα είτε φθίνουσα.
  • Δεν έχει σημασία ο τύπος δεδομένων του πίνακα.
  • Υπάρχουν διάφοροι αλγόριθμοι ταξινόμησης, άλλοι αργοί και άλλοι ταχύτατοι στη λειτουργία τους.Π.χ.: Bubble Sort, Quick Sort, Insertion Sort, Shell Sort, Selection Sort, κ.ά.
  • Σκοπός είναι η διευκόλυνση των αναζητήσεων, ειδικά στις περιπτώσεις που το πλήθος στοιχείων είναι μεγάλο.
  • Παραδείγματα όπου χρειάζεται η ταξινόμηση: Τηλεφωνικός κατάλογος, πελατολόγιο τράπεζας, κατάλογος φορολογουμένων, βιβλιοθήκες, σχολεία κλπ.
slide107

ΠΡΟΓΡΑΜΜΑΤαξινόμηση_μέθοδος_βιβλίουΠΡΟΓΡΑΜΜΑΤαξινόμηση_μέθοδος_βιβλίου

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i,j, Αριθμός[10]

ΑΡΧΗ

ΓΙΑiΑΠΟ 1 ΜΕΧΡΙ 10

ΔΙΑΒΑΣΕΑριθμός[ i ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΙΑiΑΠΟ2ΜΕΧΡΙ10ΓΙΑjΑΠΟ10ΜΕΧΡΙiΜΕ_ΒΗΜΑ-1ΑΝΑριθμός[ j - 1] >  Αριθμός[ j ] ΤΟΤΕtemp ←  Αριθμός[ j ]          Αριθμός[ j ] ←  Αριθμός[j - 1]          Αριθμός[ j - 1] ← tempΤΕΛΟΣ_ΑΝΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΙΝΑΚΕΣΤΑΞΙΝΟΜΗΣΗ ΦΥΣΣΑΛΙΔΑΣ (σχ. βιβλίο)
  • Να γεμίσετε έναν μονοδιάστατο πίνακα 10 θέσεων, με αριθμούςαπό το πληκτρολόγιο
  • Μετά να ταξινομήσετε τα στοιχεία του πίνακα

ΕΜΦΑΝΙΣΗ ΜΕ ΚΙΝΗΣΗ

slide108
ΠΙΝΑΚΕΣ Ταξινόμηση παράλληλων πινάκων

Πίνακας προς ταξινόμηση

  • Όταν θέλουμε να ταξινομήσουμε έναν από τους παράλληλους πίνακες, πρέπει υποχρεωτικά να αντιμεταθέτουμε και τα αντίστοιχα στοιχεία στους υπόλοιπους πίνακες, ώστε να διατηρήσουμε την αντιστοιχία των δεδομένων ανά γραμμή (εγγραφή)
  • Η αντιμετάθεση στοιχείων στους υπολοιπους πίνακες, δε σημαίνει ότι και αυτοί θα προκύψουν ταξινομημένοι. Η ταξινόμηση γίνεται μόνο στον πίνακα στον οποίο συγκρίνουμε τα στοιχεία.

Α

Β

Γ

2

6.5

Χ

8

10.1

Κ

5

12.4

Γ

10

5.8

Δ

ΝΑΙ

ΟΧΙ

ΟΧΙ

Ταξινομήθηκε ;

slide109

Περιοχή αναζήτησης

37?

Right

Left

middle

ΠΙΝΑΚΕΣΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ
  • Είναι μια ταχύτατη μέθοδος αναζήτησης σε ταξινομημένους πίνακες.
  • Επαναληπτικά, ψάχνουμε πάντα στην μεσαία θέση της περιοχής αναζήτησης, χωρίζοντας την κάθε φορα σε δύο ίσα μέρη και χρησιμοποιούμε μόνο το πιο κατάλληλο κάθε φορά, μέχρι να βρεθεί το στοιχείο που ψάχνουμε
  • Σε 1.000.000 στοιχεία, απαιτούνται 20 το πολύ αναζητήσεις !!!Με τη σειριακή αναζήτηση, θα είχαμε κατά μέσο όρο 500.000 αναζητήσεις (από 1 έως 1.000.000 αν ήταν στο τέλος)
slide110
ΠΙΝΑΚΕΣΣΥΓΧΩΝΕΥΣΗ

Α

Γ

Β

  • Είναι η ένωση των στοιχείων δύο ή περισσοτέρων πινάκων σε ένα νέο πίνακα
  • Συνήθως, γίνεται σε ήδη ταξινομημένους πίνακες, με σκοπό να προκύψει πάλι ταξινομημένος πίνακας, χωρίς να εφαρμοστεί ο αλγόριθμος ταξινόμησης
  • Παρόλα αυτά, δεν είναι απαραίτητο να είναι ήδη ταξινομημένοι
  • Επίσης, μπορεί απλά να ενώνουμε τους δύο πίνακες, τον έναν κάτω από τον άλλον

i

5

6

j

9

8

15

9

32

18

43

51

slide111
ΠΙΝΑΚΕΣΔΥΟ ΔΙΑΣΤΑΣΕΩΝ (Δισδιάστατοι-2Δ)
  • Για να αναφερθούμε σε ένα στοιχείο δισδιάστατου πίνακα, χρησιμοποιούμε δύο δείκτες θέσης, π.χ. Γράμμα[ 2, 3 ]
  • Ο 1ος δείκτης είναι η γραμμή και ο 2ος δείκτης είναι η στήλη του στοιχείου
  • Για τη σάρωση των στοιχείων του πίνακα χρησιμοποιούμε την εντολή ΓΙΑ μέσα σε μια άλλη ΓΙΑ
slide112

1

2

3

4

5

1

2

3

4

ονόματα[4,5]

ΠΙΝΑΚΕΣΠΩΣ ΛΕΙΤΟΥΡΓΕΙ Η ΣΑΡΩΣΗ ΠΙΝΑΚΑ 2 Δ
  • Να γεμίσετε δισδιάστατο πίνακα (m=4x n=5), με ονόματα από το πληκτρολόγιο.
  • Στην παρακάτω απεικόνιση, η σάρωση γίνεται κατά γραμμές (οριζόντια), όπως το διάβασμα ενός βιβλίου.
  • Με την κατάλληλη χρήση των δεικτών θέσης, μπορούμε να σαρώσουμε τον πίνακα κατά στήλες (κάθετα)
  • Ο εσωτερικός βρόχος ΓΙΑ επανεκτελείται, για κάθε μία επανάληψη του εξωτερικού

Αλγόριθμος Πίνακες

Δεδομένα // ονόματα //

! Οριζόντια

Γιαiαπό 1 μέχρι4

Γιαjαπό 1 μέχρι5

Διάβασε ονόματα[ i , j ]

Τέλος_επανάληψης

Τέλος_επανάληψης

! Κάθετα

Γιαjαπό 1 μέχρι5

Γιαiαπό 1 μέχρι4

Διάβασε ονόματα[ i , j ]

Τέλος_επανάληψης

Τέλος_επανάληψης

Τέλος Πίνακες

j =

i =

slide113
ΠΙΝΑΚΕΣΕΥΡΕΣΗ “ΕΓΓΡΑΦΗΣ” ΣΕ ΔΙΣΔΙΑΣΤΑΤΟ ΠΙΝΑΚΑ

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, μαθητές[300,2], θέση_μεγ

ΑΡΧΗ

θέση_μεγ  1! Αρχική υπόθεση

ΓΙΑiΑΠΟ 2 ΜΕΧΡΙ300

ΑΝ μαθητής[ i, 2 ] >μαθητής[ θέση_μεγ, 2] ΤΟΤΕθέση_μεγ  i

ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ “Το Α.Μ. του μεγαλύτερου είναι :“

ΓΡΑΨΕ μαθητής[ θέση_μεγ,1 ]

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

  • Για τους 300 μαθητές ενός δημοτικού σχολείου, είναι γνωστό το μητρώο (Α.Μ.) και η ηλικία τους.
  • Τα παραπάνω δεδομένα, είναι ήδη αποθηκευμένα με τη χρήση δισδιάστατου πίνακα, όπου στην 1η στήλη είναι οι Α.Μ και στη 2η οι ηλικίες τους
  • Να εμφανίσετε τον Α.Μ. του μαθητή με τη μεγαλύτερη ηλικία
slide114
ΠΙΝΑΚΕΣΥΠΟΛΟΓΙΣΜΟΙ ΣΕ ΔΥΟ ΔΙΑΣΤΑΣΕΙΣ #1

ΠΡΟΓΡΑΜΜΑ ΜΟ_Πίνακα_2Δ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ:i, j, Α[4,5], s

ΑΡΧΗ

s  0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 4

ΓΙΑ j από 1 ΜΕΧΡΙ 5

ΔΙΑΒΑΣΕΑ[ i, j ]

s  s + Α[ i, j ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ s / (4*5)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

  • Να γεμίσετε έναν δισδιάστατο πίνακα 4x5 με αριθμούς από το πληκτρολόγιο
  • Μετά να βρείτε τον μέσο όρο τους.
slide115

j

table[4,5]

4

5

2

8

5

row[4]

1

2

3

4

5

14

3

7

9

12

24

1

5

7

21

2

15

45

2

i

23

12

11

6

3

50

3

55

4

=

=

col[5]

46

27

41

25

35

174

sum

ΠΙΝΑΚΕΣΥΠΟΛΟΓΙΣΜΟΙ ΣΕ ΔΥΟ ΔΙΑΣΤΑΣΕΙΣ #2 (σχ. βιβλίο)

Αλγόριθμος Αθρ_Πίνακα

Δεδομένα // m, n, table, col, row //

sum ← 0

Για i από 1 μέχρι m

row[i] ← 0

Τέλος_επανάληψης

Για j από 1 μέχρι n

col[j] ← 0

Τέλος_επανάληψης

Για i από 1 μέχρι m

Για j από 1 μέχρι n

sum ← sum + table[i, j]

row[ i ] ← row[ i ] + table[i, j]

col[ j ] ← col[ j ] + table[i, j]

Τέλος_επανάληψης

Τέλος_επανάληψης

Αποτελέσματα // row, col, sum //

Τέλος Αθρ_Πίνακα

  • Στον παρακάτω δισδιάστατο πίνακα (m=4x n=5), να βρεθεί το άθροισμα κατά γραμμή, κατά στήλη και συνολικά (κάτι σαν τους υπολογισμούς σε Excel)
slide116

1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1

Α

ΠΙΝΑΚΕΣΜΑΘΗΜΑΤΙΚΑ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ #1

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, j, Α[5,5]

ΑΡΧΗ

ΓΙΑiΑΠΟ1ΜΕΧΡΙ5 ΓΙΑjΑΠΟ1ΜΕΧΡΙ5ΑΝi = jTOTE Α[ i, j ] 1ΑΛΛΙΩΣ Α[ i, j ]  0ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

  • Να δημιουργήσετε τον παρακάτω τετραγωνικό πίνακα (πίνακας “ταυτότητα” στα μαθηματικά)
slide117

Α

Β

3 1 79 3 45 2 8

3 5 22 1 66 3 4

+

_ _ __ _ __ _ _

Γ

ΠΙΝΑΚΕΣΜΑΘΗΜΑΤΙΚΑ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ #2
  • Να προσθέσετε τους παρακάτω πίνακες Α και Β

ΠΡΟΓΡΑΜΜΑΠίνακες

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, j, Α[3,3], Β[3,3], Γ[3,3]

ΑΡΧΗ

ΓΙΑiΑΠΟ1ΜΕΧΡΙ3 ΓΙΑjΑΠΟ1ΜΕΧΡΙ3Γ[ i, j ] Α[ i, j ] + B[ i, j ]ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide118
ΠΙΝΑΚΕΣ Οι δομές δεδομένων «Στοίβα» & «Ουρά»
  • Η στοίβα (stack) και η ουρά (queue), είναι από τις πιο σπουδαίες δομές δεδομένων στον προγραμματισμό εφαρμογών.
  • Στο περιβάλλον της «ΓΛΩΣΣΑΣ», υλοποιούνται με πίνακες, οι οποίοι γεμίζουν και προσπελαύνονται με συγκεκριμένη χρήση των δεικτών στα στοιχεία.
  • Χρησιμοποιούνται σε εφαρμογές, όπως: διαχείριση ουράς σε ταμεία, λιμάνια, αποθήκες προϊόντων, συνεργεία αυτοκινήτων ή άλλες ουρές αναμονής, εσωτερικά στο λειτουργικό σύστημα, σε παιχνίδια, αναδρομικές κλήσεις συναρτήσεων/διαδικασιών κλπ.
  • Θα εξερευνήσουμε αυτές τις δομές δεδομένων, μόνο σε θεωρητικό επίπεδο.
stack

Στοίβα[6]

6

5

4

3

84

2

62

1

253

ΠΙΝΑΚΕΣΔομή ΣΤΟΙΒΑΣ (stack)
  • Είναι ένας μονοδιάστατος πίνακας, που τον σκεφτόμαστε σαν μια πραγματική στοίβα πραγμάτων, το ένα επάνω στο άλλο, όπως μια στοίβα με πιάτα.
  • Κορυφή, είναι μια μεταβλητή που αποθηκεύει τη θέση του επάνω στοιχείου της στοίβας (δηλ. του πιο πρόσφατα τοποθετημένου).
  • Ωθούμε (push) ένα νέο στοιχείο στη στοίβα, εισάγοντάς το πάντα στην κορυφή, προσέχοντας να υπάρχει διαθέσιμη θέση (αλλιώς έχουμε υπερχείλιση). Πριν την εισαγωγή, αυξάνουμε την κορυφή κατά 1.
  • Απωθούμε (pop) ένα στοιχείο προς χρήση, εξάγοντάς το πάντα από την κορυφή, προσέχοντας να υπάρχει ένα τουλάχιστον (αλλιώς έχουμε υποχείλιση). Μετά μειώνουμε την κορυφή κατά 1.
  • Η μέθοδος προσπέλασης στα στοιχεία, ονομάζεται L.I.F.O. (Last In First Out), δηλ. αυτό που τοποθετήσαμε τελευταίο, είναι το πρώτο που θα εξάγουμε προς χρήση.

94

52

Κορυφή

slide120
ΠΙΝΑΚΕΣΣΤΟΙΒΕΣ : Εισαγωγή & Εξαγωγή στοιχείου

Αλγόριθμος Ώθηση_pushΔεδομένα //στοίβα, Ν, κορυφή, στοιχείο//Αν κορυφή < Ν τότε κορυφή  κορυφή+1 στοίβα[ κορυφή ]  στοιχείοstatusαληθήςΑλλιώςstatusψευδήςΤέλος_ανΑποτελέσματα //στοίβα, κορυφή, status//Τέλος Ώθηση_push

Αλγόριθμος Απώθηση_popΔεδομένα //στοίβα, κορυφή//Αν κορυφή >= 1 τότε στοιχείο  στοίβα[ κορυφή ] κορυφή  κορυφή-1 statusαληθήςΑλλιώς statusψευδήςΤέλος_ανΑποτελέσματα //στοίβα, κορυφή, status, στοιχείο//Τέλος Απώθηση_pop

queue

1

2

3

723

51

4

5

6

7

Ουρά[7]

rear

front

ΠΙΝΑΚΕΣΔομή ΟΥΡΑΣ (queue)
  • Είναι επίσης ένας μονοδιάστατος πίνακας
  • Χρειάζονται δύο δείκτες (μεταβλητές) ορίων της ουράς
    • Για την αρχή (front) και για το τέλος(rear) της ουράς
  • Όπως και σε μια συνηθισμένη ουρά αναμονής, οι λειτουργίες είναι :
    • Η εισαγωγή (enqueue) στοιχείου πάντα στο τέλος της ουράς, προσέχοντας να υπάρχει διαθέσιμη θέση. Πριν την εισαγωγή, αυξάνουμε την rear. Αν φτάσουμε στο τέλος, τα μεταφέρουμε όλα προς την αρχή ώστε να αδειάσει χώρος στο τέλος
    • Η εξαγωγή (dequeue) στοιχείου πάντα από την αρχή της ουράς, προσέχοντας να υπάρχει διαθέσιμο στοιχείο. Μετά, αυξάνουμε την front
  • Η μέθοδος προσπέλασης στα στοιχεία, ονομάζεται F.I.F.O. (First In First Out), δηλ. όποιο στοιχείο εισάγεται πρώτο στην ουρά, εξάγεται (εξυπηρετείται) και πρώτο

100

72

200

slide122
ΠΙΝΑΚΕΣΟΥΡΕΣ : Εισαγωγή & Εξαγωγή στοιχείου

Αλγόριθμος Εισαγωγή_σε_ουρά Δεδομένα //ουρά, Ν, rear, στοιχείο//Ανrear < Ν τότεrearrear +1 ουρά[ rear ]  στοιχείοstatusαληθήςΑλλιώςstatusψευδήςΤέλος_ανΑποτελέσματα //ουρά, rear, status//Τέλος Εισαγωγή_σε_ουρά

Αλγόριθμος Εξαγωγή_από_ουράΔεδομένα //ουρά, front, rear//Ανfront <= rearτότεστοιχείο  ουρά[ front ] frontfront +1 statusαληθήςΑλλιώς statusψευδήςΤέλος_ανΑποτελέσματα //ουρά, front, στοιχείο,status//Τέλος Εξαγωγή_από_ουρά

slide123

front

rear

ΠΙΝΑΚΕΣΚΥΚΛΙΚΗ ΟΥΡΑ
  • Είναι μια παραλλαγή της απλής ουράς
  • Εξάγουμε από την αρχή (front)
  • Η τελική θέσηδεν είναι η διάσταση του πίνακα (Ν). Είναι η προηγού-μενη της front
  • Εισάγουμε στο τέλος (rear) όσο υπάρχει θέση μέχρι τη front

1

2

12

3

Κ

Α

Υ

11

4

Ρ

Κ

Υ

Λ

10

5

O

Ι

Η

Κ

9

6

7

8

slide124
ΠΙΝΑΚΕΣΚΥΚΛΙΚΕΣ ΟΥΡΕΣ : Εισαγωγή & Εξαγωγή στοιχείου

Αλγόριθμος Εισαγωγή_κυκλική_ουράΔεδομένα //ουρά,Ν,front,rear,στοιχείο//Αν (rear modΝ)+1 = frontτότεstatusψευδήςΑλλιώςrear (rear modΝ)+1ουρά [rear]  στοιχείο statusαληθήςΤέλος_αν CanGet αληθής

Αποτελέσματα //ουρά, rear, status,

CanGet //Τέλος Εισαγωγή_κυκλική_ουρά

Αλγόριθμος Εξαγωγή_κυκλική_ουράΔεδομένα //ουρά,Ν,front,rear,CanGet//ΑνCanGet=ψευδήςτότε

statusψευδήςαλλιώςστοιχείο  ουρά [front]

Αν front = rearτότε ! 1 στοιχείομόνο

CanGetψευδής

Τέλος_ανfront (front modΝ) + 1 statusαληθής

Τέλος_ανΑποτελέσματα //ουρά,rear,status,

στοιχείο,CanGet//Τέλος Εξαγωγή_κυκλική_ουρά

slide125
ΙΣΤΟΡΙΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣΜΕΤΑΓΛΩΤΤΙΣΤΕΣ & ΔΙΕΡΜΗΝΕΥΤΕΣ
slide126
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ
  • Προγραμματισμός είναι δημιουργία προγραμμάτων δηλαδή, η υλοποίηση αλγορίθμων σε μορφή κατανοητή από τον Η/Υ, με τη χρήση κειμένου με ειδική σύνταξη (γλώσσα προγραμματισμού)
  • Παρόλο που το hardware των Η/Υ βελτιώθηκε με τα χρόνια, οι βασικές αρχές λειτουργίας τους (Von Neumann, 1945) δεν έχουν αλλάξει.
  • Το ίδιο ισχύει και για τις γλώσσες προγραμματισμού. Έχουν εμπλουτιστεί μεν, αλλά οι βασικές ιδιότητές τους παραμένουν οι ίδιες.
  • Ο Η/Υ αντιλαμβάνεται μόνο δύο καταστάσεις, με τη μορφή τάσης ρεύματος, οι οποίες αντιπροσωπεύονται από δύο αριθμούς : το μηδέν (0) και το ένα (1). Ό,τι κάνει ο Η/Υ, γίνεται πάνω σε ακολουθίες αυτών των δύο ψηφίων στη μνήμη, με μεγάλη ταχύτητα
  • Ακολουθεί μια ιστορική αναδρομή των γλωσσών προγραμματισμού από τα πρώτα χρόνια των Η/Υ, μέχρι σήμερα
slide127
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ1. ΓΛΩΣΣΕΣ ΜΗΧΑΝΗΣ (1η γενιά)
  • Οι εντολές που ο Η/Υ αναμένει για εκτέλεση, γράφονται με τη μορφή ακολουθίας δυαδικών ψηφίων (1/0)
  • Ο προγραμματισμός αυτός είναι επίπονος, εξαρτάται από το υλικό και απαιτεί βαθιά κατανόηση της αρχιτεκτονικής του Η/Υ (άλλο hardware συνεπάγεται άλλες εντολές για το ίδιο πρόγραμμα).
  • Τα προγράμματα αυτά, είναι ταχύτατα. Oι εντολές δε χρειάζονται κανένα στάδιο μετατροπής για την εκτέλεσή τους
  • Ακόμη παλαιότερα, ο ENIAC (1945), προγραμματίζονταν μέσω της αναδιάρθρωσής του, αλλάζοντας τις καλωδιώσεις, τις λυχνίες κλπ.

ΕντολήΔεδομένο

11111011 01001101

01011011 01101000

10011000

11010111 01101101

01011010

11010011 01001101

.........

.........

slide128
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ2. ΣΥΜΒΟΛΙΚΕΣ ή ΧΑΜΗΛΟΥ ΕΠΙΠΕΔΟΥ (2η γενιά)
  • Δημιουργήθηκαν στην προσπάθεια να είναι πιο κατανοητές και ευκολότερες στην εκμάθηση από τον προγραμματιστή (assembly language)
  • Εισήχθησαν σύμβολα (π.χ. ADD), στη θέση εντολών σε δυαδική μορφή
  • Ο προγραμματισμός, επίσης εξαρτάται από το υλικό, όπως στην 1η γενιά, γι’ αυτό και λέγονται χαμηλού επιπέδου (ένα επίπεδο πάνω από τις γλώσσες μηχανής).
  • Απλές εντολές αλλά μακροσκελή προγράμματα
  • Ένα ειδικό πρόγραμα (ο συμβολο-μεταφραστής-assembler) μεταφράζει τις εντολές στην τελική δυαδική μορφή τους, για να εκτελεστούν

INDEX=$01

SUM=$02

LDA #10

STA INDEX

CLA

LOOPADD INDEX

DEC INDEX

STA SUM

BRK

slide129
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)
  • Διόρθωσαν τις ανεπάρκειες των προηγούμενων γενεών και από τα τέλη του 1950, οι περισσότερες χρησιμοποιούνται μέχρι και σήμερα.
  • Το συντακτικό τους μοιάζει αρκετά με τις φυσικές γλώσσες και η εκμάθησή τους έγινε πολύ πιο εύκολη
  • Ένα ειδικό πρόγραμμα (μεταγλωττιστής/διερμηνευτής) παράγει το αντίστοιχο πρόγραμμα σε γλώσσα μηχανής για την εκτέλεσή του. Δεν υπάρχει αντιστοιχία 1 προς 1, των εντολών, με τις αντίστοιχες σε γλώσσα μηχανής
  • Τα προγράμματα εκτελούνται λίγο πιο αργά σε σχέση με αυτά της γλώσσας μηχανής ή των συμβολικών γλωσσών
  • Απεξάρτηση από το είδος του hardware και της αρχιτεκτονικής του Η/Υ (μεταφερσιμότητα). Το ίδιο πρόγραμμα εκτελείται σε διαφορετικό είδος Η/Υ (άλλη πλατφόρμα/ CPU), αρκεί να υπάρχει ο αντίστοιχος μεταγλωττιστής για αυτό.
  • Συντομότερη παραγωγή προγραμμάτων
  • Ευκολότερη συντήρηση/διόρθωση των προγραμμάτων
slide130
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

FORTRAN

  • FORmula TRANslator,από τηνΙΒΜ, το 1957
  • Χρήση σε μαθηματικές και άλλες επιστημονικές εφαρμογές μέχρι και σήμερα
  • Υστερεί στη διαχείριση αρχείων δεδομένων
  • Κυριότερες εκδόσεις :Fortran 77, 90/95, Visual Fortran

C PROGRAM EQUATION

READ(*,1) A,B

1 FORMAT (F5.1)

IF (A.EQ.0) GO TO 20

X=(-1.)*B/A

WRITE (*,2) X

2 FORMAT(‘X=’,F10.2)

GO TO 50

20 IF (B.EQ.0) WRITE(*,3)

IF (B.NE.0) WRITE(*,4)

3 FORMAT(‘ΑΟΡΙΣΤΗ’)

4 FORMAT(‘ΑΔΥΝΑΤΗ’)

50 STOP

END

slide131
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

COBOL

  • COmmon Business Oriented Language, το 1960
  • Χρήση σε εμπορικές/λογιστικές εφαρμογές
  • Εξειδικεύεται στη διαχείριση αρχείων δεδομένων
  • Μακροσκελή προγράμματα
  • Εφαρμογή σε επιχειρήσεις, διοίκηση, τράπεζες κλπ.

IDENTIFICATIONDIVISION.

PROGRAM-ID. EQUATION.

ENVIRONMENTDIVISION.

CONFIGURATIONSECTION.

SOURCE-COMPUTER. IBM-PC.

OBJECT-COMPUTER. IBM-PC.

DATADIVISION.

WORKING-STORAGESECTION.

77 X PIC S9(6)V9.

77 A PIC S9(6).

77 B PIC S9(6).

77 W-X PIC -(6),-.

PROCEDUREDIVISION.

ARXH.

DISPLAY ‘ ΔΩΣΕ Α’.........

slide132
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

ALGOL

  • ALGOrithmic Language, το 1960
  • Σκοπός ήταν η παραγωγή προγραμμάτων γενικής φύσης
  • Χρησιμοποιήθηκε ελάχιστα, αλλά επηρέασε την ανάπτυξη των επόμενων γλωσσών

PL/1

  • Programming Language/1, το 1960
  • Ανεπιτυχής πορεία στην προσπάθεια να καλύψει τους τομείς στους οποίους εξειδικεύονταν η FORTRAN και η COBOL
slide133
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

TOTEST :A

REPEAT 4 [FD :A RT 90]

PUSETPOS [20 20] PD

REPEAT 4 [FD :A RT 90]

PUHOME PD

REPEAT 2 [FD :A RT 45 ]

HOME

END

LOGO

  • Από την ελληνική λέξη «λόγος», το 1967
  • Κατάλληλη για την εισαγωγή μικρώνμαθητών στον προγραμματισμό

LISP και PROLOG

  • LISt Processor και PROgramming inLOGic, το 1959
  • Δύο γλώσσες για χρήση σε εφαρμογές τεχνητής νοημοσύνης (Artificial Intelligence - AI), επεξεργασία φυσικών γλωσσών, ρομποτική, έμπειρα συστήματα

(DEFUN a-exisosi (a b)

(setf apot (- (/ b a)))

(princ “Η εξίσωση ”)

(princ a)

(princ “x + ”)

(princ b)

(princ “ = 0 λύση χ = ”)

(princ apot))

slide134
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

BASIC

  • Beginners Allpurpose Symbolic Instruction Code, το 1964
  • Απλή, εισαγωγική, (βασική) γλώσσα για εκπαιδευτικούς σκοπούς
  • Γνωρίζει ακόμα, εκπληκτική διάδοση. Έβαλε τον προγραμματισμό στο σπίτι, μέσω των προσιτών οικιακών μικροϋπολογιστών από τα τέλη ’70
  • Οι Bill Gates και Paul Allen, ίδρυσαν τη Microsoft, εκμεταλευόμενοι την δημιουργία ενός διερμηνευτή Basic (1977). Λίγο αργότερα, συνόδευσε το λειτουργικό τους σύστημα (MSDOS) στο πρώτο IBM PC (1981).
  • Εκδόσεις οι : GWBASIC, QuickBasic, Visual Basic. Εκτελείται από διερμηνευτή (interpreter)

10 REMGWBASIC

20 INPUT “A=”,A

30 INPUT “B=”,B

40 IF A=0 THENGOTO100

50 X=-B/A

60 PRINT “X=”;X

70 END

slide135
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

PASCAL

  • Από Niclaus Wirth, το 1964
  • Γλώσσα γενικής χρήσης, κατάλληλη για την εκπαίδευση στον προγραμματισμό, μαζί με την Basic
  • Παράγει γρήγορα προγράμματα, μέσω μεταγλωττιστή.
  • Κατάλληλη για την παραγωγή προγραμμάτωνμε την τεχνική σχεδίασης του Δομημένου Προγραμματισμού
  • Προσφέρει τη δημιουργία τύπων μεταβλητών καθορισμένων από τον προγραμματιστή
  • Αποτέλεσε τη βάση για τις γλώσσες ADA και Modula-2
  • Η ΓΛΩΣΣΑ του εργαστηρίου, είναι βασισμένη στην Pascal, στα ελληνικά

ProgramLesson1;

Var

Num1,Num2,Sum:Integer;

Begin

Write('Input number 1:');

Readln (Num1);

Writeln('Input number 2:');

Readln (Num2);

Sum := Num1 + Num2;

Writeln (Sum);

End.

slide136
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

C

  • Εξέλιξη της γλώσσας Β, από τους Ken Thomson και Dennis Ritchie στα Bell Labs (AT&T),το 1970
  • Ισχυρή γλώσσα για τη δημιουργία λειτουργικών συστημάτων (ανάπτυξη των Λ/Σ UNIX, Linux, Windows), παιχνιδιών 3D, επιστημονικών εφαρμόγώνκ.ά.
  • Ταχύτατα προγράμματα γενικής χρήσης μέσω μεταγλωττιστή.
  • Μεταφερσιμότητα προγραμμάτων σε άλλα συστηματα υπολογιστών, με ελάχιστες ή καθόλου αλλαγές.
  • Χρήση των τεχνικών του Δομημένου Προγραμματισμού
  • Εκδόσειςοι: C, C++, C#

#include <stdio.h>

intmain (int argc, char* argv[ ])

{

float a, b;

printf (“A = ”);

scanf(“%f”, &a);

printf(“B = ”);

scanf(“%f”, &b);

if (a == 0) {

if (b == 0) {

printf(“ΑΟΡΙΣΤΗ\n”);

}else {

printf(“ΑΔΥΝΑΤΗ\n”);

}

}else {

printf(“X = %f\n”, -b/a);

}

return 0;

}

slide137
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

JAVA

  • Από την Sun Microsystems, το 1995
  • Ξεκίνησε ως project για ηλεκτρονικό έλεγχο οικιακών συσκευών
  • Χρήση συνήθως σε εφαρμογές Internet
  • Μοιάζει με τη C, προστατεύει όμως το σύστημα σε περίπτωση σοβαρών λαθών του προγραμματιστή
  • Παραγωγή προγραμμάτων που εκτελούνται σε διαφορετικές πλατφόρμες hardware, χωρίς αλλαγές
  • Εκτελεί το πρόγραμμα, σε ένα εικονικό περιβάλλον μέσα στο λειτουργικό σύστημα (virtualmachine)

// Hello.java

import javax.swing.JApplet;

import java.awt.Graphics;

publicclass Hello extends JApplet

{

@Override

publicvoidpaintComponent(Graphics g)

{

g.drawString("Hello, world!", 65, 95);

}

}

slide138
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ3. ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ (3η γενιά)

dBase

  • Από την Ashton Tate, στα τέλη ‘70
  • Χρήση σε παλαιότερες εφαρμογές βάσεων δεδομένων
  • Διαλογική μορφή με το χρήστηνα υποβάλλει εντολές μέσω μενού επιλογών
  • Εκδόσεις οι : dBase II, dBase III, Clipper (με μεταγλωττιστή) και γενικά προϊόντα που ονομάστηκαν τύπου xBase
  • Προπομπός για προϊόντα όπως η Microsoft Access

CLEAR

? “1. ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ”

? “2. ΕΚΤΥΠΩΣΗ ΕΤΙΚΕΤΩΝ”

? “3. ΠΡΟΒΟΛΗ”

? “4. ΤΕΛΟΣ”

INPUT “Επιλέξτε [1..4] : “ TO CHOICE

DO CASE

CASE CHOICE=1

APPEND

CASECHOICE=2

LABEL FORM PELATES

CASECHOICE=3

BROWSE

OTHERWISE

QUIT

ENDCASE

4 4 4 gl
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ4. 4η γενιά (4GL)

SQL

  • Structured Query Language, από την ΙΒΜ στα τέλη ‘70
  • Χρήση σε εφαρμογές βάσεων δεδομένων
  • Ο χρήστης υποβάλλει ερωτήματα προς στο σύστημα διαχείρισης δεδομένων και λαμβάνει απαντήσεις με τη μορφή εγγραφών δεδομένων (γλώσσα ερωταπαντήσεων)
  • Απόκρυψη του τεχνικού μέρους (π.χ. θέση ή όνομα αρχείων, από το χρήστη) αφήνοντας τον να εστιάσει στο πραγματικό πρόβλημα

INSERTINTO YPALLHLOSVALUES (‘NIKOLAOY Α.’, ‘2104025342’, 1000);

SELECT ONOMA, THL, MISTHOS

FROM YPALLHLOS

WHERE HMER_PROSL = ’10/5/2000’ AND MISTHOS < 1200;

slide140
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥΣΕ ΓΡΑΦΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
  • Η εμφάνιση του γραφικού περιβάλλοντος στους Η/Υ (Windows, MacOS, κλπ) άλλαξε τον τρόπο επικοινωνίας ανθρώπου-Η/Υ.
  • Εμφανίστηκαν νέες γλώσσες προγραμματισμού ή εξελίχθηκαν οι υπάρχουσες, για αυτού του είδους την επικοινωνία.
  • Άλλαξε ο τρόπος συγγραφής και χρήσης των προγραμμάτων
  • Εμφανίστηκαν οι έννοιες :
    • Προγραμματισμός οδηγούμενος από τα γεγονότα (event driven programming). Ο χρήστης του προγράμματος και όχι ο προγραμματιστής, καθορίζει μέσω γεγονότων που εκκινεί (π.χ. click, keypress κλπ.), το πώς χρησιμοποιείται η εφαρμογή
    • Οπτικός προγραμματισμός (visual programming). Δημιουργία προγραμμάτων μέσα σε ολοκληρωμένα περιβάλλοντα εργασίας, που περιλαμβάνουν χρήση μενού, κουμπιά, λίστες επιλογών κλπ). Γλώσσες με το χαρακτηριστικό “Visual” ανήκουν εδώ (π.χ. Visual basic, Visual C++)
slide141
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥΤΑΞΙΝΟΜΗΣΗ ΑΝΑ ΕΙΔΟΣ

Βάσει της οργάνωσης του κώδικα

  • Διαδικασιακές (procedural) ή αλγοριθμικές (πλειοψηφία)
  • Μη διαδικασιακές (non procedural)
  • Συναρτησιακές (functional)
  • Αντικειμενοστρεφείς (object oriented)
  • Ερωταπαντήσεων

Βάσει του πεδίου χρήσης τους

  • Γλώσσες γενικής χρήσης
  • Επιστημονικής κατεύθυνσης
  • Εμπορικών εφαρμογών
  • Πολυμέσων
  • Προγραμματισμού λειτουργικών συστημάτων
  • Τεχνητής νοημοσύνης
  • Ειδικής χρήσης
slide142
ΠΟΙΑ ΕΙΝΑΙ Η ΚΑΛΥΤΕΡΗ
  • Στην ιστορία του προγραμματισμού, έχουν αναπτυχθεί χιλιάδες γλώσσες προγραμματισμού
  • Δεν υπάρχει «καλύτερη» γλώσσα προγραμματισμού. Μόνο η «καταλληλότερη» για το είδος της εφαρμογής που αναπτύσσουμε.
  • Άλλη είναι κατάλληλη για γραφικά και παιχνίδια 3D, άλλη για πολυμέσα, άλλη για βάσεις δεδομένων κλπ
  • Έμπειροι προγραμματιστές, γνωρίζουν καλά τουλάχιστον 2-3 γλώσσες, ώστε να ανταποκρίνονται άνετα στη συγγραφή εφαρμογών διαφόρων ειδών
slide143
ΦΥΣΙΚΕΣ & ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ

Γενικά, μια γλώσσα (όχι απαραίτητα προγραμματισμού) προσδιορίζεται από:

  • Το αλφάβητο της
    • Επιτρεπτά στοιχεία (γράμματα, σύμβολα, αριθμοί, π.χ. Α-Ω, 0-9, #,%,$,+,* κλπ)
  • Το λεξιλόγιο της
    • Επιτρεπτοί συνδυασμοί στοιχείων του αλφαβήτου (αποδεκτές λέξεις, π.χ. ΓΡΑΨΕ και όχι ΓΡΑΨΕΘ)
  • Τη γραμματική της
    • Τυπικό (κανόνες για τις μορφές ή παραλλαγές μιας λέξης, π.χ ΓΡΑΦΩ, ΓΡΑΨΕ, ΓΡΑΦΟΥΜΕ,...)
    • Συντακτικό (κανόνες για τη διάταξη των λέξεων. Μας ενδιαφέρει στις γλώσσες προγραμματισμού)
  • Τη σημασιολογία της (semantics)
    • Κανόνες για το νόημα των λέξεων, εκφράσεων, προτάσεων
slide144
ΦΥΣΙΚΕΣ & ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣΟΙ ΔΙΑΦΟΡΕΣ ΤΟΥΣ
  • Φυσικές γλώσσες
    • Χρησιμεύουν στην επικοινωνία μεταξύ ανθρώπων
    • Εξελίσσονται συνεχώς (νέες λέξεις δημιουργούνται, αλλάζουν οι κανόνες σύνταξης ή γραμματικής, κλπ.)
  • Τεχνητές γλώσσες
    • Χρησιμεύουν για την επικοινωνία ανθρώπου-μηχανής
    • Συνήθως στάσιμες αφού κατασκευάζονται για ένα συγκεκριμένο σκοπό
    • Βελτιώνονται σε μικρό σχετικά εύρος, από τους δημιουργούς τους για να ακολουθήσουν νέες εξελίξεις στα είδη εφαρμογών
slide145
ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ
  • Είναι συνεχής η προσπάθεια εξεύρεσης μεθοδολογιών και τεχνικών ανάπτυξης λογισμικού
  • Κύριοι λόγοι είναι :
    • Η απλοποίηση της οργάνωσης του κώδικα
    • Η ευκολία διόρθωσης και γενικά η συντήρησή του από τους προγραμματιστές
    • Η μείωση του χρόνου υλοποίησης των εφαρμογών
  • Ακολουθούν οι κυριότερες τεχνικές σχεδίασης
slide146

ΦΟΡΟΛΟΓΙΑ

Δεδομένα

Υπολο-γισμοί

Αποτελέ-σματα

Φόροςπροπληρ

Φορολο-γητέο

Εκπτώση

Εισόδημα

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

ΙΕΡΑΡΧΙΚΗ ΣΧΕΔΙΑΣΗ

  • Διάσπαση του προβλήματος σε μικρότερα, απλούστερα και κατά το δυνατόν ανεξάρτητα μέρη
  • Λέγεται και προγραμματισμός «από επάνω προς τα κάτω» (top down program design)
  • Χρήση ειδικών διαγραμμάτων
slide147
ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ

ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

  • Υλοποιεί την ιεραρχική σχεδίαση
  • Κάθε υποπρόβλημα αποτελεί ξεχωριστή ενότητα (module) και γράφεται ανεξάρτητα
  • Ο συνδυασμός των ενοτήτων συμβάλλει στην επίλυση του προβλήματος
  • Χρειάζεται προσοχή για τη σωστή διάσπαση σε ενότητες
  • Μειώνονται τα λάθη
  • Καλύτερη παρακολούθηση και κατανόηση
slide148
ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ

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

  • Είναι ένας τρόπος οργάνωσης του κώδικα του προγράμματος
  • Παρουσιάστηκε από το 1960 και πλέον υποστηρίζεται σχεδόν από όλες τις γλώσσες προγραμματισμού
  • Θεμελιώθηκε το 1968, στη μελέτη του Edger Dijkstra με τίτλο :«GOTO Statement Considered Harmful»
  • Μέχρι τότε, δεν υπήρχε κάποια μεθοδολογία σχεδίασης, τα προγράμματα ήταν μπερδεμένα και η εντολή GOTO, που άλλαζε τη ροή εκτέλεσης,χρησιμοποιούνταν αλόγιστα (spagetti code)
  • Χρειάστηκαν αρκετά χρόνια για την πλήρη αποδοχή του
  • Στηρίζεται στις δομές ακολουθίας, επιλογής και επανάληψης και στο ότι κάθε υποενότητα πρέπει να έχει μια είσοδο και μια έξοδο
  • Περιλαμβάνει : ιεραρχική σχεδίαση και τμηματικό προγραμματισμό
slide149
ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ

Παράδειγμα της «κακής» εντολή GO TO, που οδήγησε στο δομημένο προγραμματισμό

Αυτή η απόλυτη ελευθερία να μεταφέρεται η ροή του προγράμ-ματος σε διάφορα σημεία, παρήγαγε κώδικα με την επωνυμία «spaghetticode»

90 PRINT «Νέα συναλλαγή; (Κ/ατάθεση, Χ/ρέωση, Τ/έλος)"

100 T$=INPUT$(1)

110 IF T$ <> «Κ» AND T$<> «κ»GOTO 210

120 INPUT «Ποσό κατάθεσης:";DEPOSIT

130 BALANCE = BALANCE + DEPOSIT

140 PRINT USING «Νέο υπόλοιπο: $#####.##";BALANCE

150 GOTO 90

210 IF T$ <> «Χ» AND T$<> «χ»GOTO 300

220 INPUT «Ποσό χρέωσης";CHECK

230 BALANCE = BALANCE - CHECK

240 PRINT USING «Νέο υπόλοιπο: $#####.##";BALANCE

250 GOTO 90

300 IF T$ <> «Τ» AND T$<> «τ»GOTO 90

410 PRINT USING “Υπόλοιπο λογ/σμού: $#####.##";BALANCE

430 END

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

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

  • Απλούστερα προγράμματα
  • Άμεση μεταφορά των αλγορίθμων σε προγράμματα
  • Εύκολη ανάλυση του προγράμματος σε τμήματα
  • Περιορισμός λαθών
  • Εύκολη κατανόηση από τρίτους προγραμματιστές
  • Εύκολη διόρθωση και συντήρηση
  • Γρηγορότερη υλοποίηση των εφαρμογών
slide151
ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ(Object Oriented Programming – OOP)

  • Είναι τρόπος οργάνωσης του κώδικα και έχει πλέον επικρατήσει ως μέθοδος προγραμματισμού στις σύγχρονες γλώσσες
  • Βασίζεται στην έννοια των αντικειμένων, δηλ. αυτόνομων οντοτήτων προγράμματος οι οποίες περιλαμβάνουν τα δεδομένα και τις αντίστοιχες ενέργειες σ’ αυτά. Π.χ. Αυτοκίνητο.
    • Δεδομένα: Χρώμα, κυβισμός, χιλιόμετρα, ταχύτητα, τιμή
    • Ενέργειες: Άνοιξε φώτα, Άναψε μηχανή, Τρέξε, Σταμάτα
  • Παράγει ευέλικτα και επαναχρησιμοποιήσιμα προγράμματα
  • Χρησιμοποιεί την ιεραρχική σχεδίαση και το δομημένο προγραμματισμό
slide152
ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ

ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ(Parallel programming)

  • Είναι μέθοδος προγραμματισμού για συστήματα με περισσότερους από έναν επεξεργαστές
  • Οι επεξεργαστές μοιράζονται από κοινού τη μνήμη
  • Κάθε ένας, αναλαμβάνει την εκτέλεση διαφορετικού τμήματος της εφαρμογής, αρκεί το πρόγραμμα να είναι κατάλληλα γραμμένο για το σκοπό αυτό.
  • Προϋποθέτει κατάλληλο λειτουργικό σύστημα
  • Χρειάζεται προσοχή, όταν πρέπει να γίνει χρήση ενός κοινού πόρου, ο οποίος δεν μπορεί να μοιραστεί ταυτόχρονα.
  • Ταχύτατη εκτέλεση εφαρμογών (συνήθως επιστημονικές, μαθηματικές, βιοϊατρικές, αστρονομικές κ.ά)
slide153
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ & ΔΙΕΡΜΗΝΕΥΤΕΣ

Για τη δημιουργία προγραμμάτων χρειάζονται τουλάχιστον τρία προγράμματα:

  • Ο συντάκτης (Editor)
  • Ο μεταγλωττιστήςή ο διερμηνευτής (Compiler ή Interpreter)
  • Ο συνδέτης (Linker)

Παρουσιάζονται αναλυτικότερα παρακάτω :

slide154
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ & ΔΙΕΡΜΗΝΕΥΤΕΣ

Ο συντάκτης (Editor)

  • Είναι ένας ανεξάρτητος επεξεργαστής απλού κειμένου.
  • Δεν είναι κάποια ειδική εφαρμογή. Ο προγραμματιστής μπορεί να επιλέξει οποιοδήποτε τρόπο συγγραφής, π.χ. το απλό “σημειωματάριο” του Η/Υ
  • Με τον καιρό, ενσωματώθηκε στα ολοκληρωμένα περιβάλλοντα προγραμματισμού
  • Απέκτησε λειτουργίες διευκόλυνσης συγγραφής κώδικα, π.χ. χρωματισμό εντολών, εύκολη διόρθωση λαθών, αυτόματη εισαγωγή ολόκληρων εντολών μετά από πληκτρολόγηση των αρχικών γραμμάτων τους, αντιγραφή, επικόλληση κλπ.
slide155
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ & ΔΙΕΡΜΗΝΕΥΤΕΣ

Ο μεταγλωττιστήςκαι ο διερμηνευτής (Compiler και Interpreter)

  • Κάθε πρόγραμμα πρέπει να μετατραπεί σε μορφή αναγνωρίσιμη από τον Η/Υ, δηλ. σε γλώσσα μηχανής. Αυτό αναλαμβάνει ο μεταγλωττιστής και ο διερμηνευτής
  • Ομεταγλωττιστής, δέχεται ως είσοδο όλο το αρχικό κείμενο (πηγαίος κώδικας - sourcecode) του προγράμματος και παράγει το αντίστοιχο πρόγραμμα σε γλώσσα μηχανής (αντικείμενο πρόγραμμα- object)
  • Ο διερμηνευτής από την άλλη (π.χ. της ΓΛΩΣΣΑΣ), δέχεται μία προς μία τις εντολές του πηγαίου κώδικα, τις μεταφράζει σε γλώσσα μηχανής κάθε φορά (π.χ. στις επαναλήψεις) και τις εκτελεί.Έχουμε πιο αργή εκτέλεση, σε σχέση με τη μεταγλώττιση, η οποία γίνεται μία φορά για όλο τον κώδικα.
slide156

Συνδέτης

Βιβλιοθήκες

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ & ΔΙΕΡΜΗΝΕΥΤΕΣ

Ο συνδέτης (Linker)

  • Το αντικείμενο (object) πρόγραμμα που παράγει ο μεταγλωττιστής δεν μπορεί να εκτελεστεί αμέσως.
  • Χρειάζεται να συνδεθεί με άλλα τμήματα προγράμματος (βιβλιοθήκες – libraries) τα οποία, είτε έχει γράψει ο προγραμματιστής, είτε είναι μέρος της γλώσσας προγραμματισμού, ώστε να αξιοποιηθούν και χαρακτηριστικά του λειτουργικού συστήματος
  • Τη δουλειά αυτή αναλαμβάνει ο συνδέτης (linker), οποίος τελικά παράγει το τελικό εκτελέσιμο πρόγραμμα (executable)
  • Συνολικά η διαδικασία αποκαλείται «μεταγλώττιση και σύνδεση» (compiling and linking) ή «χτίσιμο» (build)

Εκτελέσιμοπρόγραμμα

Αρχικόπρόγραμμα

Αντικείμενοπρόγραμμα

Μεταγλωττιστής

slide157
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ
  • Παλαιότερα, ο προγραμματιστής αναλάμβανε να εκτελέσει ξεχωριστά, κάθε ένα από τα προηγούμενα προγράμματα
  • Σήμερα, και τα τρία (συντάκτης, μεταγλωττιστής/διερμηνευτής και συνδέτης), είναι πλέον ενοποιημένα σε ειδικά ολοκληρωμένα περιβάλλοντα εργασίας, σε όλες τις γλώσσες προγραμματισμού
  • Χρησιμοποιείται γραφικό περιβάλλον εργασίας (Graphical User Interface – GUI)
  • Εύκολη συγγραφή κώδικα, άμεση μεταγλώττιση σε γλώσσα μηχανής και διασύνδεση με τις βιβλιοθήκες και το λειτουργικό σύστημα
  • Άμεση εμφάνιση συντακτικών λαθών
  • Βοηθητικές λειτουργίες, π.χ. λήψη εφεδρικών αντιγράφων, εκτυπώσεις, αλλαγή στην εμφάνιση και στη λειτουργία κατά τις προτιμήσεις του προγραμματιστή, εισαγωγή κειμένου από άλλα προγράμματα, κ.ά.
slide158

Εντολή MS-DOS για λίστα αρχείων στο δίσκο(ορίστε ;)

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

1. Συντάκτης

  • Γλώσσα : C
  • Αποθηκεύει το :main.c(απλό κείμενο με τη σύνταξη της γλώσσας)

2. Μεταγλωττιστής

  • Διαβάζει το : main.c
  • Παράγει το :main.obj(Αντικείμενο πρόγραμμα.Δεν εκτελείται ακόμη)

3. Συνδέτης

  • Διαβάζει το: main.obj
  • Παράγει το: main.exe(εκτελέσιμο στον Η/Υ)
integrated development environments ide
ΟΛΟΚΛΗΡΩΜΕΝΑ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ Integrated Development Environments (IDE)
  • Περιλαμβάνεται αναβαθμισμένος συντάκτης κειμένου
  • Εύκολος εντοπισμός συντακτικών λαθών
  • Ηλεκτρονικό εγχειρίδιο βοήθειας για τη γλώσσα προγραμματισμού
  • Γραφική σύνθεση των παραθύρων της εφαρμογής
  • Πολλαπλές εκδόσεις
  • Το ίδιο το περιβάλλον εργασίας αναλαμβάνει τη μεταγλώττιση και σύνδεση
slide160
ΕΙΔΗ ΛΑΘΩΝ ΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ
  • Συντακτικάλάθη (syntax errors)
    • Οφείλονται στη λανθασμένη χρήση ή ορθογραφία των εντολών από τον προγραμματιστή
    • Εντοπίζονται αμέσως από το περιβάλλον εργασίας κατά τη μεταγλώττιση
    • Ο προγραμματιστής πρέπει να τα διορθώσει, για να μεταγλωττιστεί το πρόγραμμα
  • Λογικά (logical errors ή bugs)
    • Είναι τα πιο επικίνδυνα, αφού οφείλονται σε κακή υλοποίηση του αλγορίθμου (είναι λάθη λογικής), π.χ. αντί μιας πρόσθεσης, προγραμματίστηκε μια αφαίρεση.
    • Δύσκολα στην ανεύρεσή τους
    • Μπορεί να οδηγήσουν σε σφάλματα εκτέλεσης (τερματισμό) του προγράμματος, π.χ. διαίρεση με το 0, ή άνοιγμα αρχείου που δεν υπάρχει, κλπ.
slide161
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑΔΙΑΔΙΚΑΣΙΕΣ&ΣΥΝΑΡΤΗΣΕΙΣΥΠΟΠΡΟΓΡΑΜΜΑΤΑΔΙΑΔΙΚΑΣΙΕΣ&ΣΥΝΑΡΤΗΣΕΙΣ
slide162
ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
  • Όπως έχουμε αναφέρει, μεγάλα και σύνθετα προγράμματα γράφονται με την δομημένη σχεδίαση (τεχνική Top-Down)
  • Ιεραρχική προσέγγιση. Το πρόβλημα διαιρείται σε μικρότερα και απλούστερα μέρη
  • Αυτά σχεδιάζονται και υλοποιούνται τμηματικά, σύμφωνα με τις αρχές του δομημένου προγραμματισμού
slide163
ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣΠαράδειγμα (σχ. βιβλίο)

Αξιολόγηση αποτελεσμάτων Γ’ Λυκείου(μια προσέγγιση)

  • 1.Εισαγωγή δεδομένων
    • 1.1 Καταχώρηση
    • 1.2 Έλεγχος τιμών
  • 2. Επεξεργασία δεδομένων
    • 2.1 Μέσος όρος
    • 2.2 Κατανομή συχνοτήτων
    • 2.3 Τυπική απόκλιση
    • 2.4 Γραφικές παραστάσεις
  • 3. Εμφάνιση/Εκτύπωση αποτελεσμάτων
    • 3.1 Εμφάνιση συχνοτήτων
    • 3.2 Εμφάνιση γραφικών παραστάσεων
    • 3.3 Αποτελέσματα βαθμολογίας

Κάθε τμήμα υλοποιείται ξεχωριστά, επιτελεί αυτόνομο έργο και γι’ αυτό ονομάζεται ΥΠΟΠΡΟΓΡΑΜΜΑ (subprogram)

Διαίρεση σε τμήματα

slide164
ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣΠλεονεκτήματα
  • Διευκολύνει την ανάπτυξη αλγορίθμων / προγραμμάτων
    • Υλοποιούμε την εφαρμογή σταδιακά και σε μικρότερα τμήματα
  • Διευκολύνει την κατανόηση και τη διόρθωση
    • Εύκολότερες αλλαγές χωρίς να επηρεάζονται άλλα σημεία του κώδικα
    • Διαφορετικοί προγραμματιστές κατανοούν τον κώδικα
  • Συμβάλλει στην ταχύτερη υλοποίηση προγραμμάτων
    • Τα υποπρογράμματα γράφονται μία φορά και χρησιμοποιούνται σε διάφορα σημεία της εφαρμογής.
    • ΒΑΣΙΚΟ: Αν μια λειτουργία μας χρειάζεται πάνω από μία φορά, καλό είναι να τη μετατρέψουμε σε ένα υποπρόγραμμα
  • Επεκτείνει τις δυνατότητες γλωσσών προγραμματισμού
    • Ένα υποπρόγραμμα, μπορεί να χρησιμοποιηθεί και από άλλες εφαρμογές, αν καλύπτει κοινές λειτουργίες (βιβλιοθήκη)
    • Είναι σαν να δημιουργούμε τις δικές μας εντολές, σε περίπτωση που η ίδια η γλώσσα δεν καλύπτει τη λειτουργία που θέλουμε
slide165
ΥΠΟΠΡΟΓΡΑΜΜΑΧαρακτηριστικά
  • Έχει μόνο μία είσοδο και μία έξοδο
    • Ενεργοποιείται με τα δεδομένα εισόδου του (στην αρχή του)
    • Εκτελεί τις λειτουργίες του
    • Απενεργοποιείται εξάγοντας τυχόν αποτελέσματα (στο τέλος του)
  • Είναι ανεξάρτητο από τα άλλα
    • Μπορεί να αναπτυχθεί και να συντηρηθεί όσο το δυνατόν αυτόνομα
    • Αλλαγές σε αυτό, δεν επηρεάζουν τα υπόλοιπα
  • Δεν είναι μακροσκελές
    • Εκτελεί μια λειτουργία
    • Είναι τόσομεγάλο, όσο χρειάζεται για να γίνεται κατανοητό
    • Αν φτάσει να εκτελεί αρκετές λειτουργίες, καλό είναι να διαιρείται σε ακόμη μικρότερα υποπρογράμματα

Τα παραπάνω δεν είναι πάντα εύκολα και εξαρτώνται από το μέγεθος και τη σύνθεση του προβλήματος. Ο τμηματικός προγραμματισμός απαιτεί σοβαρή ανάλυση, εμπειρία, ταλέντο και γνώσεις

slide166
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑΠαράμετροι – Τί είναι;
  • Παρόλο που το κάθε υποπρόγραμμα γράφεται ανεξάρτητα από τα άλλα, συνήθως χρειάζεται να επικοινωνήσει με αυτά ή με το κύριο πρόγραμμα (δηλ. να δώσει ή να λάβει δεδομένα)
  • Αυτό γίνεται μέσω μεταβλητών, οι οποίες περνούν (και πιθανόν τροποποιούνται) από και προς τα υποπρογράμματα ή το κύριο πρόγραμμα
  • Αυτές οι μεταβλητές, λέγονται «παράμετροι»
  • Αντί για μεταβλητών, παράμετροι μπορεί να είναι και απλές σταθερές τιμές (π.χ. 15, “ΔΕΥΤΕΡΑ”, 15.6, ΨΕΥΔΗΣ) ή εκφράσεις (π.χ. X+15, y-2x)
slide167
ΕΙΔΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝΔΙΑΔΙΚΑΣΙΕΣ και ΣΥΝΑΡΤΗΣΕΙΣ
  • ΔΙΑΔΙΚΑΣΙΑ
    • Εκτελεί οποιαδήποτε λειτουργία έχουμε δει στα απλά προγράμματα (εισαγωγή τιμών, υπολογισμοί, εμφάνιση κλπ.)
    • Εκτελείται από το κύριο πρόγραμμα ή από άλλες διαδικασίες ή συναρτήσεις
    • Οι παράμετροί της, μπορούν να επιστραφούν τροποιημένες πίσω στο σημείο κλήσης, μετά την εκτέλεση της.
  • ΣΥΝΑΡΤΗΣΗ
    • Κανονικά, εκτελεί οποιαδήποτε λειτουργία όπως οι διαδικασίες. Καλό είναι, να εκτελεί μόνο υπολογισμούς (όχι είσοδο ή έξοδο)
    • Εκτελείται από το κύριο πρόγραμμα ή από άλλες συναρτήσεις ή διαδικασίες
    • Οι παράμετροί της, δεν μπορούν να επιστραφούν τροποιημένες πίσω στο σημείο κλήσης, μετά την εκτέλεση της.
    • Επιστρέφει οπωσδήποτε μία μόνο τελική τιμή (όπως οι μαθηματικές συναρτήσεις)
slide168

ΔΙΑΔΙΚΑΣΙΑ όνομα (παράμ1, παράμ2, ...)

ΣΤΑΘΕΡΕΣ

κατά τα γνωστάΜΕΤΑΒΛΗΤΕΣ

Τύπος_παραμέτρου1 : παράμ1

Τύπος_παραμέτρου2 : παράμ2

Άλλες μεταβλητές για τη διαδικασία (τοπικές)

ΑΡΧΗ

οποιεσδήποτε εντολές ή κλήσεις άλλων διαδικασιών / συναρτήσεων

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΕΣΠώς γράφονται
  • Γράφονται πάντα μετά το τέλος του κυρίου προγράμματος
  • Για το όνομα, ισχύει ό,τι και για τις μεταβλητές
  • Οι παράμετροι είναι προαιρετικές. Αν όμως τις ορίσετε, πρέπει να τις δηλώσετε και στις μεταβλητές μέσα στη διαδικασία, μαζί με άλλες μεταβλητές που έχετε
slide169
ΔΙΑΔΙΚΑΣΙΕΣΠώς χρησιμοποιούνται (καλούνται)
  • Οι διαδικασίες, εκτελούνται με την εντολή ΚΑΛΕΣΕ, το όνομα της και τις παραμέτρους της σε παρένθεση, χωρισμένες με κόμμα (,)
  • Παραμέτροι κλήσης, μπορούν να είναι μεταβλητές, σταθερές τιμές ή εκφράσεις. Μόνο με τις μεταβλητές, αν αλλάξουν οι τιμές τους μέσα στη διαδικασία, συνεχίζουμε με τις νέες τιμές στο κύριο πρόγραμμα
  • Μπορούμε να επιστρέψουμε πάνω από μία τιμές, στο κύριο πρόγραμμα

ΠΡΟΓΡΑΜΜΑ άσκηση1

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ:x1, y1

ΑΡΧΗ

x1  5

y1  10

ΚΑΛΕΣΕ ΔιαδικασίαΑ (x1, y1)

ΚΑΛΕΣΕ ΔιαδικασίαΒ (5, 15, y1)

ΚΑΛΕΣΕ ΔιαδικασίαΓ (x1+5, x1+y1)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Οι παράμετροι κλήσης μιας διαδικασίας, πρέπει να ταιριάζουν 1:1 στη σειρά και στον τύπο, με αυτές στον ορισμό της

Με την κλήση μιας διαδικασίας, η ροή του προγράμματος μεταφέρεται σ’ αυτήν.

Μόλις η διαδικασία τελειώσει, η ροή συνεχίζει από τη γραμμή μετά την κλήση της

slide170

ΣΥΝΑΡΤΗΣΗΌνομα (παράμ1, παράμ2, ...) :τύπος_επιστροφής

ΣΤΑΘΕΡΕΣ

κατά τα γνωστάΜΕΤΑΒΛΗΤΕΣ

Τύπος_παραμέτρου1 : παράμ1

Τύπος_παραμέτρου2 : παράμ2

Άλλες μεταβλητές για τη συνάρτηση (τοπικές)

ΑΡΧΗ

κοινές εντολές εκτός από ΓΡΑΨΕ, ΔΙΑΒΑΣΕ ή κλήσεις άλλων συναρτήσεων / διαδικασιών

Όνομα τιμή_επιστροφής (ή παράσταση υπολογισμών)

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΣΥΝΑΡΤΗΣΕΙΣΠώς γράφονται
  • Γράφονται και αυτές μετά το τέλος του κυρίου προγράμματος
  • Για το όνομα ισχύει, ό,τι και για τις μεταβλητές
  • Πρέπει να δηλώσετε τις παραμέτρους της και ως μεταβλητές μέσα στη συνάρτηση μαζί με άλλες μεταβλητές που έχετε. Συνάρτηση χωρίς παραμέτρους, δεν έχει νόημα ύπαρξης.
  • Επιστροφή τιμής στο τέλος, εκχωρώντας την στο όνομα της συνάρτησης
  • Τύποι επιστροφής : ΑΚΕΡΑΙΑ, ΠΡΑΓΜΑΤΙΚΗ, ΛΟΓΙΚΗ, ΧΑΡΑΚΤΗΡΑΣ
slide171
ΣΥΝΑΡΤΗΣΕΙΣΠώς χρησιμοποιούνται (καλούνται)
  • Οι συναρτήσεις, καλούνται ακριβώς όπως και οι ενσωματωμένες μαθηματικές συναρτήσεις της ΓΛΩΣΣΑΣ (π.χ. ΗΜ(x), Τ_Ρ(x), κλπ).
  • Σκεφθείτεότι δημιουργείτε τις δικές σας εντολές ή συναρτήσεις, επεκτείνοντας τις δυνατότητες της ΓΛΩΣΣΑΣ.
  • Αλλαγές στις τιμές των παραμέτρων, δεν μεταφέρονται στο κύριο πρόγραμμα μετά την εκτέλεσή της

Οι παράμετροι κλήσης μιας συνάρτησης, πρέπει να ταιριάζουν 1:1 στη σειρά και στον τύπο, με αυτές στον ορισμό της

Με την κλήση μιας συνάρτησης, η ροή του προγράμματος μεταφέρεται σ’ αυτήν.

Μόλις η συνάρτηση τελειώσει, η ροή συνεχίζει από τη γραμμή μετά την κλήση της

ΠΡΟΓΡΑΜΜΑ άσκηση1

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ:μο, x

ΑΡΧΗ x  50

μο  ΜέσοςΟρος(x,40,60)

ΓΡΑΨΕ μοΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide172
ΠΑΡΑΜΕΤΡΟΙΠραγματικές και Τυπικές
  • Πραγματικές, λέγονται οι παράμετροι οι οποίες χρησιμοποιούνται κατά την κλήση της διαδικασίας ή συνάρτησης
  • Τυπικές, λέγονται οι παράμετροι συγγραφής της διαδικασίας ή συνάρτησης
  • Μπορούν να έχουν το ίδιο ακριβώς όνομα (ή όχι), είναι όμως τελείως ανεξάρτητες μεταξύ τους
  • Κατά την κλήση διαδικασιών ή συναρτήσεων :
    • οι πραγματικέςκαι οι τυπικέςπαράμετροι, πρέπει να έχουν τοίδιο πλήθος και να βρίσκονται σε αντιστοιχία 1 προς 1, ως προς τον τύπο και τη σειρά εμφάνισης.
    • Οι τιμές των πραγματικών, αντιγράφονται στις τυπικές
  • Όλες οι παράμετροι έχουν τοπική ισχύ, δηλαδή, χρησιμοποιούνται μόνο από το τμήμα προγράμματος στο οποίο έχουν δηλωθεί
slide173
ΠΑΡΑΜΕΤΡΟΙΠραγματικές και Τυπικές - Παράδειγμα

ΠΡΟΓΡΑΜΜΑ ΠραγματικέςΤυπικέςΠαράμετροι

ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: ηλικίαΑΡΧΗηλικία  45

ΚΑΛΕΣΕ Πληροφορίες (”ΝΙΚΟΛΑΟΥ Α.” , ηλικία , 1.80)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ!

ΔΙΑΔΙΚΑΣΙΑ Πληροφορίες (όνομα, age, ύψος)

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ:ύψος

ΑΚΕΡΑΙΕΣ: age

ΧΑΡΑΚΤΗΡΕΣ: όνομα

ΑΡΧΗ

ΓΡΑΨΕ“Πελάτης “, όνομα, “ ετών “, age, “ ύψος “, ύψος

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

3 πραγματικέςΑΚ,ΧΑΡ,ΠΡΑΓΜ

3 τυπικέςΑΚ,ΧΑΡ,ΠΡΑΓΜ

slide174
ΠΑΡΑΜΕΤΡΟΙΕπιστροφή τιμών από ΔΙΑΔΙΚΑΣΙΑ – Πώς λειτουργεί

ΠΡΟΓΡΑΜΜΑ ΑλλαγήΠαράμετρων

ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ:δείκτης ΑΡΧΗΚΑΛΕΣΕ ΔείκτηςΜΣ ( 80, 1.75, δείκτης )

ΓΡΑΨΕ δείκτης

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΔείκτηςΜΣ (β, υ, δ)

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ:β, υ, δ

ΑΡΧΗ

δ  β / (υ^2)

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

80 και 1.75 είναι σταθερές

(κενή)

Πραγματικές

παράμετροι

Τυπικές παράμετροι

26.12

slide175
ΠΑΡΑΜΕΤΡΟΙΜετατροπή ΣΥΝΑΡΤΗΣΗΣ σε ΔΙΑΔΙΚΑΣΙΑ

ΔΜΣΔείκτης Μάζας Σώματος

Εκχωρούμε την τελική τιμή στο όνομα της (ΔΜΣ), για την επιστροφή της στο κύριο πρόγραμμα

Εισάγουμε άλλη μία τυπική παράμετρο(δ),στην οποία εκχωρούμε την τελική τιμή. Μετά την κλήση, η τιμή αυτή μεταφέρεται στην πραγμα-τική παράμετρο (δείκτης)

ΣΥΝΑΡΤΗΣΗ ΔΜΣ (β, υ):ΠΡΑΓΜΑΤΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ:β, υ, δ

ΑΡΧΗ

δ  β / (υ^2)ΔΜΣ  δ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

δείκτης  ΔΜΣ ( 70, 1.75 )

ΔΙΑΔΙΚΑΣΙΑ ΔΜΣ (β, υ, δ)

ΜΕΤΑΒΛΗΤΕΣ

ΠΡΑΓΜΑΤΙΚΕΣ:β, υ, δ

ΑΡΧΗ

δ  β / (υ^2)

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΚΑΛΕΣΕ ΔΜΣ ( 70, 1.75, δείκτης )

slide176
ΔΙΑΔΙΚΑΣΙΕΣ ή ΣΥΝΑΡΤΗΣΕΙΣ;Ενδείξεις για να επιλέξετε

Συναρτήσεις όταν :

  • επιστρέφουμε μία μόνο τιμή
  • η τελική τιμή, χρησιμοποι-είται ως παράμετρος σε άλλη κλήση υποπρογ/τος
  • αναζητούμε τη θέση ενός στοιχείου σε πίνακα

Διαδικασίες όταν :

  • δεν επιστρέφουμε τιμές
  • επιστρέφουμε >= 2 τιμές
  • εκτελούμε τις ΓΡΑΨΕ ή ΔΙΑΒΑΣΕ
  • επιστρέφουμε πίνακα τιμών

ΚΑΛΕΣΕΒ_θμια(α,β,γ,x1,x2)

ΚΑΛΕΣΕΑντιμετάθεση(x, y)

ΚΑΛΕΣΕΓράψεΠίνακα(Α,Ν)

ΚΑΛΕΣΕΕμφάνισηΜενού

ΚΑΛΕΣΕ ΤαξινόμησηΠιν(Α,Ν)

ΚΑΛΕΣΕ ΕισαγωγήΘετικού(x)

μ Μέγιστος(α, β)

ε  Εμφανίσεις(x, Α, Ν)

θ  ΑναζήτησηΠίνακα(x,A,N)

ο  ΌγκοςΚυλίνδρου(ρ, υ)

δ ΔείκτηςΜΣ(β, υ)

ο Α_Μ( ΔείκτηςΜΣ(β, υ) )

ι  ΜετατροπήΝομίσματος(ν)

slide177

ΠΡΟΓΡΑΜΜΑ Άσκηση

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: α, β

ΑΡΧΗ

α  5 β  10

ΚΑΛΕΣΕ Αντιμετάθεσε(α, β)

ΓΡΑΨΕ α, β

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Αντιμετάθεσε(x,y)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: x,y,z

ΑΡΧΗ

z  x

x  y

y  z

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑΠαράδειγμα #1

Να γράψετε πρόγραμμα, που να κάνει αντιμετάθεση των τιμών δύο ακέραιων μεταβλητών, κάνοντας χρήση υποπρογράμματος

slide178

ΠΡΟΓΡΑΜΜΑ Άσκηση

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: x

ΑΡΧΗ

ΚΑΛΕΣΕ ΔώσεΑκέραιο(“Εισάγετε ακέραιο”,x)ΓΡΑΨΕ“Μόλις δώσατε τον αριθμό:”, x

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ ΔώσεΑκέραιο(μήνυμα, αριθμός)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: αριθμόςΧΑΡΑΚΤΗΡΕΣ: μήνυμα

ΑΡΧΗ

ΓΡΑΨΕ μήνυμα

ΔΙΑΒΑΣΕ αριθμός

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑΠαράδειγμα #2
  • Όταν ζητούμε ένα αριθμό ή ένα κείμενο από το πληκτρολόγιο, συνήθως εμφανίζουμε πρώτα ένα συνοδευτικό διευκρινιστικό μήνυμα.
  • Να γράψετε υποπρό-γραμμα, με το οποίο να αντικαθιστούμε τις δύο εντολές :ΓΡΑΨΕ“μήνυμα” και ΔΙΑΒΑΣΕμεταβλητή με μία μόνο, για τον παραπάνω σκοπό (π.χ. για εισαγωγή ακεραίου)
slide179
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑΠαράδειγμα #3

ΠΡΟΓΡΑΜΜΑ Άσκηση

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: μ, απάντ

ΑΡΧΗμ  “Θα έρθετε εκδρομή; (Ν/Ο)”

ΚΑΛΕΣΕ Απάντησε(μ, “Ν”, “Ο”, απάντ)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Απάντησε( μήν, τ1, τ2, απ )

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: μ, τ1, τ2, απ

ΑΡΧΗ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ μήν ΔΙΑΒΑΣΕ απ

ΜΕΧΡΙΣ_ΟΤΟΥ απ = τ1 Ή απ = τ2

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Να γράψετε πρόγραμμα, που να ζητά από το χρήστη να εισάγει από το πληκτρολόγιο, μόνο δύο προτεινόμενες τιμές χαρακτήρων, απαντώντας σε μήνυμα στην οθόνη, με χρήση υποπρογράμματοςΤο μήνυμα μπορεί να είναι:- Θα έρθετε εκδρομή;(Ν/Ο)- Δώστε το φύλο : (Α/Γ)- Χρώμα: (Κόκκινο/Λευκό)- κ.ο.κ.

slide180
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #4

ΔΙΑΔΙΚΑΣΙΑ ΓέμισεΠίνακα(Π)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Π[100], ι

ΑΡΧΗ

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 100

ΔΙΑΒΑΣΕ Π[ ι ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΔΙΑΔΙΚΑΣΙΑ ΕμφάνισεΠίνακα(Κ)

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Κ[100], ι

ΑΡΧΗ

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 100

ΓΡΑΨΕ Κ[ ι ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Να γράψετε πρόγραμμα, που να γεμίζει και να εμφανίζει δύο πίνακες 100 ακεραίων αριθμών, κάνοντας χρήση υποπρογραμμάτων

ΠΡΟΓΡΑΜΜΑ Άσκηση

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Α[100], Β[100]

ΑΡΧΗ

ΚΑΛΕΣΕ ΓέμισεΠίνακα(Α)

ΚΑΛΕΣΕ ΓέμισεΠίνακα(Β)

ΚΑΛΕΣΕ ΕμφάνισεΠίνακα(Α)

ΚΑΛΕΣΕ ΕμφάνισεΠίνακα(Β)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

slide181
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #4 - συνέχεια

Συμπληρώνοντας το προηγούμενο παράδειγμα, να γράψετε υποπρόγραμμα, με το οποίο υπολογίζεται ο μέσος όρος των στοιχείων κάθε πίνακα, μαζί με τις εντολές κλήσης του από το κύριο πρόγραμμα

ΣΥΝΑΡΤΗΣΗ ΜΟ_Πίνακα(Π):ΠΡΑΓΜΑΤΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: Π[100], ι, άθροισμα

ΑΡΧΗ

άθροισμα  0

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 100

άθροισμα  άθροισμα + Π[ ι ]

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΜΟ_Πίνακα άθροισμα / 100

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Κλήση στο κύριο πρόγρ. :(δηλώνουμε τις μεταβλητές)

μο_Α  ΜΟ_Πίνακα ( Α )μο_Β  ΜΟ_Πίνακα ( Β )ΓΡΑΨΕ μο_Α, μο_Β

slide182
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #5

ΣΥΝΑΡΤΗΣΗ ΑνήκειΣεΠίνακα(Χ, Πίνακας) : ΛΟΓΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: Πίνακας[100], ΧΑΚΕΡΑΙΕΣ: ι

ΛΟΓΙΚΕΣ: βρέθηκε

ΑΡΧΗ

βρέθηκεΨΕΥΔΗΣ

ι  1

ΟΣΟ ι <= 100 ΚΑΙ βρέθηκε = ΨΕΥΔΗΣΕΠΑΝΑΛΑΒΕ

ΑΝ Πίνακας[ ι] = X TOTE βρέθηκε ΑΛΗΘΗΣ ! Σταματά αμέσως

ΑΛΛΙΩΣ

ι  ι + 1

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑνήκειΣεΠίνακα βρέθηκε

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Να γραφεί συνάρτηση, που να επιστρέφει το αν ένα όνομα υπάρχει σε ένα πίνακα 100 ονομάτων

slide183
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #6

Να γραφεί συνάρτηση, που να επιστρέφει πόσες φορές ένας αριθμός εμφανίζεται σε ένα πίνακα 100 ακεραίων

ΣΥΝΑΡΤΗΣΗ Εμφανίσεις(Χ, Πίνακας) : ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: i, Χ,Πίνακας[100], πλήθος

ΑΡΧΗ

πλήθος 0

ΓΙΑiΑΠΟ1ΜΕΧΡΙ100

ΑΝ Πίνακας[ i ] = X TOTE πλήθος  πλήθος + 1

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Εμφανίσεις πλήθος

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

7 1 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 1/10

ΠΡΟΒΛΗΜΑ

Να γραφεί πρόγραμμα, ώστε να ελέγχεται επαναληπτικά, αν ένα δοθέν κεφαλαίο γράμμα είναι σύμφωνο ή φωνήεν

ΛΥΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ (Ελεύθερη προσέγγιση)

Το πρόβλημα, μπορεί να λυθεί με διάφορους τρόπους. Εμείς, θεωρούμε αρχικά, το σύνολο των γραμμάτων της ελληνικής γλώσσας, με πρώτα όμως τα φωνήεντα (7), ακολουθούμενα από τα σύμφωνα (17)

Αναζητώντας σειριακά για ένα κεφαλαίο γράμμα, αν το βρούμε στα πρώτα επτά, πρόκειται για φωνήεν, αλλιώς πρόκειται για σύμφωνο

Στους Η/Υ, τα γράμματα αποθηκεύονται συνεχόμενα κατά αλφαβητική σειρά. Αυτό, μπορεί να χρησιμοποιηθεί για τον έλεγχο ορθότητας της τιμής αναζήτησης (να μην αναζητούμε άλλα σύμβολα).

Κατεβάστε το πλήρες πρόγραμμα σε ΓΛΩΣΣΑ

7 2 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 2/10

Κάνοντας χρήση του τμηματικού προγραμματισμού (top down), διαιρούμε το πρόγραμμα σε μικρότερα και πιο διαχειρίσιμα μέρη

  • Εισαγωγή γράμματος αναζήτησης

Έλεγχος ορθότητας (δεν επιτρέπεται τίποτε πέρα από κεφαλαία)

  • Επεξεργασία στοιχείων – σύμφωνο ή φωνήεν;

2.1Δημιουργία λίστας γραμμάτων (φωνήεντα + σύμφωνα). Σημ: Βάζουμε αυτή τη λειτουργία εδώ, ώστε να κάνει την επεξεργασία όσο το δυνατόν πιο αυτόνομη. Το σύνολο των γραμμάτων δεν ενδιαφέρει το κύριο πρόγραμμα, αλλά μόνο την παρακάτω λειτουργία της αναζήτησης

2.2Σειριακή αναζήτηση στη λίστα, για το γράμμα

Αναζήτηση κατά τα γνωστά. Θέσεις 1-7=Φωνήεν, 8-24=Σύμφωνο

  • Εμφάνιση αποτελεσμάτων

Μήνυμα προς το χρήστη ανάλογα με το αποτέλεσμα

  • Απάντηση για συνέχεια

Απάντηση για την επανάληψη της εκτέλεσης του προγράμματος

7 3 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 3/10

Διαγραμματική αναπαράσταση της τεχνικής Top Down

7 4 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 4/10

Υλοποίηση - Κύριο πρόγραμμα

ΠΡΟΓΡΑΜΜΑ ΣύμφωνοΦωνήεν

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: Χ, συνέχεια

ΛΟΓΙΚΕΣ: απάντηση

ΑΡΧΗ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΚΑΛΕΣΕ ΓράμμαΑναζήτησης( Χ ) !είσοδος

απάντηση  ΕίναιΦωνήεν(Χ ) !επεξεργασία

ΚΑΛΕΣΕ Αποτελέσματα( Χ, απάντηση ) !έξοδος

ΚΑΛΕΣΕ Απάντησε(“Συνέχεια (ν/ο);”, ”ν”,”ο”, συνέχεια)

ΜΕΧΡΙΣ_ΟΤΟΥ συνέχεια <> “ν”ΓΡΑΨΕ“ΤΕΛΟΣ”

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Διάγραμμα

7 5 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 5/10

Διαδικασία : ΓράμμαΑναζήτησης

ΔΙΑΔΙΚΑΣΙΑ ΓράμμαΑναζήτησης( γρ )

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: γρ

ΑΡΧΗ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ “Δώστε ένα κεφαλαίο γράμμα (Α-Ω) : ”ΔΙΑΒΑΣΕγρΜΕΧΡΙΣ_ΟΤΟΥγρ >=“A”KAIγρ <=“Ω”

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Διάγραμμα

Με το τέλος της διαδικασίας, η τιμή της μεταβλητής (γρ), μεταφέρεται στη μεταβλητή (Χ) του κυρίου προγράμματος

7 6 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 6/10

Συνάρτηση : ΕίναιΦωνήεν (;)

ΣΥΝΑΡΤΗΣΗ ΕίναιΦωνήεν(Χ) : ΛΟΓΙΚΗ

ΜΕΤΑΒΛΗΤΕΣ

ΑΚΕΡΑΙΕΣ: θέσηΧΑΡΑΚΤΗΡΕΣ: Χ, Γράμμα[24]

ΑΡΧΗΚΑΛΕΣΕ ΛίσταΓραμμάτων(Γράμμα) ! Γέμισμα λίστας γραμ.

θέση  Αναζήτηση( Χ, Γράμμα) ! θέση του Χ στον Γράμμα ΕίναιΦωνήεν (θέση <= 7) ! Είναι στις πρώτες 7; ΑΛΗΘΗΣ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Διάγραμμα

7 7 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 7/10

Διαδικασία : ΛίσταΓραμμάτων

ΔΙΑΔΙΚΑΣΙΑ ΛίσταΓραμμάτων( Γ )

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: Γ [24]

ΑΡΧΗΓ [1]  “Α”! Τα πρώτα 7είναι ταφωνήεντα.............. ! Συμπληρώνουμε ενδιάμεσαΓ [7]  “Ω”Γ [8]  “Β” !Εδώ ξεκινούντα σύμφωνα ...... ! Συμπληρώνουμε ενδιάμεσαΓ [24]  “Ψ”

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Διάγραμμα

Με το τέλος της διαδικασίας, η μεταβλητή πίνακα (Γ), μεταφέρεται στη μεταβλητή πίνακα (Γράμμα) της συνάρτησης «ΕίναιΦωνήεν»

7 8 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 8/10

Συνάρτηση : Αναζήτηση

ΣΥΝΑΡΤΗΣΗ Αναζήτηση( γρ, Γράμμα ): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: γρ, Γράμμα [24] ΑΚΕΡΑΙΕΣ: i, θέση

ΑΡΧΗ

θέση  0! Θα βρεθεί σίγουρα στη λίσταΓΙΑiΑΠΟ1ΜΕΧΡΙ24

ΑΝ Γράμμα[ i] = γρTOTE θέση i

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΑναζήτηση  θέση

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

Διάγραμμα

7 9 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 9/10

Διαδικασία : Αποτελέσματα

ΔΙΑΔΙΚΑΣΙΑ Αποτελέσματα( γρ, απάντ )

ΜΕΤΑΒΛΗΤΕΣ

ΛΟΓΙΚΕΣ: απάντΧΑΡΑΚΤΗΡΕΣ: γρ

ΑΡΧΗ

ΑΝ απάντ = ΑΛΗΘΗΣΤΟΤΕ

ΓΡΑΨΕ“Το γράμμα ”, γρ , “ είναι φωνήεν”

ΑΛΛΙΩΣ

ΓΡΑΨΕ“Το γράμμα ”, γρ , “ είναι σύμφωνο”

ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Διάγραμμα

Η διαδικασίες ή συναρτήσεις, μπορούν απλά να δέχονται τις παραμέτρους εισόδου για χρήση. Δεν είναι απαραίτητο να τις τροποποιούν

7 10 10
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Παράδειγμα #7 (Ολοκληρωμένο) – Μέρος 10/10

Διαδικασία : Απάντησε

ΔΙΑΔΙΚΑΣΙΑ Απάντησε(μήνυμα, τ1, τ2, απάντηση)

ΜΕΤΑΒΛΗΤΕΣ

ΧΑΡΑΚΤΗΡΕΣ: μήνυμα, τ1, τ2, απάντηση

ΑΡΧΗ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ μήνυμα ΔΙΑΒΑΣΕ απάντηση

ΜΕΧΡΙΣ_ΟΤΟΥ απάντηση = τ1 Ή απάντηση = τ2

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Διάγραμμα

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

ΙΟΡΔΑΝΗΣ ΣΑΒΒΟΥΛΙΔΗΣ

http://users.sch.gr/iordanissav

Πίσω