1 Uvod u programiranje i softverski paketi Univerzitet u Nišu Građevinsko-arhitektonski fakultet V čas Milan Gocić septembar, 2013. - Algoritam: pojam, dizajn i analiza - 2 Algoritam Postupak transformacije ulazne informacije u izlaznu informaciju naziva se algoritam. Osnovne osobine koje treba da poseduje svaki algoritam su: diskretnost, determinisanost, rezultativnost i masovnost. Diskretnost znači da svakom algoritamskom koraku odgovara diskretni vremenski period. Determinisanost znači da je rezultat operacije pojedinog algoritamskog koraka jednoznačan. Rezultativnost obezbeđuje dobijanje željenog rezultata posle konačnog broja algoritamskih koraka. Masovnost je osobina kojom se obezbeđuje rešavanje šire klase problema jednim algoritmom.
28
Embed
Uvod u računarstvo - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/InformatikaII/materijal/Uvod u... · 1 Uvod u programiranje i softverski paketi Univerzitet u Nišu Građevinsko-arhitektonski
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Uvod u programiranje i
softverski paketi
Univerzitet u Nišu
Građevinsko-arhitektonski fakultet
V čas
Milan Gocić
septembar, 2013.
- Algoritam: pojam, dizajn i analiza -
2
Algoritam Postupak transformacije ulazne informacije u izlaznu informaciju naziva
se algoritam.
Osnovne osobine koje treba da poseduje svaki algoritam su: diskretnost,
determinisanost,
rezultativnost i
masovnost.
Diskretnost znači da svakom algoritamskom koraku odgovara diskretni vremenski period.
Determinisanost znači da je rezultat operacije pojedinog algoritamskog koraka jednoznačan.
Rezultativnost obezbeđuje dobijanje željenog rezultata posle konačnog broja algoritamskih koraka.
Masovnost je osobina kojom se obezbeđuje rešavanje šire klase problema jednim algoritmom.
2
3
Elementi algoritma
Konektor (izlaz u drugi deo algoritma ili
ulaz iz drugog dela algoritma)
Strelica za povezivanje elemenata i označavanje
smera toka algoritma
Elementarne algoritamske
strukture
Pod algoritamskom (programskom) strukturom
podrazumeva se više koraka (komandi programskog
jezika) koji čine jednu celinu.
Postoje tri elementarne algoritamske strukture:
linijska,
razgranata i
ciklična.
4
3
Linijska struktura
Naredbe koje se pri izvršavanju programa uvek izvršavaju u
navedenom redosledu (sekvencijalno) čine linijsku strukturu.
Linijski programi su programi u kojima se javljaju naredbe ulaza,
obrade i izlaza. Ovi programi imaju smisla u slučajevima kada za
razne vrednosti ulaznih veličina treba izvršiti složena
izračunavanja.
5
6
Primer
Sastaviti algoritam i napisati program kojim se izračunava vrednost
funkcije
na osnovu unetih vrednosti za x, y i z. Na izlazu štampati vrednost
funkcije.
yz3x
x
x2
yz3xf
4
4
7
package informatika;
import java.io.*;
public class LinijskaStruktura {
public static void main(String[] args) throws Exception {
double x, y, z, f;
// Unos podataka
BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Unesite vrednost za x: ");
x = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za y: ");
y = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za z: ");
z = Double.parseDouble(ulaz.readLine());
// Izračunavanje vrednosti funkcije f
f = Math.pow((x + 3 * z + y) / (2 * x), 4) - x / (x + 3 * z - y);
// Štampanje rezultata
System.out.println("Vrednost funkcije f je " + f);
}
}
8
Izlazni rezultati programa
Unesite vrednost za x: 2.6
Unesite vrednost za y: 3.5
Unesite vrednost za z: 4.8
Vrednost funkcije f je 241.35464197224226
5
Razgranata struktura
Naredbe koje omogućuju promenu redosleda izvršavanja naredbi
programa zovu se naredbe prelaska. Prema načinu na koji se
obrazuje prelazak u programu, ove naredbe se dele na:
Naredbe bezuslovnog prelaska omogućuju prelazak iz jednog
dela programa na bilo koju izvršnu naredbu u istoj programskoj
jedinici.
Naredbe uslovnog prelaska omogućuju grananja u programu,
tako da se pri izvršavanju programa prolazi samo kroz jednu od
mogućih grana. Ovakva programska struktura zove se
razgranata struktura. Broj grana u razgranatoj strukturi može
biti različit (dve, tri ili više), što zavisi od naredbe prelaska
kojom se ostvaruje grananje u programu.
9
If iskaz
Sintaksa if-else strukture ima oblik
if (uslov) {
B1
}
else {
B2
}
10
6
Primer
Napisati program kojim se izračunava vrednost
funkcije
Na izlazu štampati rezultat oblika
Za uneto X = xxx.xxx dobija se Y = xxx.xxx.
0. xx,
0, xx,xy
11
12
7
package informatika;
import java.io.*;
public class IfElseStruktura {
public static void main(String[] args) throws Exception{
double x, y;
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Unesite vrednost za x: ");
x = Double.parseDouble(ulaz.readLine());
if (x >= 0)
y = x;
else
y = -x;
System.out.println("Za uneto X = " + x + " dobija se Y = " + y);
}
}
13
Izlazni rezultati programa
Unesite vrednost za x: -26.3
Za uneto X = -26.3 dobija se Y = 26.3
14
8
Logičko if
if (uslov) {
B1
}
15
Primer
Napisati program za izračunavanje vrednosti funkcije sa
vrednostima x, y, p i q
)))q,pmin(,ymax(,xmin()q,p,y,x(f
16
9
17
package informatika;
import java.io.*;
public class IfStruktura {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Unesite vrednost za x: ");
int x = Integer.parseInt(ulaz.readLine());
System.out.print("Unesite vrednost za y: ");
int y = Integer.parseInt(ulaz.readLine());
System.out.print("Unesite vrednost za p: ");
int p = Integer.parseInt(ulaz.readLine());
System.out.print("Unesite vrednost za q: ");
int q = Integer.parseInt(ulaz.readLine());
int f = (p < q) ? p : q;
if (y > f)
f = y;
if (x < f)
f = x;
System.out.println("Vrednost funkcije f je " + f);
}
}
18
10
Izlazni rezultati programa
Unesite vrednost za x: 10
Unesite vrednost za y: 8
Unesite vrednost za p: 6
Unesite vrednost za q: 5
Vrednost funkcije f je 8
19
If-else-if struktura
Sintaksa if-else-if strukture ima oblik
if (uslov1) {
B1
}
else if (uslov2) {
B2
}
else {
B3
}
20
11
Primer
Napisati program kojim se izračunava vrednost funkcije
Za unetu vrednost argumenta x štampati vrednost argumenta i
vrednost funkcije.
3.x
3,x2
2,x
1,x
2,
x,
y
21
22
12
package informatika;
import java.io.*;
public class UgnjezdenoIf {
public static void main(String[] args) throws Exception{
double x, y;
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Unesite vrednost za x: ");
x = Double.parseDouble(ulaz.readLine());
if (x < 2)
y = x;
else if (x < 3)
y = 2.0;
else
y = x - 1;
System.out.println("Za uneto X = " + x + " dobija se Y = " + y);
}
}
23
Izlazni rezultati programa
Unesite vrednost za x: 2.5
Za uneto X = 2.5 dobija se Y = 2.0
24
13
Switch iskaz
Sintaksa switch strukture ima oblik
switch(izraz) {
case konstanta1:
blok iskaza
break;
case konstanta2:
blok iskaza
break;
…
default:
blok iskaza
}
25
Primer
Napisati program kojim se štampaju dani u nedelji na osnovu
unete celobrojne vrednosti.
26
14
package informatika;
import java.io.*;
public class SwitchIskaz {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Unesite vrednost za dan: ");
int dan = Integer.parseInt(ulaz.readLine());
switch (dan) {
case 1:
System.out.println("Ponedeljak");
break;
case 2:
System.out.println("Utorak");
break;
case 3:
System.out.println("Sreda");
break;
27
case 4:
System.out.println("Cetvrtak");
break;
case 5:
System.out.println("Petak");
break;
case 6:
System.out.println("Subota");
break;
case 7:
System.out.println("Nedelja");
break;
default:
System.out.println("Ne postoji takav dan");
}
}
}
28
15
Izlazni rezultati programa
Unesite vrednost za dan: 5
Petak
Unesite vrednost za dan: 18
Ne postoji takav dan
29
Ciklična struktura
Ako se niz naredbi u programu može izvršiti više puta u toku
izvršavanja programa, tada se kaže da ove naredbe
obrazuju cikličnu strukturu.
Među naredbama koje čine cikličnu strukturu mora postojati
bar jedna naredba takva da omogućava izlazak iz ciklusa.
Uslov pod kojim se izlazi iz ciklusa zove se izlazni kriterijum
ciklusa. Ako je izlazni kriterijum broj ponavljanja ciklusa,
tada se ciklus zove brojački ciklus. Ako je izlazni
kriterijum dostignuta tačnost u procesu računanja, tada se
ciklus zove iterativni ciklus.
30
16
Iterativni ciklusi
Kod ove vrste ciklusa kriterijum za izlazak iz ciklusa je
dostignuta tačnost u procesu računanja.
Iterativni ciklusi se najčešće koriste pri programiranju
iterativnih numeričkih postupaka.
Za realizaciju iterativnih ciklusa koristi se while i do-
while struktura sa osnovnom razlikom u broju
prolaza kroz petlju.
31
While petlja
Sintaksa while petlje ima oblik
while (uslov) {
B
}
32
17
Do-while petlja
Sintaksa do-while petlje ima oblik
do {
B
} while (uslov);
33
Primer Napisati program za iterativno rešavanje sistema jednačina
koristeći sledeće formule:
Iterativni proces prekinuti kada se ispune uslovi
i .
Na ulazu je data vrednost za i početne vrednosti za i . Na izlazu štampati
rešenja sistema jednačina.
Zadatak rešiti koristeći:
while petlju,
do-while petlju.
03y2x
01x2xy3x4
2
2
.2
3xy,1)1y3(x
2
1x n
1nnn1n
n1n xx
n1n yy
0x
0y
34
18
35
package informatika;
import java.io.*;
public class WhilePetlja {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Unesite vrednost za epsilon: ");