/* 9.het, 1. C gyakorlat C prg felepitese, tipusok, valtozok, egyszeru be- es kiviteli fuggvenyek, cim, ertek, mutato, C nyelvi kufejezesek, operatorok, precedencia, tipuskonverzio. A C nyelv megkulonbozteti a kisbetuket a negybetuktol!! */ /* 1. pelda: egy kis C program a program felepitesenek bemutatasara: gomb felszinenek es terfogatanak kiszamitasa: */ /* #include // ebben a headerfajlban van adva a scanf es printf // fuggvenyek prototipusa, deklaracioja, a leforditott // alakot pedig a Cx.LIB konyvtarak tartalmazzak mar // kozvetlenul beszerkesztheto alakban (x helyen a // memoriamodeltol fuggo betu all). #include // ebben van adva a clrscr es a getch fuggveny #define PI 3.141593 // konstans definialasa main() { float sugar, felulet, terfogat; // valos valtozok definialasa clrscr(); // kepernyotorles printf(" Gombfelulet es terfogat szamitasa\n\n"); // tajekoztatoszoveg printf("A sug r= "); // sugar bekerese scanf("%f",&sugar); // & a cime operator, erre a cimre kerjuk be a sugarat felulet = 4*sugar*sugar*PI; terfogat = 4.0/3*sugar*sugar*sugar*PI; //kiiratas 10 szeles mezore, 3 tizedes pontossaggal, lebegopontos (f) alakkal printf("\nFelulet= %10.3f, terfogat= %10.3f\n", felulet, terfogat); getch(); // varakozas billentyunyomasra } // az 1 db warnings is eltuntetheto, ha void main() -t adunk meg // vagy visszatero erteket return-nel */ /* 2. pelda: kis program kulonfele tipusu valtozok deklaralasara, ertekuk bekeresere billentyuzetrol es az ertek kiiratasara FIGYELEM, char tipusu valtozoban tarolhato szamerteket nem lehet kozvetlenul beadni. A peldaban 2 byte-os int pufferbe kerjuk be, majd tipuskinverzioval levagva 1 byte-osra, helyezzuk el a signed, vagy unsigned char valtozokba */ /* #include #include main() { char betu; int puffer; // ebbe irodik a ket byte, melybol csak egy hasznos signed char kisszam; unsigned char db; int egesz; unsigned int evszam; long int nagyszam; unsigned long int nagypozitiv; float valos; double nagyvalos; long double nagyonnagyszam; clrscr(); printf("Ertekadas kulonfele tipusu valtozoknak, majd kiiratas\n\n"); printf("Adj meg egy betut:"); betu = getch(); printf("\nAdj meg egy szamot -128 es +127 kozott :"); scanf("%d",&puffer); kisszam = (signed char) puffer; printf("Adj meg egy szamot 0-255 kozott:"); scanf("%u",&puffer); db = (unsigned char) puffer; printf("Adj meg egy egesz szamot -32768 es 32767 kozott:"); scanf("%d",&egesz); printf("Adj meg egy evszamot:"); scanf("%u",&evszam); printf("Adj meg egy 8 jegyu negativ szamot:"); scanf("%ld",&nagyszam); printf("Adj meg egy 9 jegyu pozitiv szamot:"); scanf("%lu",&nagypozitiv); printf("Adj meg egy valos szamot:"); scanf("%f",&valos); printf("Adj meg egy 16 jegyu valos szamot:"); scanf("%lf",&nagyvalos); printf("Adj meg egy 24 jegyu negativ szamot:"); scanf("%Lf",&nagyonnagyszam); printf("\n\nKiiratasok kovetkeznek:\n"); printf("\nA betu: %c, kodja: %d",betu,betu); printf("\nA szam -128 es 127 kozott= %d",kisszam); printf("\nA szam 0-255 kozott= %u",db); printf("\nAz egesz -32768 es 32767 kozott= %d",egesz); printf("\nAz evszam csak pozitiv lehetett, = %u",evszam); printf("\nA 8 jegyu negativ szam= %ld",nagyszam); printf("\nA 9 jegyu pozitiv szam= %lu",nagypozitiv); printf("\nA valos lebegopontosan= %f, kitevos alakban= %e",valos,valos); printf("\nA duplapontos valos= %lf, kitevosen= %le",nagyvalos,nagyvalos); printf("\nA 24 jegyu negativ= %Lf, kitevosen= %Le",nagyonnagyszam, nagyonnagyszam); getch(); //valosoknal elofordulhat elteres a szamabrazolas nem kello pontossaga miatt } */ /* 3. pelda: mutato hasznalatara ad egy kis peldat: a sima valtozoba beirt erteket mutato segitsegevel elerve modositjuk, majd sima valtozokent es mutatoval elert valtozokent is kiiratjuk. */ /* #include #include main() { int valt; int * valtramutato; clrscr(); printf("Adj erteket a valtozonak:"); scanf("%d",&valt); valtramutato = &valt; *valtramutato = *valtramutato + 10; // valt tartalmat noveltuk 10-zel printf("\nA 10-zel novelt ertek valtozokent elerve: valt= %d", valt); printf("\nUgyanaz mutatoval elerve: *valtramutato= %d", *valtramutato); getch(); } */ /* 4. pelda: Az alabbi kis program C kifejezesekre, operatorokra ad peldat */ #include #include main() { int a,b,c,d,e; float p,r; clrscr(); a = 32000; b = 30000; c = a+b; printf("a=32000, b=30000, a+b= %d miert nem 62000?? ",c);// nem jelez hibat! a = 7; b = 2; c = a/b; printf("\nA / egeszek eseten egeszosztas! Pl. a=7, b=2, c= a/b = %d",c); a = b = 9; printf("\nTobbszoros ertekadas lehetseges: a=b=9; a= %d lesz",a); printf("\nGyorsabb programot eredmenyeznek az ertekado operatorok:"); printf("\n +=, -=, *=, /=, %="); a = 10; a = a + 3; printf("\n a = 10, a = a + 3; a = %d",a); a = 10; a += 3; printf("\n a = 10, a += 3; a = %d",a); a = 7; a = a * 2; printf("\n a = 7; a = a * 2; a = %d",a); a = 7; a *= 2; printf("\n a = 7; a *= 2; a = %d",a); printf("\n\nLepteto operatorok mellekhatassal birnak:"); a = 5; b = 2; c = ++a * --b; printf("a =5; b = 2; c = ++a * --b"); printf("\nEredmeny: a= %d, b= %d, c=%d",a, b, c); a = 5; b = 2; ++a; --b; c = a * b; printf("\nMegfelel ++a; --b; c = a * b utasitasoknak,"); printf("\naz eredmeny: a=%d, b=%d, c=%d lesz",a,b,c); a =3; b= 6; c = 10; c += ++a + b--; printf("\n\n a=3; b=6; c=10; c += ++a + b--"); printf("\nEredmeny: a=%d; b=%d, c=%d",a,b,c); a =3; b =6; c = 10; ++a; c += (a+b); b--; printf("\nMegfelel a ++a; c += (a+b); b-- utasitasoknak:"); printf("\naz eredmeny: a=%d, b=%d, c=%d lesz", a, b, c); printf("\n\nLogikai kifejezesekben a relaciooperatorok magasabb"); printf("\n precedenciajuak, mint az &&, || logikai muveletek!"); printf("\n Ezert sok zarojelezes elmaradhat, lasd alabbi peldat:"); c = (25+3 < 45 && 12 > 7); b = ( ( (25+3)<45 ) && ( 12>7 ) ); printf("\n c = (25+3 < 45 && 12 > 7) es b = ( ( (25+3)<45 ) && ( 12>7 ) )"); printf("\n egyenertekuek, c=%d, b=%d, igazak",c,b); getch(); }