Fibonacciren zenbakiak: Leonardo de Pisak, Fibonacci izenez ere ezagutzen den XIII. mendeko matematikari italiarrak, Europan deskribatu zuen segida hau (komenigarria da aipatzea segida hori matematikari indiar batzuek deskribatu zutela K.a. 200. urtean). Aplikazio ugari ditu konputazio-zientzietan, matematikan eta jokoen teorian. Konfigurazio biologikoetan ere agertzen da, hala nola zuhaitzen adarretan, hostoetan, koniferoen pinaburuen konfigurazioan, molusku batzuen oskolaren egitura espiralean dago, untxien ugalketan eta DNAk forma organiko konplexuen hazkundea kodifikatzeko moduan.
Hona hemen Fibonacciren zenbakien adibide batzuk:
Ondorengoa da Fibonacciren segidaren adierazpen orokorra:
Beraz, Fibonacciren sekuentzia honako hau da:
Leonardo Pisano, Fibonacci, ezagutzeko artikulu bat "Fibonacci, el matemático que se puso a contar conejos y descubrió la secuencia divina" eta hemen Fibonacci-ren sekuentziaren adibide bat naturan:
Ariketa:
Teklatuaren bitartez N kopuru oso bat irakurri eta Fibonacci-ren lehen N zenbakiak pantailaratu. Fibonacci-ren lehen zenbakia 0 da, Fibonacci-ren bigarren zenbakia 1 da, eta hirugarren zenbakia lortzeko aurreko biak batuko dira, horregatik Fibonacci-ren hirugarren zenbakia 1 da, laugarren zenbakia 2 izango da, bosgarrena 3, ...
Beraz, Fibonacci-ren sekuentzia honako hau da:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Programaren exekuzio batean N kopurua 9 balitz, bere irteera 0, 1, 1, 2, 3, 5, 8, 13, 21, izango litzateke.
Fibonacci-ren sekuentziako bi zenbaki hartuz eta zatiketa eginez, urrezko zenbakia edo jainkozko proportzioa edo urrezko proportzioa edo zerutiar zenbakia lortzen da:
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:
{ 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.Lehen programaren irteera hau izan daiteke:
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:
{ 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.Bigarren programaren irteera hau izan dadila, ikusi kalkuluak errepikatzen direla e edo E erantzuten den bitartean eta irteera gauzatzen da b edo B erantzutean:
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.
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. |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.