nacela_programiranja

Download Report

Transcript nacela_programiranja

NAČELA PROGRAMIRANJA
RJEŠAVANJE ZADATAKA
Čovjek:
•
•
•
•
•
•
znanje,
pamćenje,
iskustvo,
logičko rasuđivanje,
intuicija,
osjećaji, itd.
Računalo:
• pamćenje,
• logičko rasuđivanje.
2
RJEŠAVANJE ZADATAKA
 Da bi računalo riješilo zadatak, zadatak treba
pretvoriti u oblik koji uključuje samo sposobnosti
pamćenja i logičkog rasuđivanja.
 U pretvorbi zadataka pomažu pomoćni postupci.
Sanda, 2012.
3
• planiranje
• analiza zadatka
POMOĆNI
POSTUPCI
• stvaranje algoritma
• pisanje pseudokôda
• crtanje dijagrama tijeka
• zapis algoritma programskim jezikom
• provjera i ispravljanje
• održavanje
• stvaranje dokumentacije
Sanda, 2012.
4
 Primjer - pretvorba zadatka u oblik prihvatljiv računalu:
Pješak u zadanom vremenu učini
određeni broj koraka. Potrebno je
odrediti:
Brzinu pješaka u km/h i m/s ako je
poznata prosječna duljina njegovog
koraka.
Sanda, 2012.
5
PLANIRANJE
 Prvi korak - predviđanje i raspored pojedinih faza
izrade programa.
 Određuje se tko će, kada i što raditi.
Sanda, 2012.
6
ANALIZA ZADATKA I SPECIFIKACIJA
 Analiza je raščlamba i potpuno razumijevanje zadatka
i traženih rezultata.
 Rezultat analize je specifikacija, dokument koji sadrži
podroban opis zadatka i željenih rezultata.
 To nije prijedlog kako riješiti zadatak, nego opis onoga
što je na raspolaganju i željenog rezultata.
Sanda, 2012.
7
Zadano:
vrijeme hodanja
(jedinica nije zadana; treba provjeriti što je korisnik unio,
pa prema potrebi pretvoriti jednu jedinicu u drugu)
duljina jednog koraka
oznaka
t
(jedinica nije zadana; treba provjeriti što je korisnik unio,
pa prema potrebi pretvoriti jednu jedinicu u drugu)
sk
broj koraka
N
Treba izračunati:
oznaka
brzina kretanja pješaka u m/s
v1
brzina kretanja pješaka u km/h
v2
Sanda, 2012.
8
ALGORITAM
 To je naputak kako riješiti zadatak.
 Sačinjen je od niza elementarnih radnji poredanih u
ispravnom redosljedu.
ULAZ
OBRADA
IZLAZ
(ulazni podaci)
(algoritam)
(rezultat)
Sanda, 2012.
9
1. Unijeti poznate ulazne podatke.
2. Provjeriti u kojim su jedinicama uneseni ulazni podaci.
3. Ovisno o jedinicama mjere ulaznih podataka odlučiti treba li iznose
preračunati u vrijednosti izražene u jedinicama osnovnog SI sustava.
4. Izračunati put na osnovu ukupnog broja koraka i prosječne duljine
jednog koraka.
5. Pomoću formule za računanje brzine jednolikog gibanja i podatka o
putu i vremenu izračunati brzinu v1 izraženu u m/s.
6. Preračunati vrijednost iz m/s u km/h.
7. Ispisati rezultate (izlazne vrijednosti).
Sanda, 2012.
10
ALGORITAM
 Većina
zadataka se može riješiti na više različitih
načina, no treba nastojati pronaći što brži, što
učinkovitiji i što sigurniji algoritam.
 Algoritam se može prikazati:
 dijagramom tijeka,
 pseudokôdom.
Sanda, 2012.
11
DIJAGRAM TIJEKA
 To je grafički prikaz algoritma.
 Omogućava lakšu analizu i provjeru predloženog
rješenja, te pronalaženje boljih rješenja zadatka.
 Sastoji od nekoliko jednostavnih geometrijskih likova
spojenih usmjerenim crtama koje pokazuju tijek
rješavanja zadatka.
Sanda, 2012.
12
GEOMETRIJSKI LIKOVI DIJAGRAMA TIJEKA
POČETAK,
KRAJ ILI
PREKID
PROGRAMA
JEDNA ILI
VIŠE
NAREDBI
ULAZ
PODATAKA
?
IZLAZ
PODATAKA
NE
DA
ODLUKA ILI
GRANANJE
14
PSEUDOKÔD
 Pseudokôd je tobožnji program (grč. pseudos – laž).
 Sastoji se od kratkih izraza na govornom jeziku koji
opisuju i ukratko objašnjavaju pojedine zadatke
algoritma.
 Pseudokôd bi trebao biti napisan tako da programer
može na temelju njega napisati program u bilo kojem
programskom jeziku.
Sanda, 2012.
15
ulaz (N);
ulaz (t);
ako je t izražen u jedinicama koje nisu sekunde onda
pretvori t u sekunde ;
ulaz (sk);
ako je sk izražen u jedinicama koje nisu metri onda
pretvori sk u metre;
s:= sk *N;
v1:=s/t;
v2:=v1*3,6; (1m=0,001km; 1s=1/3600h)
izlaz (v1,v2);
Sanda, 2012.
16
PROGRAMIRANJE
 Zapis algoritma naredbama programskog
jezika.
 Svaki programski jezik ima:
 ograničeni skup riječi posebnog značenja
(ključne riječi),
 propisana pravila slaganja ključnih riječi u naredbe
(sintaksa).
Sanda, 2012.
17
KLJUČNE RIJEČI
Sanda, 2012.
18
PROVJERA I ISPRAVLJANJE
 Da bi se program mogao izvršiti, mora biti pravopisno
ispravan, tj. mora biti zadovoljena sintaksa.
 Da bi program bio uporabno koristan, mora biti logički
ispravan, tj. potrebno ga je provjeravati (testirati).
 Program provjerava autor programa, više ljudi kod
proizvođača progama ili neovisni ispitivači.
Sanda, 2012.
19
PROVJERA
Zadano:
t = 2min
sk = 70 cm
N = 200
Očekivano:
 Postupak treba ponoviti za
što više ulaznih podataka za
koje je poznat rezultat ili se
rezultat zna izračunati.
V1 = 1,17 m/s
V2 = 4,2 km/h
Sanda, 2012.
20
ODRŽAVANJE PROGRAMA
 Postupak
mijenjanja programa tijekom njegovog
“životnog” vijeka.
 Izravno: ugovor o održavanju.
 Neizravno:izdavanje
novih inačica i ispravaka
programa za programe koji se prodaju
u velikim količinama (npr. program
Windows).
Sanda, 2012.
21
DOKUMENTACIJA
 To je važan dodatak programu, a sastoji se od:
 uputa za instaliranje programa,
 priručnika za korisnike,
 tehničkog opisa programa, itd.
Sanda, 2012.
22
PRIMJER PSEUDO JEZIKA
Pri opisu programskih struktura bit će korištene osnove pseudo
jezika koji se rabi u Ispitnom katalogu za državnu maturu iz
Informatike za šk.god. 2012./2013.
Sanda, 2012.
23
VARIJABLE
 To
je mjesto u memoriji rezervirano za pohranu
podatka.
 Varijablu jednoznačno određuje ime (identifikator).
 Ime
varijable se u pseudo jeziku može zadati
proizvoljno, npr. :
 x, a, TX, B_Pod, AmPe
Sanda, 2012.
24
VRIJEDNOST VARIJABLE
 Varijabli se vrijednost pridružuje s pomoću operatora
pridruživanja. Za ovu inačicu pseudo jezika to je :=.
Npr. izraz x:=3 se može čitati "varijabli x se pridružuje broj 3".
 Svaka
naredba ove inačice pseudo jezika završava
znakom točka-zarez (;).
Sanda, 2012.
25
OPERATOR PRIDRUŽIVANJA
 Kolika će biti vrijednost varijable X na kraju ovog
odsječka?
X := 5;
X := 3;
X = 5;
Rezultat: X ima vrijednost 3
Sanda, 2012.
26
OPERATORI
 To su simboli koji predstavljaju određene funkcije.
 Može ih se svrstati u skupine, npr.:
 aritmetički operatori,
 logički operatori,
 operatori uspoređivanja (relacijski operatori).
Sanda, 2012.
27
ARITMETIČKI OPERATORI
funkcija
• Zbrajanje
• Oduzimanje
• Množenje
• Dijeljenje
• Cjelobrojno dijeljenje
• Cjelobrojni ostatak dijeljenja
Sanda, 2012.
operator
+
*
/
DIV
MOD
28
OPERATORI DIJELJENJA
x := 5 ;
y := 2 ;
a je 2,5
Sanda, 2012.
a := x / y ;
b := x DIV y ;
c := x MOD y ;
b je 2
c je 1
29
LOGIČKI OPERATORI
 Logički
podaci su podaci koji mogu poprimiti samo
jednu od dvije vrijednosti, npr.: 1/0.
 Za rad s logičkim
funkcija
podacima, postoje
logičke funkcije.
• Logički I
• Logički ILI
• Logički NE
Sanda, 2012.
operator
I
ILI
NE
30
LOGIČKE FUNKCIJE
A
NE A
A
B
AIB
A
B
A ILI B
1
0
0
0
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
1
1
1
1
Sanda, 2012.
31
LOGIČKI OPERATORI
a := 0 ;
b := 1 ;
e je 0
Sanda, 2012.
e := a I b ;
f := a ILI b ;
g := NE a ;
f je 1
g je 1
32
OPERATORI USPOREĐIVANJA
funkcija
operator
manje
<
<=
>
>=
=
<>
manje ili jednako
veće
veće ili jednako
jednako
različito
Sanda, 2012.
33
OPERATORI USPOREĐIVANJA

Rezultat usporedbe je 1 ako je izraz zapisan operatorima
usporedbe istinit, a ako nije, rezultat će biti 0.
Sanda, 2012.
a := (5 < 13);
a je 1
b := (8 <= 8);
b je 1
c := (5 = 8);
c je 0
d := (5 <> 2 + 3);
d je 0
34
REDOSLIJED IZVRŠAVANJA OPERATORA
()
NE
* /
DIV MOD I
+
>
Sanda, 2012.
< <=
-
ILI
>= <> =
35
REDOSLIJED IZVRŠAVANJA OPERATORA
x := 22 DIV 5 * 11 MOD 3;

Operatori su ravnopravni, izraz se izvršava s lijeva u desno:
22 DIV 5 = 4
4 * 11 = 44
44 MOD 3 = 2 (ostatak dijeljenja 44/3)
x je 2
Sanda, 2012.
36
REDOSLIJED IZVRŠAVANJA OPERATORA
x := (22 DIV 5) * (11 MOD 3);

Zagrade poništavaju prioritete operatora :
22 DIV 5 = 4
11 MOD 3= 2
4*2=8
x je 8
Sanda, 2012.
37
REDOSLIJED IZVRŠAVANJA OPERATORA
x := 3*4+6/3–(55 MOD 6);
55 MOD 6 = 1
3 * 4 = 12
6 / 3= 2
12 + 2 - 1 = 13
x je 13
Sanda, 2012.
38
PROGRAMSKA STRUKTURA
 Opisuje način i redoslijed izvršavanja pojedinih radnji
koje dovode do konačnog rješenja zadatka.
 Razlikuju se osnovne programske strukture:
 pravocrtna programska strutura (slijed, niz),
 struktura grananja,
 struktura petlje.
Sanda, 2012.
39
NAREDBE PRAVOCRTNE STRUKTURE
opis
Sanda, 2012.
naredbe pseudo jezika
unos
ulaz
ispis
izlaz
40
PRAVOCRTNA PROGRAMSKA STRUKTURA
 Korisnik unosi dva broja, brojevi se
zbrajaju, a dobiveni se zbroj ispisuje.
 Program se odvija uvijek istim slijedom
naredbi
bez
obzira
na
unesene
podatke.
Sanda, 2012.
41
FUNKCIJE
 To
su izdvojeni nizovi naredbi koji čine logičke
cjeline a obavljaju točno utvrđene zadatke.
opis
naredbe
pseudo jezika
Apsolutna vrijednost realnoga broja.
abs(x)
Drugi korijen realnoga broja.
sqrt(x)
Zaokruživanje realnoga broja na najbliži cijeli broj.
round(x)
Zaokruživanje na cijeli broj uz odbacivanje decimalnih
znamenaka.
trunc(x)
Kvadrat realnog broja.
Sanda, 2012.
sqr(x)
42
FUNKCIJE - PRIMJER

Potrebno je unijeti realni broj, a potom:
a) Izračunati drugi korijen broja.
b) Zaokružiti uneseni broj na najbliži
cijeli broj.
c) Izračunati kvadrat broja.
d) Ispisati dobivene vrijednosti.
Sanda, 2012.
43
PROGRAMSKA STRUKTURA GRANANJA
 Grananje je programska struktura koja omogućuje
različit tijek programa, ovisno o rezultatu postavljenog
uvjeta.
Sanda, 2012.
44
NAREDBE GRANANJA
 Dijelovi programa
opis
koji se uvjetno
izvode, grupiraju
se u skupine ili
grananje
blokove naredbi.
blok
naredbi
Sanda, 2012.
naredbe pseudo jezika
ako je uvjet onda
naredba1
inače
naredba2;
{
….
}
45
PROGRAMSKA STRUKTURA GRANANJA
 Korisnik unosi dva
broja, a zatim se
određuje i ispisuje
veći broj.
Sanda, 2012.
46
DIJAGRAM
TIJEKA
GRANANJA
Sanda, 2012.
47
PROGRAMSKA STRUKTURA PETLJE
 Često je u programu potrebno neku radnju ponoviti
više puta (iterirati). Takva se programska struktura
naziva petlja.
 Ponavljati se može:
 unaprijed zadani broj puta,
 sve dok je ispunjen zadani uvjet.
Sanda, 2012.
48
NAREDBE PETLJE
opis
Petlja s unaprijed poznatim
brojem ponavljanja
naredbe pseudo jezika
za b := p do k činiti
naredba;
Petlja kod koje nije unaprijed
dok je uvjet činiti
poznat broj ponavljanja, a uvjet
naredba;
se provjerava na početku petlje
ponavljati
Petlja kod koje nije unaprijed
poznat broj ponavljanja, a uvjet
naredba;
se provjerava na kraju petlje
dok je uvjet;
Sanda, 2012.
49
PROGRAMSKA STRUKTURA PETLJE
 Korisnik treba unijeti 100 brojeva,
a prije svakog unosa broja ispisuje
se tekst "Unesi broj".
Sanda, 2012.
50
Na sljedećim su slajdovima zadaci. Za svaki od njih treba
osmisliti algoritam, a potom algoritam zapisati naredbama
pseudokoda. Za strukture grananja i petlje treba nacrtati
dijagram tijeka.
Sanda, 2012.
51
PRIMJER 1
 Potrebno je unijeti cijenu proizvoda c i postotak
sniženja p pa izračunati cijenu proizvoda nakon
sniženja i ispisati je.
ulaz (c, p);
s := c - c*p/100;
izlaz (s);
Sanda, 2012.
52
PRIMJER 2
 Potrebno je unijeti vrijednosti kateta pravokutnog
trokuta pa izračunati i ispisati vrijednost hipotenuze.
ulaz (a,b);
c := sqrt( sqr(a)+sqr(b) );
izlaz (c);
Sanda, 2012.
53
PRIMJER 3
 Potrebno je unijeti cijeli broj a potom ispisati
znamenku najmanje težinske vrijednosti tog broja.
ulaz (x);
a := x MOD 10;
izlaz (a);
Sanda, 2012.
54
PRIMJER 4

Potrebno je unijeti troznamenkasti, cijeli broj a potom
ispisati njegove znamenke počevši od znamenke najmanje
težinske vrijednosti.
ulaz (x);
a := x MOD 10;
b:=(x DIV 10) MOD 10;
c:=x DIV 100;
izlaz (a,b,c);
Sanda, 2012.
55
PRIMJER 5
 Potrebno je zamijeniti sadržaj dvije varijable a i b.
ulaz (a,b);
c := a;
a := b;
b := c;
izlaz (a,b);
Sanda, 2012.
56
PRIMJER 6
 Potrebno je unijeti
prirodan broja pa
odrediti da li je
paran ili neparan.
Rezultat ispisati.
ulaz (x);
a := x MOD 2;
ako je a = 0 onda
izlaz („Broj je paran“)
inače
izlaz („Broj je neparan“);
Sanda, 2012.
57
Sanda, 2012.
58
PRIMJER 7
 Potrebno je unijeti prirodni
broj pa provjeriti da li je taj
broj istodobno djeljiv sa 7 i
ima znamenku najmanje
težinske vrijednosti 9.
Ispisati rezultat.
Sanda, 2012.
59
ulaz (x);
s :=x MOD 7;
d :=x MOD 10;
ako je
izlaz
(s = 0) I (d = 9) onda
(„Broj je djeljiv sa 7 i znamenka jedinice mu je 9“)
inače
izlaz
Sanda, 2012.
(„Broj nije djeljiv sa 7 i znamenka jedinice mu nije 9“);
60
PRIMJER 8
 Potrebno je ispisati parne brojeve u rasponu
od 1 do 100.
za b := 1 do 100 činiti
{
ako je b MOD 2 = 0 onda
izlaz (b);
}
Sanda, 2012.
61
PRIMJER 9
 Potrebno je zbrojiti prvih 100 prirodnih brojeva.
zbroj := 0;
za b := 1 do 100 činiti
{
zbroj := zbroj+b;
}
izlaz (zbroj);
Sanda, 2012.
62
PRIMJER 10
 Treba prebrojiti
ulaz (M,N);
broj := 0;
koliko brojeva
unutar raspona od
M do N ima
za b := M do N činiti
{
ako je b MOD 10 = 9 onda
znamenku jedinice
broj := broj+1;
vrijednosti 9.
}
izlaz (broj);
Sanda, 2012.
63
PRIMJER 11

Potrebno je unositi brojeve.
Unos traje sve dok je zbroj
unesenih brojeva manji od
1000. Nakon što zbroj
unesenih brojeva prijeđe
dozvoljenu granicu unos se
prekida. Ispisuje se zbroj
unesenih brojeva i podatak
o broju unesenih brojeva.
Sanda, 2012.
64
s := 0;
n := 0;
dok je s < 1000 činiti
{
izlaz („Unesi broj“);
ulaz (x);
s := s + x;
n := n + 1;
}
izlaz (n, s);
Sanda, 2012.
65
PRIMJER 12
 Potrebno je unositi parove brojeva x
i y. Samo u slučaju ako su oba broja
pozitivna treba ispisivati njihov
umnožak. Unos traje sve dok se za
vrijednost varijable x ili varijable y
ne unese 0.
Sanda, 2012.
66
ponavljati
ulaz (x, y);
ako je ((x > 0) I (y > 0)) onda
{
p := x * y;
izlaz (p);
}
dok je ((x <> 0) I (y <> 0));
Sanda, 2012.
67