seminarski programiranje c++

23
C programski jezik[Type the document title] VISOKA POSLOVNA SKOLA STRUKOVNIH STUDIJA BLACE SEMINARSKI RAD Predmet: Uvod u programiranje Seminarski: Kontrolne strukture 1 Obradovic Milos 11/10R Matic Nebojsa 13/10R

Upload: milos-obradovic

Post on 05-Jul-2015

669 views

Category:

Documents


3 download

DESCRIPTION

uputstvo za programski jezik c++

TRANSCRIPT

Page 1: Seminarski programiranje C++

C programski jezik

VISOKA POSLOVNA SKOLA STRUKOVNIH STUDIJA

BLACE

SEMINARSKI RAD

Predmet: Uvod u programiranje Seminarski: Kontrolne strukture

Profesor: Studenti:mr Danilo Oklobdzija Obradovic Milos 11/10R

Matic Nebojsa 13/10R

1 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 2: Seminarski programiranje C++

C programski jezik

Sadrzaj:

1. Uvod 32. C programski jezik 43. Operatori 64. Kontrolne strukture 7

4.1. Blokovi naredbi 74.2. Selekcije 84.3. IF selekcija 84.4. SWITCH selekcija 95. Iteracija 115.5. FOR petlja 115.6. WHILE petlja 125.7. DO petlja 146. Naredbe 156.1. Naredba BREAK 156.2. Naredba CONTINUE 157. Goto i labele 16

2 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 3: Seminarski programiranje C++

C programski jezik

1. Uvod

Programski jezik C viši je programski jezik opšte namene . Razvio ga je Riči sedamnaestih gorina prošlog stoleca u Bell Telephone Laboratories , Inc Opis jezika dan je u knjizi Brajan V. Kernighan-a, Denis M. Riči : C programski jezik , Prentice -Hall , 1978th Tokom sedamdesetih i osamdesetih kodina jezik se brzo širio te je Američkog nacionalnog instituta za standard ( ANSI ) pristupio njegovoj standardizaciji koja je dovršena 1989th godine   Novi standard uveo je značajne izmene u jezik koji se stoga , za razliku od početne verzije, često naziva ANSI - C . Novi je standard opisan u knjizi Brajan V. Kernighan-a, Denis M. Riči : C programski jezik , 2. izd , Prentice Hall , 1988 . . Danas gotovo svi moderni S - prevodioci inplementuju verziju jezika ANSI - C . ANSI usvojila je i međunarodna organizacija za standarde (Međunarodna organizacija za standardizaciju ) , 1990th Godina ( ISO C) . Konačno ANSI / ISO standard cemo jednostavno nazivati S90 standard . Godine 1990th ISO je prihvatio novi S standard koji uvodi manje dopune u S90 standard , a koji ceno zvati S99 standard .

3 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 4: Seminarski programiranje C++

C programski jezik

2. C (programski jezik)

Programski jezik C spada u proceduralne programske jezike koji je razvijen u ranim 70-im godinama 20. veka. Autor ovog programskog jezika je Dennis Ritchie, no značajan doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za rješavanje praktičnih problema kodiranja sistemskih programa i jezgra operativnog sistema UNIX, koji je praktički u celini napisan u C-u.

Programski jezik C dosta se menjao tokom godina te je u više navrata neformalno i formalno standardizovan. Prva važnija verzija poznata je pod nazivom "K&R C", što je engl. skracenica prezimena dvaju autora najpoznatijeg C priručnika "The C Programming Language", a to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno pisane knjige koje datira iz 1978. godine ujedno je de facto standardizovalo jezik u 70-ima. Drugo izdanje iz 1988. godine opisuje "ANSI C", standard kojeg je 1983. godine definisao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan. Aktuelni ISO/IEC standard skraceno poznat kao "C99" podržava u celini samo jedan manji deo komercijalnih proizvođača softvera.

Kao jedan od najvažnijih jezika u istoriji komercijalne računarske industrije, C je do danas ostao jedini programski jezik prilagođen za sve računarske platforme, od malih sistema pa do mrežnih superračunara. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u načelu zahtevaju od programera dobro razumevanje rada procesora, memorije, ulazno-izlaznih uređaja itd. Dok, rad s registrima procesora i adresiranje memorije apstrahirani su pomocu koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije znatno olakšava programiranje u odnosu na izvorno programiranje u mašinskim jezicima.

Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs proširuje C dodavajuci sposobnosti objektno orijentiranog programiranja, a naziv ovog novog programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su problemi koje programiranje u C-u nosi sa sobom nasleđeni u C++-u. Efikasno i sigurno programiranje u C-u vrlo je zahtevna veština koja traži

4 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 5: Seminarski programiranje C++

C programski jezik

višegodišnje iskustvo pa je stoga C jezik koji se ne preporučuje početnicima, posebno ako im programiranje nije primarni posao.

Mnogobrojni problemi vezani pre svega za upravljanje memorijom koje programer mora sam eksplicitno kodirati razlog su da je danas vecina novih korisničkih aplikacija napisana u nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl. garbage collection), ne dopušta pravilan rad s memorijom pomocu pokazivača te ima podršku za upravljanje kodom odnosno njegovom okolinom za vreme njegovog izvođenja. Danas se relativno retko ukazuje potreba za pisanjem novih korisničkih aplikacija izvorno u C-u, pa čak i u vrlo malim sistemima kao što su npr. mobilni telefoni. Glavno područje njegove upotrebe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji (engl. compilers) i jezgra operativnih sistema (engl. operating system kernels), gde je potreba za najvecom mogucom brzinom izvođenja, efikasnom kontrolom resursa i pravilnom kontrolom hardvera od primarne važnosti.

C je jezik opšte namene, što znači da se u njemu može napraviti apsolutno sve: od rešavanja zadataka, do pisanja drajvera, operativnih sistema, tekst procesora ili igara. C, kao jezik, ni u čemu ne ograničava. Omogucuje i uključivanje naredbi pisanih asemblerski, zbog čega je zajedno s mogucnošcu direktnog pristupa pojedinim bitovima, bajtovima ili celim blokovima memorije, pogodan za pisanje sistemskog softvera. Zbog tih karakteristika C je među popularnijim programskim jezicima i koriste ga mnogi programeri. Rezultat toga je postojanje velikog broja prevodioca za C i alata te stalno dostupne pomoci na internetu. Programi pisani u C-u su prenosivi (mogu se prevoditi i izvršavati na različitim porodicama računara uz minimalne ili nikakve ispravke) i obično su vrlo brzi. Postoje mnogi prevodioci za jezik C, a jedan od najšire korištenih je GNU C Compiler

5 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 6: Seminarski programiranje C++

C programski jezik

3. OPERATORI

Operatori poređenja

Operatori poređenja su prikazani u tabeli:

Logički operatori

Logički operatori su:

Operator Značenje

! Negacija

&& Logičko I

|| Logičko ILI

6 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Operator Značenje

< Manje od> Vece od

<= Manje ili jednako>= Vece ili jednako!= Različito== Jednako

Page 7: Seminarski programiranje C++

C programski jezik

4. Kontrolne strukture:

4.1. Blokovi Naredbi

Iskazi su u C jeziku grupisani u blokove. Blok je najednostavnija kontrolna struktura. On definiše niz operacija koje se obavljaju strogo po redosledu kojim su napisane. Početak bloka obeležava se otvorenom velikom zagradom „{“ a kraj zatvorenom velikom zagradom „}“.

void testBlokIskaza( ) {

int x = 10;

{ // Početak bloka

int y = x + 1…

} // Kraj bloka

// y ovde ne postoje

}

Promenljive definisane unutar bloka su lokalne i one imaju oblast važenja samo u tom bloku.

U prethodno definisanom primeru promenljiva y je vidljiva samo u bloku u kom je definisana, dok je promenljiva x globalna i ona je vidljiva u svim blokovima funkcije testBlokIskaza( ).

4.2. Selekcije

U slučaju bloka imali smo da se više naredbi izvršava jedna za drugom. Kod selekcija imamo u opštem slučaju N blokova ali se izvršava samo jedan blok.

7 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 8: Seminarski programiranje C++

C programski jezik

4.3. If selekcija

Osnovna selekcija jeste If selekcija. Kod If selekcije se izvršava neki blok naredbi samo ako je ispunjen određen uslov.

If selekcija može da se grafički prikaže na sledeci način:

Opšti oblik If selekcije je:if (uslov) {

// blok A

} else {

// blok B}

Na primer:

if (x > 10)

y = x + 10;

else

y = x

Ako ne želimo drugi deo if selekcija možemo pisati i skraceno:

if (x >10) {

8 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 9: Seminarski programiranje C++

C programski jezik

y = x +10;}

Uslov predstavlja neki izraz koji mora da bude skalaran, odnosno rezultat izraza treba biti uporedljiv sa nulom.

4.4. SWITCH selekcija

Opšte grananje zasnovano je na selekciji na osnovu vrednosti selektorske promenljive.

Opšti oblik ove selekcije jeste switch selekcija:

Switch (selektorska promenljiva) {

case vrednost 1:

// niz naredbi

break;

case vrednost 2:

// niz naredbi break; . . .case vrednost n:

// niz naredbi

break;

default:

// niz naredbi

}

9 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 10: Seminarski programiranje C++

C programski jezik

Selektorska promenljiva mora biti celobrojna. Ona se poredi sa svakom od vrednosti i ukoliko je uslov ispunjen izvršava se iskaz, ali ako se odgovarajuca vrednost ne pronađe izvršava se default iskaz.

Break prekida izvršavanje case selekcije i izvršavanje se nastavlja naprvoj sledecoj naredbi iza case selekcije.

Primer:

#include<stdio.h>

main( )

{

int op;

int broj1, broj2;

broj1 = 7; broj2 = 9;

printf(“Unesi operator:”); op = getchar( ); switch(op) {

case ‘+’;

printf(“ %d + %d = %d \n”, broj1, broj2, broj1 + broj2);

break;

case ’-‘; printf(“ %d - %d = %d \n”, broj1, broj2, broj1 - broj2);

break;

case ’*‘;

printf(“ %d - %d = %d \n”, broj1, broj2, broj1 - broj2);

10 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 11: Seminarski programiranje C++

C programski jezik

break;

default:

printf(“Pogrešan operator!\n”);

}}

5. IteracijeIteracije su strukture koje imaju za cilj ponavljanje grupe naredbi određen broj puta.

5.1. FOR petlja

For petlja ponavlja blok naredbi tačan broj puta.

Opšti oblik naredbe je:

For (inicijalizacija; test; inkrement) { // blok naredbi

}

- inicijalizacija je izraz kojim se zadaje početna vrednost brojača petlje

- test je uslov koji se ispituje nakon svakog koraka petlje

- inkrement je izraz koji se koristi za menjanje brojača petlje u svakom koraku petlje.

Primer:

Napisati program koji treba da izračuna vrednost funkcije y =3*x *x + 2*x + 1 za vrednosti x-a u opsegu od zadatih vrednosti MIN i MAX.

#include<stdio.h>

#define MIN 11

11 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 12: Seminarski programiranje C++

C programski jezik

#define MAX 19

main( )

{

int x;

for(x = MIN; X <= MAX; x++) {

y = 3*x*x + 2x* + 1;

printf(“za x = %d y=%d \n”, x, y);

}}

5.2. WHILE petlja

While petlja se koristi za ponavljanje nekog bloka naredbi sve dok je određen uslov tačan.Grafički prikaz ove petlje je:

Opšti oblik naredbe je:

while (uslov){// blok A }

12 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 13: Seminarski programiranje C++

C programski jezik

Primer: napisati program koji treba da izračuna vrednost funkcije y = 3*x*x + 2*x + 1 za vrednosti x-a u opsegu od zadatih vrednosti MIN I MAX.

#include<stdio.h>#define MIN 11#define MAX 19main(){Int y;Int x;x = MIN;while (x<=MAX){y = 3*x*x + 2*x + 1;printf(“za x = %d y = %d \n”,x,y);x++;}}

5.3. DO petlja

Do petlja je slična while petlji samo što se uslov petlje ispituje na kraju petlje.

Grafički prikaz je:

Opšti oblik petlje je:

do{// blok A

13 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 14: Seminarski programiranje C++

C programski jezik

} while (uslov);

Kod while petlje moguce je da se telo petlje ne izvrši ni jedanput dok se kod do petlje telo petlje mora izvršiti barem jedanput.Primer:

Napisati program na C jeziku koji, pomocu do petlje, izračunava kvadrate brojeva u opsegu od MIN do MAX.

#include <stdio.h>#define MIN 9 #define MAX 19main(){int i;i = MIN;do{printf(“i = %d, i*i = %d \n”,i,i*i);i++;} while ( i<=MAX);}

14 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 15: Seminarski programiranje C++

C programski jezik

6. NAREDBE

6.1. NAREDBA BREAK

Naredbom break može se izazvati trenutan prekid rada petlje i izlazak iz petlje uz preskakanje provere uslova i preostalih naredbi u petlji.Nakon break naredbe izvršavanje programa se nastavlja na naredbi koja neposredno sledi iza date petlje. Primer:int i = 0;while (i<100){i++;printf („i = %d“,i);if(i = = 10)break;}Ova petlja prekida sa radom kada promenljiva i bude jednaka 10.

6.2.NAREDBA CONTINUE

Naredba continue prenosi izvršenje programa direktno na početak petlje. Ona preskače ostatak naredbi u petlji koje se nalaze posle nje i vraca izvršenje programa na početak petlje.

Primer: int i = 0;while (i<10){printf(“I = %d”,i);if(i++ % 2 == 0)continue;printf(“\n”);}Ova petlja ispisuje u svakom redu po dva broja dok je promenljiva i manja od 10.

15 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 16: Seminarski programiranje C++

C programski jezik

7.GOTO I LABELE

C ima, mada ne baš preporučljivu i upotrebljivu, goto naredbu i labele na koje se grana. Formalno, goto naredba nikad nije nezaobilazna. Možda izraz nije najbolje pogođen, ali teorija kaže da sve što goto naredbom možemo postici dade se i drugačije (i bolje). Ovaj izdanak zaostalih programskih jezika (assembly, basic i sl.) ne preporučujemo nikomu.

Ipak, ima nekoliko situacija koje čine goto ipak primjenjivim. Najčešce se koristi u nekakvim višeslojnim strukturama za prestanak odvijanja procesa koji se vrti, kakav je trenutni izlaz iz dvije ili više petlji odjednom. Naredba break djeluje samo na unutrašnju petlju pa

for( ... ) for( ... )

{...if(disaster)goto greska;}...greska: obrisi poruke

Ovakav način rada je prihvatljiv, ako program za rad s greškama (ili možda grješkama?!) nije jednostavan. Tada samo naselite goto konstrukcije na mjesta gdje se greške očekuju i ... čekate. Šalu nastranu, ali i to je na određen način zgodno.

Labele su istog oblika kao i ime varijable, a popracene su dvotočkom. Ona može pripadati bilo kojoj naredbi koja čini funkciju goto naredbe. Područje oznake je cijela funkcija.

Primjera radi, razmotrimo problem određivanja da li dva polja a i b imaju jedan zajednički element. Jedna od mogucnosti jest

for(i=0;i<n;i++)

for(j=0;j<m;j++)if(a[i]==b[j])goto nadjeno;/* nije pronađen nijedan zajednički element */ ... nadjeno:/* pronađen je a[i]==b[i] */Ovakav program dade se, jasno, načiniti bez upotrebe goto naredbe, ali trebalo bi uključiti neke dodatne provjere i varijable. Tako, pretraživanje polja postaje

16 Obradovic Milos 11/10RMatic Nebojsa 13/10R

Page 17: Seminarski programiranje C++

C programski jezik

nadjeno=0;for(i=0;i<n&&!nadjeno;i++)for(j=0;j<m&&!nadjeno;j++)if(a[i]==b[j])nadjeno=1;if(nadjeno) /* pronađen jedan: a[i-1]==b[j-1] */ ... else /* nije pronađen nijedan zajednički element */ S nekim izuzecima koji se vec navedeni, program s goto naredbama je opcenito teži i nerazumljiviji nego onaj bez njih. Bez ikakvih predrasuda, mislimo da bi ovakve konstrukcije trebalo izbjegavati.

17 Obradovic Milos 11/10RMatic Nebojsa 13/10R