Κεφαλαιο 2.2 ΑΝΑΚΕΦΑΛΑΙΩΤΙΚΕΣ ΑΛΓΟΡΙΘΜΟΙ 1.Σ, 2.Σ, 3. Λ, 4.Σ, 5.Σ Στο α) ανήκουν: 1,2,5,6,7 Στο β) ανήκουν: 3,4,8,9,10 1.-Λ, 2.-Λ, 3.-Σ, 4.-Σ, 5.-Σ
1. -Πραγματικός, 2. -Αρφαριθμητικός, 3.-Αλφαριθμητικός, 4.-Λογικός, 5.-Ακέραιος 1-Ακέραιος, 2-Αλφαριθμητικός, 3-Πραγματικός, 4-Αλφαριθμητικός 5-Ακέραιος
1. Μεταβλητές: α 2. Λογικοί τελεστές : ΔΕΝ ΕΧΕΙ 3. Αριθμητικοί τελεστές: * 4. Λογικές εκφράσεις: α < 0 5. Εντολές εκχώρισης: α α * 5 1. Μεταβλητές: Χ, Μ, Α 2. Σταθερές : ΔΕΝ ΕΧΕΙ 3. Λογικές εκφράσεις: Χ > 0 4. Εντολές εκχώρισης: Χ -2 5. Εντολή εισόδου: Διάβασε Α, Μ 0, Χ Χ + Α, Μ Μ+1
Στήλη Α * + > ΚΑΙ + Ή <> ΟΧΙ Στήλη Β Αριθμητικός τελεστής (γ) Αριθμητικός τελεστής (γ) Συγκριτικός τελεστής (α) Λογικός τελεστής (β) Αριθμητικός τελεστής (γ) Λογικός τελεστής (β) Συγκριτικός τελεστής (α) Λογικός τελεστής (β) 1-Λ, 2-Λ,,3-Σ, 4-Σ
1. Ι (α+β+γ)/3 2. Μ Μ+2 3. Κ Κ Λ 4. Ε (α+β)/2 5. Α Α-2 Ας βάλουμε τυχαίες τιμές στον Αλγόριμο 1 Τα Α και Β είναι οι μεταβλητές μου δηλ τα στοιχεία που παίρνουν τιμές και στην πορεία μεταβάλλουν τις τιμές αυτές. 1η εντολή: Διάβασε Α,Β πχ Α=6 και Β=4 2η εντολή: Α Α+Β Το Α θα πάρει τελική τιμή 10 (γιατί 6+4=10) 3η εντολή : Β Α-Β Το Β θα πάρει τελική τιμή (γιατί 10-4=6) 4η εντολή: Α Α-Β Το Α θα πάρει τελική τιμή 4 (γιατί 10-6=4) 5η εντολή : Εμφάνισε Α,Β Θα εμφανίσει τις τελευταίες τιμές των Α και Β δηλαδή 4 και 6 Όπως βλέπουμε λοιπόν, αρχικά είχα δώσει τις τιμές Α=6 και Β=4 και καταλήγει με Α=4 και Β=6 Άρα κάνει αντιμετάθεση των τιμών στις μεταβλητές Α και Β.
Για να δούμε τον Αλγόριθμο 2 1η εντολή: Διάβασε Α,Β πχ πάλι Α=6 και Β=4 2η εντολή: Χ Α Το Χ θα πάρει τελική τιμή 6 (γιατί παίρνει την τιμή του Α) 3η εντολή : Α Β Το Α θα πάρει τελική τιμή 4 (γιατί παίρνει την τιμή του Β) 4η εντολή: Β Χ Το Β θα πάρει τελική τιμή 6 (γιατί παίρνει την τιμή του Χ) 5η εντολή : Εμφάνισε Α,Β Θα εμφανίσει τις τελευταίες τιμές των Α και Β δηλαδή 4 και 6 Όπως βλέπουμε λοιπόν, αρχικά είχα δώσει τις τιμές Α=6 και Β=4 και καταλήγει και αυτός ο αλγόριθμος με Α=4 και Β=6 Άρα κάνει αντιμετάθεση των τιμών στις μεταβλητές Α και Β. Ασκήσεις με Εντολές επιλογής (αν) Άσκηση 1 (Χρήση σύνθετου Αν) Να δημιουργηθεί αλγόριθμος με ψευδοκώδικα και με διάγραμμα ροής που να υλοποιεί τα παρακάτω: Έστω ότι θέλετε να αγοράσετε μια καινούρια τηλεόραση. Στο κατάστημα που πάτε μαθαίνετε από τον υπάλληλο ότι η τιμή της τηλεόρασης που σας ενδιαφέρει είναι 900 (αρχική τιμή). Επειδή όμως είναι μέρες εκπτώσεων δικαιούστε έκπτωση 10%. (έκπτωση) Εσείς έχετε μαζί σας 820 (Πορτοφόλι). Ο αλγόριθμος αφού πάρει αρχική τιμή, ποσό έκπτωσης και το ποσό που έχετε στο πορτοφόλι σας, να υπολογίζει την τελική τιμή της τηλεόρασης η οποία προκύπτει αν από την αρχική τιμή (που είναι 900), αφαιρέσω την έκπτωση 10% (την οποία όμως πρέπει να την υπολογίσω κι αυτήν με την μέθοδο των τριών δηλ Στα 100 10 έκπτωση στα 900 Χ έκπτωση ; Χ = 900/100 * 10 = 90 (Η σειρά των πράξεων δεν έχει σημμασία γιατί έχουν την ίδια προτεραιότητα). Και αφού τα κάνει όλα αυτά, στο τέλος θέλω να ελέγχει και να εμφανίζει αν με βάση τα χρήματα που έχετε στο πορτοφόλι σας, μπορείτε να αγοράσετε την τηλεόραση ή όχι. Λύση Το σύμβολο! σημαίνει σχόλιο και δεν λαμβάνεται υπόψιν κατά την εκτέλεση των εντολών ούτε και εμφανίζεται στην οθόνη. Είναι απλά για να κατανοήσετε τι κάνει κάθε φορά η εντολή που ακολουθεί. Αλγόριθμος Τηλεόραση! Εκχωρείται η αρχική τιμή της τηλεόρασης Α 900! Εκχωρείται η έκπτωση για την τηλεόραση Β 10! Στην επόμενη εντολή υπολογίζεται το πόσο της έκπτωσης με βάση την αρχική τιμή Χ Α/100 * Β
Τελική_τιμή Α Χ! Εκχωρείται η τιμή του ποσού που έχετε στο πορτοφόλι σας πορτοφόλι 820! Ελέγχεται αν σας φτάνουν τα χρήματά σας ή όχι Αν πορτοφόλι > = Τελική_τιμή τότε Εμφάνισε Μπορείς να αγοράσεις την τηλεόραση Αλλιώς Εμφάνισε Δεν έχεις αρκετά χρήματα για να αγοράσεις την τηλεόραση Τέλος Τηλεόραση Αρχή Α 900 Β 10 Χ Α/100* Β Τελική_τιμή Α - Χ Πορτοφόλι 820 Ψευδής Πορτοφόλι >= Τελική_τιμή ; Εμφάνισε Δεν έχεις αρκετά χρήματα για να αγοράσεις την τηλεόραση Εμφάνισε Μπορείς να αγοράσεις την τηλεόραση Τέλος
Άσκηση 2 (Χρήση απλού Αν) Να γραφεί αλγόριθμος με χρήση ψευδοκώδικα που να δέχεται τον τελικό βαθμό ενός μαθητή και να εμφανίζει τους παρακάτω χαρακτηρισμούς: ΒΑΘΜΟΣ ΧΑΡΑΚΤΗΡΙΣΜΟΣ Μικρότερος από 9.5 Απορρίπτεται Έως και 13 Σχεδόν Καλώς Έως και 16 Καλά Έως και 18 Πολύ Καλά Άνω του 18 Άριστα Σημείωση: Να θεωρηθεί ότι ο βαθμός είναι αριθμός από 0 έως και 20). Λύση: Αλγόριθμος Χαρακτηρισμός_βαθμολογίας Διάβασε Βαθμός Αν Βαθμός < 9.5 τότε Εμφάνισε Απορρίπτεται Αν Βαθμός < = 13 τότε Εμφάνισε Σχεδόν Καλώς Αν Βαθμός < = 16 τότε Εμφάνισε Καλά Αν Βαθμός < = 18 τότε Εμφάνισε Πολύ Καλά Αν Βαθμός < = 20 τότε Εμφάνισε Άριστα Τέλος Χαρακτηρισμός_Βαθμολογίας Άσκηση 3 (Χρήση πολλαπλού Αν) Σε ένα κατάστημα αποφασίστηκε λόγω καλοκαιρινών εκπτώσεων να δίνεται έκπτωση στους πελάτες ανάλογα με το ποσό των αγορών και με βάση τον παρακάτω πίνακα: Αγορές Έκπτωση Μέχρι 100 6% 101-300 9% Άνω των 300 12%
Να γραφεί αλγόριθμος με ψευδοκώδικα ή διάγραμμα ροής που: 1. να διαβάζει το ποσό αγοράς ενός πελάτη 2. να υπολογίζει το ποσό της έκπτωσης που του αναλογεί 3. να υπολογίζει και να εμφανίζει το ποσό που θα πληρωθεί στο κατάστημα καθώς και την έκπτωση που αναλογεί. Λύση: Αλγόριθμος Καλοκαιρινές_Εκπτώσεις Διάβασε Ποσό_Αγοράς Αν Ποσό_Αγοράς < = 100 τότε Έκπτωση 0.06 * Ποσό_Αγοράς Αλλιώς_αν Ποσό_Αγοράς < = 300 τότε Έκπτωση 0.09 * Ποσό_Αγοράς Αλλιώς Έκπτωση 0.12 * Ποσό_Αγοράς Εμφάνισε Έκπτωση Πληρωτέο_Ποσό Ποσό_Αγοράς Έκπτωση Εμφάνισε Πληρωτέο_Ποσό Τέλος Καλοκαιρινές_Εκπτώσεις Αρχή Διάβασε Ποσό_Αγοράς Ψευδής Ποσό_Αγοράς < = 100 Ψευδής Έκπτωση 0.06 * Ποσό_Αγοράς Ποσό_Αγοράς < = 300 Έκπτωση Έκπτωση 0.12 * Ποσό_Αγοράς Εμφάνισε Έκπτωση Έκπτωση 0.06 * Ποσό_Αγοράς Εμφάνισε Έκπτωση Τέλος 0.09 * Ποσό_Αγοράς
Ασκήσεις με Εντολές επανάληψης Διάφορες ασκήσεις με χρήση εντολών Όσο, Μεχρις_Ότου και Για Αλγόριθμος 1 Α 10 Μετρ 0 Για Ι από 3 μέχρι 12 με_βήμα 3 Α Α+3 Μετρ Μετρ + 1 Τέλος_Επανάληψης Εμφάνισε Μετρ Αλγόριθμος 2 Χ -3 Μετρ 0 Όσο Χ < = 0 επανάλαβε Χ Χ+1 Μετρ Μετρ + 1 Τέλος_Επανάληψης Εμφάνισε Μετρ Λύση : 1ος αλγόριθμος Φτιάχνω ένα πινακάκι (πίνακας τιμών) για να με διευκολύνει να βλέπω τις τιμές των μεταβλητών του αλγορίθμου όπως εξελίσσονται μετά από τις πράξεις στις εντολές: Α 10 10+3=13 13+3=16 16+3=19 19+3=22 Μετρ Ι 0 3 0+1=1 3+3=6 1+1=2 6+3=9 2+1=3 9+3=12 3+1=4 12+2=15 α) Οι εντολές που υπάρχουν μέσα στην επανάληψη θα εκτελεστούν 4 φορές. Αυτό το βλέπω από που προέκυψε από το πινακάκι αλλά μπορώ να το βρω και κατευθείαν αν διαιρέσω την τελική τιμή του Ι με το βήμα αύξησης του Ι δηλ. 12/3=4 β) Το πλήθος των επαναλήψεων που βρήκα θα αποθηκευτεί και θα εμφανιστεί στη μεταβλητή Μετρ (η μεταβλητή Μετρ μετράει τις επαναλήψεις ενώ η μεταβλητή Ι ελέγχει πότε θα βγει ο αλγόριθμος από την επανάληψη). 2ος αλγόριθμος Φτιάχνω πάλι ένα πινακάκι (πίνακας τιμών) για να με διευκολύνει να βλέπω τις τιμές των μεταβλητών του αλγορίθμου όπως εξελίσσονται μετά από τις πράξεις στις εντολές: Χ -3-3+1 = -2-2+1 = -1-1+1 = 0 0+1 = 1 Μετρ Συνθήκη Χ<=0 0 0+1=1 1+1=2 2+1=3 3+1=4 Ψευδής
α) Οι εντολές που υπάρχουν μέσα στην επανάληψη θα εκτελεστούν 4 φορές. Αυτό το βλέπω από από που προέκυψε από το πινακάκι τιμών του 2ου αλγορίθμου. β) Το πλήθος των επαναλήψεων που βρήκα θα αποθηκευτεί και θα εμφανιστεί στη μεταβλητή Μετρ. (Η Μετρ μετράει τις επαναλήψεις ενώ η Χ ελέγχει πότε θα βγει ο αλγόριθμος από την επανάληψη). Λύση: 1-δ, 2-α-γ, 3-β-γ
1ος Αλγόριθμος: Βλέπω ότι η μεταβλητή Α παίρνει την τιμή μηδέν και η μεταβλητή Σ παίρνει επίσης την τιμή μηδέν. Όταν φτάσει ο αλγόριθμος στην εντολή Όσο βλέπει ότι η συνθήκη είναι ψευδής. Άρα οι εντολές που υπάρχουν μέσα στην επανάληψη δεν θα εκτελεστούν ποτέ. Έτσι το μόνο που θα κάνει είναι να μου εμφανίσει ότι 0 για την τιμή του Σ που αρχικά είχε εκχωρηθεί. 2ος Αλγόριθμος: Ο αλγόριθμος θα ξεκινήσει να εκτελεί τις εντολές. Φτιάχνω πάλι ένα πινακάκι (πίνακας τιμών) για να με διευκολύνει να βλέπω τις τιμές των μεταβλητών του αλγορίθμου όπως εξελίσσονται μετά από τις πράξεις στις εντολές: ΑΣ Συνθή κη Α= 0 0 0+1=1 1+1=2 2+1=3... 0 0+1=1 1+2=3 3+3=6... Ψευδής Ψευδής Ψευδής... Προσοχή!!! Στην εντολή Μεχρις_ότου η επανάληψη εκτελείται όσο η συνθήκη είναι ψευδής. Μόνο όταν γίνει αληθής σταματάει. Εδώ λοιπόν η επανάληψη θα εκτελείται επ άπειρον γιατί το Α που είναι η μεταβλητή ελέγχου για έξοδο από την επανάληψη, θα είναι πάντα ψευδής αφού λόγω του ότι αυξάνεται κατά μια μονάδα κάθε φορά δεν πρόκειται να γίνει ποτέ μηδέν.
1-γ, 2-α, 3-β 1-Λ, 2-Λ, 3-Λ, 4-Σ, 5-Λ Δίνεται το παρακάτω τμήμα αλγορίθμου, όπου έχουν αριθμηθεί οι εντολές: 0: 1: 2: 3: 4: 5: Σ 20 Χ 10 Όσο Χ< 100 επανάλαβε Χ Χ + 20 Σ Σ+Χ Τέλος_Επανάληψης Εμφάνισε Σ 1. Η εντολή Χ Χ + 20 στη γραμμή 3 θα εκτελεστεί πέντε φορές. 2. Η εντολή Εμφάνισε Σ στη γραμμή 5 θα εκτελεστεί μία φορά. Για τα ερωτήματα 3 και 4 προκειμένου να μην κάνω κάποιο λάθος με τους υπολογισμούς θα φτιάξω πίνακα τιμών για να παρακολουθώ τις τιμές των μεταβλητών: Στην οθόνη θα εμφανιστεί η τελευταία τιμή που πήρε η μεταβλητή Σ. Για να βρω το βρω, αναγκαστικά πρέπει να φτιάξω πίνακα τιμών για να παρακολουθώ τις τιμές των μεταβλητών όπως εξελίσσονται μέσα από τις εντολές και να μην κάνω κάποιο λάθος.
Σ Χ Συνθήκη Χ < 100 20 20+30=50 50+50=100 100+70=170 170+90=260 260+110=370 10 10+20=30 30+20=50 50+20=70 70+20=90 90+20=110 Ψευδής 3. Σύμφωνα με τον πίνακα στην οθόνη θα εμφανιστεί η τελευταία τιμή του Σ 370 4. Όλες οι τιμές που θα πάρει η τιμή χ κατά τη διάρκεια της εκτέλεσης των εντολών του αλγορίθμου είναι οι τιμές που φαίνονται στη μεσαία στήλη : 10, 30, 50, 70, 90, 110 Αλγόριθμος Ακέραιοι_Αριθμοί Πλήθος 0 Άθροισμα_αρνητικών 0 MAX 9999999999! Δίνω τυχαία μια μεγάλη τιμή ι 1 Όσο ι < > 0 επανάλαβε! το σύμβολο < > σημαίνει Διάβασε ακέραιος Πλήθος Πλήθος +1 Αν ακέραιος < 0 τότε Άθροισμα_αρνητικών Άθροισμα_αρνητικών +1 Αν MAX < ακέραιος τότε MAX ακέραιος Διάβασε ι
Τέλος_Επανάληψης Εμφάνισε Πλήθος Εμφάνισε Άθροισμα_αρνητικών Εμφάνισε ΜΑΧ Τέλος Ακέραιοι_Αριθμοί 1. Αντικαθιστώ τις τιμές που μου δίνονται και έχω: Για Χ από 2 μέχρι 15 με_βήμα 3 Εμφάνισε Χ Τέλος_Επανάληψης Το Χ αυξάνεται κάθε φορά κατά 3. Άρα επανάληψη θα εκτελεστεί 5 φορές. Έτσι θα εμφανίσει 5 φορές την τιμή του Χ σε κάθε επανάληψη δηλ.: 1η 2η 3η 4η 5η επανάληψη : 2 επανάληψη : 5 επανάληψη : 8 επανάληψη: 11 επανάληψη: 14 2. Αντικαθιστώ τις τιμές που μου δίνονται και έχω: Για Χ από 5 μέχρι 25 με_βήμα 5 Εμφάνισε Χ Τέλος_Επανάληψης Το Χ αυξάνεται κάθε φορά κατά 5. Άρα η επανάληψη θα εκτελεστεί 5 φορές. Έτσι θα εμφανίσει 5 φορές την τιμή του Χ σε κάθε επανάληψη δηλ.: 1η 2η 3η 4η 5η επανάληψη : 5 επανάληψη : 10 επανάληψη : 15 επανάληψη: 20 επανάληψη: 25
3. Αντικαθιστώ τις τιμές που μου δίνονται και έχω: Για Χ από 1 μέχρι -7 με_βήμα -2 Εμφάνισε Χ Τέλος_Επανάληψης Το Χ στην αρχή είναι 1. Αυξάνεται κάθε φορά κατά -2 μέχρι να φτάσει το -7. Άρα η επανάληψη θα εκτελεστεί 5 φορές. Έτσι θα εμφανίσει 5 φορές την τιμή του Χ σε κάθε επανάληψη δηλ.: 1η επανάληψη : 2η επανάληψη : 3η επανάληψη : 4η επανάληψη : 5η επανάληψη: 1-1 -3-5 -7