Αιγόξηζκνη 2.2.7.3 Γνκή επηινγήο Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ 1
Πνιιαπιή Δληνιή Δπηινγήο Αν ζπλζήθε_1 ηόηε εληνιέο_1 αλλιώς_αν ζπλζήθε_2 ηόηε εληνιέο_2... αλλιώς_αν ζπλζήθε_λ ηόηε εληνιέο_λ αλλιώς εληνιέο_αιιηώο Τέλος_αν 2
Πνιιαπιή Δληνιή Δπηινγήο Αλ ε ζπλζήθε_k είλαη αιεζήο, εθηεινύληαη νη εληνιέο_k θαη ε ζπλέρεηα είλαη ε επόκελε εληνιή από ην Τέινο_αλ. Δθόζνλ θακία ζπλζήθε δελ είλαη αιεζήο, ηόηε εθηεινύληαη νη εληνιέο_αιιηώο. Οη εληνιέο_αιιηώο ρξεζηκνπνηνύληαη θαηά πεξίζηαζε. Σεκεηώλεηαη όηη, αλ ζε κηα πνιιαπιή εληνιή επηινγήο ππάξρνπλ πάλω από κία ζπλζήθεο αιεζείο, ηόηε εθηεινύληαη νη εληνιέο πνπ αλήθνπλ ζηελ πξώηε αιεζή ζπλζήθε θαηά ζεηξά. 3
Πνιιαπιή Δληνιή Δπηινγήο Παράδειγμα 2.12 ζελ 37 Τν όδνλ (Ο 3 ) απνηειεί έλαλ από ηνπο ξύπνπο πνπ πξνθαινύλ κόιπλζε ζηελ αηκόζθαηξα. Σε πεξηπηώζεηο πνπ ν ξύπνο απηόο μεπεξάζεη ηα 300 κg/m 3 ηόηε πξέπεη λα ιεθζνύλ κέηξα. Να αλαπηπρζεί αιγόξηζκνο ν νπνίνο ζα δηαβάδεη ηελ ηηκή ηνπ Ο 3 θαη ζα εθηππώλεη ην αληίζηνηρν κήλπκα ζύκθωλα κε ηνλ παξαθάηω πίλαθα: Δπηπιένλ, ζε πεξίπηωζε πνπ έρνπλ μεπεξαζηεί ηα όξηα, ζα εθηππώλεη θαηά πόζν ηα μεπέξαζε. 4
Πνιιαπιή Δληνιή Δπηινγήο Σην ζπγθεθξηκέλν παξάδεηγκα γίλεηαη θάπνηνο ππνινγηζκόο θαη εκθαλίδεηαη έλα ζπγθεθξηκέλν κήλπκα κε βάζε αλ ε ηηκή πνπ εηζάγεηαη αλήθεη ζε θάπνην αξηζκεηηθό δηάζηεκα. Τα αξηζκεηηθά δηαζηήκαηα είλαη ηα (0, 250] (250, 300] (300, 500] (500, + ) Θα πξέπεη ινηπόλ λα δεκηνπξγήζνπκε ηηο θαηάιιειεο ζπλζήθεο ώζηε αλάινγα κε ην δηάζηεκα πνπ αλήθνπλ νη ηηκέο λα εθηειεζηνύλ νη θαηάιιειεο εληνιέο. 5
Πνιιαπιή Δληνιή Δπηινγήο Μπνξεί θάπνηνο λα ειέγμεη αλ αλήθεη ε ηηκή εηζόδνπ ζε θάπνην δηάζηεκα παίξλνληαο ηα δηαζηήκαηα κε ηε ζεηξά, είηε από ην πξώην πξνο ην ηειεπηαίν ή θαη ην αληίζηξνθν. Αθνινπζνύλ δύν πινπνηήζεηο. Πξνζνρή πξέπεη λα είκαζηε ζίγνπξνη όηη ε ηηκή αλήθεη θάζε θνξά ζην θαηάιιειν δηάζηεκα. 6
Πνιιαπιή Δληνιή Δπηινγήο Αλγόριθμος Όδνλ1 Διάβαζε η Αν η > 250 και η 300 ηόηε Γράψε ''Πξνεηδνπνίεζε'' αλλιώς_αν η > 300 και η 500 ηόηε πν η - 300 Εκηύπωζε ''Μέηξα Α'', πν αλλιώς_αν η > 500 ηόηε πν η - 500 Γράψε ''Μέηξα Β'', πν Τέλος_αν Τέλος Όδνλ1 Αλγόριθμος Όδνλ2 Διάβαζε η Αν η > 500 ηόηε πν η - 500 Γράψε ''Μέηξα B'', πν αλλιώς_αν η > 300 ηόηε πν η - 300 Γράψε ''Μέηξα Α'', πν αλλιώς_αν η > 250 ηόηε Γράψε ''Πξνεηδνπνίεζε'' Τέλος_αν Τέλος Όδνλ2 7
Δκθωιεπκέλεο εληνιέο επηινγήο Σε όιεο ηηο πξνεγνύκελεο πεξηπηώζεηο όπνπ αλαθέξεηαη εληνιή ή εληνιέο, ηίπνηα δελ απαγνξεύεη απηέο νη εληνιέο λα είλαη επίζεο εληνιέο επηινγήο. Αλαθεξόκαζηε ηόηε ζε εκθωιεπκέλεο εληνιέο επηινγήο. 8
Δκθωιεπκέλεο εληνιέο επηινγήο Παράδειγμα 2.13. ζελ 38 Αξηζκνκεραλή Να αλαπηπρζεί αιγόξηζκνο, ν νπνίνο: 1. Θα δηαβάδεη πξώηα έλαλ αξηζκό α, ζηε ζπλέρεηα έλαλ από ηνπο ραξαθηήξεο +, -, *, /, αλάινγα κε ηελ πξάμε πνπ ζα εθηειέζεη θαη ηέινο έλαλ αξηζκό β. 2. Θα εθηειεί ηελ αληίζηνηρε πξάμε θαη ζα ηππώλεη ην απνηέιεζκα. Σε πεξίπηωζε πνπ έρεη επηιεγεί ε πξάμε ηεο δηαίξεζεο, ν αιγόξηζκνο πξέπεη λα ειέγρεη αλ ην β είλαη κεδέλ θαη ηόηε λα ηππώλεη ην κήλπκα «Πξνζνρή, δηαίξεζε κε ην κεδέλ» θαη λα νδεγείηαη ζην ηέινο ηνπ. 3. Θα εθηππώλεη ην κήλπκα «Λάζνο πξάμε», αλ γηα ην ραξαθηήξα ηεο πξάμεο δνζεί άιιν ζύκβνιν. 9
Δκθωιεπκέλεο εληνιέο επηινγήο Σην ζπγθεθξηκέλν παξάδεηγκα γίλεηαη εθηέιεζε θάπνηωλ εληνιώλ αλάινγα αλ ε ηηκή εηζόδνπ γηα ηνλ ραξαθηήξα είλαη θάπνηα δηαθξηηή ηηκή. Δπίζεο αλ ε ηηκή εηζόδνπ δελ είλαη έλαο από ηνπο 4 ραξαθηήξεο εκθαλίδεηαη θαηάιιειν κήλπκα. Θα ρξεζηκνπνηεζεί ινηπόλ ε εληνιή πνιιαπιήο επηινγήο. Πξέπεη όκωο λα γίλεη έλαο αθόκε έιεγρνο εθόζνλ ε ηηκή εηζόδνπ γηα ηελ δεύηεξε αξηζκεηηθή ηηκή είλαη κεδέλ ή όρη ζηελ πεξίπηωζε πνπ ν ραξαθηήξαο είλαη ν "/". Θα ρξεζηκνπνηεζεί ε εληνιή ζύλζεηεο επηινγήο. 10
Δκθωιεπκέλεο εληνιέο επηινγήο Αλγόριθμος Αξηζκνκεραλή Διάβαζε α, πξάμε, β Αν πξάμε = ''+'' ηόηε Γράψε α + β αλλιώς_αν πξάμε = ''-'' ηόηε Γράψε α - β αλλιώς_αν πξάμε = ''*'' ηόηε Γράψε α * β 11
Δκθωιεπκέλεο εληνιέο επηινγήο αλλιώς_αν πξάμε = ''/'' ηόηε Αν β 0 ηόηε Γράψε α / β αλλιώς Γράψε ''Πξνζνρή, δηαίξεζε κε ην κεδέλ'' Τέλος_αν αλλιώς Γράψε ''Λάζνο πξάμε'' Τέλος_αν Τέλος Αξηζκνκεραλή 12
Δκθωιεπκέλεο εληνιέο επηινγήο Όζν ν θώδηθαο πνπ γξάθεηαη γίλεηαη πην ζύλζεηνο είλαη πνιύ ζεκαληηθό λα δίλεηαη πξνζνρή ζηε ζηνίρηζε ηωλ εληνιώλ. Δίλαη πνιύ πην εύθνιν γηα θάπνηνλ ηόζν λα δηαβάζεη όζν θαη λα δηνξζώζεη ηνλ θώδηθα εθόζνλ είλαη γξακκέλνο κε ζωζηή ζηνίρηζε. 13
Πνιιαπιή θαη Δκθωιεπκέλεο Άζθεζε 27 ζει 52 14