Za učenike I i III godine Tehničke škole, smerovi: Mašinski tehničar za kompjutersko konstruisanje; Tehničar drumskog saobraćaja; Vozač motornih vozila

четвртак, 18. фебруар 2010.

Zadaci iz programiranja (III godina)

1. Napisati C program koji na osnovu uneta cetiri brojeva A ,B, C i D izračunava srednju vrednost negativnih među njima, ili ispisuje poruku da nema negativnih brojeva te se ne moze izracunati srednja vrednost.

2. Data je meta od n koncentričnih krugova poluprečnika 1, 2, 3, 4, ....,10cm, i tačka A(x,y) u meti. Za pogodak u najmanji krug dobija se 10 poena, a za svaki sledeći prsten po poen manje. Napisati C program koji određuje koliko se dobija poena u tački A, ako se centar mete i početak koordinatnog sistema poklapaju.


3. Ana, Milan, Biljana, Siniša, Erna, Goran, Vera i Zoran stanuju u istoj zgradi i idu u istu školu. Ana, Milan, Biljana i Siniša su dobri matematičari, a Ana, Milan, Erna i Goran su dobri sportisti.
Jedno od dece nije došlo u školu. Napisati C program koje a osnovu odgovora na postavljena tri pitanja utvrđuje i na izlazu prikazuje koje dete nije došlo u školu.
Pitanja su:
Dečak ili devojčica,
Dobar matematičar, i
Dobar sportista.
Promenljivoj dete dodeliti prvo slovo od imena deteta i u zavisnosti od odgovora omogućiti ispis koje dete nije u školi. U programu isključivo koristiti switch naredbu.

4. Napisati C program koji na osnovu uneta deset brojeva izračunava proizvod negativnih među njima ili ispisuje poruku da nema proizvoda jer su svi brojevi nisu negativni.

5. Napisati C program koji na osnovu 10 unetih brojeva izračunava proizvod onih brojevakoji su različiti od minimalnih i maksimalnih među njima.


6. Napisati C program koji na osnovu 15 unetih brojeva izračunava srednju vrednost pozitivnih među njima.

7. Napisati C program koji na osnovu unetog vremena u sekundama, vreme ispisuje u obliku HH:MM:SS.
Primer:
Ako je korisnik programa uneo podatak 3612 sekundi vreme mora biti ispisano u obliku 01: 00: 12

8. Napisati C program koji na osnovu četiri uneta cela broja izračunava maksimalnu vrednost, broj pozitivnih i broj neparnih među njima.

9. Napisati C program koji na osnovu dužina stranica utvrđuje i na izlazu prikazuje tip trougla (ako dužine mogu obrazovati stranice trougla):

NEJEDNAKOSTRANIČAN TROUGAO,
PRAVOUGLI TROUGAO,
JEDNAKOKRAKI TROUGAO,ili
JEDNAKOSTRANIČAN TROUGAO
______________________________________________________





_________________________________________________________________________

среда, 17. фебруар 2010.

Programiranje

Računar izvršava niz tačno definisanih operacija – program.
Proces izrade programa naziva se PROGRAMIRANJE.
Ljudi koji pišu programe su PROGRAMERI

Proces programiranja obuhvata sledeće faze:
1. Definisanje problema i izrada projektnog zadatka
2. Projektovanje programa
3. Pisanje i testiranje programa
4. Analiza rada programa i izrada prateće dokumentacije
5. Isporuka i održavanje programa

Definisanje problema i izrada projektnog zadatka

Najvažniji deo programiranja je definisanje problema. To podrazumeva definisanje zahteva koji se odnose na sledeće:
- Šta program treba da radi
- Šta su ulazni podaci i u kojoj formi
- Šta su izlazni podaci i u kojoj formi
- Koja su i kakva ograničenja koja utiču na rešavanje problema.

Nakon ove analize, neophodno napisati redosled akcija koje će dovesti do rešenja zadatka. Taj redosled akcija nazivamo ALGORITAM.
PSEUDO KOD - algoritam napisan običnim jezikom.
PROGRAM (KOD) - algoritam napisan nekim programskim jezikom.
ALGORITAMSKA ŠEMA - algoritam nacrtan upotrebom standardnih simbola.


Neke definicije pojma algoritma
Algoritam skup postupaka koji se izvode tačno određenim redosledom u cilju rešavanja zadatka.
Algoritam je redosled akcija kojim se od ulaznih podataka dolazi do traženih rezultata.
Svaka akcija (postupak) naziva se algoritamski korak.
Struktura algoritma je redosled pojedinih algoritamskih koraka. U zavisnosti od koraka koje treba preduzeti da bi se ispravno rešio zadatak, algoritamske strukture delimo na:
1. linijske,
2. razgranate,
3. ciklične i
4. složene.

понедељак, 18. јануар 2010.

Funkcije

Funkcija je posebni dio programskog koda koji izvodi poseban zadatak. Ona ima svoje jedinstveno ime pomoću kojeg je možemo pozvati iz neke druge funkcije. To se zove pozivanje funkcije. U tom slučaju funkcija vraća neku vrijednost funkciji koja ju je pozvala.

Svaka funkcija u C programskom jeziku izvršava svoj poseban zadatak, a to može učiniti bez da se uključuje u druge dijelove programa ili da se drugi dijelovi programa uključuju u njezin rad.

Za sada sve funkcije pišite u istu datoteku kamo i funkciju main(), i to iza nje, iako ih možete držati odvojene od izvornog koda što je korisno kod velikih programa gdje se iste funkcije pozivaju iz različitih dijelova programa. O tome će biti riječi u posljednjem dijelu knjige.

Vaše funkcije možete držati i potpuno odvojene od izvornoga koda, tako da jednom napisanu funkciju možete koristiti u više programa.

Funkcija u programu ne radi ništa sve dok nije pozvana od nekog drugog dijela programa. Tada joj program šalje informacije u obliku jednog ili više argumenata. Argument je programski podatak koji je neophodan za rad funkcije. Tada se naredbe u funkciji izvršavaju i ona izvodi onaj zadatak za koji je programirana. Kada funkcija završi svoj zadatak izvršenje programa vraća se na isto mjesto s kojeg je funkcija bila pozvana. Funkcije mogu slati informacije natrag u program koji ih poziva u obliku povratne vrijednosti (return value).





Prototip funkcije izgleda ovako:



tip_vrednosti_koju_vraća ime_funkcije(tip_argumenta ime-1,...,tip_argumenta ime-n);



Prototip funkcije opisuje prevoditelju funkciju koja je definisana negdje u programu. U prototipu se nalazi tip vrednosti koji funkcija vraća programu i ime funkcije; koje bi trebalo opisivati šta funkcija radi (ovo je zbog lakšeg snalaženja u programskom kodu). Prototip sadrži i tip argumenta koji će biti prosleđen funkciji. Prototip uvek završava tačka-zarezom.

Program mora sadržavati prototip svake funkcije koju koristi. Prototipovi funkcije MORAJU se staviti U KOD PRE GLAVNE FUNKCIJE main() ili pre definicije prve funkcije. Sve prototipove funkcija grupišite na jednom mestu radi lakšeg snalaženja u programskom kodu.



Definicija funkcije



Definicija funkcije izgleda ovako:



tip_vrednosti_koju_vraća ime_funkcije(tip_argumenta ime-1, ..., tip_argumenta ime-n)

{

/* naredbe; */

}



Definicija funkcije zapravo je sama funkcija. Definicija sadrži programski kod koji se izvršava prilikom pozivanja funkcije. Prva linija definicije funkcije, zaglavlje funkcije (function header), mora biti identična prototipu funkcije, bez tačka-zareza na kraju.



Zaglavlje funkcije



Zaglavlje funkcije ima tri dela:

- tip vrednosti koji funkcija vraća programu koji ju je pozvao

- ime funkcije

- listu parametara.



Tip vrednosti koji funkcija vraća programu koji ju je pozvao može biti bilo koji C tip podataka: char, int, long, float ili double. Također možete definisati i funkciju koja ne vraća nikakve podatke u glavni program koristeći tip void. Evo primera:



int funkcija1(...) /* Vraća tip int. */

float funkcija2(...) /* Vraća tip float. */

void funkcija3(...) /* Ne vraća ništa. */



Funkcijama možete davati imena koja god želite, sve dok se držite istog pravila o imenima kao i za varijable. Ime funkcije mora biti jedinstveno, a dobra je praksa davati funkcijama imena koja opisuju ono što funkcija radi.
Tijelo funkcije

Iza zaglavlja funkcije nalazi se telo funkcije koje sadrži naredbe koje će biti izvršene prilikom pozivanja funkcije. Telo funkcije nalazi se unutar vitičastih zagrada. Ako funkcija vraća tip podataka različit od void, povratna naredba također mora biti napisana s tačnim tipom povratne vrijednosti.

Nema nikakvih ograničenja u pisanju naredbi koje funkcija može sadržati, jedino unutar jedne funkcije ne možete definisati drugu. Funkcija ne bi trebala biti predugačka, 25 - 30 linija koda. Ako vam je funkcija duža, verojatno radi više od jednog zadatka i možete je podeliti na jednu ili više manjih. Kako budete postajali iskusniji, funkcije će vam biti kraće i jednostavnije.

Za vraćanje vrednosti iz funkcije koristite ključnu reč return iza koje dolazi C izraz. Kada izvršenje programa dođe do ove naredbe, funkcija vraća vrednost programu koji ju je pozvao. Upamtite da funkcija vraća vrednost tipa koji je određen u njenom zaglavlju. Ukoliko vraćena vrednost nije istog tipa, prevodilac će pokazati grešku.


Dodeljivanje argumenata funkciji

Da bi funkciji dodelili argumente navedite ih u zagradama iza imena funkcije. Broj i tip argumenata mora se podudarati s parametrima u zaglavlju i prototipu funkcije. Ako funkcija prihvata više argumenata, oni moraju biti navedeni istim redosledom kako je napisano u parametrima funkcije.

Argumenti mogu biti svaki valjani C izraz: konstanta, varijabla, matematički ili logički izraz ili druga funkcija (neka koja vraća vrednost).


Pozivanje funkcija


Funkcije se pozivaju jednostavnim navođenjem njihova imena i argumenata:

ime_funkcije(argument1, argument2,...)

Funkcije - primeri

1)Izračunavanje hipotenuze:
#include
float hip(float,float);
main(){
float c,a,b;
printf("unesi katete:");
scanf("%f%f",&a,&b);
c=hip(a,b);
printf("\n c=%.2f",c);
getch();
}

float hip(float x,float y){
return sqrt(x*x+y*y);
}

2)Izračunaj: 1!+2!+3!+...+n!
long fakt(int);
main(){
long n,s;
int i;
printf("Unesi n:");
scanf("%ld",&n);
s=0;
for(i=1;i<=n;i++) s+=fakt(i);
printf("\nSuma faktorijela je:%ld\n",s);
getch();
}
long fakt(int n){
long i,s=1;
for(i=1;i<=n;i++)s*=i;
return s;
}

Funkcije - zadaci za vežbanje

1. Napisati program koji pomoću funkcije koja računa sumu brojeva od 1 - n izračunava formulu.
F= (1+2+ ... + n)(1+2+ ... +m)/(1+2+...+n*m).

2. Napiši program koji računa sumu S = 1! + 2! + ... + n! , ako se koristi funkcija za faktorijel broja.

3. Napisati program za izračunavanje sume s kvadrata parnih i i kubova neparnih prirodnih brojeva od n do m.

4. Prikazati sve prirodne brojeve manje od n koji su deljivi sa 11. n se unosi preko tastature.

5. Prikazati sve prirodne brojeve manje od n koji su deljivi sa 3 i 4. n se unosi preko tastature.

6. Prikazati sve prirodne brojeve manje od n koji su deljivi sa 3 a nisu sa 4. n se unosi preko tastature.

7. Prikazati sve prirodne brojeve manje od n koji su deljivi sa 3 ili sa 4. n se unosi preko tastature.