ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων 5 ο Φύλλο Εργασιών : δοµή επιλογής Η εντολή case ΑΠΑΝΤΗΣΕΙΣ 1. Να γράψετε πρόγραµµα που θα διαβάζει έναν αριθµό (από 1 έως 7) και θα εµφανίζει το όνοµα της ηµέρας που αντιστοιχεί σ αυτόν (1 : Κυριακή. 7 : Σάββατο). Αν ο αριθµός που δίνεται δεν είναι µεταξύ 1 και 7 θα εµφανίζει το µήνυµα : «Λάθος αριθµός». program days(input, output); day: integer; read(day); case day of 1 : writeln('κυριακή'); 2 : writeln(' ευτέρα'); 3 : writeln('τρίτη'); 4 : writeln('τετάρτη'); 5 : writeln('πέµπτη'); 6 : writeln('παρασκευή'); 7 : writeln('σάββατο'); writeln('λάθος αριθµός'). 2. Να γράψετε πρόγραµµα που θα διαβάζει έναν αριθµό (από 1 έως 12) και θα εµφανίζει το όνοµα του µήνα που αντιστοιχεί σ αυτόν. Επιπλέον ανάλογα µε το µήνα θα εµφανίζει και την αντίστοιχη εποχή. Αν ο αριθµός που δίνεται δεν είναι µεταξύ 1 και 12 θα εµφανίζει το µήνυµα : «Λάθος αριθµός». 1
program months(input, output); month: integer; read(month); case month of 1: writeln('ιανουάριος'); writeln('χειµώνας'); 2: writeln('φεβρουάριος'); writeln('χειµώνας'); 3: writeln('μάρτιος'); writeln('άνοιξη'); 4: writeln('απρίλιος'); writeln('άνοιξη'); 5: writeln('μάιος'); writeln('άνοιξη'); 6: writeln('ιούνιος'); writeln('καλοκαίρι'); 7: writeln('ιούλιος'); writeln('καλοκαίρι'); 8: writeln('αύγουστος'); writeln('καλοκαίρι'); 9: writeln('σεπτέµβριος'); writeln('φθινόπωρο'); 10: writeln('οκτώβριος'); writeln('φθινόπωρο'); 11: writeln('νόεµβριος'); writeln('φθινόπωρο'); 12: writeln(' εκέµβριος'); 2
writeln('χειµώνας'); writeln('λάθος');. 3. Να γράψετε πρόγραµµα που να προσοµοιώνει τη λειτουργία της αριθµοµηχανής. Θα διαβάζει µια γραµµή που στην πρώτη θέση θα δίνεται το σύµβολο της πράξης (+,-,*./) και στη συνέχεια θα ακολουθούν δύο αριθµοί µεταξύ των οποίων θα γίνει η πράξη. Να χρησιµοποιήσετε την εντολή case αντί της if όπου χρειάζεται. (άσκηση Ε.7 από Κεφάλαιο 10 4 ο Φύλλο Εργασιών) program calc(input, output);. X1,X2:real; op:char; read(op,x1,x2); if (op = '+') then writeln(x1+x2:0:2) if op = '-' then writeln(x1-x2:0:2) if op = '*' then writeln(x1*x2:0:2) if op = '/' then if X2 <> 0 then writeln(x1/x2:0:2) writeln('error') writeln('no op') 3
4. Να ξαναγράψετε το παρακάτω πρόγραµµα χρησιµοποιώντας την εντολή case αντί της if. program convert(input, output); n,tm5,tm15,tm25:integer; tm5:=5; tm15:=15; tm25:=25; readln(n); if n=5 then tm5:=tm5+1 if n=15 then tm15:=tm15+1 if n=25 then tm25:=tm25+1; writeln(tm5,' ',tm15,' ',tm25);. program convert(input, output); n,tm5,tm15,tm25:integer; tm5:=5; tm15:=15; tm25:=25; readln(n); case n=5 of true: tm5:=tm5+1; false: case n=15 of true: tm15:=tm15+1; false: case n=25 of true: tm25:=tm25+1 writeln(tm5,' ',tm15,' ',tm25). 4
5. Να γράψετε ένα πρόγραµµα που θα διαβάζει την ηλικία ενός ατόµου και θα εµφανίζει το µήνυµα ΨΗΦΙΖΕΙ αν είναι από 18 έως και 70 ή το µήνυµα ΕΝ ΨΗΦΙΖΕΙ διαφορετικά. Να χρησιµοποιήσετε την εντολή case αντί της if όπου χρειάζεται. program psifos(input, output);. a:integer; readln(a); case (a>=18) and (a<=70) of true: writeln('ψηφίζει'); false: writeln(' εν Ψηφίζει') 6. Να ξαναγράψετε τα παρακάτω τµήµατα κώδικα Pascal αντικαθιστώντας τις εντολές if µε εντολές case. if (A+D) < 115 then writeln('proagetai') writeln('aporiptetai'); case (A+B)<115 of true : writeln('proagetai'); false : writeln('aporiptetai'); if kostos > 100 then case kostos > 100 of kostos := 100; true : kostos :=100; if diarkeia > 24 then kostos := kostos+prosaujhsh; 5 case diarkeia > 24 of true : kostos := kostos+prosaujhsh; if (X mod 2) = 0 then case (X mod 2) = 0 of writeln('artios') true : writeln('artios'); false : writeln('peritos'); writeln('peritos') if a > b then case a > b of writeln(a,' megalyteros apo to true : writeln(a,' megalyteros ',b) apo to ',b); {a<=b} false : if a < b then to ',b) case a < b of writeln(a,' mikroteros apo true: writeln(a,' mikroteros apo to ',b); false: writeln(a,' isos me writeln(a,' isos me ',b), b);
if a > 0 then writeln(a,' thetikos') {a<=0} if a < 0 then writeln(a,' arnhtikos') arnhtikos'); writeln('mhden'') case a > 0 of true : writeln(a,' thetikos'); false : case a < 0 of true : writeln(a,' false : writeln('mhden''); 6
7. Να γράψετε πρόγραµµα που να προσοµοιώνει τη λειτουργία της αριθµοµηχανής. Θα διαβάζει µια γραµµή που στην πρώτη θέση θα δίνεται το σύµβολο της πράξης (+,-,*./) και στη συνέχεια θα ακολουθούν δύο αριθµοί µεταξύ των οποίων θα γίνει η πράξη (άσκηση Ε.7 από Κεφάλαιο 10 4 ο Φύλλο Εργασιών) program calc(input, output); X1,X2:real; op:char; read(op,x1,x2); case op of '+' : writeln(x1+x2:0:2); '-' : writeln(x1-x2:0:2); '*' : writeln(x1*x2:0:2); '/' : if X2<>0 then writeln(x1/x2:0:2) writeln('error'); writeln('no operator'). 7