Programa bat daukagu fniBatuBiEtaGehitu5Gehiago izeneko funtzioari deitzen diona, honako hauek ikusi:
fniBatuBiEtaGehitu5Gehiago funtzioak bi parametro ditu, biak integer datu-motatakoak
fniBatuBiEtaGehitu5Gehiago funtzioaren bi parametroak sarrerakoak dira.
fniBatuBiEtaGehitu5Gehiago funtzioak irteera bakarra du eta integer datu-motatakoa da
fniBatuBiEtaGehitu5Gehiago funtzioari deia egitean esleipen bat idatziko da
fniBatuBiEtaGehitu5Gehiago funtzioaren deia adierazpen aritmetiko batean ager daiteke
fniBatuBiEtaGehitu5Gehiago funtzioaren deia beste azpiprograma baten uneko parametroa izan daiteke
fniBatuBiEtaGehitu5Gehiago funtzioak emaitza itzuliko dio programa nagusiari, emaitza den balio hori itzultzeko fniBatuBiEtaGehitu5Gehiago etiketa erabiliko du
program FaktorialaKalkulatzen ;
function fnliFaktoriala(iZbk:integer) : longint ;
var
k : integer ;
liMetatua : longint ;
begin
liMetatua := 1 ;
for k:=1 to iZbk do
begin
liMetatua := liMetatua*k ;
WriteLn(k, ' ---> ', liMetatua) ;
end ;
fnliFaktoriala := liMetatua ;
end ;
var
liEmaitza : longint ;
iDatua : integer ;
begin
repeat
write('Eman zenbaki osoa: ') ;
readln(iDatua) ;
until iDatua > 0 ;
liEmaitza := fnliFaktoriala(iDatua) ;
writeln(iDatua, '! = ', liEmaitza) ;
readln ;
end.
Programa horretan fnliFaktoriala() funtzioari dei bakar bat egiten zaio, programa nagusian liEmaitza aldagaiari balioa ematen zaio baino lehenago iDatua aldagaiaren balioa teklatuaren bitartez irakurri dugu. fnliFaktoriala() funtzioaren kodifikazioan FOR-DO egitura bat behar dugu eta hura kontrolatzeko k aldagaia behar dugu, faktoriala kalkulatzen duen liMetatua aldagaia beharko dugu ere.
fnliFaktoriala() funtzioak programa nagusiari emaitza itzultzeko fnliFaktoriala etiketa erabili behar da derrigorrez, bestela liMetatua aldagaiak faktorialaren balioa gordeko du baina programa nagusiari ez zaio inolaz ere helduko.
iZenbaki zenbaki baten faktoriala kalkulatzen duen funtzio errekurtsiboa erakusten da jarraian. Faktorialaren kalkulu errekurtsiboa algoritmo honetan oinarritzen da:
iZenbaki! = iZenbaki * (iZenbaki - 1)!
program FaktorialErrekurtsiboa ;
function fnliFaktoriala(iZbk:integer) : longint ;
begin
writeln('Dei errekurtsiboa baino lehen ---> ', iZbk) ;
if iZbk = 1 then
fnliFaktoriala := 1
else
fnliFaktoriala := iZbk * fnliFaktoriala(iZbk - 1) ;
writeln ('Dei errekurtsiboa eta gero ------> ', iZbk) ;
end ;
var
liEmaitza : longint ;
iDatua : integer ;
begin
repeat
write('Eman zenbaki osoa: ') ;
readln(iDatua) ;
until iDatua > 0 ;
liEmaitza := fnliFaktoriala(iDatua) ;
writeln(iDatua, '! = ', liEmaitza) ;
readln ;
end.
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.