Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον τελική επανάληψη 2015 7/4/2015 1
Α -Β θέμα 40Μ+20Μ Ορθά συντακτικώς γραμμένες προτάσεις, λέξεις κλειδιά, ολοκληρωμένες φράσεις Χρήση κριτικής σκέψης σε Σ-Λ και αντιστοίχιση Λογική και οφθαλομοφανείς απαντήσεις σε συμπλήρωση κενού και θεωρητικές ασκήσεις Μετά (αλλά και πολλές φορές πριν) την απάντηση, εκτέλεση με συγκεκριμένα παραδείγματα για επαλήθευση 7/4/2015 2
ΤΥΠΟΙ ΜΕΤΑΒΛΗΤΩΝ Παραδείγματα τύπου μεταβλητής ΤΥΠΟΙ: ΑΚΕΡΑΙΟΣ/ΠΡΑΓΜΑΤΙΚΟΣ ΧΑΡΑΤΗΡΑΣ/ΛΟΓΙΚΟΣ Α 2 ΑΚΕΡΑΙΟΣ Β Αληθής ΛΟΓΙΚΟΣ Γ Ψευδής ΧΑΡΑΚΤΗΡΑΣ Δ 3Α ΧΑΡΑΚΤΗΡΑΣ (ΑΛΦΑΡΙΘΜΗΤΙΚΗ) Ε 3.0 ΠΡΑΓΜΑΤΙΚΟΣ Χ>0 ΛΟΓΙΚΟΣ 7/4/2015 3
Παραδείγματα τύπου μεταβλητής 7/4/2015 4
Ενσωματωμένες Συναρτήσεις Α_Τ() Τ_Ρ() Α_Μ() ΗΜ() ΣΥΝ() ΕΦ() ΛΟΓ() Ε() 7/4/2015 5
Διαδικασία Ολίσθησης/ Αλα Ρωσικά Αλγόριθμος ala_rosika Διάβασε Μ1, Μ2 p 0 Όσο Μ2 > 0 επανάλαβε Αν Μ2mod2 = 1 τότε p p + Μ1 Τέλος_αν Μ1 Μ1*2 Μ2 Μ2 div2 Τέλος_επανάληψης Γράψε p Τέλος ala_rosika 15 25 15 30 12 60 6 120 3 120 240 1 240 375 7/4/2015 6
Ψευδοκώδικα Μετατρέπω Αρχή_Επανάληψης Αρχή_Επανάληψης Όσο Διάγραμμα Ροής Διάγραμμα ροής Όταν έχω το αντίθετο Διάγραμμα ροής κώδικα Όταν βλέπω το ρόμβο στο τέλος και γυρνάει στο όχι είναι Αρχή_Επανάληψης Όσο Για Όσο (μπορεί όμως να είναι ανάποδα οι συνθήκες! με αντιστραμμένα τα ΝΑΙ-ΟΧΙ) Όταν βλέπω το ρόμβο στην αρχή και γυρνάει στο ναι είναι Όσο 7/4/2015 7
Όταν έχω Για μετατρέπω ΠΑΝΤΑ σε Όσο 7/4/2015 8
Μορφές Επανάληψης Για: Για συγκεκριμένο πλήθος επαναλήψεων, γνωστό εκ των προτέρων, τουλάχιστον μια φορά. Παραδείγματα Για ι από 1 μέχρι 5 με_βήμα 1 5 φορές 1 5 2 3 φορές 1 5 5 1 φορά 1 5 0 άπειρες φορές 5 1-1 5 φορές 1 5-1 Καμία 5 1 1 Καμία Αρχή_Επανάληψης: Κυρίως Άγνωστο (αλλά και γνωστό), τουλάχιστον μια φορά Όσο: Κυρίως Άγνωστο (αλλά και γνωστό), μπορεί και καμία (στην περίπτωση της τιμής φρουρός ) 7/4/2015 9
Μετατροπές Για Όσο Αρχή_Επανάληψης Για Όσο Αρχή_Επανάληψης 7/4/2015 10
Μετατροπές Απλές Για Όσο Για i από 2 μέχρι 22 με_βήμα 3 Διάβασε x Τέλος_Επανάληψης i 2 Όσο i<=22 επανάλαβε Διάβασε x i i+3 Τέλος_Επανάληψης Πιο περίεργες... Βάσει ιδιοτήτων Οπότε: Μετατρέπω το Για σε Όσο ΠΑΝΤΑ εκτέλεση ΠΑΝΤΑ ΓΙΑ/ΑΡΧΗ Τρέχουν τουλάχιστον μία φορά!! Όσο Καμία φορά!!! (όταν δεν είναι αληθής η συνθήκη) Άρα αφού κάνεις τη μετατροπή το τρέχεις ξανά και ξανά!! 7/4/2015 11
Κανονικά θα μετέτρεπα σε Όσο S 0 Κ α Όσο κ<=10 επανάλαβε S S+K^2 Κ Κ+2 Τέλος_Επανάληψης Εμφάνισε S Ή μετά σε Αρχή_Επανάληψης S 0 Κ α Αρχή_Επανάληψης S S+K^2 Κ Κ+2 Μέχρις_ότου κ>10 Εμφάνισε S τρέχει μία φορά οπωσδήποτε άρα είναι λάθος 7/4/2015 12
Άρα το σωστό είναι Βήμα 2: Βήμα 1: Μετατρέπω σε Όσο S 0 Κ α Όσο κ<=10 επανάλαβε S<S+K^2 Κ Κ+2 Τέλος_Επανάληψης Εμφάνισε S Μετατρέπω σε Αρχή_Επανάληψης πάντα με εκτέλεση!!!!!!!!!!!!! S 0 Κ α Αν κ<=10 τότε Αρχή_Επανάληψης S S+K^2 Κ Κ+2 Μέχρις_ότου κ>10 Τέλος_Αν Εμφάνισε S 7/4/2015 13
ΠΙΝΑΚΑΣ ΑΛΗΘΕΙΑΣ ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ ίνονται οι τιμές των μεταβλητών Α=3, Β=1, Γ=15 και η παρακάτω έκφραση: (ΟΧΙ (Α+Β*3>10)) ΚΑΙ (Γ MOD (A-B)=1) 7/4/2015 14
Δυναμικές Δομές ίνεται η παρακάτω ακολουθία αριθμών: 25, 8, 12, 14, 71, 41, 1. Τοποθετούμε τους αριθμούς σε στοίβα και σε ουρά: 1. Ποια λειτουργία θα χρησιμοποιηθεί για την τοποθέτηση των αριθμών στη στοίβα και ποια για την τοποθέτησή τους στην ουρά; 2. Να σχεδιάσετε τις δύο δομές (στοίβα και ουρά) μετά την τοποθέτηση των αριθμών. 3. Ποια λειτουργία θα χρησιμοποιηθεί για την έξοδο αριθμών από τη στοίβα και ποια για την έξοδό τους από την ουρά; 4. Πόσες φορές θα πρέπει να γίνει η παραπάνω λειτουργία στη στοίβα και πόσες στην ουρά για να εξέλθει ο αριθμός 71; 5. Να περιγράψετε τους δείκτες που χρησιμοποιούνται σε κάθε περίπτωση. 7/4/2015 15
Αδόμητος - Goto 1. ιάβασε Χ 2. Όσο X>1 επανάλαβε 3. Aν Χ mod 2=0 τότε 4. Χ Χ div 2 5. αλλιώς 6. Χ 3*Χ+1 7. Τέλος_αν 8. Τέλος_επανάληψης 1. ιάβασε Χ 2. Αν X<=1 goto 9 3. Aν Χ mod 2<>0 goto 6 4. Χ Χ div 2 5. goto 8 6. Χ 3*Χ+1 8. goto 2 9. Συμβουλή Έξυπνης Επίλυσης: Αφού το goto αλλάζει τη ροή του προγράμματος προς άλλη εντολή (εκτός της επόμενης), αντιστρέφω τη συνθήκη για να συνεχίσω κανονικά 7/4/2015 16
Μετατροπή Συνάρτησης Αρκεί να μην έχω πρόβλημα στις επιστροφές Διαδικασία Συνάρτηση Στην περίπτωση που αλλάζουν οι παράμετροι: Διαδικασία Διαδικασία Συνάρτηση Πριν από το κλείσιμο της Διαδικασίας αναιρώ τις εντολές με τις οποίες άλλαξαν οι παράμετροι ή αλλάζω τις μεταβλητές μέσα στη διαδικασία για να μην επιστραφούν Ξαναγράφω τις εντολές μετά την κλήση της Συνάρτησης στο κύριο πρόγραμμα 7/4/2015 17
Μετατροπή Συνάρτησης σε Διαδικασία Προσοχή! Η συνάρτηση επιστρέφει μία μόνο τιμή Η διαδικασία επιστρέφει όλες τις παραμέτρους της Στην αντίθετη περίπτωση Διαδικασία σε Συνάρτηση επειδή η συνάρτηση δεν αλλάζει τις τιμές και δεν τις επιστρέφει, γράφω τις εντολές αλλαγής των 7/4/2015 18 τιμών μέσα στο κύριο πρόγραμμα
Κενά σε μεθοδολογίες (μπορεί και τροποποιημένες ή τμήματα τους) Βασική Ιδέα: Ότι και να βάλει τρέχτο!!!!! Με συγκεκριμένο παράδειγμα και με πιθανές προβληματικές τιμές!!! 7/4/2015 19
Κενά σε μεθοδολογίες Να ταξινομούνται σε αύξουσα σειρά μόνο οι θετικές τιμές του πίνακα Απλή ταξινόμηση Στοχεύω στις γραμμές ή τις στήλες που μου ζητούν 7/4/2015 20
Κενά σε μεθοδολογίες 7/4/2015 21
Συμπλήρωση πίνακα με κάποιο γεωμετρικό τόπο: αν δεν τον ξέρω τον κατασκευάζω Εναλλάξ θέσεις (i+j)mod2=0 7/4/2015 22
ΠΙΝΑΚΕΣ ΤΙΜΩΝ Α ΠΕΡΙΠΤΩΣΗ Όταν μας δίνουν έτοιμο τον πίνακα και πρέπει μόνο να τον συμπληρώσουμε! Β ΠΕΡΙΠΤΩΣΗ Όταν πρέπει να φτιάξουμε και να συμπληρώσουμε μόνοι μας τον πίνακα! 7/4/2015 23
π.χ. εδώ βλέπουμε ότι από το 9 πάει στο 3 όταν τελειώνει η πρώτη επανάληψη και ελέγχουμε πάλι τη συνθήκη Πρέπει να προσέχουμε να γράφουμε κάθε γραμμή που εκτελούμε 7/4/2015 24
Στην περίπτωση υποπρογραμμάτων! Χωρίζω τον πίνακα στο κύριο πρόγραμμα και στα υποπρογράμματα Συμπληρώνω τις μεταβλητές και όπου χρειάζεται Συνθήκη και Οθόνη Όταν έχω διαδικασία και συνάρτηση θυμάμαι ότι: i. Στη διαδικασία οι παράμετροι επιστρέφουν αλλαγμένες ή μη στο κύριο πρόγραμμα. ii. iii. Στη συνάρτηση ΠΑΝΤΑ επιστρέφεται μια τιμή με το όνομα της. Οι παραπάνω ενέργειες πρέπει να φαίνονται στον πίνακα τιμών. ΠΡΟΣΟΧΗ και για την ανάπτυξη υποπρογραμμάτων στο 3 ο και 4 ο θέμα!!! 7/4/2015 25
Κύριο πρόγραμμα Διαδικασία Διαδ Συνάρτηση F Π[i] Π[i+1] Συνθ α β κ Οθ Σ γ δ x i F 2 3 2 3 2 3 3 5 5 1 2 3 5 2,3,5 Α 5 8 8 2 8 2 3................ 7/4/2015 26
Γ -Δ θέμα (Διαβάζουμε όλο το θέμα 2-3 φορές και δίνουμε ιδιαίτερη έμφαση στις τυχόν παρατηρήσεις στο τέλος) 7/4/2015 27
Τιμή Φρουρός Αλγόριθμος ΘΓ ΜIN 101! Θέτουμε ως μικρότερη τιμή μια πολύ μεγάλη Διάβασε Ο! Η δομή της τιμής φρουρού Όσο Ο <> "ΤΕΛΟΣ" Επανάλαβε! Η δομή της τιμής φρουρού Διάβασε Β1, Β2, Β3 MAX Β1 Αν Β2 > MAX τότε MAX Β2 Τέλος_Aν Αν Β3 > MAX τότε ΜΑΧ Β3 Τέλος_Aν Εμφάνισε MAX ΣΒ (Β1 + Β2 + Β3)/3 Αν ΣΒ>=55 ΚΑΙ Β1>=50 ΚΑΙ Β2>=50 & ΚΑΙ Β3>=50 τότε! Η εντολή δεν χώρεσε σε μια γραμμή και συνεχίσαμε από κάτω Εμφάνισε Ο, ΣΒ Τέλος_Αν Αν ΣΒ < MIN τότε! Συγκρίνουμε με αυτή που θέσαμε αρχικά μικρότερη ΜΙΝ ΣΒ Omin O Τέλος_Aν Διάβασε Ο! Η δομή της τιμής φρουρού Τέλος_επανάληψης! Η δομή της τιμής φρουρού Εμφάνισε Οmin Τέλος ΘΓ 7/4/2015 28
Προσοχή στις συγκεκριμένες ταξινομήσεις!!! Ταξινόμηση γραμμών/στηλών ως προς την πρώτη γραμμή/στήλη δισδιάστατου Ταξινόμηση κάθε γραμμής/στήλης δισδιάστατου Ταξινόμηση όλων των στοιχείων δισδιάστατου με τη σειρά βάζοντας στη θέση (1,1) το min και στη θέση (Ν,Μ) το max Για i από 2 μέχρι Ν Για j από Ν μέχρι i με_βήμα -1 Αν Γ[j-1]<Γ[j] τότε Αντιμετάθεσε Γ[j-1],Γ[j] Αντιμετάθεσε Α[j-1],Α[j] Για κ από 1 μέχρι Μ Αντιμετάθεσε Β[j-1,κ],Β[j,κ] Τέλος_Επανάληψης Τέλος_Αν Τέλος_Επανάληψης Τέλος_Επανάληψης 7/4/2015 29
Συχνότητα Θέμα Δ 7/4/2015 30
Χρήση Αύξοντα αριθμού Για ι από 1 μέχρι 10 Α[ι] ι Τέλος_Επανάληψης 1 2 3 4 5 6 7 8 9 10 Στην περίπτωση που θέλω θέση μετά από ταξινόμηση (ή άλλη ενέργεια)ή οποιαδήποτε άλλη αρχική πληροφορία και δεν έχω πίνακα αναφοράς, όπως για παράδειγμα ονόματα. Δεν θα το ζητήσει (πιθανότατα), θα τον φτιάξετε μόνοι σας. 7/4/2015 31
Υποπρογράμματα 7/4/2015 32
Προσοχή! Συνάρτηση-Διαδικασία Συνάρτηση Δε διαβάζει Δεν εμφανίζει Για αυτό και πρέπει να έχει τουλάχιστον μία παράμετρο (ως δεδομένο)! Χ Πράξη(Α) Επιστρέφει μόνο μία τιμή! (Το όνομα της) Αντίθετα η Διαδικασία μπορεί να μην έχει και καμία παράμετρο!! Κάλεσε Πράξη() Επιστρέφουν ΟΛΕΣ οι παράμετροι αλλαγμένες ή μη!!!! Διπλό κάλεσε: π.χ Κάλεσε Όνομα(α,β) Κάλεσε Όνομα(γ,δ) Διαδικασία Όνομα (χ,ψ) Πρέπει α,γ,χ και β,δ,ψ να είναι ίδιου τύπου!!! 7/4/2015 33
Προσοχή υποπρόγραμμα σε επανάληψη! Για i από 1 μέχρι Ν Κάλεσε Όνομα(ΚΡΑΤ,i,x) B[i] x ή Β[i] Όνομα(ΚΡΑΤ,i) Τέλος_Επανάληψης Προσοχή! Δεν είναι πίνακας 7/4/2015 34
Καλή επιτυχία!!! 7/4/2015 35