Kihagyás

4. gyakorlat

Téma: Vezérlési szerkezetek

  • Ciklusok
  • Elágazások

Ciklusok

Általános szintax:

ciklus ( ciklusmag ) { ciklustörzs }

for

  • A leggyakrabban használt ciklus
  • Leginkább range loop-hoz használjuk
    • pl. egy tömb elemein iterálunk végig
  • A ciklusmagnak 3 alrésze van

    1. ciklusváltozó (általában i)
    2. futási feltétel a ciklusváltozóra (pl. i < 5)
    3. ciklusváltozó módosítása (pl. i++ vagy i += 10)
    4. A cilusváltozót definiálhatjuk a cikluson kívül
    5. A cilusváltozót a törzsben is módosíthatjuk
    6. A ciklus futását a törzsben is megszakíthatjuk break utasítással
    7. Csinálhatunk vele végtelen ciklust is: for(;;) { utasítások }

Általános szintax:

for
(
    ciklusváltozó;
    futási feltétel a ciklusváltozóra;
    ciklusváltozó módosítása
)
{
    utasítások
}

Példa:

#include <stdio.h>

int main()
{
    // 0-tól 4-ig megy
    for (int i = 0; i < 5; i++)
    {
        printf("%d\n", i);
    }

    // 0-tól 10-ig megy kettesével
    for (int i = 0; i < 11; i += 2)
    {
        printf("%d\n", i);
    }

    // kívül definiált ciklusváltozó
    int alma;
    for (alma = 0; alma < 10; alma++)
    {
        printf("%d\n", alma);
    }

    // egy tömb elemein iterálunk végig
    int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    for (int i = 0; i < 10; i++)
    {
        array[i] += 1;
        printf("%d\n", array[i]);
    }

    return 0;
}

while

  • A ciklus elején ellenőrzi, hogy a ciklusmag állítása igaz-e
  • Általában külső változóra elkövetett feltétel vizsgálatot végzünk
  • Csinálhatunk vele végtelen ciklust is: while (1) { utasások }

Általános szintax:

while ( ciklusfeltétel )
{
    utasítások
}

Példa:

#include <stdio.h>

int main()
{
    int i = 0;
    while (i < 10)
    {
        printf("%d\n", i);
        i++;
    }

    return 0;
}

do-while

  • Ugyanaz, mint a sima while egy különbséggel =>
  • A cilus végén ellenőrzi, hogy a ciklusmag állítása igaz-e
  • Gyakori felhasználása: felhasználói input bekérése és ellenőrzése, amíg az input nem megfelelő
  • Csinálhatunk vele végtelen ciklust is: do { utasítások } while(1)

Általános szintax:

do
{
    utasítások
}
while ( ciklusfeltétel )

Példa:

#include <stdio.h>

int main()
{
    int szam = 0;
    do
    {
        printf("Kérek egy számot 1 és 10 között: ");
        scanf("%d", &szam);
    } while (szam < 0 || szam > 10);

    return 0;
}

Elágazások

if-else

  • Általános célú elágazás
  • A kapocszárójelek elhagyhatóak, ha csak egy utasítást tartalmaz (nem ajánlott)

Általános szintax:

if ( feltétel 1 )
{ utasítások }
else if ( feltétel 2 ) // opcionális
{ utasítások }
else if ( feltétel 3 ) // opcionális
{ utasítások }
else // opcionális
{ utasítások }

Példa:

int a = 10;
if (a < 0)
{
    printf("Negatív\n");
}
else if (a >= 0 && a <= 10)
{
    printf("0 és 10 között\n");
}
else
{
    printf("10-nél nagyobb\n");
}

swich

  • Integrális típusok esetén használható elágazás
  • Átírható if-else if-else elágazásokra is
  • A break elhagyható, de akkor a következő case is vizsgálatra kerül
  • A {} elhagyhatóak a case-kben, kivéve, ha helyi változókat deklarálunk benne

Általános szintax:

switch (változó)
{
case 1:
{ utasítások }
break;
case 2:
{ utasítások }
break;
….
default:
}

Példa:

int m = 1;
switch (m)
{
case 1:
    printf("Egy\n");
    break;
case 2:
    printf("Kettő\n");
    break;
default:
    printf("Nem egy és nem kettő\n");
    break;
}