Fakultet elektrotehnike, strojarstva i brodogradnje Sveucilista u Splitu Studij racunarstva Kolegij: Programiranje 1 Sk.god. 2004/2005 Student/ica: _____________________________ DOMACI RAD - VJEZBA 2 1. Kratko opisite a) Zaglavni dokument (engl. header file) b) Predprocesorski nalog (engl. preprocessor directive) c) Pridruzivanje (engl. assigment) d) Cijeli broj (int) e) Broj s pomicnim zarezom (float, double) f) Slovni znak (char) g) Pretvaranje vrste podatka (engl. casting; cast operator) h) Opisnik formata (engl. format descriptor) prikaza podatka 2. Odgovorite na sljedeca pitanja a) Neka su zadana cijeli brojevi a = 8, b = 3,c = -5. Napisite rezultate sljedecih aritmetickih izraza: a + b + c = 2*b + 3*(a - c) = a/b = a % b = a/c = a % c = a*b/c = a*(b/c) = (a*c) % b = a*(c % b) = b) Neka su zadana tri broja s pomicnim zarezom x = 8.8, y = 3.5, z = -5.2. Napisite rezultate sljedecih aritmetickih izraza: x + y + z = 2*y + 3*(x - z) = x/y = x % y = x/(y + z) = (x/y) + z = 2*x/3*y = 2*x/(3*y) = c) Neka su zadane znakovne varijable c1 = 'E', c2 = '5', c3 = '?'. Napisite brojcane vrijednosti sljedecih izraza (na temelju tablice brojcanih vrijednosti ASCII znakova): c1 - c2 + c3 = c2 - 2 = c3 + # = c1 % c3 = '2' + '2' = (c1/c2)*c3 = 3*c2 = d) Program u programskom jeziku C ima sljedece prijave: int i = 8, j = 5, k; float x = 0.005, y = -0.01, z; char a, b, c = 'c', d = 'd'; Napisite rezultate sljedecih operacija (rabiti samo izvorne vrijednosti varijabli): k = (i + j) z = (x + y) i = j k = (x + y) k = c z = i/j a = b = d i = j = 1.1 3. Izradite racunalni program koji ce na zaslon racunala ispisati: - opseg i povrsinu kruga polumjera r: r = 10 r = 0.000023 r = 23500000 - opseg i povrsinu pravokutnika stranica: a = 4, b = 3 a = 4, b = 0.00012 a = 2300, b = 8000 ---------------------------------------------------------------------- ODGOVORI / RJESENJA ---------------------------------------------------------------------- 1. a) Zaglavni dokument (engl. header file) je dokument koji predstavlja bibilioteku naredbi u programskom jeziku. Ukljucenjem nekog zaglavnog dokumenta(npr. u C-u naredbom #include ) prevoditelj razumije naredbe koristene u C-u,npr. naredba printf .(-Stdio je naziv za "standard in and output",te njezinim ukljucenjem programski jezik C prepoznaje osnovne naredbe). b) Predprocesorski nalog (engl. preprocessor directive) je nalog kojim se tekst(naredbe) obradjuje i predstavlja u jeziku koji je razumljiv racunalu. c) Pridruzivanje (engl. assigment) je proces u kojemu nekoj varijabli(objektu koji ima ime) pridruzujemo neku vrijednost. d) Cijeli broj (int) u nasem slucaju kod programiranja u C-u , predstavlja cjelobrojnu varijablu koja se pohranjuje na odredjeno mjesto u memoriji racunala.S obzirom na njegovu velicinu moze zauzimati prostor velicine od 2-4 Byte. e) Broj s pomicnim zarezom (float, double),takodjer poput intigera predstavlja varijablu,medjutim za razliku od initgera,u float i double se mogu pohraniti vrijednosti koje nisu cjelobrojne. -Tako koristeci float tip podatka mozemo pohraniti vrijednost cija se tocnost uzima do sedme decimale.Njezina velicina takodjer od 2-4 Byte. -Koristeci double tip podatka mozemo pohraniti vrijednosti cija se tocnost uzima do cetraneste decimale. Medjutim velicina iznosi od 4-8 Byte. f) Slovni znak (char) je takodjer tip podatka u koje pohranjujemo varijable u obliku znakova.Velicina - 1 Byte g) Pretvaranje vrste podatka (engl. casting; cast operator) sluzi za pretvaranje razlicitih tipova podataka iz jednog u drugi.Npr int - float i sl. h) Opisnik formata (engl. format descriptor) prikaza podatka koristi se za oblikovanje tipova podataka u programiranju.Koristenjem razlicitih opisnika formata mozemo odredjeni tip podatka prikazati na razlicite nacine(korstenjem potencija,floating point,cjelobrojni priokaz ...) 2. a) #include #include main() { int a = 8 , b = 3 , c = -5 ; printf("\n\t a+b+c=%5d \n\t",a+b+c); printf("\n\t 2*b + 3*(a - c)=%5d \n\t",2*b + 3*(a - c)); printf("\n\t a/b=%8.4f \n\t",a/b); printf("\n\t a % b=%8.4f \n\t",a % b); printf("\n\t a/c=%8.4f \n\t", a/c); printf("\n\t a % c=%8.4f \n\t",a % c); printf("\n\t a*b/c=%8.4f \n\t",a*b/c); printf("\n\t a*(b/c)=%8.4f \n\t",a*(b/c)); printf("\n\t (a*c) % b=%8.4f \n\t",(a*c) % b); printf("\n\t a*(c % b)=%8.4f \n\t",a*(c % b)); return 0; } b) #include #include main() { float x = 8.8, y = 3.5, z = -5.2; printf("\n\t x+y+z=%8.4f \n\t",x+y+z); printf("\n\t 2*y + 3*(x - z)=%8.4f \n\t",2*y + 3*(x - z)); printf("\n\t x/y=%8.4f \n\t",x/y); printf("\n\t x % y=%8.4f \n\t",x % y); printf("\n\t x/(y + z)=%8.4f \n\t",x/(y + z)); printf("\n\t (x/y) + z=%8.4f \n\t",(x/y) + z); printf("\n\t 2*x/3*y=%8.4f \n\t",2*x/3*y); printf("\n\t 2*x/(3*y)=%8.4f \n\t",2*x/(3*y)); printf("\n\t 2*x/(3*y)=%8.4f \n\t",2*x/(3*y)); return 0; } c) #include #include main() { double c1 = 'E', c2 = '5', c3 = '?'; printf("\n\t c1 - c2 + c3=%8.4f \n\t",c1 - c2 + c3); printf("\n\t c2 - 2=%8.4f \n\t",c2 - 2); printf("\n\t c3 + #=%8.4f \n\t",c3 + '#'); printf("\n\t c1 % c3=%8.4f \n\t",c1 % c3); printf("\n\t '2' + '2'=%8.4f \n\t",'2' + '2'); printf("\n\t (c1/c2)*c3=%8.4f \n\t",(c1/c2)*c3); printf("\n\t 3*c2=%8.4f \n\t",3*c2); return 0; } d) #include #include main() { int i = 8, j = 5, k; float x = 0.005, y = -0.01, z; char a, b, c = 'c', d = 'd'; //PRIDRUZIVANJE I PRINTANJE //k = (i + j) printf("\n\t k = (i + j) , k=%d \n\t",i+j); //z = (x + y) printf("\n\t z = (x + y) , z=%8.4f \n\t",x+y); //i = j printf("\n\t i = j , i=%d \n\t",j); //k = (x + y) printf("\n\t k = (x + y) , k=%8.4f \n\t",x+y); //k = c printf("\n\t k = c , k=%s \n\t",c); //z = i/j printf("\n\t z = i/j , z=%d \n\t",i/j); //a = b = d printf("\n\t a = b = d a=%s \n\t",b = d); //i = j = 1.1 printf("\n\t i = j = 1.1 i=%d \n\t",j = 1.1); return 0; } 3) a) #include #include main() { //Opseg i povrsine krugova int r1 = 10 , r3=23500000; float r2 = 0.000023; printf("\n\t Opseg kruga polumjera %d iznosi %f8.4 \n\t",r1,2*r1*3.14); printf("\n\t Povrsina kruga polumjera %d iznosi %f8.4 \n\t",r1, pow(r1 , 2)*3.14); printf("\n\t Opseg kruga polumjera %f8.4 iznosi %f8.4 \n\t",r2,2*r2*3.14); printf("\n\t Povrsina kruga polumjera %d iznosi %f8.4 \n\t",r2, pow(r2 , 2)*3.14); printf("\n\t Opseg kruga polumjera %d iznosi %f8.4 \n\t",r3,2*r3*3.14); printf("\n\t Povrsina kruga polumjera %d iznosi %f8.4 \n\t",r3, pow(r3 , 2)*3.14); return 0; } b) #include #include main() { //Opseg i povrsine pravokutnika int a1 = 4 , b1 = 3, a2 = 4 , a3 = 2300 , b3 = 8000 ; float b2 = 0.00012 ; printf("\n\t Opseg pravokutnika duljine stranica %d i %d iznosi %f8.4 \n\t",a1,b1,(2*a1)+(2*b1)); printf("\n\t Povrsina pravokutnika duljine stranica %d i %d iznosi %f8.4 \n\t",a1,b1,a1*b1); printf("\n\t Opseg pravokutnika duljine stranica %d i %f8.4 iznosi %f8.4 \n\t",a2,b2,(2*a2)+(2*b2)); printf("\n\t Povrsina pravokutnika duljine stranica %d i %f8.4 iznosi %f8.4 \n\t",a2,b2,a2*b2); printf("\n\t Opseg pravokutnika duljine stranica %d i %d iznosi %f8.4 \n\t",a3,b3,(2*a3)+(2*b3)); printf("\n\t Povrsina pravokutnika duljine stranica %d i %d iznosi %f8.4 \n\t",a3,b3,a3*b3); return 0; }