Αιγόξηζκνη 2.2.7.3 Δνκή επηινγήο Απιή Επηινγή ύλζεηε Επηινγή Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ 1
Επηινγή ηελ πξάμε πνιύ ιίγα πξνβιήκαηα κπνξνύλ λα επηιπζνύλ κε ηνλ πξνεγνύκελν ηξόπν ηεο ζεηξηαθήο/αθνινπζηαθήο δνκήο ελεξγεηώλ. Σηο πην πνιιέο θνξέο ιακβάλνληαη θάπνηεο απνθάζεηο κε βάζε θάπνηα θξηηήξηα πνπ κπνξεί λα είλαη δηαθνξεηηθά γηα θάζε ζηηγκηόηππν ελόο πξνβιήκαηνο. «αλ βξέρεη, ζα πάξσ νκπξέια» 2
Επηινγή Η δηαδηθαζία επηινγήο πεξηιακβάλεη ηνλ έιεγρν κηαο ζπλζήθεο πνπ κπνξεί λα έρεη δύν ηηκέο (Αιεζήο ή Φεπδήο) θαη αθνινπζεί ε απόθαζε εθηέιεζεο εληνιώλ κε βάζε ηελ ηηκή απηήο ηεο ζπλζήθεο. Χο ζπλζήθε ελλνείηαη κηα ινγηθή έθθξαζε ζηελ νπνία ππάξρεη ηνπιάρηζηνλ έλαο ζρεζηαθόο ηειεζηήο (δειαδή ε ζπλζήθε δελ κπνξεί λα απαξηίδεηαη από κόλν κηα κεηαβιεηή ή κηα ζηαζεξά ή κηα αξηζκεηηθή παξάζηαζε). 3
Απιή Εληνιή Επηινγήο Αν Σσνθήκη ηόηε Εληνιέο Τέλος_αν Αλ ε ζπλζήθε είλαη αιεζήο, ηόηε εθηεινύληαη νη εληνιέο. Οη εληνιέο κπνξνύλ λα είλαη κία ή πεξηζζόηεξεο. 4
Απιή Εληνιή Επηινγήο Παράδειγμα 2.10. Να δηαβαζηεί έλαο αξηζκόο θαη λα εκθαληζηεί ε απόιπηε ηηκή ηνπ. Η απόιπηε ηηκή ελόο αξηζκνύ είλαη ν ίδηνο ν αξηζκόο, αλ είλαη ζεηηθόο ή ν αληίζεηόο ηνπ, αλ είλαη αξλεηηθόο. Έηζη γηα λα ππνινγηζηεί ε απόιπηε ηηκή ελόο αξηζκνύ αξθεί λα ειεγρζεί, αλ ηπρόλ ν δεδνκέλνο αξηζκόο είλαη αξλεηηθόο θαη αλ λαη, λα βξεζεί ν αληίζεηόο ηνπ. Μπνξεί θπζηθά λα γίλεη θαη ρξήζε ηνπ ζπλαξηεζηαθνύ ηειεζηή Α_Σ(). 5
Απιή Εληνιή Επηινγήο Αλγόριθμος Απόιπηε_ηηκή1 Γράψε "Δώζηε έλαλ αξηζκό" Διάβαζε α Αν α < 0 ηόηε α α * (-1)! α -α Τέλος_αν Γράψε "Η απόιπηε ηηκή ηνπ αξηζκνύ είλαη", α Τέλος Απόιπηε_ηηκή1 6
Απιή Εληνιή Επηινγήο Άζκηζη 26 ζελ 52 Να αλαπηύμεηε αιγόξηζκν ν νπνίνο ζα δηαβάδεη ην ηξέρνλ έηνο θαη αλ απηό είλαη από ην 2001 κέρξη θαη ην 2099 λα εκθαλίδεη ην κήλπκα «21νο αηώλαο». Αλ ην έηνο είλαη από ην 2002 θαη πάλσ, λα εκθαλίδεη ην κήλπκα «Υξήζε ηνπ ΕΤΡΧ». 7
Απιή Εληνιή Επηινγήο Δηαβάδνληαο πξνζεθηηθά ηελ εθθώλεζε παξαηεξνύκε ηα εμήο: Υξεηαδόκαζηε κηα κεηαβιεηή ζηελ νπνία ζα εθρσξεζεί ην ηξέρνλ έηνο. Αο ηελ νλνκάζνπκε ΣΕ. Η εθρώξεζε ζα γίλεη κε εληνιή εηζόδνπ θαη ζπγθεθξηκέλα κε ηελ εληνιή Διάβαζε. Γηα λα εκθαληζηεί ην κήλπκα «21νο αηώλαο» ζα πξέπεη ην ηξέρνλ έηνο λα είλαη κεγαιύηεξν ίζν από ην 2001 θαη κηθξόηεξν ή ίζν από ην 2099. Ο ζπγθεθξηκέλνο έιεγρνο ζα γίλεη κε ρξήζε απιήο εληνιήο επηινγήο. Γηα λα εκθαληζηεί ην κήλπκα «Υξήζε ηνπ ΕΤΡΧ» ζα πξέπεη ην ηξέρνλ έηνο λα είλαη κεγαιύηεξν ή ίζν ηνπ 2002. Ο ζπγθεθξηκέλνο έιεγρνο ζα γίλεη κε ρξήζε απιήο εληνιήο επηινγήο. 8
Απιή Εληνιή Επηινγήο Αλγόριθμος Έηνο Γράψε "Δώζηε ην ηξέρνλ έηνο" Διάβαζε ΣΕ Αν ΣΕ 2001 και ΣΕ 2099 ηόηε Γράψε "21νο αηώλαο" Τέλος_αν Αν ΣΕ 2002 ηόηε Γράψε "Υξήζε ηνπ ΕΤΡΧ" Τέλος_αν Τέλος Έηνο 9
Αν Σσνθήκη ηόηε Εληνιέο_1 αλλιώς Εληνιέο_2 Τέλος_αν Αλ ε ζπλζήθε είλαη αιεζήο, ηόηε εθηεινύληαη νη εληνιέο 1, αιιηώο (δειαδή αλ ε ζπλζήθε είλαη ςεπδήο) εθηεινύληαη νη εληνιέο 2. 10
Άζκηζη 24 ζελ 52 Να αλαπηύμεηε αιγόξηζκν ν νπνίνο ζα δηαβάδεη έλαλ αθέξαην αξηζκό θαη ζα ππνινγίδεη θαη ζα εκθαλίδεη ηνλ επόκελν άξηην. 11
Δηαβάδνληαο πξνζεθηηθά ηελ εθθώλεζε παξαηεξνύκε ηα εμήο: Υξεηαδόκαζηε κία κεηαβιεηή γηα ηνλ αξηζκό πνπ ζα δηαβαζηεί. Πξέπεη λα απνθαζίζνπκε αλ ν αξηζκόο είλαη άξηηνο ή όρη ώζηε αλάινγα λα απμεζεί θαηά δύν ή έλα αληίζηνηρα ώζηε λα πξνθύςεη ν επόκελνο άξηηνο. Ο ζπγθεθξηκέλνο έιεγρνο ζα γίλεη κε ρξήζε ζύλζεηεο εληνιήο επηινγήο. Πξνηείλεηαη λα γίλεη θαη ρξήζε κίαο αθόκε κεηαβιεηήο ζηελ νπνία ζα εθρσξεζεί ε θαηάιιειε ηηκή. Σέινο εθόζνλ ζα γίλεη εθρώξεζε ζηε κεηαβιεηή πνπ ζα θξαηήζεη ηνλ επόκελν άξηην ζα αθνινπζήζεη κεηά ηελ εληνιή επηινγήο, ε θαηάιιειε εληνιή εμόδνπ. 12
Αλγόριθμος Επόκελνο Γράψε "Δώζηε έλα αθέξαην αξηζκό" Διάβαζε Υ Αν Υ mod 2 = 0 ηόηε Τ Υ + 2 αλλιώς Τ Υ + 1 Τέλος_αν Γράψε "Ο επόκελνο άξηηνο είλαη ν", Τ Τέλος Επόκελνο 13
Παράδειγμα 2.11. Να αλαπηύμεηε αιγόξηζκν ν νπνίνο κε δεδνκέλα ηα κήθε ηξηώλ επζπγξάκκσλ ηκεκάησλ ζα ππνινγίδεη θαη ζα εκθαλίδεη ην εκβαδόλ ηνπ ηξηγώλνπ πνπ κπνξνύλ λα ζρεκαηίζνπλ, κε βάζε ηνλ ηύπν ηνπ Ήξσλα όπνπ η είλαη ε εκηπεξίκεηξνο ηνπ ηξηγώλνπ η = (α + β + γ) / 2 θαη α, β, γ ηα κήθε ησλ επζπγξάκκσλ ηκεκάησλ. 14
ε πεξίπησζε πνπ ηα επζύγξακκα ηκήκαηα δελ κπνξνύλ λα ζρεκαηίζνπλ ηξίγσλν, εκθαλίδεηαη θαηάιιειν κήλπκα. Τπελζπκίδεηαη όηη γηα λα ζρεκαηηζηεί ηξίγσλν ζα πξέπεη ην άζξνηζκα ησλ κεθώλ δύν νπνηνλδήπνηε επζπγξάκκσλ ηκεκάησλ λα είλαη κεγαιύηεξν από ην κήθνο ηνπ άιινπ ηκήκαηνο. 15
Αλγόριθμος Εκβαδό Γράψε "Δώζηε ην κήθνο ηεο πξώηεο πιεπξάο" Διάβαζε α Γράψε "Δώζηε ην κήθνο ηεο δεύηεξεο πιεπξάο" Διάβαζε β Γράψε "Δώζηε ην κήθνο ηεο ηξίηεο πιεπξάο" Διάβαζε γ 16
Αν α + β > γ και β + γ > α και γ + α > β ηόηε η (α + β + γ) / 2 Εκβ Σ_Ρ(η * (η - α) * (η - β) * (η - γ)) Γράψε "Σν ηξίγσλν έρεη εκβαδό", Εκβ αλλιώς Γράψε "Δελ ζρεκαηίδεηαη ηξίγσλν" Τέλος_αν Τέλος Εκβαδό 17
Άζκηζη 25 ζελ 52 ε έλαλ ινγαξηαζκό ηξαπέδεο παξέρεηαη θιηκαθσηά ην αθόινπζν επηηόθην: Να αλαπηύμεηε αιγόξηζκν ν νπνίνο ζα δηαβάδεη ην πνζό ρξεκάησλ πνπ έρεη ν ινγαξηαζκόο θαη ζα ππνινγίδεη θαη ζα εκθαλίδεη ηνλ ηόθν πνπ ζα ιάβεη κεηά από έλα έηνο, θαζώο θαη ην ζπλνιηθό πνζό ρξεκάησλ καδί κε ηνλ ηόθν. 18
Δηαβάδνληαο πξνζεθηηθά ηελ εθθώλεζε παξαηεξνύκε ηα εμήο: Υξεηάδεηαη κε εληνιή εζόδνπ λα εθρσξεζεί ην πνζό ησλ ρξεκάησλ ηεο θαηάζεζεο ζε θαηάιιειε κεηαβιεηή. Αο ηελ νλνκάζνπκε ΠΚ. Πξέπεη λα ιεθζεί κία απόθαζε αλ ην πνζό είλαη κεγαιύηεξν ή ίζν ηνπ 5000 ή όρη. Ο ζπγθεθξηκέλνο έιεγρνο ζα γίλεη κε ρξήζε ζύλζεηεο εληνιήο επηινγήο. Αλάινγα κε ηελ ηηκή ηνπ πνζνύ ζα πξέπεη λα ππνινγηζηεί θαηάιιεια θαη ν ηόθνο (κεηαβιεηή ΣΚ). Γηα ηνλ ππνινγηζκό ηνπ ηόθνπ ν νπνίνο γίλεηαη θιηκαθσηά κπνξεί λα ρξεζηκνπνηεζεί ην ζρεδηάγξακκα πνπ αθνινπζεί. 19
0 ΠΚ 5000 ΠΚ <= 5000 1.8% 1.5% ΣΚ ΠΚ * 1,8 / 100 0 5000 ΠΚ ΠΚ > 5000 1.8% 1.5% ΣΚ 5000 * 1,8 / 100 + (ΠΚ - 5000) * 1,5 / 100 20
Αλγόριθμος Σξάπεδα Γράψε "Δώζηε ην πνζό ηεο θαηάζεζεο" Διάβαζε ΠΚ Αν ΠΚ 5000 ηόηε ΣΚ ΠΚ * 1.8 / 100 αλλιώς ΣΚ 5000 * 1.8 / 100 + (ΠΚ - 5000) * 1.5 / 100 Τέλος_αν 21
Π ΠΚ + ΣΚ Γράψε "Ο ηόθνο είλαη", ΣΚ Γράψε "Σν ζπλνιηθό πνζό καδί κε ηνλ ηόθν είλαη ", Π Τέλος Σξάπεδα 22
Απιή θαη ύλζεηε Επηινγή Να αζρνιεζείηε κε ηηο δξαζηεξηόηεηεο ηνπ 2 νπ θύιινπ εξγαζίαο. 23