2024(e)ko apirilaren 8(a), astelehena

35. Ariketa: unitateak (IV)

ZER DAKIDAN:
Unitate bat ezin daiteke exekutatu. Unitate batek bi zati ditu: INTERFACE zati publikoa eta IMPLEMENTATION zati pribatua. Pascal lengoaiak unitate desberdinak eskaintzen dizkio gure bezero-programari, adibidez crt unitatea (non clrscr prozedura garatuta dagoen).



ZER IKASIKO DUDAN:
Unitate batek eskaintzen duen azpiprogramaren izena, guk geuk, gure bezero-programan erabiltzen badugu zer gertatzen da? Konpilazio errorerik sortuko da? Konpilazio errorerik ez bada, bietarik zein azpiprograma exekutatuko da? Bezero-programan idatzitakoa ala unitatean lehendik garaturik zegoena?





crt UNITATEAREN clrscr PROZEDURA, ETA abs FUNTZIO ESTANDARRA

Dakigunez, crt unitateari esker clrscr prozedura erabil dezakegu. Badakigu ere abs funtzio estandarra lengoaiaren oinarrizko azpiprograma dela, eta funtzio hori aplikatzeko ez dela unitaterik deklaratu behar.




Ariketa__35_IV.pas BEZERO-PROGRAMA

Jarraian erakusten den programa birritan exekutatu. Lehenik iruzkina mantenduz (bezero-programaren clrscr prozedura eta abs funtzioa indargabeturik). Eta ondoren iruzkina kenduz (bezero-programaren clrscr prozedura eta abs funtzioa erabilgarri direlarik):  

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
{--------------------------------------------------------------
  Programaren helburua: unitateetako azpiprogramak "estaltzen"
 --------------------------------------------------------------}
 
program Ariketa__35_IV;
uses
   crt;
 
(*
procedure clrscr;
begin
   writeln;
   writeln;
   writeln;
   writeln('KUKU!!!');
   writeln;
end;
 
function abs(iOsoa: integer): integer;
begin
   abs := 2*iOsoa;
end;
*)
 
{ ---------------------programa nagusia--------------------- }
var
   iZbk: integer;
begin
   writeln('Programaren hasierako mezua');
   writeln('---------------------------');
   write('RETURN tekla sakatu exekuzioarekin jarraitzeko... ');
   readln;
 
   clrscr;
 
   writeln;
   write('Zenbaki oso bat eman: ');
   readln(iZbk);
   writeln;
   writeln('iZbk=', iZbk, 'abs(iZbk)=':20, abs(iZbk));
 
   writeln;
   writeln;
   writeln;
   writeln('Programaren bukaerako mezua');
   writeln('---------------------------');
   write('EDOZEIN tekla sakatu exekuzioa amaitzeko... ');
   repeat until keypressed;
end.

Unitate batek eskaintzen duen azpiprogramaren izena, guk geuk, gure bezero-programan erabiltzen badugu zer gertatzen da? Adibidez, guk clrscr edo abs programatzen baditugu.

Galdera hauei erantzun:

  • Konpilazio errorerik sortuko da?
  • Konpilazio errorerik ez bada, bietarik zein azpiprograma exekutatuko da? Bezero-programan idatzitakoa ala unitatean garaturik zegoena?
Bezero-programan clrscr prozedura eta abs funtzioa iruzkinduta mantentzean, crt unitatearen clrscr prozedurak lan egingo du eta abs funtzio estandarrak lan egingo du (batek pantaila garbituko du, eta besteak sarrerako zenbakiaren positiboa itzuliko du)
 
Bezero-programan clrscr prozedura eta abs funtzioa indarrean jartzean, crt unitateko clrscr prozedura "estalirik" geratzen da eta abs funtzio estandarra ere "ordezkaturik" geratzen da. Ondorioz, batek mezu bat idatziko du eta besteak sarrerako zenbakiaren doblea itzuliko du
 

iruzkinik ez:

Argitaratu iruzkina

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.