Informatika2-2013/Gyakorlat02
(Új oldal, tartalma: „== 2. gyakorlat == ===== 1. For ciklus ===== Segítségnek itt egy for ciklus példa: 0-tól 9-ig kiírjuk a számokat, vagyis a ciklusváltozó értékét (általába…”) |
|||
1. sor: | 1. sor: | ||
== 2. gyakorlat == | == 2. gyakorlat == | ||
− | ===== 1. For ciklus | + | |
+ | ==== Ismétlés ==== | ||
+ | |||
+ | * Fordítás '''gcc'''-vel: | ||
+ | |||
+ | <code> | ||
+ | gcc -W -Wall -o hello hello.c | ||
+ | </code> | ||
+ | |||
+ | * A program futása a main függvénnyel kezdõdik, ezáltal mindig kell, hogy létezzen. | ||
+ | * Pontosvesszõk a sor végén. | ||
+ | * Blokkok kapcsoszárójelekkel. | ||
+ | * A változókat deklarálni kell (meg kell adni a típusukat). | ||
+ | * stdio.h-ban hasznos függvények, pl: printf | ||
+ | * Egy példa printf-re: | ||
+ | |||
+ | <c> | ||
+ | printf("A %d nagyobb mint a %d\n.", 3, 2); | ||
+ | </c> | ||
+ | |||
+ | * A 3 és a 2 sorban be lesz helyettesítve a string-be, a \n a sorvége karakter. | ||
+ | |||
+ | |||
+ | |||
+ | ==== 1. For ciklus ==== | ||
Segítségnek itt egy for ciklus példa: 0-tól 9-ig kiírjuk a számokat, vagyis a ciklusváltozó értékét (általában ''i''-nek vagy ''j''-nek nevezzük a ciklusváltozót, ami tipikusan minden körben növekszik eggyel, de persze máshogy is lehetne): | Segítségnek itt egy for ciklus példa: 0-tól 9-ig kiírjuk a számokat, vagyis a ciklusváltozó értékét (általában ''i''-nek vagy ''j''-nek nevezzük a ciklusváltozót, ami tipikusan minden körben növekszik eggyel, de persze máshogy is lehetne): | ||
28. sor: | 52. sor: | ||
</c> | </c> | ||
− | + | ==== 2. Do / while ciklusok ==== | |
Szintaktika: | Szintaktika: | ||
73. sor: | 97. sor: | ||
Most talán segít, ha már a cikluson kívül is kérünk be elõre számokat, és nem hátultesztelõs ciklust használunk, de azzal is kényelmesen meg lehet oldani, sõt for ciklussal is. | Most talán segít, ha már a cikluson kívül is kérünk be elõre számokat, és nem hátultesztelõs ciklust használunk, de azzal is kényelmesen meg lehet oldani, sõt for ciklussal is. | ||
− | + | ==== 3. Sakktábla ==== | |
Rajzolj ki egy ''NxN''-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának. A sakktábla méretét (''N'') a felhasználótól kérd be! | Rajzolj ki egy ''NxN''-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának. A sakktábla méretét (''N'') a felhasználótól kérd be! |
A lap 2013. február 19., 04:03-kori változata
Tartalomjegyzék |
2. gyakorlat
Ismétlés
- Fordítás gcc-vel:
gcc -W -Wall -o hello hello.c
- A program futása a main függvénnyel kezdõdik, ezáltal mindig kell, hogy létezzen.
- Pontosvesszõk a sor végén.
- Blokkok kapcsoszárójelekkel.
- A változókat deklarálni kell (meg kell adni a típusukat).
- stdio.h-ban hasznos függvények, pl: printf
- Egy példa printf-re:
printf("A %d nagyobb mint a %d\n.", 3, 2);
- A 3 és a 2 sorban be lesz helyettesítve a string-be, a \n a sorvége karakter.
1. For ciklus
Segítségnek itt egy for ciklus példa: 0-tól 9-ig kiírjuk a számokat, vagyis a ciklusváltozó értékét (általában i-nek vagy j-nek nevezzük a ciklusváltozót, ami tipikusan minden körben növekszik eggyel, de persze máshogy is lehetne):
int i; for (i=0; i<10; i++) { printf("A ciklusváltozo erteke: %d\n", i); }
Egészítsd ki a következő kódot a megjegyzések helyén! Adjuk össze a számokat 1-tõl kezdve, egyesével, pl: 1 + 2 + 3 = 6. A programunk azt a számot adja ki, hogy az elsõ hány darab számot kell összeadni, hogy legalább 4212-t kapjunk.
#include<stdio.h> int main(void) { /* változók deklarálása, értékadás */ /* i-t is deklarálni kell ! */ for (/* inicializálás */ ; /* feltétel */; /* minden ciklusmag végén */) { /* számolás */ } /* kiírás */ return 0; }
2. Do / while ciklusok
Szintaktika:
do { /* utasítások amik minden körben lefutnak */ } while (/* feltétel */);
while ( /* feltétel */ ) { /* utasítások amik minden körben lefutnak */ }
A következõ kód a felhasználótól egy ciklusban egész számokat kér be addig, amíg 0 értéket nem kap. Ekkor pedig kiírja a képernyőre a kapott nemnulla számok átlagát!
#include<stdio.h> int main(void) { int i = 0; float sum = 0; int szam = 0; do{ scanf("%d", &szam); sum += szam; i++; } while(szam != 0); i--; printf("%f", sum / i); return 0; }
Feladat
Írjunk az elõzõ példa mintájára egy programot, ami a felhasználótól egész számokat kér be, amíg egymás után két azonos számot nem kap. Ha ez megtörtént, akkor írja ki, hogy hány számot adtunk be.
Most talán segít, ha már a cikluson kívül is kérünk be elõre számokat, és nem hátultesztelõs ciklust használunk, de azzal is kényelmesen meg lehet oldani, sõt for ciklussal is.
3. Sakktábla
Rajzolj ki egy NxN-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának. A sakktábla méretét (N) a felhasználótól kérd be!
Tipp: a ciklusokat egymásba is ágyazhatjuk, de ilyenkor nagyon kell figyelni a ciklusváltozókra!
Egymásba ágyazott ciklus példa:
#include<stdio.h> int main(void) { int i; int j; for(i = 0; i < 10; i++) { printf("i: %d \n", i); for(j = 0; j < i; j++) { printf(" (%d, %d) ", i, j); } printf("\n"); } printf("\n"); }