Adibidez, jarraian erakusten den Menua1.pas programan eragiketa aritmetikoak egiten dira bi zenbakiekin eta programaren exekuzio bakoitzean cAukera aldagaiaren bitartez eragiketa hautatzen da. Aukera asko direnean azpimarratzekoa da CASE-OF baldintzazko aginduaren komengarritasuna. CASE-OF baldintzazko aginduaren ordez IF-THEN aginduak jari beharko lirateke, baina CASE-OF baldintzazko agindua oso trinkoa eta garbia delako programaren irakurgarritasuna handia izango da.
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 | program AukeraMenuBatezHautatzen_1; uses crt; var cAukera, cItxoin : char ; rEragigai1, rEragigai2 : real ; begin clrscr; write ( 'Zenbaki errealekin lan eginez, lehenengo eragigaiaren balioa eman: ' ); readln(rEragigai1); write ( 'Zenbaki errealekin lan eginez, bigarren eragigaiaren balioa eman: ' ); readln(rEragigai2); writeln ( '============Menua============' ); writeln ( ' + Batura lortzeko' ); writeln ( ' - Kendura lortzeko' ); writeln ( ' * Biderkadura lortzeko' ); writeln ( ' / Zatiketa burutzeko' ); writeln ( '=============================' ); write ( ' Zure aukera: ' ); readln(cAukera); case cAukera of '+' : writeln (rEragigai1: 0 : 2 , ' + ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1+rEragigai2: 0 : 2 ); '-' : writeln (rEragigai1: 0 : 2 , ' - ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1-rEragigai2: 0 : 2 ); '*' , 'x' , 'X' : writeln (rEragigai1: 0 : 2 , ' * ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1*rEragigai2: 0 : 2 ); '/' : writeln (rEragigai1: 0 : 2 , ' / ' , rEragigai2: 0 : 2 , ' = ' , rEragigai1/rEragigai2: 0 : 2 ); else writeln ( 'Eragiketa gaizki aukeratuta!' ); end ; cItxoin := readkey; writeln (cItxoin); end . |
Menua1.pas programaren azalpenak:
- crt unitate bat da eta bere barnean dago readkey funtzioaren kodifikazioa eta clrscr prozeduraren kodifikazioa
- uses crt bitartez adierazten dugu linker programak nola lan egin behar duen
- clrscr prozedurak pantaila garbitzen du
- readkey funtzio bat da eta programan erabili ahal izateko crt unitatea beharrezkoa da, tekla bat sakatzean berari dagokion karakterea
- cItxoin:=readkey programa gelditzen da tekla bat sakatu arte, tekla bat sakatzean berari dagokion karakterea cItxoin aldagaian gordeko da
- readkey funtzioari esker cItxoin aldagaian karakteren bat gordetzen da, baina cItxoin aldagaiaren balioa ez da erabiltzen eta konpiladoreak horren abisua ematen du, "warning" hori kentzeko aski da writeln(cItxoin)bat egitea
Menua1.pas programatik abiatuta idatzi Menua2.pas programa, zeinetan programaren exekuzio bakoitzeko eragiketak behin baino gehiagotan egin daitezkeen eta programa bukarazteko aukera berri bat dagoen:
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 | program AukeraMenuBatezHautatzen_2; uses crt; 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