3. gyorstalpaló témánk a ciklusok, van is C-ben 3 féle.
Mint minden magas szintű programozási nyelvben a C-ben is vannak olyan utasítások, melyek egy feltételtől függően többször is végrehajtják ugyanazt az utasítást, vagy utasítás blokkot.
I. while ciklus:
Felépítése:
while (kifejezés)
utasítás
több utasítás esetén:
while (kifejezés)
{
utasítás1
utasítás2
.
.
utasításn
}
A while ciklus elől tesztelős ciklus, mely annyit tesz hogy a ciklusmagba csak akkor lépünk be ha a feltétel igaz, és az utasításokat is addig hajtjuk végre amíg a feltétel igaz ( az az nullától különböző szám, fránya C meg a matematika:) ).
Első példaprogram:
#include<stdio.h>
int main()
{
long int osszeg = 0;
int i=1, n;
printf("Meddig osszegezzem a szamokat: ");
scanf("%d",&n);
while( i <= n )
{
osszeg+=i;
i++;
}
printf("Az elso %d szam osszege: %u\n",n,osszeg);
return 0;
}
Nézzünk meg még egy rövidebb változatot:
#include<stdio.h>
int main()
{
long int osszeg = 0;
int n;
printf("Meddig osszegezzem a szamokat: ");
scanf("%d",&n);
printf("Az elso %d szam osszege: ",n);
while( n )
{
osszeg+=n--;
}
printf("%u\n",osszeg);
return 0;
}
Fent két programunk ugyan azt az eredményt adja ugyanarra a bemenetre csak a második kicsit tömörebb.
Program lényege: bekér egy számot és 1-től eddig a számig összeadja a közbülső számokat.
Pl.:
Meddig osszegezzem a szamokat: 5
Az elso 5 szam osszege: 15 // 1+2+3+4+5
II. for ciklus:
Felépítése:
for ( kifejezés1 ; kifejezés2 ; kifejezés3 )
utasítás
Több elem esetén hasonlóan a while ciklushoz az utasítások kapcsoszárójel közé kerülnek.
A kifejezés1-ben állítjuk be a ciklusváltozó kezdő értékét, a kifejezés kettőben a ciklusba való lépés feltételét, ez a leggyakrabban egy logikai kifejezés, a kifejezés3-ban pedig léptetjük a ciklusváltozót.
A for csiklus mindaddig fut míg a fetétel ( kifejezés2 ) hamissá nem válik.
Példaprogramunk ugyan az mint az előzőnél csak for ciklussal megvalósítva:
#include<stdio.h>
int main()
{
long int osszeg = 0;
int i, n;
printf("Meddig osszegezzem a szamokat: ");
scanf("%d",&n);
for( i = 1 ; i <= n ; i++)
osszeg+=i;
printf("Az elso %d szam osszege: %u\n",n,osszeg);
return 0;
}
Ismételten rövidebben:
#include<stdio.h>
int main()
{
long int osszeg = 0;
int n;
printf("Meddig osszegezzem a szamokat: ");
scanf("%d",&n);
printf("Az elso %d szam osszege: ",n);
for( ; n ; osszeg+=n--)
;
printf("%u\n",osszeg);
return 0;
}
Fent két programunk ugyan azt az eredményt adja ugyanarra a bemenetre csak a második kicsit tömörebb.
Program lényege: bekér egy számot és 1-től eddig a számig összeadja a közbülső számokat.
Meddig osszegezzem a szamokat: 5
Az elso 5 szam osszege: 15 // 1+2+3+4+5
III. do-while ciklus:
Felépítése:
do
{
utasítás
}
while (kifejezés)
A ciklusba itt is addig lépünk, amíg a kifejezés értéke nem 0, logikai kifejezés esetén amíg a kefejezés igaz.
Alapvetően abban különbözik az előző két ciklustól, hogy itt a ciklusmag utasítása legalább egyszer végrehajtódik.
#include<stdio.h>
int main()
{
long int osszeg = 0;
int n;
printf("Meddig osszegezzem a szamokat: ");
scanf("%d",&n);
printf("Az elso %d szam osszege: ",n);
do
{
osszeg+=n--;
}
while( n );
printf("%u\n",osszeg);
return 0;
}
Program lényege: bekér egy számot és 1-től eddig a számig összeadja a közbülső számokat.
Meddig osszegezzem a szamokat: 5
Az elso 5 szam osszege: 15 // 1+2+3+4+5
Ciklusoknál is érvényesek a logikai kifejezések kiértékelési sorrendjei.