2024(e)ko otsailaren 28(a), asteazkena

12. Ariketa: hainbat aukeren menu bat

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:
  1. Programa osoa prozesu errepikakor bat da, eta errepikapenak mozteko menuaren aukera egokia hautatu behar da (adibidean A balioa)
  2. Begiztaren iterazio bakoitzeko, pantaila garbitu clrscr prozeduraren bitartez eta bost aukeren deskribapenak erakutsi
  3. Begiztaren iterazio bakoitzeko, CHAR datu-motako cAukera aldagaiari balioa teklatuz eman era kontrolatuan (teklatuaren karaktere bat irakurtzeko readkey funtzioa oso egokia da)
  4. Irakurri den karaktere horren arabera CASE-OF egiturak kudeatuko du programaren fluxoa eta aukera horri dagozkion kalkuluak burutuko dira
  5. Begiztaren iterazio bakoitzeko, programaren exekuzioa gelditu readkey funtzioaren bitartez tekla bat sakatu arte, horrela kalkuluen emaitzak ikusi ahal izango dira
clrscr prozedura estandarra eta readkey funtzio estandarra erabili ahal izateko, beharrezkoa da crt unitatea dekalaratzea uses blokean.



ESKATZEN DEN PROGRAMA

Programa honek goiko algoritmoa aplikatzen du:

{ 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.