Fakultet elektrotehnike, strojarstva i brodogradnje Sveucilista u Splitu Studij racunarstva Kolegij: Programiranje 1 Sk.god. 2004/2005 Student:Maras Josip DOMACI RAD - VJEZBA 14 1. Kratko opisite a) Logicke bit operatore b) Polja bitova (engl. "bit field") c) Usmjeravanje obrade nalogom switch d) Prijenos argumenata u funkciju main (s nalogovnoga retka) 2. Odgovorite na sljedeca pitanja: a) Na koje vrste podataka se mogu primijeniti logicki bit operatori? b) Koje vrste podataka se mogu primijeniti u poljima bitova? c) Sto se desava ako je polje bitova vece od velicine rijeci (engl. "word") u memoriji? d) Cemu sluzi nalog break; unutar switch? e) Kakvo je znacenje cjelobrojnog argumenta argc kod prijenosa argumenata s nalogovnoga retka u main funkciju? 3. Napisite program (Abak.cpp) koji ce sluziti kao jednostavno racunalo. Program ce vrsiti zbrajanje, oduzimanje, mnozenje i dijeljenje brojeva. Zadavanje operanada i racunske operacije treba vrsiti s nalogovnoga retka (npr. Abak 2.3 * 0.12). Upute: - Operande prije algebarske operacije treba pretvoriti iz znakovnoga niza u podatke vrste double pomocu funkcije atof , - Usmjeravanje obrade vrsiti switch nalogom ---------------------------------------------------------------------- ODGOVORI / RJESENJA ---------------------------------------------------------------------- 1.) a)Logički operatori za rad s bitovima su :I(AND)(&);ILI(OR)(|):;eksluzivno ili(XOR)(^) komlement(~)(komplement je unarni operator ~0=1) Npr.vrijedi: a b a&b a|b a^b ------------------------------------ 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 b)Polje bitova je struktura pomoću koje se može pristupiti pojedinom bitu ili grupi bitova unutar riječi. Deklaracija: struct ime_polja { tip grupa1: broj_bitova; .... }; c)Naredba switch-case se koristi za ispitivanje vrijednosti jedne varijable ili izraza,i ovisno o vrijednosti izvrsava se jedan od niza raziličitih blokova naredbi.Opći oblik: switch (izraz) { case konstanta1: blok naredbi1; break; .... default: blok naredbi i; break; } d)Pozivom funkcije main() s argumentima omogućuje se prijenos podataka prilikom pokretanja programa. Podaci koje se prenose u funkciju main() nazivaju se argumenti glavnog programa i zadaju se zajedno s imenom programa. Opći oblik definicije funkcije main glasi: main (int argc,char *argv[]) { ......... } argc-je cjelobrojna varijabla koja sadrži broj podataka koji se prenosi u funkciju. Sadržaju pojednih argumenata pristupa se preko polja pokazivača *argv[] na polje niza znakova. ************************************************************************************************************************ 2.) a) Na cjelobrojne. b) samo na cjelobrojne (short i undigned) c) Neka je npr. struct bitovi { unsigned a : 5; unsigned b : 2; unsigned c : 1; unsigned d : 5; }; I neka je duljina riječi npr 16 bitova.Tada će u ovu riječ biti smještena cijelo polje bitova. Ako je npr d:10 tada će, budući da a,b i c zauzimaju 8 bitova zadnjih 8 bitova biti popunjeno 0,a d će biti smjesteno u novu riječ.(Svi bitovi moraju biti u istoj riječi.) d)Nalog break; označava izlazak iz switch-case bloka. e)argc-je cjelobrojna varijabla koja sadrži broj podataka koji se prenosi u funkciju. ************************************************************************************************************************* 3.) #include # include main( int argc, char *argv[] ) { // Prijava podataka double a,b; char c; a=atof(argv[1]); b=atof(argv[3]); c=*argv[2]; printf("\nRezultat:"); switch(c) { case '/': printf("%.3lf",a/b); break; case '*': printf("%.3lf",a*b); break; case '+': printf("%.3lf",a+b); break; case '-': printf("%.3lf",a-b); break; default: printf("\nKrivi unos!!\n"); break; } return 0; }