ZER DAKIDAN: CASE-OF baldintzazko egitura ikasi nuen aukera anitzak antolatzeko. ZER IKASIKO DUDAN: Menu bat programa batean nola egiten den ikasiko dut, erabiltzaileak gogoko duen hautapena CHAR datu-motako aldagai batean irakurriko dut. Bide batez clrscr prozedura ikasiko dut ere. |
6. Ariketa: aukera anitzen arteko hautapena artikulua gogora ekarriz, programaren fluxua bideratzeko CASE-OF agindua erabilten da aukerak hiru edo gehiago direnean.
Jarraian erakusten den menua programa nagusian kokaturik dago, baina jakin ezazu hori horrela ez dela egingo behin azpiprogramen kontzeptua gureganatuko dugunetik aurrera.
Algoritmoa:
- Programa osoa prozesu errepikakor bat da, eta errepikapenak mozteko menuaren aukera egokia hautatu behar da (adibidean A balioa)
- Begiztaren iterazio bakoitzeko, pantaila garbitu clrscr prozeduraren bitartez eta bost aukeren deskribapenak erakutsi
- Begiztaren iterazio bakoitzeko, CHAR datu-motako cAukera aldagaiari balioa teklatuz eman era kontrolatuan (teklatuaren karaktere bat irakurtzeko readkey funtzioa oso egokia da)
- Irakurri den karaktere horren arabera CASE-OF egiturak kudeatuko du programaren fluxoa eta aukera horri dagozkion kalkuluak burutuko dira
- Begiztaren iterazio bakoitzeko, programaren exekuzioa gelditu readkey funtzioaren bitartez tekla bat sakatu arte, horrela kalkuluen emaitzak ikusi ahal izango dira
ESKATZEN DEN PROGRAMA
Programa honek goiko algoritmoa aplikatzen du:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | { Aukera modu kontrolatuan irakurtzen delako case-OF aginduak ez du else kasurik behar } program Ariketa_12 ; uses crt ; (* clrscr prozedura eta readkey funtzioa erabiltzeko *) var cAukera, cItxoin : char ; rEragigai1, rEragigai2 : real ; begin repeat clrscr ; writeln ( '============Menua============' ) ; writeln ( ' + Batura lortzeko' ) ; writeln ( ' - Kendura lortzeko' ) ; writeln ( ' * Biderkadura lortzeko' ) ; writeln ( ' / Zatiketa burutzeko' ) ; writeln ( ' A Programa amaitu' ) ; writeln ( '=============================' ) ; repeat write ( ' Zure aukera: ' ) ; cAukera := readkey ; cAukera := upcase(cAukera) ; writeln (cAukera) ; (* readkey funtzioak ez du irakurritako tekla erakusten *) until (cAukera = '+' ) or (cAukera = '-' ) or (cAukera = '*' ) or (cAukera = 'X' ) or (cAukera = '/' ) or (cAukera = 'A' ) ; writeln ; case cAukera of '+' : begin write ( 'Zenbaki errealekin lan eginez, lehenengo batugaiaren balioa eman: ' ) ; readln (rEragigai1) ; write ( 'Zenbaki errealekin lan eginez, bigarren batugigaiaren balioa eman: ' ) ; readln (rEragigai2) ; writeln (rEragigai1: 0 : 2 , ' + ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1+rEragigai2: 0 : 2 ) ; end ; '-' : begin write ( 'Zenbaki errealekin lan eginez, kenkizunaaren balioa eman: ' ) ; readln (rEragigai1) ; write ( 'Zenbaki errealekin lan eginez, kentzailearen balioa eman: ' ) ; readln (rEragigai2) ; writeln (rEragigai1: 0 : 2 , ' - ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1-rEragigai2: 0 : 2 ) ; end ; '*' , 'X' : begin write ( 'Zenbaki errealekin lan eginez, lehenengo biderkagaiaren balioa eman: ' ) ; readln (rEragigai1) ; write ( 'Zenbaki errealekin lan eginez, bigarren biderkagaiaren balioa eman: ' ) ; readln (rEragigai2) ; writeln (rEragigai1: 0 : 2 , ' * ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1*rEragigai2: 0 : 2 ) ; end ; '/' : begin write ( 'Zenbaki errealekin lan eginez, zatikizunaren balioa eman: ' ) ; readln (rEragigai1) ; repeat write ( 'Zenbaki errealekin lan eginez, zatitzailearen balioa eman: ' ) ; readln (rEragigai2) ; until rEragigai2 <> 0.0 ; writeln (rEragigai1: 0 : 2 , ' / ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1/rEragigai2: 0 : 2 ) ; end ; 'A' : begin writeln ( 'Programatik irtetera goaz!' ) ; end end ; cItxoin := readkey ; (* emaitzak ikusi ahal izateko itxaron *) writeln (cItxoin) ; (* konpilazio abisua kentzeko *) until cAukera= 'A' ; end . |
|
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.