Programozás I. gyakorlat 1. gyakorlat Alapok
Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt forráskódból készít futtatható állományt gcc, MSVC, Intel Compiler stb.
Fapados módszer Indítsunk el egy szövegszerkeszőt Gépeljük be a következőt: #include <stdio.h> int main() { printf( Hello world!\n ); return 0; }
Fapados módszer Vegyük észre, hogy bizonyos szavakat kiemel a szövegszerkesztő! Ezek közül némelyek a c kulcsszavai közé tartoznak. Mentsük el a forráskódot, a fájl kiterjesztése legyen.c Nyissunk meg egy terminált
Fapados módszer Navigáljunk abba a könyvtárba, ahol a forrásfile található Könyvtár listázás Linuxban: ls Könyvtárba belépés: cd <könyvtár neve> Szülő könyvtárba lépés: cd.. Fordítsuk le a programunkat: gcc -Wall -o elso elso.c
Magyarázat gcc : a fordítóprogram -Wall: kapcsoló, amely utasítja a fordítót, hogy minden figyelmeztetést írjon ki a képernyőre (tanuláshoz érdemes használni) -o elso : megadjuk a kimeneti fájl, azaz a futtatható program nevét elso.c : a bemeneti file, azaz a forrásfile neve
Fapados módszer Amennyiben a forráskódot helyesen gépeltük be, a fordító lefut, és nem ad visszajelzést Futtassuk a programunkat:./elso Hello world!
Fapados módszer Írjunk át valamit a forráskódban, hogy hibás legyen Nézzük meg, hogy a fordító mit ír ki!
IDE használata IDE: Integrated development environment, azaz Integrált fejlesztői környezet Szövegszerkesztő, fordító, hibakereső, projekt kezelő, verziókövető, stb. Példák: Eclipse, Netbeans, Anjuta, Geany, Dev-C++, Code::Blocks, Microsoft Visual Studio
Geany Az egyszerűbb IDE-k közé tartozik Alkalmas szövegszerkesztésre, fordításra, futtatásra
Geany Hozzunk létre új forrásfile-t Mentsük el Összeállítás\Összeállítás vagy F9 Futtassuk a kész programot (F5)
Változók Hozzunk létre egy változót: Típusa legyen integer, és adjunk neki értéket! #include <stdio.h> int main(int argc, char** argv) { int a = 42; printf("ez egy szam: %d\n", a); return 0; }
Változók Irassuk ki a változót különböző módokon! #include <stdio.h> int main(int argc, char** argv) { int a = 42; printf("ez egy szam: %d\n", a); printf("ez egy szam: %u\n", a); printf("ez egy szam: %x\n", a); printf("ez egy szam: %X\n", a); printf("ez egy szam: %o\n", a); printf("ez egy szam: %c\n", a); return 0; }
Változók Hozzunk létre egy karakter típusú változót! Írassuk ki kétféleképpen! Adjunk neki értéket kétféleképpen! #include <stdio.h> int main(int argc, char** argv) { char ch1 = 'A'; char ch2 = 65; printf("ch1 = %c\n", ch1); printf("ch2 = %c\n", ch2); return 0; }
Változók Nézzük meg a lebegőpontos változókat is! #include <stdio.h> int main(int argc, char** argv) { double a = 65.3; printf("lebegopontos: %f\n", a); printf("lebegopontos: %g\n", a); return 0; }
Bekérés, kiíratás Olvassunk be egy egész típusú számot a billentyűzetről, majd írassuk ki! #include <stdio.h> int main(int argc, char** argv) { int a = 0; int res = scanf("%d", &a); printf("a bekert szam: %d\n", a); printf("a visszateresi ertek: %d\n", res); return 0; }
Bekérés, kiíratás Írjunk programot, amely beolvas egy számot, és kiírja a kétszeresét! #include <stdio.h> int main(int argc, char** argv) { int a = 0; scanf("%d", &a); printf("a bekert szam: %d\n", a); printf("a bekert szam ketszerese: %d\n", a*2); return 0; }
Összetettebb program Kérjük be egy téglatest oldalainak hosszát, majd írassuk ki a téglatest felszínét és térfogatát! Kérjük be egy háromszög alaplapjának és magasságának hosszát, majd írjuk ki a területét!
Egyik megoldás #include <stdio.h> int main(int argc, char** argv) { int a, b, c; printf("\n"); scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); printf("a terfogat: %d\n", a*b*c); printf("felszin: %d\n", (a*b + b*c + c*a)*2); return 0; }
Kicsit eltérő megoldás #include <stdio.h> int main(int argc, char** argv) { int a, b, c, terf, felsz; printf("\n"); scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); terf = a*b*c; felsz = (a*b + b*c + c*a)*2; printf("a terfogat: %d\n", terf); printf("felszin: %d\n", felsz); return 0; }
2. feladat Írjon programot, amely bekéri egy osztály létszámát, majd megkérdezi, hogy ebből hányan tanulnak német, angol és francia nyelven (tegyük fel, hogy a bevitt adatok lehetségesek). A program írja ki, hogy az osztály hány százaléka tanulja az egyes nyelveket (% jellel együtt). A százalékot egy tizedes pontossággal írja ki!
2. feladat, példa Osztály létszáma: 34 Német: 12 Angol: 30 Francia: 6 Németet tanulnak: 35.3 % Angolt tanulnak: 88.2 % Franciát tanulnak: 17.6 %
2. feladat, megoldás #include <stdio.h> int main(int argc, char** argv) { int letszam, angol, nemet, francia; printf("osztaly letszama: "); scanf("%d", &letszam); printf("nemet: "); scanf("%d", &nemet); printf("angol: "); scanf("%d", &angol); printf("francia: "); scanf("%d", &francia);
2. feladat, megoldás } printf("\nnemetet tanulnak: %.1f %%", ((double)nemet / letszam)*100); printf("\nangolt tanulnak: %.1f %%", ((double)angol / letszam)*100); printf("\nfranciat tanulnak: %.1f %%", ((double)francia / letszam)*100); return 0;
3. feladat Írja ki a képernyőre egy idézetet, valamint annak szerzőjét az alábbi módon: A repülés titka az, hogy valaki próbálja ledobni magát a földre, de elvéti. \ Douglas Adams \ A szerző neve előtt legyen 2 tabulátor is Oldja meg a feladatot egy printf használatával is!
3. feladat, megoldás #include <stdio.h> int main(int argc, char** argv) { printf("\"a repülés titka az, hogy valaki próbálja\n"); printf("ledobni magát a földre, de elvéti.\"\n"); printf("\t\t\\ Douglas Adams \\\n"); return 0; } Egy printf-el: printf("\"a repülés titka az, hogy valaki próbálja\nledobni magát a földre, de elvéti.\"\n \t\t\\ Douglas Adams \\\n");
4. feladat A korábban írt programokban vétsen hibákat, például: Töröljön ki egy pontosvesszőt Hagyjon el egy -t a printf függvény hívásánál A printf függvénynél a -t cserélje '-ra Írja át az int-et Int-re Hagyja el a return 0; sort Figyelje meg, hogy a szintaktikai kiemelés mely esetekben segít a hiba előrejelzésében Figyelje meg, hogy a fordító mely hibára, mit ír ki
4. feladat Ötlet gyakorláshoz: szükséges 2 vagy több személy Mindenki írjon valamilyen programot, ami tartalmaz valamilyen hibát Cseréljenek forráskódot, és próbálják megtalálni a mások által vétett hibákat, először a kód átolvasása, majd ha így nem megy, a fordító hibaüzenetei, esetleg a program futása alapján