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
[email protected]
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 char* short int long oat double long double
Egy karakter Karaktersorozat Rövid egész Egész szám Hosszú egész Rövid valós Valós szám 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 const register static extern
Tar Péter
El®jel nélküli változó Konstans, értéke nem változtatható A CPU regiszterében tárol, ha lehet A program indulásakor jön létre, megtartja az értékét Inicializálatlan küls® változó
(PE-MIK-DCS)
Programozás I. - 2. gyakorlat
September 24, 2007
6 / 16
A printf formázási lehet®ségei - I.
Flagek + space #
Balra igazít El®jel kiírása minden esetben 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> int main ( ) { double x =3.1415926535; p r i n t f ("e : p r i n t f ( "E : printf ("f : p r i n t f ( "g : p r i n t f ( "G : 0;
return
}
Tar Péter
(PE-MIK-DCS)
%e \n" , x ) ; %E\n" , x ) ; %f \n" , x ) ; %.3g\n" , x ) ; %.16G\n" , x ) ;
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