| 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