ZER DAKIDAN: Dagoeneko for, do-while eta while agindu errepikakorra erabili ditut. Baina bakoitza edozein egoeratan erabil baiteke? ZER IKASIKO DUDAN: Prozesu errepikorraren iterazio kopurua ezaguna denean for agindu errepikakorra erabiliko dut. Aldiz, prozesu errepikorraren iterazio kopurua ezezaguna denean, do-while edo while agindu errepikakorrek erabiliko ditut. |
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.
Hauxe da Fibonacciren segidaren adierazpen orokorra:
![]()
Fibonacci-ren sekuentziako bi zenbaki hartuz eta zatiketa eginez, urrezko zenbakia edo jainkozko proportzioa edo urrezko proportzioa edo zerutiar zenbakia lortzen 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:
Goiko azalpenean egiten den bezala, Fibonacci zenbakien iZenbat kopurua teklatuz irakurri eta for egitura erabiliz ondoko taula pantailaratu, programan errepikatzen den prozesua hauxe dela:
for (iKont=3; iKont<=iZenbat; iKont++) { iFiboBerria = iFibo1 + iFibo2; fUrrezkoProportzioa = (float)iFiboBerria / iFibo2; printf("\n %12d %20d %28.7f", iKont, iFiboBerria, fUrrezkoProportzioa); iFibo1 = iFibo2; iFibo2 = iFiboBerria; }Lehen programaren irteera hau izan dadila:
![]() |
Datua 15 izanik lortzen den Fibonacci-ren segida eta Urrezko Proportzioa goiko irudikoak dira |
Aurreko bezalakoa da, hots, Fibonacci-ren sekuentzia pantailaratu nahi da. Baina, programak prozesu errepikakor nagusi bat izango du eta laster ikasiko dugun char datu-motako aldagai batek kontrolatuko du programaren amaitzea. Lehen bezala, iZenbat kopurua teklatuz irakurri eta for egitura erabiliz Fibonacci-ren zenbakiak pantailaratu dira, programan errepikatzen den prozesua hauxe dela:
printf("\n\n 0, 1"); iFibo1 = 0; iFibo2 = 1; for (iKont=3; iKont<=iZenbat; iKont++) { iFiboBerria = iFibo1 + iFibo2; iFibo1 = iFibo2; iFibo2 = iFiboBerria; printf(", %d", iFiboBerria); } printf(".");Kalkuluen errepikapenak egiten dira eta prozesu errepikakorra kontrolatzeko aldagaiaren datu-mota char da (datu-mota berria da guretzat eta laster ikasiko dugu). Bigarren programaren irteera hau izan dadila, ikusi prozesua errepikatzen dela b edo B erantzun arte:
![]() |
Datua 20 izanik lortzen den Fibonacci-ren segida goiko irudikoa da |
Hirugarren programan iZbk teklatuz irakurri eta datu hori Fibonacci-ren segidako zenbaki bat den ala ez aztertu beharko da:
iFibo1 = 0; iFibo2 = 1; iFibo3 = iFibo1 + iFibo2; iIterazio = 3; while (iFibo3 < iZbk) { iFibo1 = iFibo2; iFibo2 = iFibo3; iFibo3 = iFibo1 + iFibo2; iIterazio++; } if (iFibo3 == iZbk) printf("Bai, bada"); else printf("Ez, ez da");Hirugarren programaren irteera hau izan dadila, ikusi kalkuluak errepikatzen direla b edo B erantzun arte:
![]() |
while (iFibo3<iZbk) eteten da iFibo3==iZbk delako |
![]() |
while (iFibo3<iZbk) eteten da iFibo3>iZbk delako |
|
iruzkinik ez:
Argitaratu iruzkina