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.


Menu bat azpiprogramaz: funtzio bat eta prozedura pare bat
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
{
   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