Docsity
Docsity

Pripremite ispite
Pripremite ispite

Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u


Nabavite poene za preuzimanje
Nabavite poene za preuzimanje

Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan


Školska orijentacija
Školska orijentacija


PROGRAMIRANJE PROGRAMSKIM JEZKOM C, Vežbe od Računarstvo i informatika

Programiranje, Programski jezik C Visoka skola tehniscki strukovnih studija , Cacak

Tipologija: Vežbe

2017/2018

Učitan datuma 23.04.2018.

aleksandra-povrenovi
aleksandra-povrenovi 🇧🇦

5

(1)

4 dokumenti

1 / 43

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
Čačak
PROGRAMSKI JEZIK C
- Vežbe -
2017.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b

Delimični pregled teksta

Preuzmite PROGRAMIRANJE PROGRAMSKIM JEZKOM C i više Vežbe u PDF od Računarstvo i informatika samo na Docsity!

Čačak

PROGRAMSKI JEZIK C

- Vežbe -

Aritmetički operatori

Aritmetički operatori, kao što im samo ime govori, služe za izvršavanje aritmetičkih operacija. Postoji ukupno pet aritmetičkih operatora: + sabiranje, - oduzimane, * množenje, / dijeljenje, % ostatak pri djeljenju (samo za cijele

brojeve).

Svi ovi operatori su binarni, što znači da imaju dva argumenta i njihova svrha je jasna, osim možda poslednjeg. Npr.

izraz 8%3 daje ostatak pri deljenju broja 8 sa brojem 3, tj. daje vrijednost 2.

Operatori i izrazi dodeljivanja vrednosti

Postoje skraćeni zapisi za operatore u kojima je promenljiva na levoj strani a neki od operatora na desnoj, kakav je

i=i+2. Skraćeni zapis za ovaj izraz je i+=2. Ovakvi skraćeni zapisi su mogući za operatore +, -, *, /, %.

Aritmetički operatori i izrazi Operator Opis operatora Primer

  • Sabiranje x=x+
  • Oduzimanje x=x- 2
  • Množenje x=x* / Deljenje x=x/ % Modul (ostatak pri deljenju) x=10%2 pa je x=0 (10/2 je 5 i ostatak 0) = Dodeljivanje x= += Sabiranje i dodeljivanje x+=3 je isto što i x=x+
  • = Oduzimanje i dodeljivanje x-=3 je isto što i x=x- 3 = Množenje i dodeljivanje x=3 je isto što i x=x* /= Deljenje i dodeljivanje x/=3 je isto što i x=x/ %= Ostatak deljenja i dodeljivanje x%=3 je isto što i x=x%

Relacijski i logički operatori

Ovi operatori imaju isti smisao kao i u matematici. U ovu grupu operatora spadaju: > veće, < manje, <= veće ili

jednako, >= manje ili jednako, == jednako (dvostruko jednako - jednostruko jednako je operator dodjele), != različito (! je znak negacije). Osim ovih, u ovu grupu spadaju i logički vezinici (operatori).

Relacijski operatori Operator Značenje == Jednako != Različito

Veće od = Veće ili jednako < Manje od <= Manje ili jednako

Konverzioni karakteri Konverzioni karakter Konverzija izlaznog niza %d ili %i Celobrojna promenljiva %f Realna promenljiva %c Karakter promenljiva %s Niz karaktera %e ili %E Realan broj u naučnoj notaciji %o Oktalni broj %x ili %X Heksadecimalni broj %n Broj karaktera koji se ispisuje %u Neoznačene promenljive (unsigned)

Matematičke funkcije Funkcija u C-u Objašnjenje sin(x) sin x cos(x) cos x tan(x) tg x asin(x) arc sin x acos(x) arc cos x log(x) logex, x> pow(x,y) xy sqrt(x) (^) √𝑥 abs(x) za int, fabs(x) za float i double |x| ceil(x), ceil(2.2)=3, ceil(2.8)=3 Prvi veći ceo broj floor(x), floor(2.2)=2, floor(2.8)=2 Prvi manji ceo broj round (x), round(2.2)=2, round(2.8)=3 Zaokruživanje brojeva

Logički operatori Operator Značenje && Logičko I (AND) || Logičko ILI (OR) ! Logička negacija (NOT) ^ Logičko ekskluzivno ILI (EOR)

ALGORITMI

Algoritam predstavlja skup pravila za rešavanje nekog zadatka (postupak rešavanja zadatka). Algoritam treba da zadovolji uslove:

  1. Definisanost – svaka operacija ili pravilo mora imati definisano i samo jedno značenje, odnosno rezultat svake operacije mora biti jasno definisan (nedvosmislen);
  2. Konačnost – svaki algoritamski korak mora biti takav da bi ga neko izveo koristeći olovku i papir (ili računar) za neko konačno vreme. Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu. Vreme rada računara prilikom izvršetka nekog algoritma treba da bude razumno kratko;
  3. Rezultat – po završetku izvršavanja algoritma treba da se stvori mogućnost da se ustanovi rezultat njegovog rada, odnosno da li je algoritam doveo do željenog cilja ili nije.

Načini zapisa algoritama  leksički zapis algoritma (rečima)  grafički (šematski) zapis algoritma (algoritamska šema, dijagram toka)  zapis pomoću nekog programskog jezika (program)  preko pseudojezika

Leksički zapis: Nalazimo se na raskrsnici, na pešačkom prelazu. Treba preći ulicu a postoji semafor (CRVENO-zabranjeno, ZELENO-slobodno).  Stojimo ispred semafora  Ako je crveno svetlo ponavljamo korak 1, ako je zelena svetlost prelazimo na sledeći korak 3  Preći ulicu, do pola ulice gledajući na saobraćaj sa leve strane, a od pola ulice gledati na saobraćaj sa desne strane

Algoritamske šeme se najčešće predstavljaju grafički, kao dijagram toka programa (flowchart). Kod ovakvog prikaza algoritamske šeme, pojedine akcije (koraci) su predstavljene korišćenjem odgovarajućih grafičkih simbola. Na taj način se osigurava jednostavnost, preglednost, razumljivost i jednoznačnost zapisa algoritma. Grafički simboli koji se najčešće koriste za crtnje algoritamskih šema, kao i njihovi opisi, dati su u tabeli.

Prikaz grafičkih simbola i njihov opis

Simbol Opis

Terminator – svaka algoritamska šema započinje i završava se ovim simbolom

Ulazni blok – unošenje podataka

Izlazni blok – ispis (izdavanje) podataka

Blok obrade – obrada podataka

Blok odluke – označavanje uslova u algoritamskoj šemi

Povezivanje algoritamskih koraka

ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumeva se redosled izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu. Na osnovu toga može se zaključiti da postoje tri osnovne algoritamske strukture:

Linijske algoritamske strukture - strukture kod kojih se svaki algoritamski korak izvršava tačno jednom u toku jednog izvršavanja algoritma. Sastoji se od algoritamskih koraka ulaza, obrade i izlaza.  Razgranate strukture - za razliku od linijskih struktura kod kojih se svaki algoritamski korak izvršava tačno jednom, kod razgranatih svaki algoritamski korak se izvršava najviše jednom (znači jednom ili nijednom) i obavezno sadrži bar jedan uslovni algoritamski korak. Ako je uslov ispunjen, izlaz iz algoritamskog koraka biće označen sa ‘da’, a ako uslov nije ispunjen izlaz će biti označen sa ‘ne’, ili će biti bez oznake.  Ciklične algoritamske strukture - strukture kod kojih se jedan ili više algoritamskih koraka može izvršavati više od jedanput u toku jednog izvršavanja algoritma.

Code Blocks IDE

Da bi se napisao i izvršio program napisan na programskom jeziku C, potreban je tekst editor u kojem će program biti napisan, kompajler i bilder koji će napisani kod kompajlirati i prevesti u mašinski kod, razumljiv računaru.

Umesto da se koriste različiti programi za prethodno opisane funkcije (razvoj koda, kompajliranje, linkovanje, kao i debug-iranje), softverski paket poznat kao integrisano razvojno okruženje (integrated development environment – IDE) integriše sve ove funkcije u jednu jedinstvenu celinu što olakšava pisanje i testiranje programa.

Neki od najpoznatijih integrisanih razvojnih okruženja, čije se korišćenje istovremeno preporučuje u okviru predmeta Uvod u programiranje i Praktikum iz programiranja su: Microsoft‘s Visual C (Windows); Code::Blocks (Windows, Linux) Netbeans C/C++ (Windows, Linux)

Mi ćemo za pisanje programa na jeziku C koristiti razvojno okruženje Code Blocks (Code Blocks je moguće koristiti za dva programska jezika: C i C++). Nakon uspješne istalacije i pokretanja programa Code Blocks otvara se prozor kao na slici 1.

Slika 11 – Početni prozor okruženja

Za kreiranje novog projekta (skup više programa) potrebno je potvrditi opciju Create a new project , nakon čega se otvara prozor kao na slici 2 (pogledajte Rezime/Napomene).

Da bi napisali i pokrenuli program u programskom jeziku C, potrebno je kreirati novi projekat (potvrditi opciju Create a new project ili File->New->Project). Za pisanje konzolnih aplikacija potrebno je iz prozora, koji je prikazan na slici 2, izabrati Console application.

Slika 12 – New form template

Nakon izbora opcije Empty file potvrditi Yes , a zatim dati naziv tom fajlu i potvrditi Ok (u oba slučaja). Sada se može početi sa pisanjem kôda programa (slika 6).

Slika 16 – Kôd programa

Za pokretanje programa potrebno je potvrditi opciju Build and Run (slika 7).

Slika 17 – Pokretanje programa

Kao rezultat ovog programa ispisaće se tekst: “ Pozdrav buduće koleginice i kolege ” (slika 8).

Slika 18 – Izlaz programa

Slika 19 – Suma brojeva a i b

Slika 20 – Izlaz novog programa

Rezime/napomene:

Ako je kreiran projekat, i želi se kreirati novi C dokument (van tog projekta) potrebno je otvoriti novi projekat.Za korišćenje nezavisnih programa (nisu deo projekta) preporuka je da se preskoče prethodni koraci (slike 2, 3 i 4).  Izvorni kod moguće je pisati/pregledati u bilo kojem programu za uređivanje teksta (engl. text editor), npr. Notped-u.  Datoteka izvornog koda (engl. source code) je uputstvo za rešavanje zadatka koji je napisan naredbama programskog jezika C – ekstenzija c.  Program prevodilac prevodi izvorni kod u objektni kod (međukorak do mašinskog jezika), proverava sintaksu napisanog izvornog koda.  Prevođenjem nastaje datoteka objektnog koda (engl. object code) – ekstenzija o.  Datoteka objektnog koda nije izvršni (engl. executable) program i ne može se odmah izvršiti na računaru.  U izvršni je oblik pretvara program povezivač (engl. linker) povezujući objektnu datoteku s bibliotekama i drugim potrebnim datotekama.  Ako se prilikom prevođenja pronađu sintaksne greške (engl. syntax error), ispisuju se odgovarajuće poruke (crvena boja).  Otkrivene greške treba ispraviti, pa ponovo pokrenuti prevođenje.  Upozorenja (engl. warnings) ne sprečavaju prevođenje, povezivanje i izvršavanje programa već ukazuju na delove programa koji u određenim okolnostima mogu prouzrokovati grešku pa je zato najbolje ukloniti njihove uzroke (plava boja=.

 Krajnji rezultat pravljenja programa je izvršna datoteka – ekstenzija exe.  U načelu, izvršnoj datoteci nisu potrebni nikakvi dodaci pa se može izvršavati i bez izvornog programa, prevodioca, linkera, biblioteka itd.  Osim sintaksnih grešaka mogu se javiti i logičke (semantičke) greške.  Za otkrivanje logičkih grešaka (engl. run-time error) potrebno je proveriti program s podacima za koje je unapred poznat krajnji rezultat.

Struktura programa

Na primeru jednostavnog programa, biće objašnjena struktura programa napisanog u programskom jeziku C.:

//Dobrodosli.c #include<stdio.h> main() { printf("\n\tDobrodosli!\n"); // Komentar }

 C je tzv. case-sensitive programski jezik, što znači da razlikuje mala i velika slova.  Nakon svake naredbe u C-u mora se nalaziti karakter ;.  C ne poznaje razmake u kodu, tako da se prelazak u novi red nakon svake komande vrši samo iz estetskih razloga, radi lakšeg čitanja koda.  Komentari se mogu pisati na dva načina: ukoliko se komentar nalazi u jednom redu, dovoljno je na početak tog reda staviti karaktere //, a ukoliko se komentar nalazi u više redova, potrebno je komentar ograničiti parovima karaktera /* i /. Primeri komentara su: // Komentar u jednom redu / Komentar u više redova*/  Prvi red programa #include <stdio.h> u postojeći kod uključuje datoteku za prevođenje, u kojoj se nalaze funkcije koje su potrebne za uspešno izvršavanje programa (funkcije za ulaz/izlaz).  Funkcija main() je glavna funkcija programa i izvršavanje programa počinje od prve linije koda ove funkcije. Svaki projekat mora u nekom od fajlova imati ovu funkciju. Ona može imati drugačiju definiciju (može biti nekog drugog tipa, npr. void ili može imati listu argumenata).  Par vitičastih zagrada {} predstavlja granice bloka naredbi, kao begin i end u programskom jeziku PASCAL.

Ukoliko se radi o celim brojevima (tip int), vrednosti se mogu zadati u tri različita brojna sistema:  ukoliko vrednost počinje cifrom koja nije nula, broj se tretira kao dekadni.  ukoliko počinje nulom, broj se tretira kao oktalni, a  ukoliko počinje sa 0x ili 0X broj se tretira kao heksadekadni. int x, y, z;

x = 123; // dekadni broj y = 0123; // oktalni broj

z = 0x123; // heksadekadni broj

Deklarisati neku promenljivu znači:

 odrediti joj tip (tip podataka koje može da čuva),  dati joj naziv (ime, identifikator) i  u memoriji računara odvojiti prostor za smeštaj konkretne vrednosti (vrednost koja se dodeljuje promenljivoj).

Osnovni format deklarisanja promenljivih u programu je:

tip_podataka promenljiva1, promenljiva2, ... ;

Deklaracija promenljivih se moze vršiti u okviru glavne funkcije programa (main) ili u okviru funkcija koje definiše sam programer. Ako uzmemo u obzir glavnu funkciju programa – main , deklaracija promenljivih se vrši nakon otvorene vitičaste zagrade iza main() funkcije.

Primer : #include<stdio.h> // uključivanje header file-a (datoteke) stdio.h main() //glavna funkcija programa { int suma; // deklaracija celobrojne promenljive suma suma=500+150; // dodeljivanje vrednosti promenljivoj suma printf(“Suma 500 i 150 iznosi %d”, suma); // ispis vrednosti promenljive suma na standardnom izlazu } Ispis programa bi bio sledeći: Suma 500 i 150 iznosi 650

Osnovna četiri tipa podataka u jeziku C su:  int – celobrojne vrednosti (celobrojne konstante, promenljive, izrazi, funkcije). Opseg celobrojnih vrednosti se može menjati primenom kvalifikatora long, short i unsigned:  short int – smanjuje opseg celobrojnih promenljivih,  long int – povećava opseg celobrojnih promenljivih,  unsigned int – deklaracija promenljivih koje čuvaju samo pozitivne vrednosti.  float – realne promenljive, koje mogu čuvati vrednosti realnih brojeva (vrednosti sa decimalnim zarezom),  double – realne promenljive, koje mogu čuvati oko dva puta više decimalnih cifara od promenljivih tipa float.  char – promenljive ovog tipa memorišu karaktere. Konstante tipa char se dobijaju stavljanjem karaktera između jednostrukih navodnika: ‘A’, ‘2’, ‘a’. Konverzioni karakteri Konverzioni karakter Opis konverzije d decimalna koncerzija označenih brojeva (tip int ) c Konverzija jednog karaktera (tip char ) s Konverzija niza karaktera (tip char[] ) f konverzija realnih decimalnih brojeva u jednostrukoj tačnosti (tip float ) lf konverzija realnih decimalnih brojeva u dvostrukoj tačnosti (tip^ double )

Izlazna konverzija (štampanje vrednosnih promenljivih)

Izlazna konverzija podataka se vrši pozivanjem bibliotečke funkcije printf čiji je opšti oblik:

printf ("niz_znakova_za_ispis", izraz1, ...);

Niz znakova za ispis predstavlja niz karaktera, pri čemu se znakom % pokazuje mesto gde treba da se upišu vrednosti promenljivih koje se nalaze iza niza znakova za ispis (izraz). Nakon znaka % ide odgovarajuće slovo, koje zavisi od tipa promjenljive: o %d - celobrojni tip, zapisan u dekadnom sistemu, o %o - celobrojni tip, zapisan u oktalnom sistemu, o %x - celobrojni tip, zapisan u heksadekadnom sistemu, o %f - realni tip (float i double) o %c - karakter.  svaki izraz predstavlja numerički izraz čija će se vrednost ispisati. Napomena: skalarna promenljiva i numerička konstanta predstavljaju specijalne slučajeve numeričkih izraza.

Primeri naredbi za štampanje:

 printf(“%d“, x); // štampa promenljive x u dekadnom sistemu  printf(“%f %f“, a, b); // štampa realnih promenljivih a i b  printf(“%d %o %x“, x, x, x); // štampa promenljive x u dekadnom, oktalnom i heksadekadnom sistemu  printf(“%c“, c); // štampa vrednosti promenljive c tipa char  printf(“Vrednost promenljive x je %d“, x);

Napomena: kod izlazne konverzije vrši se prenos parametara po vrednosti, a ne po referenci. Ukoliko se izlaznom konverzijom ispisuju neke numeričke vrednosti, programer može i da definiše koliko će se znakova minimlno ispisati, zatim koliko će se decimalnih cifara uzeti u obzir, itd. Na primer: print (“Prosečan broj bodova je %4.2f.”, prosekB); U prethodnom primeru, broj 4 označava minimalan broj znakova koji treba ispisti. Broj 2 označava da treba ispisati dve decimale. Ukoliko broj ima više decimala, u ovom slučaju prlikom ispisivanja broj bi bio zaokružen na 2 decimale.

Zadatak : Izračunati vrednost izraza 3

(^5) +12− √20∗^

. Rezultat predstaviti na dve decimale. //Izraz.c #include<stdio.h> #include<math.h> main(){ float rez; rez=(pow(3,5)+12-49)/(sqrt(20)*7); printf("Rezultat: %.2f", rez);}

Zadatak : Izračunati vrednost izraza c/x pri čemu je vrednost promenljive c=10.42 (realna), dok je vrednost promenljive x=5 (celobrojna). Inicijalizaciju promenljivih c i x izvršiti u delu za deklaraciju.

//Inicijalizacija.c #include<stdio.h> main(){ float c=10.42,rez; int x=5; rez=c/x; printf("\n\t%.2f / %d = %.2f\n", c,x,rez); }

Neke od prednosti korišćenja konstanti su:

 Eliminišu ili smanjuju probleme koji se javljaju prilikom unosa podataka. Lakše je zapamtiti da treba upotrebiti konstantu PI nego da treba uneti vrednost 3,14159265358979 ;  Programski kod se lakše ažurira. Ukoliko se direktno u programski kod unese kamata ( na primer 3.25), a kamata se promeni u 4.00, onda se svako pojavljivanje vrednosti 3.25 u programskom kodu mora promeniti sa 4.00;  Kada se koriste konstante, vrednost se menja na jednom mestu i to na mestu deklaracije konstante, а u programskom kodu će se automatski koristiti nova vrednost konstante;  Programski kod se lakše razume, itd.

Zadatak : Izračinati obim i površinu prstena koju obrazuju dva kruga poluprečnika: manji poluprečnika r1=9, veći

poluprečnik r2 za 3 veći od r1 (r2=r1+3). Uvesti konstantu PI.

//Prsten.c #include<stdio.h> #define PI 3. main() { int r1=9,r2; float Obim,Povr; r2=r1+3; Obim=2PI(r1+r2); // Obim prstena Povr=PI(r2r2-r1*r1); // Površina prstena printf("\n\tObim: %.2f\n", Obim); printf("\n\tPovrsina = %.2f\n",Povr); }

Zadatak: Naći količnik i ostatak pri deljenju dva prirodna broja a i b. kol = a div b; ost = a mod b // Dva broja.c #include<stdio.h> main() { int a,b, ost; float kol; printf("Uneti ceo broj a: "); scanf("%d", &a); printf("Uneti ceo broj b: "); scanf("%d", &b); kol=(float)a/b; // Kastovanje ost= a % b; printf("Kolicnik brojeva %d i %d je: %.2f\n",a,b,kol); printf("Ostatak pri deljenju brojeva %d i %d je: %d\n",a,b,ost); }

Zadatak: Naći sumu cifara trocifrenog prirodnog broja.

// Suma cifara.c #include<stdio.h> main() { int broj, cifstot, cifdest, cifjedn, suma; printf("Uneti prirodan broj: "); scanf("%d", &broj); cifstot=broj/100; cifdest=(broj/10)%10; cifjedn=broj % 10; suma = cifstot+cifdest+cifjedn; printf("Suma cifara trocifrenog broja %d je: %d\n",broj,suma); }

ZADACI – LINIJSKA STRUKTURA

  1. Nacrtati algoritamsku šemu kojom se ispisuje poruka „Zdravo budući programeri!“.
    1. Uneti dva broja, a potom naći i odštampati njihov zbir, razliku i proizvod.
    2. Promenljive a i b inicijalizovati redom vrednostima 10 i 15, a potom izračunati i ispisati, redom, sledeće operacije: c=a+b; a=a*10; b=c-a; d=b+a/c. Koje će vrednosti biti odštampane za promenljive a, b, c i d?
    3. Prevesti temperaturu iz skale Celzijusa u skalu Farenhajta, ako je odgovarajuća formula oblika: TemperaturapoFarenhajtu=(temperaturapoCelzijusu)*1.80+

// Zadatak Linijski 2 #include<stdio.h> main() { float A, B; printf("Uneti broj A i B:\n"); scanf("%f %f", &A, &B); printf("Zbir brojeva A i B je:%f\n", A+B); printf("Razlika brojeva A i B je:%f\n", A-B); printf("Proizvod brojeva A i B je:%f\n", A*B); }

//Zadatak Linijski 1 #include<stdio.h> main() { printf("Zdravo buduci programeri!"); // Poruka koja će biti ispisana }

// Zadatak Linijski 3 #include<stdio.h> main() { int a=10, b=15, c, d; printf("Rezultat promenljive c = %d\n", c=a+b); printf("Rezultat promenljive a = %d\n", a=a*10); // ovo će sad biti nova vrednost promenljive a printf("Rezultat promenljive b = %d\n", b=c-a); // ovo će biti nova vrednost promenljive b printf("Rezultat promenljive d = %d\n", d=b+a/c); }

// Zadatak Linijski 4 #include<stdio.h> main() { float tc, tf; printf("Uneti vrednost temperature u celzijusima:\n"); scanf("%f", &tc); printf("Temperatura u Faranhejtima je: %.2f\n", tf=tc*1.8+32); }

  1. Naći obim, površinu i dužinu dijagonale pravougaonika stranica A i B.
  2. Naći poluobim trougla ABO gde je O koordinatni početak (0,0), tačke A i B su date sa koordinatama A(x1,y1), B(x2,y2).
  3. Naći količnik i ostatak pri deljenju dva prirodna broja a i b. kol = a div b; ost = a mod b
  4. Naći sumu cifara trocifrenog prirodnog broja.

// Pravougaonik.c #include<stdio.h> main() { float A, B, O, P, dijagonala; printf("Uneti stranicu A: "); scanf("%f", &A); printf("uneti stranicu B: "); scanf("%f", &B); O=2(A+B); // izračunavanje obima pravougaonika P=AB; // izračunavanje površine pravougaonika dijagonala=sqrt(pow(A,2)+pow(B,2)); // izračunavanje dijagonale pravougaonika printf("Obim pravougaonika je:%.2f\n", O); printf("Povrsina pravougaonika je:%.2f\n", P); printf("Dijagonala pravougaonika je:%.2f\n", dijagonala); }

// Poluobim trougla #include<stdio.h> main() { int x1, y1, x2, y2; float PO, OA, OB, AB; printf("Uneti kordinatu x1: "); scanf("%d", &x1); printf("Uneti kordinatu y1: "); scanf("%d", &y1); printf("Uneti kordinatu x2: "); scanf("%d", &x2); printf("Uneti kordinatu y2: "); scanf("%d", &y2); OA=sqrt(pow(x1-0,2)+pow(y1-0,2)); OB=sqrt(pow(x2-0,2)+pow(y2-0,2)); AB=sqrt(pow(x2-x1,2)+pow(y2-y1,2)); PO=(OA+OB+AB)/2; printf("Poluobim trougla datih koordinata iznosi:%.2f\n", PO); }

// Dva broja.c #include<stdio.h> main() { int a,b, ost; float kol; printf("Uneti ceo broj a: "); scanf("%d", &a); printf("Uneti ceo broj b: "); scanf("%d", &b); kol=(float)a/b; ost= a % b; printf("Kolicnik brojeva %d i %d je: %.2f\n",a,b,kol); printf("Ostatak pri deljenju brojeva %d i %d je: %d\n",a,b,ost); }

// Suma cifara.c #include<stdio.h> main() { int broj, cifstot, cifdest, cifjedn, suma; printf("Uneti prirodan broj: "); scanf("%d", &broj); cifstot=broj/100; cifdest=(broj/10)%10; cifjedn=broj % 10; suma = cifstot+cifdest+cifjedn; printf("Suma cifara trocifrenog broja %d je: %d\n",broj,suma); }

Zadaci za vežbanje (linijska struktura):

  1. Odrediti prosečnu visinu (u centimetrima) košarkaške ekipe od 5 košarkaša.
  2. Preračunati američki dolar u Euro, ako su poznate dinarske vrednosti ovih valuta.
  3. Prevesti inče u centimetre, 1 inč = 2.54 cm.
  4. Napisati program koji prevodi kilograme u funte (1kg = 2.2 funte).
  5. Napisati program koji obračunava popust P za proizvod cene C.
  6. Napisati program kojim se izračunava i ispisuje zbir cifara datog četvorocifrenog celog broja N.
  7. Napisati program koji olakšava kasiru vraćanje kusura, tako što od njega traži da unese koliko kupac treba da plati i koliko je dao para. Kao izlaz program ispisuje koliko dinara i koliko para kasir treba da vrati kupcu (npr. kupac treba da plati 145,50 dinara, a dao je 150 dinara, program kao rezultat treba da ispiše 4 dinara i 50 para).
  8. Napisati program koji omogućava prevođenje temperature date u Kelvinima u temperaturu u Celzijusima (Tc = Tk – 273.15, Tc – Celzijusi, Tk - Kelvini).
  9. Napisati program za izračunavanje vrednosti izraza:
  10. Cena grafičke kartice data je u evrima. Odrediti koliko je moguće kupiti grafičkih kartica za D dinara (1 evro = 123 dinara).
  11. Koliko praznih kanistera zapremine K litara je potrebno da se pretoči benzin iz bureta zapremine B američkih galona? (1 američki galon = 3,79 litara).
  12. Naći površinu kružnog prstena poluprečnika R1 i R2 (R1>R2).
  13. Izračunati površinu i zapreminu valjka ako su dati poluprečnik osnovice r i visina H.
  14. Naći obim kruga opisanog oko pravouglog trougla kateta A i B.
  15. Potrošnja starog bojlera je X dinara. Zamenom starog bojčera ušteđeno je N%. Kolika je potrošnja novog bojlera (u dinarima)?
  16. Na prazan CD standardnog kapaciteta treba narezati datoteku kapaciteta A u MB (A<700). Naći slobodan prostor na CD-u. Rezultat prikazati u kilobajtima.
  17. Odštampati prirodni trocifreni broj unatraške (npr. 156 u 651).
  18. Koliko rastojanje u metrima će preći metak za S sekundi, ako je njegova prosečna brzina X km/h?
  19. Temperatura vode iznosi TC celzijusa. Voda se ohladi za 10 farenhajta. Kolika će biti nova temperatura u farenhajtima? (TF = TC*1.80 + 32)
  20. Na ispit iz programiranja izlazi 100 studenata. Koliko studenata položi ispit nakon dva ispitna roka, ako u svakom ispitnom roku na ispit izlaze svi studenti koji nisu položili, a prosečna prolaznost na ispitu (u oba roka) je 60%?
  21. Naći prodajnu cenu patika, ako je nabavna cena X dinara, PDV je 20%, dok je marža (zarada) Y%.
  22. Obračunati troškovi putovanja (u oba smera) ako je udaljenost S kilometara, potrošnja automobila na 100 km L litara, a cena litra goriva C dinara. Lova=2S/100L*C;
  23. Vremenski interval dat u minutima (X) izraziti u satima i minutima. Minuti=X mod 60, Sati=int(X/60)

Osnovi iz programiranja - pomoćni materijal

Pisanje koda - kontrola toka

if–else izraz

Uslovni if izraz ima sledeći oblik: if( uslov ) naredba1; else naredba2;  uslov mora biti neki logički izraz.  u slučaju da je uslov tačan, izvršava se naredba1 a u suprotnom naredba.  if izraz se može pojaviti i bez else izraza.  naredba može biti prosta naredba a može biti i složena naredba (blok) koja se dobije kada se više prostih naredbi grupišu navođnjem vitičastih zagrada. if( uslov ) { naredba1_1; naredba1_2; ... } else { naredba2_1; naredba2_2; ... } Primer : Napisati program koji ako je uneti ceo broj negativan ispisuje odgovarajući komentar. //Bez else.c #include <stdio.h> main() { int b; printf("Unesite ceo broj: "); scanf("%d",&b); if (b < 0) printf("Broj %d je negativan\n",b); //prosta naredba } Primer : Ako je uneti ceo broj paran onda ga pomnožiti sa 2, odštampati ga uz odgovarajući komentar, a ako nije paran onda ga podeliti sa 5, odštampati ga uz odgovarajući komentar. //Else blok.c #include <stdio.h> main() { int b; float novob; printf("\tUnesite ceo broj: "); scanf("%d",&b); if (b%2==0) { // ako je paran - blok naredba printf("\tBroj %d je paran\n",b); novob=b2; // b=b } else // ako je neparan - blok naredba { printf("\tBroj %d je neparan\n",b); novob=(float)b/5; // kastovanje } printf("\tNova vrednost broja %d je %.2f \n",b,novob); }

Osnovi iz programiranja - pomoćni materijal

Else se odnosi na prvi neuparen if. Ako želimo drugaćije moramo da navedemo vitičaste zagrade.

if (izraz) //prvo if if (izraz1) naredba1 //drugo if else naredba Ovo else se odnosi na drugo if a ne na prvo if!

if (izraz) { if (izraz1) naredba } else naredba Tek sada se else odnosi na prvo if!!!

else-if izraz

if–else naredba ima samo dve grane – kada je uslov ispunjen i kada nije. Međutim nekada je potrebno ispitati više uslova i u zavisnosti od njihovih vrednosti izvršavati određene naredbe. U tim slučajevima se koristi else-if izraz. if (uslov1) naredba else if (uslov2) naredba 2 else if (uslov3) naredba 3 else naredba

Primer: Napisati program koji ispituje da li je uneseni broj pozitivan, negativan ili je jednak nuli.

//Else if.c #include <stdio.h> main() { float x; printf("\tUnesite realan broj: "); scanf("%f",&x); if(x > 0) printf("\tBroj %.2f je pozitivan\n",x); else if(x < 0) printf("\tBroj %.2f je negativan\n",x); else printf("\tBroj %.2f je jednak nuli\n,x"); }

Primer: Analizirati sledeći program

//Analiza.c #include <stdio.h> main() { int b; printf("Unesi ceo broj : "); scanf("%d", &b); if (b = 0) printf("Broj je nula\n"); else if (b < 0) printf("Broj je negativan\n"); else printf("Broj je pozitivan\n"); }

Uslovni izraz - operator?

U programskom jeziku C postoji operator? (uslovni izraz) i to je jedini ternani operator, tj. ima tri operanda. Uslovni izrazi obezbeđuju alternativni način pisanja if-else konstrukcije if(uslov) naredba1; else naredba2;

(uslov)? naredba1 : naredba

Upozorenje!  Voditi računa o tome da je = operator dodele a == je operator poređenja na jednakost.  Ne mešati ta dva operatora!

može se zapisati kao