You are on page 1of 6

Osnovne postavke strukturnog programiranja

Uvod
Program u bilo kojem programskom jeziku moemo predstaviti kao skup tri modela:
model podataka,
model procesa i
model resursa.
U programu se moraju definirati podaci s kojima taj program radi (varijable i konstante). Ti
podaci se za vrijeme izvoenja programa nalaze u radnoj memoriji raunala. Osim podataka
potrebno je programirati proces njihove obrade. U okviru procesa obrade podataka
razlikujemo instrukcije obrade podataka (izvode se slijedno) i kontrolne instrukcije
(upravljaju tokom izvoenja instrukcija obrade i pomou njih se formiraju kontrolne
strukture). Resursi su sve one softverske i strojne komponente koje program koristi, a
definirane su izvan programa (npr. funkcije operativnog sustava, datoteke i vanjski ureaji
kao to je pisa).

Model
procesa

Model
podataka

Model
resursa

Slika 1: program kao skup modela


1. Kontrolne strukture
Kontrolne strukture odnose se na upravljanje tokom izvoenja programa. Strukturno
programiranje temelji se na tri osnovne kontrolne strukture:
sekvenca (slijed, programski blok),
selekcija (grananje, odabir) i
iteracija (petlja).
Nestrukturno programiranje pridodaje jo i skokove. Tipina instrucija skoka je goto, ali
postoje i skokovi tipa break i continue, koji se esto koriste unutar jezika C, C++ i srodnih.
1.1. Sekvenca (slijed, programski blok)
Sekvenca predstavlja niz instrukcija obrade, koje se izvode uzastopno. U C-u i srodnim
jezicima poetak sekvence oznaava se lijevom vitiastom zagradom { , a kraj sekvence
desnom vitiastom zagradom }. Svaka instrukcija obrade unutar sekvence zavrava znakom
toka-zarez ; .

{
cout << "Ovo je prva instrukcija u sekvenci!" << endl;
cout << "Druga instrukcija u sekvenci" << endl;
a = b + c + d;
cout << "Zadnja instrukcija u sekvenci" << endl;
}
Vane napomene u vezi sekvence:
- Svaka lijeva vitiasta zagrada ima odgovarajuu desnu (=svaka sekvenca mora biti
zatvorena)
- Program kao cjelina predstavlja sekvencu:
#include <iostrem.h> // pretprocesorska instrukcija
void main ()
{
cout << "Primjer najjednostavnijeg programa u C++" << endl;
}
- Svaki potprogram takoer predstavlja sekvencu:
float kvadrat (float broj)
{
float kvad = broj * broj;
return broj;
}
- Svaka iteracija(petlja) sadri sekvencu:
...
for (i=1; i<=10; i++)
{
cout << i << endl;
}
...
Napomena: specijalni sluaj sekvence je onaj kada se ona sastoji od samo jedne instrukcije
obrade, tada se ne moraju koristiti vitiaste zagrade za oznaavanje poetka i kraja sekvence.
- Svaka selekcija(grananje) sadri jednu ili vie sekvenci:
if (a ==b)
{
cout << "a i b imaju istu vrijednost" << endl;
}
else
{
cout << "a i b su razliiti" << endl;
}

1.2. Selekcija (grananje, odabir)


Selekcijom biramo jednu od ponuenih sekvenci za izvravanje, i to prema vrijednosti
logikog (uvjetnog) izraza - selekcija tipa if, ili prema vrijednosti seletorskog izraza selekcija tipa case (switch).
Selekcija tipa switch.
Treba ispisati ocjenu, prema vrijednosti cjelobrojne varijable ocjena.
int ocjena;
cout << "Ocjena : ";
cin >> ocjena;
switch (ocjena) {
case 5 : cout << "Odlican" << endl;break;
case 4 : cout << "Vrlodobar" << endl;break;
case 3 : cout << "Dobar" << endl;break;
case 2: cout << "Dovoljan" << endl;break;
case 1 : {cout << "Nedovoljan" << endl;
cout << "Dodjite kad naucite!" << endl;break;};
default :
cout << "Neispravan unos ocjene!" << endl;break;
}

1.3. Iteracija (petlja)


Iteracijom odreujemo da odreene sekvencu treba izvriti vie puta. Razlikujemo iteracije s
brojaima - iteracija tipa for i iteracije s brojaima - u C++ su to iteracije tipa while i dowhile.
Primjer 1. Iteracija tipa do-while.
Kontrola unosa podataka : korisnik unosi podatak tako dugo dok ne unese ispravan.
int ocjena;
do{
cout << "Unesi ocjenu : ";
cin >> ocjena;
} while ((ocjena < 1)||(ocjena > 5));
cout << "Ocjena : " << ocjena << endl;
Primjer 2. Iteracija tipa while.
Kontrola unosa podataka : korisnik unosi podatak tako dugo dok unosi neispravan.
int ocjena;
cout << "Unesi ocjenu : ";
cin >> ocjena;
while ((ocjena < 1)||(ocjena > 5))
{
cout << "Unesi ocjenu : ";
cin >> ocjena;
};
cout << "Ocjena : " << ocjena << endl;

Primjer 3. Iteracija tipa for.


Treba zbrojiti 5 cijelih brojeva, te ispisati njihovu sumu i aritmetiku sredinu.
int broj,suma=0;
float asred;
for (int i=1;i<=5;i++){
cout << i << ". broj : ";
cin >> broj;
suma += broj;
};
asred = (float)suma/5;
cout << "suma = " << suma << endl;
cout << "a. sredina = " << asred << endl;

1.4. Pravilan program


Osnovno pravilo u strukturnom programiranju je da se program treba sastojati iskljuivo od
pravilnih programa. Po definiciji, pravilan program je svaki onaj programski blok (sekvenca)
koji zadovoljava slijedee uvjete:

ima jednu ulaznu liniju,


ima jednu izlaznu liniju i
postoji put izmeu ulazne i izlazne linije u kojem nema nedostupnih dijelova
programskog koda (skokovi, beskonane petlje ili selekcije s uvijek istim
vrijednostima uvjetnog izraza).

Svaka sekvenca u programu treba predstavljati jedan pravilan program:


{
. . .; //instrukcija obrade
. . .;
(selekcija ili iteracija)
{
. . .; //instrukcija obrade
. . .;
}
. . .; //instrukcija obrade
. . .;
}
2. Definicije podataka
Kao to postoje kontrolne strukture, tako postoje i strukture podataka. Razlikujemo podatke
jednostavnih tipova (=logiki nedjeljivih) i sloenih tipova (=logiki djeljivih).
Varijabla = imenovani memorijski prostor
Tip podatka odreuje veliinu i strukturu memorijskog prostora za smjetaj varijable, te skup
operacija koje se nad varijablom mogu izvriti

Primjer:
int a;
Definirana je varijabla a koja je tipa int. To znai da e u radnoj memoriji zauzimati prostor
od 32 bita gdje e u binarnom obliku biti zapisana njena vrijednost, koja mora biti cjelobrojna
i u zadanom rasponu vrijednosti, a nad njom e se moi provesti aritmetike i logike
operacije (za to postoje odgovarajui operatori).
Inicijalizacija varijable = pridruivanje poetne vrijednosti varijabli.
Varijable prije upotrebe treba inicijalizirati!
Primjer:
int a=5;
Osnovni jednostavni tipovi podataka su cjelobrojni (npr. int), realni (npr. float i double),
znakovni (char), pokazivai i logiki (bool), dok su osnovni sloeni tipovi polja i strukture.
3. Potprogrami
Potprogrami su izdvojene logike cjeline unutar programa. Za razliku od Pascala, koji razlikuje
procedure i funkcije, C++ poznaje samo funkcije. Funkcija je zamiljena tako da vrati vrijednost koja
odgovara njenom tipu (pomou naredbe return). Ako funkcija umjesto tipa ima oznaku void, tada ne
vraa vrijednost, odnosno, predstavlja pandan proceduri.
3.1. Opi oblik funkcije :
<povratni tip ili void> ime_funkcije (<tip> par1, <tip> par2, ... ,<tip> par N)
{
.
<blok instrukcija>
.
return <povratna vrijednost>; // izostavlja se ako je funkcija tipa void
}
Razlikujemo formalne parametre (navode se u zaglavlju funkcije) i stvarne parametre (navode se kod
poziva funkcije). Prilikom poziva funkcije formalni parametri poprime vrijednosti odgovarajuih
stvarnih parametara.
Primjeri:
1. Testirajte slijedee primjere :
a.) Primjer funkcije koja izraunava kvadrat broja
#include <iostream.h>
float kvadrat (float x){
return x * x;
}
void main () {
float broj;
cout << "Unesi neki broj : ";
cin >> broj;
float kvad = kvadrat (broj);
cout << broj << na kvadrat iznosi << kvad << endl;

}
3.2. Koncept globalnih i lokalnih podataka
Globalni podaci dostupni su u svim dijelovima programa (osim u funkcijama gdje su definirani
istoimeni lokalni podaci), dok su lokalni dostupni iskljuivo u okviru funkcije gdje su definirani.
Primjer:
#include <iostream.h>
int a=5,b;
float c,d; // a,b,c,d su globalne varijable
void main () {
int e,f;
//varijable e,f lokalne su za funkciju main
char a,c
// varijable a,c lokalne su za funkciju main i prekrivaju
// istoimene globalne varijable
a = A;
c = B;
b = 5;
// globalne varijable b,d dostupne su unutar funkcije main
d = 3.14;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
cout << "d=" << d << endl;
}

You might also like