2023(e)ko martxoaren 15(a), asteazkena

8. astea | menu bat azpiprogramekin



Programa bakar batek eginkizun desberdinak bildu behar dituenean menu bat erabil daiteke. Adibide honetan hiru aukerako menu bat erakusten da, non hirugarren aukerari esker programa bukaraziko da.


{
Menuaren aukerak hautatzeko funtzio bat.
Aukera bakoitzaren eginkizuna burutzeko prozedura bana.
}
program MenuaAzpiprogramaz;
uses
crt;

{ Menuaren aukera erakutsi eta hautapena aukeratu }
function fncMenua: char;
var
cHautapena: char;
begin
writeln('===============MENUA================');
writeln(' A) alfabeto zatia diagonalean');
writeln(' B) biderkatzeko taula pantailaratu');
writeln;
writeln(' I) irten');
writeln('====================================');
repeat
write(' Zure aukera: ');
cHautapena := readkey;
writeln(cHautapena);
cHautapena := upcase(cHautapena);
until (cHautapena = 'A') or (cHautapena = 'B') or (cHautapena = 'I');

fncMenua := cHautapena;
end;

{ A-tik hasita alfabetoa diagonalki pantailaratu }
procedure DiagonalaPantailanIdatzi(cLetra: char);
var
cKont: char;
iNon: integer;
begin
writeln;
iNon := 5;
for cKont:='A' to cLetra do
begin
writeln(cKont:iNon);
iNon := iNon + 2;
end;
end;

procedure TaulaPantailaratu(iZbk: integer);
var
k: integer;
begin
writeln(iZbk,' zenbakiaren biderkatzeko taula:');
for k:=1 to 10 do
begin
writeln(k:10, ' x ', iZbk:2, ' = ', k*iZbk:3);
end;
writeln;
end;


{ ----------------------PROGRAMA NAGUSIA---------------------- }
var
cAukera, cLetra, cItxoin: char;
iZbk: integer;
begin
repeat
clrscr;

cAukera := fncMenua;
writeln;

case cAukera of
'A': begin
repeat
write('Azken letra eman: ');
cLetra := readkey;
writeln(cLetra);
cLetra := upcase(cLetra);
until (cLetra >= 'A') and (cLetra <= 'Z');
DiagonalaPantailanIdatzi(cLetra);
end;
'B': begin
repeat
write('1 eta 10 arteko zenbaki osoa eman: ');
readln(iZbk);
until (iZbk >= 1) and (iZbk <= 10);
TaulaPantailaratu(iZbk);
end;
'I': begin
writeln('Programa amaitzera doa.');
end ;
end; (* case-rena *)

writeln;
write('Edozein tekla sakatu aurrera egiteko...');
cItxoin := readkey; (* emaitzak ikusi ahal izateko itxaron *)
writeln(cItxoin); (* konpilazio abisua kentzeko *)
until cAukera='I';
end.



 

iruzkinik ez:

Argitaratu iruzkina