Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 1 / 16
1 Típusok 2 Kiiratás 3 Bekérés 4 Feladatok Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 2 / 16
Változó típusok Egyszer adattípusok char Egy karakter char* Karaktersorozat short Rövid egész int Egész szám long Hosszú egész oat Rövid valós double Valós szám long double Hosszú valós A logikai adatokra C-ben nincs külön típus, a 0 érték hamisat, minden egyéb pedig igazat jelent. Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 3 / 16
Tömbök Deníció Olyan objektumok halmaza, melyek azonos típusúak, és a memóriában folytonosan helyezkednek el. Tömbök deklarálása int valt[] Egy el re deniálatlan méret tömb. int valt[5] Öt egész számtárolására alkalmas tömb. int valt={1,2,3} Három egész elem tömb Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 4 / 16
Sztringek Deníció A sztring olyan karaktertömb, amelyben a karakterek sorozatát a 0 érték karakter zárja. Néhány példa deklarálásra char s[]="ez egy sztring"; char s[5]={'a','l','m','a'}; char s[5]={'k','o','r','t','e'}; - memóriafoglalási hiba! Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 5 / 16
Típusmódosítók Típusmódosítók unsigned El jel nélküli változó const Konstans, értéke nem változtatható register A CPU regiszterében tárol, ha lehet static A program indulásakor jön létre, megtartja az értékét extern Inicializálatlan küls változó Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 6 / 16
A printf formázási lehet ségei - I. Flagek - Balra igazít + El jel kiírása minden esetben space Pozitív számok elé egy szóközt tesz # Mindig kiírja a tizedespontot, az oktális számok elé 1-t a hexadecimálisok elé 0x-et tesz 0 Nullákkal feltölti a szám elejét ' Az ezres szeparátort állítja be - rendszerfügg Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 7 / 16
A printf formázási lehet ségei - II. Szélesség Az, a ag-ek után írt szám, amely meghatározza a kiírandó változó minimális hosszát. Pontosság Egész számoknál a minimálisan kiírt számjegyek száma e, E és f lebeg pontos típusoknál a tizedespont után kiírt jegyek száma, g és G esetén pedig a minimális hasznos jegyek száma Sztringnél a kiírandó szöveg maximális hossza. Ez csonkolást okozhat. Helyettesítés A szélesség és a pontosság mez k lehetnek paraméterek, ekkor a * karaktert használjuk helyettesítésre Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 8 / 16
Lebeg pontos számok kiiratása - I. Forrás (printf.c) #include <s t d i o. h> i n t main ( ) { double x =3.1415926535; p r i n t f ( " e : %e \n", x ) ; p r i n t f ( "E : %E\n", x ) ; p r i n t f ( " f : %f \n", x ) ; p r i n t f ( "g : %.3g\n", x ) ; p r i n t f ( "G : %.16G\n", x ) ; return 0 ; } Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 9 / 16
Lebeg pontos számok kiiratása - II. A kimenet e: 3.141593e+00 E: 3.141593E+00 f: 3.141593 g: 3.14 G: 3.1415926535 Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 10 / 16
Adatok bekérése futási id ben - scanf A scanf függvény a standard outputról való bekérésre alkalmas. Szintaxis scanf("%d %f", [&arg1,..., &argn] ); Paraméterezés %d Egy egész bekérése (A többi típus bekérése is a printf szintaktikáját követi) &arg1 A célváltozó címe: Ide tárolódik majd le a bekért adat Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 11 / 16
A scanf fontosabb paraméterei Szélesség Megadható a maximálisan bekérend karakterek száma. _ushall() A parancs a korábban beírt adatokat törli a memóriából. %c el tt mindenképp használjuk, mert az nem ugorja át a whitespace-eket! Típusegyezés Ügyeljünk, hogy mindig a megfelel típusba tároljuk a bekért adatokat, különben a scanf hibás értéket fog letárolni. A scanf két ""-e közé soha nem írunk kiírandó szöveget! Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 12 / 16
1. feladat Tervezz adatszerkezetet Találj ki egy olyan adatszerkezetet, melynek legalább három adattagja van. Gondold át, hogy ezek tárolására milyen változótípusok a legmegfelel bbek. Készíts programot Készíts programot, amely bekéri a kitalált adatszerkezetet. Írasd ki formázottan a bekért adatokat. Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 13 / 16
2. feladat Készíts proramot Kérj be 2x3 számot. Készíts a bekért számokból formázott szorzótáblát. Ügyelj arra, hogy a kiírt számok egymás alá kerüljenek. A program egyaránt m ködjön egész és lebeg pontos számokra is. Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 14 / 16
3. feladat Készíts programot Készíts statisztikai programot, amelyben: Kérd be, hogy hány hallgató jár a csoportba. Kérd be, hogy hány hallgató tanul matekot. Kérd be, hogy hány hallgató tanul kémiát. Kérd be, hogy hány hallgató tanul zikát. Jelenítsd meg oszlopdiagrammban, a kapott eredményeket. Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 15 / 16
4. feladat Készíts programot Dolgozz ki egy megoldást a 8 vezér problémájára. Jelenítsd meg az eredményt. Tar Péter (PE-MIK-DCS) Programozás I. - 2. gyakorlat September 24, 2007 16 / 16