Rendszer és Szoftvertechnológia Tanszék Programozás I. 1.1, 1.2, 1.3. Rendszer és Szoftvertechnológia Tanszék
1.1. Első programunk elkészítése Program: Olyan terv vagy ütemterv, amely meghatározza a feltétlenül vagy feltételesen elvégzendő tevékenységeket. Számítógépi program: Olyan program, amely számítógép által végrehajtható alakban van kifejezve: utasításokat tartalmazó fileok együttese. (Például MS-DOS vagy Windows környezetben: az exe és com kiterjesztésű fileok .)
Egy egyszerű program elkészítése 1.1.1. mintapélda #include <stdio.h> void main (void) { printf ("Első próbaprogram !"); } Mentsük el az utasításokat az elso.cpp fileba. Forrásfile: Használjunk beszédes file-nevet, használjuk a cpp kiterjesztést.
1.2. Közelebbi pillantás a C++-ra Áttekintés: Az #include utasítás lehetővé teszi, hogy kihasználjuk a C++ utasításokat vagy programdefiníciókat tartalmazó fejlécfileok előnyét. Egy C++ program fő része a void main (void) utasítással kezdődik. A logikailag összetartozó részeket zárójelbe tesszük! A C programok egy vagy több függvényből állnak, melyek konkrét feladatot végző utasításokat tartalmaznak. Az eredményeknek a képernyőre történő kiírására a printf függvényt használjuk. Használjunk a programon belül megjegyzéseket, hogy leírják a program működését más programozók számára.
A programutasítások 1.1.1.a mintapélda: üzenet kiírása a képernyőre // Programozó: PM, készítés dátuma: // 2007.09.14. // #include <stdio.h> void main (void) { printf ("Első próbaprogram !"); } // után: nem tartalmaz végrehajtandó utasítást, ez egy megjegyzés-sor. Minden program elejére: mi a program feladata, ki és mikor készítette azt. A kapcsos zárójelek (csoportosító jelek) csoportosítják az összetartozó utasításokat. Az include előfeldolgozó utasítás A h (head= fej) kiterjesztésű fileokat fejléc (header) fileoknak nevezzük. A void main (void) a C++ programokban a program kiindulási helyét jelöli. A main (főprogram) azonosítja a főprogramot - csak egy lehet. A void használata:. A függvény nem ad vissza értéket. A printf
1.3. A programok változókban tárolnak információt Adat: (az adatfeldolgozás területén): Valamely tény, fogalom vagy utasítás olyan egyezményesen ábrázolt alakja, amely alkalmas arra, hogy emberek vagy automatikus eszközök továbbítsák, értelmezzék vagy feldolgozzák. Információ: Az adat jelentése. Típus: értelmezési tartomány.
Áttekintés Deklarálnunk kell a változókat: név és típus megadása A változó típusa megadja azt a típust (például egész szám, vagy tizedes értéket is tartalmazó szám), melyet a változó tárolni képes. (A típus egyben meghatározza azokat a műveleteket is, melyeket a programunk el tud végezni a változón). Egy változó értékadásához a C++ értékadás műveleti jelet (egyenlőségjelet) használjuk. NEM := A C++ nyelvben karakteres, egész és lebegőpontos konstansokat, továbbá string konstansokat használhatunk. Egy változó értékének a képernyőn való megjelenítéséhez a printf függvényt használjuk. beszédes változónevek…
Változók deklarálása a programokban A C nyelvben az alábbi öt elemi típus áll a programozó rendelkezésére: Típus Kulcsszó karakter char egész int lebegőpontos float dupla lebegőpontos double érték nélküli void Típusmódosítók: short, long (tárolási hossz) signed, unsigned (az előjel értelmezése)
Skalár típusok a C-ben Aritmetikai típusok egész jellegű típusok char signed char int long int short int unsigned char unsigned int unsigned long int unsigned short int lebegőpontos típusok float double long double mutató típusok
Adattípusok a C nyelvben Méret (byte) Tárolt érték Vezérlő kar. char 1 -128 … +127 c, d unsigned char 0…255 d, u int 2 -32768…+32767 d unsigned 0…65535 u long 4 -2 147 483 648 ... 2 147 483 647 ld unsigned long a 0 ... 4 294 967 295 ld, lu float Pontosság: 7 tizedes f, e double 8 Pontosság: 15 tizedes lf, le long double 10 Pontosság: 19 tizedes
Mit jelent a pontosság ? Deklaráció: long egesz; float valos7; double valos15; Értékadás: A letárolt érték: egesz = 123456789.123; 123456789 valos7 = 123456789.123; 123456792.000 valos15= 123456789.123; 123456789.123
Mi a változó ? Mielőtt használnánk egy változót, programunknak deklarálnia kell azt. Egy változó deklarálásához meg kell adnunk a változó típusát és azt a nevet, melyet programunk használni fog a hivatkozásra.: void main (void) { int evszam, ho, nap; float testsuly, testsuly_atlag; long fizetes; } A névvel ellátott objektumokat a programozási nyelvekben változóknak szokás nevezni.
Változónevek: Szabály: a változónév betűvel vagy aláhúzás-jellel kezdődő alfanumerikus jelsorozat. A C++ különbséget tesz a kis és nagybetűk között, ékezetes betűket változónevekben nem használhatunk. Ajánlott: beszédes változónevek használata, csak kis betűk és számjegyek használata. Változó nevekhez nem használhatók az alábbi kulcsszavak: asm, auto, break, case, catch, char, class, const, continue, default, delete, do, double, else, enum, extern, float, for, friend, goto, if, inline, int, long, new, operator, private, protected, public, register, return, short, signed, sizeof, static, struct, void, volatile, while.
Változó típusa típus változónév; A változó típusának mindig azt a legkisebb típust választjuk, amelyik az adott feladatot problémamentesen megoldja. Lépések: milyen adatot kezelünk (szám, karakter, szöveg) mértékegység meghatározása értéktartomány meghatározása pontosság típus választás
Értékadás egy változónak Szintaktikája: változónév = érték ; Pl: evszam = 2001; testsuly = 73.5; fizetes = 52600; Értékadás deklaráláskor: a változók inicializálása int evszam=2001, ho, nap; float testsuly, testsuly_atlag=0; long fizetes =40000; //a minimálbér 2001-ben
Konstansok: olyan érték, mely a program futása alatt nem változik meg Karakter konstansok Egész konstansok Lebegőpontos konstansok Sztringliterálok (sztring konstansok) ‘a’, ‘9’, ‘Q’ Decimális, oktális, hexadecimális .2, -3.0, 11E3 ”Helló !”
Karakter konstansok A karakter konstansok aposztrófok közé zárt karakterek, pl: 'a', '9', 'B'. Az egy karaktert tartalmazó karakter konstans által képviselt számérték a karakter kódja. Bizonyos szabványos vezérlő- és speciális karakterek megadására az ún. escape szekvenciákat használjuk. Az escape szekvenciában a fordított osztásjel (backslash - \) karaktert speciális karakterek, illetve számok követik, pl. ‘\n’
Lebegőpontos konstans: Olyan decimális szám, amely előjeles valós számot reprezentál. A valós szám általában egészrészből, tizedes törtrészből és kitevőből tevődik össze. Az egész- és törtrészt tizedespont (.) kapcsolja össze, a kitevő az e vagy az E betűt követi. Az egész vagy a törtrész elhagyható - de egyszerre csak az egyik ! A tizedespont vagy az {e,E} a kitevővel együtt elhagyható, de csak az egyik ! C++ nyelv Matematikai értelmezés .2 0,2 -5. -5,0 98.55 98,55 -6e-3 -0,006 12E2 1200,0 3.1415925 3,1415925
Gyakorló feladat A következő fixpontos, illetve lebegőpontos konstansok közül melyeket adtunk meg helyesen a C nyelv értelmezése szerint: a./ -236 b./ -5000 c./ 0.0567E-7 d./ E+5 e./ 5,765 f./ 1/3 g./ 3,745.67 h./ 0. i./ .15
Konstansok definiálása Formája: const [típusnév] azonosító = érték; (Csak C++-ban alkalmazható). Ha a típusnevet elhagyjuk, akkor int az alapértelmezés. Példa: const int ev = 2001;
Konstansok definiálása A másik megoldás: az előfordító #define utasításával létrehozott makrók hordoznak konstans értéket. #define NULLA 0 #define EGY 1 #define SOK 5 Figyelem: nincs a sor végén pontosvessző ! A #define konstansok a definiálás helyétől a file végéig fejtik ki hatásukat, vagy az #undef direktívával megszüntethetjük a hozzárendelést. Ezután újradefiniálásra van mód. A fenti példát folytatva: #undef SOK #define SOK 100
Változó tárolókapacitásának túllépése A változó típusa meghatározza a tárolható értékek körét. Ha egy változónak ezen tartományon kívüli értéket adunk, akkor túlcsordulási hiba keletkezik. 1.3.1. mintapélda. Túlcsordulási hiba illusztrálása #include <stdio.h> void main (void) { // Túlcsordulási hiba illusztrálása int egesz = 50000; long nagy_egesz = 5000000000; printf ("\nAz egesz tartalma: %d",egesz); printf ("\nA nagy_egesz tartalma: %ld",nagy_egesz); }
Ellenőrző kérdések Mit jelent a változók deklarálása ? Mit ad meg a változó típusa ? Mire ügyeljünk a C++ nyelvben használt változók elnevezésénél ? Miért nem lehet változónévként használni az alábbi szavakat: break, delete, void. Milyen konstansokat használhatunk a C++ nyelvben ? Hogyan lehet ezeket deklarálni ? Miben különbözik a 'w' és a "w" konstans ? Hány byte kell a tárolásukhoz ? Az A betű (nagy A) kódja 65. Azonosak-e az alábbi konstansok: 65, 'A', 0101, 0x41 Írja fel az alábbi számokat lebegőpontos konstansként: 0,157 -1 56000 65,897 Milyen típusú konstansokat használunk a C++ nyelvben ? Írjon fel mindegyikre egy-egy példát. Az alábbi felsorolásban melyek karakter konstansok: 'a', b, "c", 89, "89", '8' Mi a stringliterál ? Írjon fel egy példát. Mikor keletkezik túlcsordulási hiba ? Mi az oka annak, hogy programjainkban pontossági hibák keletkezhetnek ?
A fordítóprogram megértése Gépi nyelv , Programnyelv, - szövegszerkesztő, - forráskód, - fordítóprogram, - végrehajtható program. A szintaktikai hibák: a forrásprogramok készítésekor be kell tartanunk bizonyos formai szabályokat, melyeket szintaktikai szabályoknak nevezünk. A fordítóprogram csak a szintaktikailag helyes programból képes futtatható programot készíteni. Definíció: A szintaxis a nyelv formális szabályainak összessége. Definíció: Szemantika: szintaktikailag helyes nyelvi szerkezethez tartozó jelentés.
Munka integrált fejlesztési környezetben Új forrásfile szerkesztése, mentése, régi állományok előkeresése, módosítása, nyomtatás. Szerkesztési parancsok, pl.: másolás, áthelyezés, törlés, cursor mozgató parancsok, stb. Fordítóprogram aktivizálása: Comlipe, Make, Build all parancsok Futtatás (Run), futtatás nyomkövetéssel (Trace) Opciók (Options) A Help használata
Borland C++ parancsok rövid áttekintés !