Leonardo Pisano (Pisa, Italia, 1170-1250), Leonardo Bonacci, Leonardo Fibonacci edo Fibonacci moduan ezaguna, Italiar matematikaria izan zen, Erdi Aroko ezagunetarikoa. Ezaguna da batez ere bi aurkikuntzengatik:
|
Fibonacciren sekuentziako lehen zenbakia 0 da, Fibonacci-ren bigarren zenbakia 1 da, eta hirugarren zenbakia lortzeko aurreko biak batuko dira, horregatik Fibonacciren hirugarren zenbakia 1 da, laugarren zenbakia 2 izango da, bosgarrena 3, ...
Beraz, Fibonacciren sekuentzia honako hau da: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, ...Ondorengoa da Fibonacciren segidaren adierazpen orokorra:
|
Fibonacciren zenbakiak grafikoki adieraztean honako blokeen sorta eta espirala lortzen dira:
Fibonacciren sekuentziako bi zenbaki hartuz eta zatiketa eginez, urrezko zenbakia edo jainkozko proportzioa edo urrezko proportzioa edo zerutiar zenbakia lortzen da:
Fibonacciren sekuentzia sarritan agertzen da naturan. Izan ere, naturan hazkundea gertatzen denean Fibonacciren sekuentziaren arabera ematen da:
Eskatzen den programa (prozedura bat eta funtzio bat)
Programa bakarra izan arren programak bi zati izango ditu. Lehen zatian prozedura bati dei egingo zaio eta programaren bigarren zatian funtzio bati dei egingo zaio.Programaren prozedura eta programaren funtzioa jarraian deskribatzen dira eta azpiprograma bakoitzaren kodea falta da. Ikaslearen lana da azpiprogramen kodeak bukatzea eta programaren emaitzak ulertzea.
Hau garrantzitsua da
Ez ahaztu, edozein ariketa programatzerakoan beti Programa Nagusitik hasiko garela, eta Programa Nagusia bukatzean jarraituko dugula azpiprograma guztien kodea idazten. Horregatik, bi adibide hauetan Programa Nagusiak ematen dira eta eskatzen da garatzea bakoitzari dagokion azpiprograma. |
Lehen zatia. Fibonacciren sekuentzia osatuko duten zenbakien iZenbat kopurua teklatuz irakurri programa nagusian eta prozedura batek ondoko taularen pantailaraketa egin dezala FOR-DO egitura bat erabiliz, prozeduraren izena FibonaccirenSekuentziaPantailaratu izan daiteke.
Hona hemen kodifikazioa non programa nagusia ematen den eta prozedura falta den:
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 | { iKopurua (3 eta 24 artekoa) teklatuz irakurri eta Fibonacci zenbakien } { sekuentziaren horrenbeste elementu pantailaratuko dira 0-tik hasita } program FibonacciSekuentzia_prozedura ; const (* integer-ekin muga 23 da *) ZENBAKIKOPURUMAX = 23 ; (* longint-ekin muga 47 da *) { prozeduraren kodea hemen hasten da } procedure FibonaccirenSekuentziaPantailaratu... { prozeduraren kodea hemen amaitzen da } { ---------------------------------PROGRAMA NAGUSIA--------------------------------- } var iKopurua : integer ; begin writeln ; writeln ; repeat writeln ( 'Fibonacci zenbakien kopurua eman (3 eta ' , ZENBAKIKOPURUMAX, ' artekoa)' ) ; write ( 'eta 0-tik hasita Fibonacciren segida erakutsiko da: ' ) ; readln(iKopurua) ; until (iKopurua >= 3 ) and (iKopurua <= ZENBAKIKOPURUMAX) ; FibonaccirenSekuentziaPantailaratu(iKopurua) ; writeln ; write ( 'Programa bukatu da, irteteko RETURN sakatu' ) ; readln ; end . |
Programaren lehen zatiko irteera bat hau izan daiteke:
Bigarren zatia. Prozesu errepikakor bat izango da eta bertatik irteteko b edo B erantzun beharko da, bestela programa nagusian iMuga teklatuz irakurriko da eta funtzio batek kalkulatuko du 0-tik hasita zenbat Fibonacciren zenbaki dauden. Horretarako, WHILE-DO egitura bat edo REPEAT-UNTIL egitura bat erabiliko da fniFibonacciZenbakienKopuruaKalkulatu izeneko funtzioan.
Hona hemen kodifikazioa non programa nagusia ematen den eta funtzioa falta den:
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 | { iMuga teklatuz irakurri eta Fibonacci zenbakien kopurua kalkulatu } program FibonacciKopurua_funtzioa ; const AZKENMUGA = 28000 ; { funtzioaren kodea hemen hasten da } function fniFibonacciZenbakienKopuruaKalkulatu... { funtzioaren kodea hemen amaitzen da } { ---------------------------------PROGRAMA NAGUSIA--------------------------------- } var iMuga, iKopurua : integer ; cErantzuna : char ; begin writeln ; writeln ; repeat repeat write ( 'Eman azken muga (0 eta ' , AZKENMUGA, ' artekoa): ' ) ; readln(iMuga) ; until (iMuga >= 0 ) and (iMuga <= AZKENMUGA) ; iKopurua := fniFibonacciZenbakienKopuruaKalkulatu(iMuga) ; writeln ( 'Emaitza, Fibonacci zenbakien kopurua ------> ' , iKopurua) ; write ( 'Amaitu nahi duzu? (B/E): ' ) ; repeat readln(cErantzuna) ; cErantzuna := upcase(cErantzuna) ; until (cErantzuna = 'B' ) or (cErantzuna = 'E' ) ; writeln ; until cErantzuna = 'B' ; write ( 'Programa bukatu da, irteteko RETURN sakatu' ) ; readln ; end . |
Programaren bigarren zatiko irteera bat hau izan daiteke:
Balizko emaitzaren iturburu-programa hau izan daiteke... laster argitaratuko da
Goiko bi programa horiek bukatu ondoren, saiatu zaitez bi ariketak programa bakar batean biltzen, hots, funtzionalitate guztiak betetzen dituen Programa Nagusi berria idatzi eta bi azpiprogramen kodea inportatu.
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.