pdf-programiranje radni materijal

Upload: akakij-akakijevic

Post on 20-Jul-2015

160 views

Category:

Documents


0 download

TRANSCRIPT

Programiranje u C-u i vjebe (radni nerecenzirani materijal )

Autori: Slavica osovi Baji, Goran Trutani

SADRAJ OSNOVEPROGRAMIRANJAIVJEBE............................................................. 4 1. UVOD........................................................................................................................... 1.1 Nastanak programskog jezika C. 1.2 C jezik srednje razine... 1.3 Primjena programskog jezika C.. 1.4 Kompiler, interpreter... 2. UVOD U PROGRAMIRANJE.. 3. TIPOVI PODATAKA. 3.1 Osnovni tipovi podataka. 3.2 Dodatni tipovi podataka.. 3.3 Oktalne i heksadecimalne konstante... 3.4 Znakovne( String) konstante... 3.5 Kontrolni znakovi 4. KONSTANTE I VARIJABLE... 4.1 Lokalne varijable. 4.2 Globalne varijable... 4.3 Modifikatori 5. OPERATORI.. 5.1 Operator dodjeljivanja. 5.2 Aritmetiki operatori... 5.3 Kombinacija aritmetiih operatora.. 5.4 Bit operatori 5.5 Operatori usporeivanja (relacioni).... 5.6 Logiki operatori. 6. IZRAZI 7. HEADER DATOTEKE (stdio.h, conio.h, math.h, string.h).. 8. FUNKCIJE.. 8.1 main ().. 8.2 printf (). 8.3 scanf ().. 9. NAREDBE ZA KONTROLU TIJEKA PROGRAMA... 9.1 Naredba if 9.2 Nested if (ugnjeeni if).... 9.3 Naredba switch 9.4 for petlja.. 9.5 while petlja.. 9.6 do while petlja. 9.7 Continue.. 9.8 Break... 5 5 5 5 7 8 11 11 11 11 12 12 13 14 15 16 17 17 17 17 17 18 18 19 20 21 22 22 23 25 26 27 30 32 33 33 34 34

9.9 Return.. 34 10. POLJE (indeksirana varijabla).. 10.1 Jednodimenzionalno polje 10.2 Dvodimenzionalno polje.. 35 35 36

11. VJEBE: OSNOVE PROGRAMIRANJA. 37 PROGRAMIRANJEIVJEBE.. 58 12. POLJE 59 12.1 Viedimenzionalno polje... 59 12.2 Inicijalizacija polja 59 13. POKAZIVAI.. 13.1 Jednostruka indirekcija. 13.2 Viestruka indirekcija... 13.3 Pokazivai na polja... 14. STRING (polje znakova)... 14.1 String konstante 14.2 Strcpy ( ) 14.3 Strcat ( ). 14.4 Strlen ( ).... 14.5 NULL terminator.. 15. FUNKCIJE 15.1 Lokalne varijable... 15.2 Formalni parametri (argumenti).... 15.3 Globalne varijable. 15.4 Poziv s vrijednou... 15.5 Poziv adresom... 15.6 Polje argument funkcije 15.7 Funkcija vraa ne cijelobrojnu vrijednost. 15.8 Funkcija tipa void. 15.9 Rekurzivna funkcija.. 15.10 Vrijeme izvravanja 60 60 62 62 63 63 63 63 64 64 65 66 66 66 67 67 68 69 69 70 71

16. DATOTEKE.. 16.1 Otvaranje datoteke 16.2 Zatvaranje datoteke.. 17. DINAMIKO ALOCIRANJE MEMORIJE. 17.1 calloc. 17.2 malloc 17.3 sizeof. 17.4 free

72 72 72 73 73 73 73 73

1

18. VJEBE: PROGRAMIRANJE... 74 19. ZADACI ZA VJEBANJE.. 94

20. ZAKLJUAK 110 21. LITERATURA.. 111

2

OSNOVEPROGRAMIRANJAIVJEBE

3

1. UVODGradivo predmeta Osnove programiranja obuhvaa osnove programskog jezika C, sve naredbe za upravljanje tijekom programa , te koritenje jednodimenzionalnih polja. U prvom dijelu detaljnije su opisani tijek programa, nain pisanja programa, naredbe i osnovne funkcije. Iza oblika funkcije ili naredbe slijedi primjer, a nakon njega navode se zadaci iz tog podruja na koje se prelazi dvostrukim klikom na miu.U drugom dijelu Programiranje obuhveena su: viedimenzionalna polja, pokazivai, funkcije i datoteke. Iza rjeenih primjera za ilustraciju oblika naredbe navode se zadatci na koje se moe direktno pristupiti dvostrukim klikanjem mia.

1.1 Nastanak programskog jezika CKasne 60 - te godine 20. stoljea bile su turboletno razdoblje za razvoj kompjutorskih sistema u Bell Telephone Laboratories. Tada je Ken Thompson u razdoblju od 1969. - 1970. kreirao B programski jezik . Denis Ritchie je 1971. na osnovi programskog jezika B poeo razvoj programskog jezika C na raunalima DEC PDP-11 za upotrebu na UNIX operativnim sustavima. Denis Ritchie, Alan Snyder, Steven C. Johnson, Michael Lesk i Ken Thompson razvijali su program u razdoblju od 1972. - 1977. U tom razdoblju je koliina rutina rasla zahvaljujui njima i svima ostalim u Bell Laboratories. Godine 1978. Brian Kernighan i Denis Ritchie napisali su knjigu tzv. White book koja je postala definicija jezika slijedeih godina. Do tada se smatralo da je C jezik povlateni jezik dostupan samo odreenoj skupini ljudi , te da je teak za koritenje. C nije izravno preao sa UNIX-a na DOS, ve je to ilo postupno. Najprije je preao na operacijski sustav CP/M koji je tada bio dosta popularan, no zbog premalenih 8 bitnih procesora i samo 64k RAM nije poluio uspjeh. No ubrzo uvoenjem 16 bitnih procesora i razvojem tvrtki kao Microsoft i IBM, koristi se sve vie u razvoju software-a. Poetkom 1983. godine osnovan je odbor ANSI X3J11 za standardiziranje jezika, a 1988. zavrena je prva standardizacija jezika koje podrava i veina dananjih prevoditelja.

1.2 C jezik srednje razineC - je jezik srednje razine jer sadri i kombinirane elemente visokih jezika, i funkcionalnost asemblera ( strojnih jezika ). esto se C naziva jezik za graenje jer se programer prvo kreira funkcije a nakon toga ih slae u program. Uz vlastite funkcije koje pie programer postoji velika biblioteka C funkcija . Tako se pomou C-a moe rijeiti gotovo svaki problem. Visoka razina prema [1] u jezik je ugraeno sve to bi programer mogao trebati za pisanje aplikacije. Srednja razina prema [1] ima sve prednosti jezika visoke razine a takoer posjeduje funkcionalnost jezika niske razine ( strojni jezik ). C ima mogunost direktnog koritenja bit-ova, bytova i adresa Niska razina prema [1] daje samo pristup strojnim instrukcijama. Prednosti u odnosu na druge programske jezike prema [1] : vrlo mali broj narebi ; kod je prenosiv, lako se prenosi s raunala na raunalo (uz razliit procesor, operativni sustav, ili oboje). Najee je potrebno aplikaciju kompilirati s C kompilerom pisanim za novi procesor. Na taj nain stvara se uteda u vremenu i novcu ;

4

sve funkcije koje koristimo u programu deklariraju se u pomonim datotekama koje nazivamo Header datoteke i naredbom icllude prikljuuju se na poetku programa ; operatori za direktno upravljanje stanja BIT-ova i BYTE-ova nazivaju se Bitwise. VISOKA

ADA FORTRAN PASCAL COBOL MODULA-2 BASIC

SREDNJA NISKA C FORTH MACRO ASSEMBLER ASSEMBLER

Prikaz 1. Visoka, srednja i niska razina jezika primjeri

1.3 Primjena programskog jezika CPrve primjene C jezika prema [1] bile su u sistemskom programiranju. Sistemsko programiranje odnosi se na klasu programa koji pokreu ili su dio operativnog sustava raunala. Sistemski programi omoguavaju raunalu obavljanje brojnih korisnih zadaa. Primjeri takvih zadaa su : Operativni sustavi Jezini prevodioci Asembleri Editori teksta Network Drivers Modem Programs Baze podataka Interpreteri Brojni su razlozi zbog kojih se C koristi za pisanje sistemskih programa. Prvi je razlog brzina izvoenja koja gotovo jednaka brzini izvoenja strojnih jezika. Drugi razlog je da je C zanimljiv programerima zbog mogunosti rada s bitovima , bytovima i adresama s jedne i naredbama i mogunostima jezika visoke razine s druge strane. Zbog velike popularnosti meu programerima danas je C jezik ope namjene . Nakon to se jednom familijariziramo s C om moemo slijediti precizan tijek i logiku programa te realizacije vlastitih modula. Listinzi C programa izgledaju jasno i itljivo. Glavni je razlog ato se jezik tako rairio je da je zgodan za koritenje ( it is simly fun to use prema [1] ). C je strukturni jezik a strukturni jezici koriste blokove. Blok je skup naredbi koje su logiki povezane. Strukturni jezici dozvoljavaju razliite programerske mogunosti, podravaju koncepciju vlastitih funkcija s lokalnim varijablama. Lokalna varijabla je varijabla kojoj je vrijednost poznata samo u bloku gdje je definirana. C podrava iterativne naredbe za ponavljanje ( petlje) while , do while i for.

5

1.4 Kompiler, interpreterPrema [1] pojam kompiler i interpreter odreuje nain kako se program izvrava ( izvodi). Bilo koji programski jezik moe teoretski biti compiliran ili interpretiran. Nain izvoenja programa ne definira nain kako je jezik napisan. Kompileri i interpreteri su sofisticirani programi koji operiraju na naem ulaznom ili SOURCE kodu. SOURCE kod je izvorni tekst programa koji ste napisali. Kompiler prema [1] prvo proita program, nakon toga program prevodi u objektni kod, oblik koji raunalo direktno moe izvriti. Objektni kod povezuje izvorni kod s binarnim ili strojnim. Nakon kompiliranja izvorni ( SOURCE ) kod bitan za izvoenje programa. Kompilirani programi bre se izvode od interpretiranih programa. Interpreter prema [1] ita source program liniju po liniju i izvodi instrukcije koje ta linija sadri . Razlikuje se vrijeme prevoenja ( compile time ) od vremena izvoenja ( run time ). Razlikujemo etiri koraka za svaki novi C program: 1. Editiranje - pisanje i pohranjivanje izvornog koda 2. Kompiliranje ( prevoenje)- ako u programu ima formalnih pogreaka , program prevodilac e nam na njh ukazati a nakon ispravki program valja ponovo kompilirati. Postupak se ponavlja sve dok se ne dobije korektan izvorni kod. 3. Linkanje ( povezivanje ) programa sa potrebnim bibliotekama 4. Izvoenje ( execute )

6

2. UVOD U PROGRAMIRANJEPrvi korak u uenju novog programskog jezika je najtei jer su sve komponente jezika meusobno povezane.Moramo stoga poeti s opom idejom to C program sadri ukljuujui neke osnovne kontrolne naredbe , oblike i funkcije. Time se omoguava razumjevanje primjera programa koji se pojavljuju kao ilustracija razliitih mogunosti C jezika . Za demonstraciju elemenata jezika u ovom dijelu daje se prikaz jednostavnijihh primjera C programa koje treba paljivo prouiti. Ovdje se ne prouavaju svi detalji, ali su dati koncepti zajedniki za sve C programe. Neki od koncepata kasnije se obrauju detaljnije. Primjer 1. Prvi C program /* Moj prvi C program */ #include main(){ printf("Ovo je moj prvi C program."); return 0; }Ovo je moj prvi C program.

- Linija komentara - poinje s /* a zavrava */ sve to je izmeu kompajler ignorira - Header files - sadrideklaracije funkcija koje su potrebne u programu stdio.h sadri deklaracije ulazno izlaznih funkcija -main() - funkcija koju svaki C program mora sadravati.C program zapoinje pozivom funkcije main(), a zavrava u veini sluajeva povratkom iz funkcije main(). -{ - poetak bloka - printf() - ispisuje poruku na ekranu, standardna funkcija printf() ispisuje sve to se nalazi izmeu navodnika. - ; - kraj naredbe -} - kraj bloka

7

Primjer 2. Program deklarira cjelobrojnu varijablu value, zatim joj pridrui vrijednost 1023, te je ispisuje na zaslon /* Program #2 */ #include main() { int value = 1023; printf("Ovaj program ispisuje vrijednost %d", value) ; return 0; } -int value -= - printf()Ovaj program ispisuje vrijednost 1023

- varijablu value deklarira kao cjelobrojnu . - u C jeziku sve varijable prije upotrebe treba deklarirati. - znak pridruivanja - sadri dva argumenta odvojena zarezom - prvi argument je tekst u kome se nalazi format %d za ispis cjelobrojne vrijednosti - drugi dio je ime cjelobrojne varijable value koja e se

ispisati. na mjestu formata %d Primjer 3a. Program pretvara galone u litre, 1galon = 3.7854 4 litre jer se koriste cijeli brojevi. /* Program pretvara galone u litre */ #include main() { int galoni, litre; printf("Unesite kolicinu galona :") ; scanf("%d", & galoni) ; litre = galoni * 4 ; printf("%d l", litre); return 0; } - int galoni,litreUnesite kolicinu galona : 3 12 l

- dvije cjelobrojne varijable - imena odvajamo zarezom -* - mnoenje - scanf() - funkcija za unos vrijednosti sa tipkovnice - prvi argument sadri format %d (cjelobrojna vrijednost) - drugi argument je &galoni (ime cjelobrojne varijable koja se uitava) a predhodi joj &adresni operator. - printf("%d l", litre); - sadri dva argumenta odvojena zarezom - prvi dio sadri tekst i format koji poinje sa %d a to znai da ispisuje vrijednost int varijable - drugi dio sadri ime int varijable koja e se ispisati

8

Primjer 3b. Program pretvara galone u litre uz upotrebu floating-point brojeva. /* Program pretvara galone u litre uz upotrebu floating-point brojeva */ #include main() { float galoni, litre ; printf("Unesite kolicinu galona :") ; scanf("%f", & galoni) ; litre = galoni * 3.7845 ; /* naredba pridruivanja*/ printf("To je:""%f l", litre); return 0; }Unesite kolicinu galona : 3,4 11.356200 l

- deklaracija realanih varijanti sa pominom tokom. - imena odvajamo zarezom - printf() - sadri jedan argument za ispis teksta na zaslon - %f - format u printf()i scanf() funkciji koji omoguuje upis i ispis broja sa pominom tokom - scanf() - funkcija za unos vrijednosti sa tipkovnice - prvi argument sadri format %f za uiavanje float varijable - drugi argument je adresni operator & i ime varijable koja se uitava - printf()- sadri dva argumenta odvojena zarezom - prvi dio sadri tekst i format koji poinje sa %f a to znai da ispisuje vrijednost float varijable - drugi dio sadri ime varijable koja e se ispisati

- float

9

3. TIPOVI PODATAKAProgramski jezik C sadri vie tipova podaka, a prema ANSI standardu [1] osnovni tipovi podataka su char (znakovni), int (cjelobrojni), float i doouble (realni) pri emu se float i double razlikuju po veliini koju podatak moe poprimiti te void podatak koji ne zauzima memorijski prostor( nema vrijednosti ).

3.1 Osnovni tipovi podatakaTip podataka: char int float double Broj bita: 8 16 32 64 Vrijednosti od do -127 do 128 -32 768 do 32 767 3.4e-38 do 3.4e38 1.7e-308 do 1.7e+308 tako da bolje odgovaraju

Prilagoenjem mogue je primjeniti osnovne tipove podataka potrebama.

3.2 Dodatni tipovi podatakaTip podataka: unsingned char signed char unsigned int signed int short int unsigned short int signetdshort int long int signed long int unsingnet long int long double Broj bita: 8 8 16 16 16 8 8 32 32 32 128 Vrijednosti od do 0 do 255 -128 do 127 0 do 65.535 -32 768 do 32 767 -32 768 do 32 767 0 do 65535 -32 768 do 32 767 -2147483648 do 2147483647 -2147483648 do 2147483647 0 do 4294967295 1.7e-308 do 1.7e+308

Konstante su podaci koji se ne mijenjaju tijekom izvoenja programa, podaci na koje program ne moe utjecati.

3.3 Oktalne i heksadecimalne konstanteBaza 8 Baza 16 0, 1, 2, 3, 4, 5, 6, 7 znamenke 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F znamenke /* 255 */ /* 9 */ x iza nule poinje nulom

Primjer: int hex = 0 x FF int oct = 011

10

3.4 Znakovne( String) konstanteNiz znakova. Pie izmeu dvostrukih navodnih znakova. Primjer 4.: #include Ovo je proba main() { printf("%s %s %s ", "Ovo", "je", "proba"); return 0; } %s konstanta za ispis stringa

3.5 Kontrolni znakoviKod \n \b \r \t \ \ \0 \\ \ \a \N \xN \b \f \r Znaenje novi red backspace carriage return tab dvostruki navodnik jednostruki navodnik nula backslash vertikalni tabulator alarm oktalna konstanta heksadecimalna konstanta pomie kursor u lijevo za jedan znak ide na poetak nove stranice (form feed) ide na poetak tekue linije (carriage return)

11

4. KONSTANTE I VARIJABLEKonstante su prema [4] nepromjenjive veliine , podaci koji su za vrijeme obrade konstantni. Konstante mogu biti brojane ( dekadske, oktalne, heksadekadske ) i nebrojane. Nebrojane se konstante piu izmeu navodnika koji ne ulaze u njihovu duljinu i nee se vidjeti na ispisu. Kada se u kodu pojavljuju brojane konstante, prevoditelj ih pohranjuje u formatu nekog od osnovni tipova S brojevima koji sadre decimalnu toku ili slovo e (E) prevoditelj barata kao s podacima tipa double dok sve ostale brojeve tretira kao int. Za specificiranje konstanti mogu se koristiti i sufiksi posebni znakovi za eksplicitno odreivanje tipa brojane konstante. Varijabla je imenovani dio memorije. Deklarirati varijablu [4] znai imenovati je i jednoznano odrediti njezin tip.To je postupak imenovanja i dodjele memorijskog prostora varijabli cjelobrojnoj najmanje 16, znakovnoj 8, logikoj 1 a eralnoj 32 bita. Znak jednakosti je operator pridruivanja. Lijeva strana ( ime varijable) je adresa a desna vrijednost je sadraj. Djeluje tako da se desna vrijednost preslika u sadraj na adresi lijevo pri emu se prekriva sadraj koji se do tada tamo nalazio.Definirati varijablu znai inicijalizirati je ( zadati joj poetnu vrijednost ) pridruiti joj vrijednost ( sadraj ). Imena varijabli nazivaju se identifikatori . Identifikator je ime varijable koje jednoznano odreuje objekt. Dozvoljeni znakovi za sastavljanje imena varijable su mala i velika slova engleske abecede, znamenke 0 do 9 i znak za podcrtavanje ( underscore ). Na poetku ne smije biti broj a znak za podcrtavanje niti na poetku niti na kraju. Proizvoljan je broj znakova identifikatora, meutim raunalo najee kontrolira 31 znak ( The ANSI standard : A Summary for the C Programmer. http:// www.ericgiguere.com/articles/ansi-c-summary.html ). Memorijski prostor se varijablama dodjeljuje u skladu s deklaracijom tipa Duljina ovisi i o duljini kompjutorske rijei Tako e 16 bitno raunalo za int brojeve trebati jednu 16 bitnu rije, za long int i float 2 rijei ( 32 bita ), za dvostruke realne ( double ) 4 rijei ( 64 bita ) a za dvostruko dugake realne ( long double ) trebati prostor od 5 kompjutorskih rijei ( 80 bitova ). Moramo paziti prilikom upotrebe malih i velikih slova, jer nemaju isto znaenje Primjer=1 i primjer=1. Sve varijable koje se koriste moraju se deklarirati.

Inicijalizacija varijablitip varijable_ime= konstanta ; char ch = a ; int prvi = 0 ; float bla = 123.23F ;

12

4.1 Lokalne varijableLokalne varijable deklariraju se unutar funkcije prilikom ulaska, a gube se kod izlaska. Poznate su unutar funkcije (bloka). Primjer 5. #include #include func(); void main() { int x; x = 10; func(); printf("%d\n", x); getch(); } func() { int x; x = -199; printf("%d\n", x); return 0; } - - inicijalizacija -getch()

-199 10

- Header datoteka conio.h u uvom sluaju zbog funkcije getch() - inicijalizacija varijable x, u prvom sluaju unutar funkcije main(), a u drugom sluaju funkcije func() - funkcija za itanje znakova sa tipkovnice , u naem sluaju sliku izlaznog zaslona dok ne pritisnemo neku tipku.

13

4. 2 Globalne varijableGlobalna varijabla daje mogunost zadravanja vrijednosti unutar vremena izvravanja programa. Deklarira se na poetku programa, prije main() funkcije. Vrijednosti globalne varijable moe se pristupiti iz bilo koje funkcije. U programu koji slijedi varijabla br je globalna i deklarirana je prije main() funkcije . Unato tome to br nije deklarirana u main() niti u func1() obje funkcije mogu je koristiti. Primjer 6. #include int br; func1(); func2(); void main() { int i; br=10; for (i=0; i='A'; slovo--) printf("%c", slovo); }

15

5. OPERATORIOperatori su [4] su znakovi koji odreuju neku akciju Brojni operatori omoguavaju rukovanje brojevima ili tekstom.Aritmetiki operatori omoguavaju izvoenje aritmetikih operacija. Logiki opeatori omoguavaju ispitivanje tonosti / netonosti nekog izraza ili tvrdnje a relacioni se operatori upotrebljavaju za usporeivanje jedne vrijednosti s drugom. Operator je znak ili rije koja odreuje vrstu akcije. Akcija je postupak koji elimo izvrti. Operand je podatak koji sudjeluje u akciji a izraz je saeta uputa raunalu, odnosno prikaz akcije koju elimo izvriti pomou operanada.

5.1 Operator dodjeljivanja dodjeljivanje = 5.2 Aritmetiki operatori oduzimanje zbrajanje + mnoenje * dijeljenje / Modul ( ostatak int dijeljenja ) % dekrament -inkrement ++ 5.3 Kombinacija aritmetiih operatora += -= *= /= %=-kratica x+=2; x-=2; x*=2; x/=2; x%=2; x+=2; ekvivalent x=x+2; x=x2; x=x*2; x=x/2; x=x%2; x=x+2;

5.4 Bit operatori & | ^ ~ >

I ili ekskluzivni ili komplement shift lijevo shift desno

16

5.5 Operatori usporeivanja( relacioni ) vee od > vee ili jednako >= manje od < manje ili jednako b - naredba 1 - naredba 2

- poetak if naredbe - uvijet, ako je a>b izvodi se naredba 1, a ako je amagicni) printf("\n Vas pokusaj je prevelik.\n"); else printf("\n Vas pokusaj je premalen. \n"); } }Vas pokusaj: 4 ...zao mi je krivo... Vas pokusaj je premalen.- - magicni=rand() - if - (pokusaj==magicni) - prvi blok naredbi - drugi blok naredbi - ugnjeeni if - (pokusaj>magicni) - prva naredba - druga naredba- Header datoteka iz koje u ovom sluaju koristimo rand(). - varijabli magini pridruujemo nasumice generiran broj. - poetak naredbe if. - poetni uvjet. - izvrava se ako je poetni uvijet ispunjen. - izvrava se ako petni uvijet nije ispunjen. - poetak nove if naredbe unutar drugog bloka naredbi prve if nardbe. - uvijet ugnjeene if naredbe. - izvrava se ako je uvjet ugnjeene if naredbe ispunjen. - izvrava se ako uvjet ugnjeene if naredbe nije ispunjen.269.3 Naredba switchOpi oblik: switch ( variable ) { case konstanta 1 : blok naredbi; break; case konstanta 2 : blok naredbi; break; default : blok naredbi; }Testira varijablu i niz integer ili character konstanti. Ako niti jedan nije ispunjen izvrava se default. - switch za razliku od if testira samo jednakost - u istoj switch naredbi ne moe biti dva case-a s istom vrijenosti - switch je bri od niza if-ova - dijelovi naredbi pridrueni svakom case-u nisu blokovi Primjer 12. #include void main() { int i; for(i=0; i-100 ; i=i-5 ) printf("%d" , i); }100 95 90 85 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 -95- for - i=100 - uvijet - korak - naredba for bolk- poetak for petlje - inicializacija varijable i - dok je uvijet ispunjen for petlja e izvravati naredbu. - za koliko e se u svakom prolazu kroz petlju u ovom primjeru umanjiti varijabla i - izvrava se kada je uvijet ispunjenfor ( inicijalizacija; uvjet; korak ) { blok naredbi } Primjer 13a. Program ispisuje vrijednosti drugog korijena brojeva od 1 do 100. #include 1 1.000000 #include 2 1.414214 void main() 3 1.732051 { 4 2.000000 5 2.236068 int broj; .... double korijen; 95 9.746794 for (broj=1 ; broj"); scanf("%s",zemlja); printf("\nUnesi povrsinu zemlje->"); scanf("%f",&povrsina); printf("\n%s ima povrsinu %7.0f kvadratnih kilometara.", zemlja,povrsina); return; }Unesi naziv zemlje->Hrvatska Unesi povrsinu zemlje->56610 Hrvatska ima povrsinu 56610 kvadratnih kilometara.Zadatak 1.2 Unesi decimalni broj u slobodnom formatu sa vrstim zarezom (%f) i zatim ga ispii ga u definiranom formatu sa vrstim zarezom (npr. %6.2f) te u eksponencijanom obliku (%e). Mijenjajui format ispisa podatka provjerite kako postavke formata utjeu na oblik ispisa. #include #include #include int main(){ float broj; printf("Unesi decimalni broj u formatu sa vrstim zarezom ->"); scanf("%f",&broj); printf("\nDec. broj %f u formatu sa vrstim zarezom ispisuje se kao =%6.2f,"// "\n a u eksp. obliku se ispisuje kao =%.3e!",broj,broj,broj); getch(); return 0; }Unesi decimalni broj u formatu sa vrstim zarezom ->24.56 Dec. broj 24.559999 u formatu sa vrstim zarezom ispisuje se kao = 24.56, a u eksp. obliku se ispisuje kao =2.456e+01!36Zadatak 1.3 Unesi katete pravokutnog trokuta i izraunaj hipotenuzu, te kutove trokuta u stupnjevima. #include #include #include int main(){ float a,b,c,alfa,beta; printf("Unesi katete pravokutnog trokuta a,b="); scanf("%f,%f",&a,&b); c=sqrt(a*a+b*b); alfa=asin(a/c); beta=asin(b/c); printf("\na=%5.1f b=%5.1f c=%5.1f",a,b,c); printf("\n%20s alfa=%4.1f beta=%4.1f stupnjeva.","Kutevi u trokutu su:", alfa* 180/3.14, beta*180/3.14); printf("\nProvjera, alfa+beta=%4.1f stupnjeva.",(alfa+beta)*180/3.14); getch(); return 0; }Unesi katete pravokutnog trokuta a,b=3,4 a= 3.0 b= 4.0 c= 5.0 Kutevi u trokutu su: alfa=36.9 beta=53.1 stupnjeva. Provjera, alfa+beta=90.0 stupnjeva.Zadatak 1.4 Izraunaj vrijednosti polinoma x^3+2x^2+3x+4 pomou funkcije POW. Vrijednost x unesi sa tipkovnice. #include #include #include int main() { double x,y; printf("Unesi vrijednost x="); scanf("%lf",&x); y=pow(x,3)+2*pow(x,2)+3*x+4; printf("\nZa x=%5.1f, polinom x^3+2x^2+3x+4 ima vrijednost %5.1f !",x,y); getch(); return 0; }Unesi vrijednost x=4 Za x= 4.0, polinom x^3+2x^2+3x+4 ima vrijednost 112.0 !37Zadatak 1.5 Napravi program koji rauna povrinu krunog isjeka. Polumjer krunice i kut u stupnjevima unesite sa tipkovnice odvojene razmakom. #include #include #include int main(){ float r,alfa,povrsina; printf("Unesi vrijednost polumjera i kut u stupnjevima ="); scanf("%f %f",&r,&alfa); povrsina=r*r*3.14 *alfa/360; printf("\nZa r=%5.1f i alfa=%5.1f, %25s=%10.2e!",r,alfa,"povrina krunog isjeka je",povrsina); getch(); return 0; }Unesi vrijednost polumjera i kut u stupnjevima =10 40 Za r= 10.0 i alfa= 40.0, povrsina kruznog isjecka je= 3.49e+01!Zadatak 1.6 Napravi program koji rauna kapacitet ploastog kondenzatora. Radi jednostavnosti razmak elektroda unesi u metrima, a povrinu ploa u kvadratnim metrima. Kapacitet izrazi u mikrofaradima. #include #include #include int main(){ double epsilon0=8.854e-12; float epsilonr=1,razmak,povrsina,kapacitet; printf("\nDiel. konst. vakuuma je%10.3e!",epsilon0); printf("\nUnesi relativnu dielektrinu konstantu ="); scanf("%f",&epsilonr); printf("\nUnesi razmak i povrsinu ploa odvojeno zarezom ="); scanf("%f,%f",&razmak,&povrsina); kapacitet=epsilon0*epsilonr*povrsina/razmak*1e+06; printf("\nKapacitet kondezatora je%10.3e mikrofarada!",kapacitet); getch(); return 0; }Diel. konst. vakuuma je 8.854e-12! Unesi relativnu dielektrinu konstantu =6 Unesi razmak i povrsinu ploa odvojeno zarezom =0.002,0.09 Kapacitet kondezatora je 2.391e-03 mikrofarada!38Zadatak 2.1 Z 2_1. Izraunajte zbroj prvih n prirodnih brojeva. n zadajte sa tipkovnice. U zadatku ne treba provjeravati da li trenutni zbroj prelazi raspon prikaza odabrane vrste broja. Pokuajte odgovoriti kakav bi bio rezultat da se to dogodi. #include #include int main(){ int n,i,suma=0; printf("\nUnesi prirodni broj n="); scanf("%d",&n); for (i=1;i%f",c); b=sqrt(pow((ax-cx),2)+pow((ay-cy),2)); printf("\nDuljina stranice b je->%f",b); a=sqrt(pow((cx-bx),2)+pow((cy-by),2)); printf("\nDuljina stranice a je->%f",a); // usporedivanje if((a!=b)&&(a!=c)&&(b!=c)) printf("\nTrokut je raznostranican"); else if((a==b)&&(b==c)) printf("\n Trokut je istostranican!!!"); else printf("\nTrokut je istokracan!!!"); getch(); }Unesi kordinate trokuta Unesi kordinate tocke A X,Y= 1,0 Unesi kordinate tocke B X,Y= -1,0 Unesi kordinate tocke C X,Y= 0,3 Duljina stranice c je->2.000000 Duljina stranice b je->3.162278 Duljina stranice a je->3.162278 Trokut je istokracan!!!93Zadatak v.2 Unesite koordinate sredita te polumjer kruga. Izracunajte koordinate presjecista kruznice i y osi. Ako presjeciste ne postoji ispisite poruku. #include #include #include void main(){ float y1,y2,p,q,r; printf("\nUnesite kooordinate sredista (p,q): "); scanf("%f,%f",&p,&q); printf("\nUnesite polumjer kruga: "); scanf("%f",&r); if((r*r-p*p)0){ y1=q+sqrt(r*r-p*p); y2=q-sqrt(r*r-p*p); printf("\nPresjeciste se nalazi u tocki (0,%5.2f) i tocki (0,%5.2f).",y1,y2); } else if((r*r-p*p)==0){ printf("\nDodirna tocka je u (0,%5.2f).",q); } getch(); }Unesite kooordinate sredista (p,q): 0,0 Unesite polumjer kruga: 5 Presjeciste se nalazi u tocki (0, 5.00) i tocki (0,-5.00).94Zadatak v.3 Unesite koordinate prve toke (x1,y1) i druge toke (x2,y2). Odredite koeficijent smjera pravca koji prolazi tim tokama kao i jednadbu pravca. Zatim zadajte treu toku (x3,y3) i provjerite da li lei na pravcu. #include #include #include int main(){ float x1,y1,x2,y2,k,l,x,y,g,m; printf ("\nUnesi koordinate 1. tocke X1,Y1= "); scanf ("%f,%f",&x1,&y1); printf ("\nUnesi koordinate 2. tocke: X2,Y2= "); scanf ("%f,%f",&x2,&y2); k = (y2-y1)/(x2-x1); l = y1-(k*x1); printf("\n\nJednadzba pravca je: y = %5.2f * X + %5.2f", k,l); printf ("\n\nUnesite koordinate 3. tocke X3,Y3= "); scanf ("%f,%f",&x,&y); g = y - y1; m = k*(x-x1); if (g==m) printf ("\aTocka lezi na pravcu!!!"); else printf ("\n\aTocka ne lezi na pravcu!!!"); getch(); return 0; }Unesi koordinate 1. tocke X1,Y1= 0,0 Unesi koordinate 2. tocke: X2,Y2= 2,2 Jednadzba pravca je: y = 1.00 * X + 0.00Unesite koordinate 3. tocke X3,Y3= 5,5 Tocka lezi na pravcu!!!95Zadatak v.4 Unesite do 20 prirodnih brojeva sa tipkovnice i odredite koji je najmanji, a koji najvei broj u tom nizu. Ispiite niz i granine vrijednosti. #include #include int main(){ int niz[20], najm, najv, d, i; clrscr(); do{ printf("Upiite broj elemenata niza (do 20 lanova):"); scanf("%d",&d); if(d>20)printf("\nPreveliki niz pokusaj ponovo\n"); }while(d>20); for(i=0;i