Programiranje Jezici Osnove

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 46

PROGRAMSKI JEZICI I

PROGRAMIRANJE
Osnovni pojmovi

Tehnička, industrijska i obrtnička škola Čakovec 1


Programi
• računala služe za obavljanje različitih poslova
• stvarna namjena računala određena je PROGRAMOM kojeg
računalo izvodi
• skup svih programa koji se mogu izvršavati na računalu
nazivamo SOFTVER ili PROGRAMSKA PODRŠKA
• programe pišu PROGRAMERI
• postupak nastanka programa (pisanjem NAREDBI
programskog jezika) zove se PROGRAMIRANJE

Tehnička, industrijska i obrtnička škola Čakovec 2


Naredbe
• NAREDBA je nalog računalu da izvrši neki osnovni zahvat
• izbor i redoslijed NAREDBI (građa i vrsta programa) određuje
ponašanje računala, odnosno način na koje ono izvršava neku
zadaću

PROGRAMSKI JEZIK RAČUNALNI


PROGRAM
SKUP OSNOVNIH naredbe
NAREDBI ZA programskog
jezika nanizane po
PROGRAMIRANJE određenim
(for, if, while, pravilima strogo
case, switch…) utvrđenim
redoslijedom u
cilju izvršavanja
PRAVILA PISANJA nekog zadatka

Tehnička, industrijska i obrtnička škola Čakovec 3


Sintaksa
• napisane naredbe
moraju zadovoljavati
zadane zakonitosti,
pravila – SINTAKSU
PROGRAMSKOG
JEZIKA
• program koji ne
zadovoljava
propisanu sintaksu je
neispravan i
nemoguće ga je
prevesti u strojni
oblik i izvršiti

Tehnička, industrijska i obrtnička škola Čakovec 4


Razvoj programskih jezika

1956. FORTRAN (John Backus)


1960. ALGOL 60, COBOL, PL I, PL II
1964. BASIC (John Kemeny, Tom Kurtz) beginner’s all-
purpose instruction code
1965. (...1974.) PASCAL (Niklaus Wirth, Klaus Jensen)
1975. C (Dennis Richie)
1983. C++ (Bjarne Stroustrup)...

Tehnička, industrijska i obrtnička škola Čakovec 5


Podjela programskih jezika
STROJNI PROGRAMSKI JEZICI – jezici niže razine
• Naredbe se obično zapisuju simboličkim zapisom, tzv.
MNEMONICIMA STROJNOG JEZIKA (binarnog)
• Pri pisanju strojnih naredbi prvi (obavezni dio) je operacija
(operacijski kod)
VIŠI PROGRAMSKI JEZICI
• naredbe se mora prevoditi u strojni jezik
• računalo mora biti opremljeno odgovarajućim PREVODITELJEM
int sum(int[] x) {
int sum = 0; 00101010101010
n = 0; 10101011111010
while (n < x.length) {
sum += x[n];
11101010101110
} 00101010101010
return sum; ...
}

Tehnička, industrijska i obrtnička škola Čakovec 6


Evolution: Genealogy

From Sebesta’s
Concepts of
Programming
Languages

Tehnička, industrijska i obrtnička škola Čakovec 7


ISTRAŽI…
• Koju sve vrstu uređaja može
simulirati računalo?
• Koje vrste programske podrške
(softvera) znaš?
• Koliko se trenutno programera traži
u nekim razvijenim zemljama
Zapada i kolike su njihove
prosječne zarade?
• Koji su engleski/njemački izrazi za
program, naredba, programiranje,
programer, programska
podrška/potpora?
• Što znate o sintaksi hrvatskog
književnog jezika?
• Usporedite programske jezike
prema popularnosti (raširenosti).

Tehnička, industrijska i obrtnička škola Čakovec 8


Strojni jezik
• binarni prikaz programa, jedini oblik programa koji
računalo “razumije” i u njega se prije izvođenja prevodi
svaki drugi oblik programa, tijesno je vezan uz građu
računala (arhitekturu mikroprocesora) pa je programer
mora dobro poznavati.

LD A,$AFFF
ST $AD23, A
ADD A,B
001001001001JPNZ A
101000100100
111000100100
010100010100

Tehnička, industrijska i obrtnička škola Čakovec 9


Mnemonici strojnog jezika
push ebp
• U zamjenu za pisanje mov ebp,esp
pushfd
nizova nula i jedinica sub esp,2D0h
(binarnog zapisa u strojnom mov
mov
dword ptr [ebp-224h],eax
dword ptr [ebp-228h],ecx
jeziku) koriste se tzv. mov
mov
eax,dword ptr [ebp+8]
ecx,dword ptr [ebp+4]
MNEMONICI STROJNOG inc esi
JEZIKA (slovčane kratice cmp
je
al,dl
7C90ECA9
koje upućuju na djelovanje test al,al
je 7C90ECA3
pojedine naredbe). mov al,byte ptr [esi]
inc esi
• ASSEMBLER je program cmp al,dl
je 7C90ECA9
koji mnemonike strojnog test al,al
jne 7C90EC98
jezika (push, mov, add, dec, pop esi
pop ebx
inc, jnz...) prevodi u binarno pop edi
zapisane instrukcije. xor eax,eax

Tehnička, industrijska i obrtnička škola Čakovec 10


Prednosti i nedostaci strojnog jezika
• Prednosti:
• mogućnost izravnog djelovanja na
sklopovlje
• djelotvorno iskorištenje memorije
• veća brzina izvođenja napisanog
programa

• Nedostaci:
• složenost postupka izrade programa
• ograničenost na određeni tip
procesora

Tehnička, industrijska i obrtnička škola Čakovec 11


Viši programski jezici i njihove prednosti

• Prilagođeni su čovjeku, prikladniji su, lakši i razumljiviji


• Jednom naredbom VIŠEG PROGRAMSKOG JEZIKA
nadomješta se cijeli skup naredbi strojnog jezika

• Prednosti:
• programer ne mora dobro poznavati građu računala
• različiti viši programski jezici mogu biti prilagođeni različitim
zadaćama i biti bliski stručnjacima za određeno područje.

• Viši programski jezici opće namjene omogućuju


rješavanje šireg raspona zadataka.

Tehnička, industrijska i obrtnička škola Čakovec 12


Jezični prevoditelji
• Mikroprocesor prihvaća samo strojni oblik programa
pa je svaki drugi oblik programa potrebno prije
izvođenja prevesti u strojni oblik
• IZVORNI PROGRAM (source) koji nije napisan u
binarnom obliku, prije izvođenja potrebno je prevesti
u strojni oblik.
• Načelno postoje dvije skupine PREVODITELJA:
• INTERPRETERI prevode odmah nakon unosa pojedine
naredbe
• KOMPILATORI (compilers) prevode tek nakon unosa
čitavog programa

Tehnička, industrijska i obrtnička škola Čakovec 13


ISTRAŽI…
• Koji su najčešći
mikroprocesori kod današnjih
osobnih računala?
• Po čemu se današnji
mikroprocesori međusobno
razlikuju?
• Nabrojite neke više
programske jezike i pokušajte
ih razvrstati prema području
primjene, tipovima…
• izvor: npr. Wikipedia

Tehnička, industrijska i obrtnička škola Čakovec 14


Hrvatski informatičari u svemu ravnopravni s europskim

• bilježi se stalan manjak zaposlenih u IT sektoru


• najtraženija zanimanja su programeri raznih programskih jezika, data base
developeri, mrežni administratori, djelatnici za potporu prodajnom timu, podršku
komunikacijskom menadžemntu, administratori baznih podataka, voditelji obrade
podataka.
- Zabrinjavajuće je da Hrvatskoj nedostaje oko 1200 računalnih stručnjaka
• - »Ne samo u Hrvatskoj, već svugdje u svijetu stanje je slično, jer sustavi
formalnog obrazovanja financijski ne mogu pratiti razvitak novih tehnologija«
- povećana potražnja posljedica brzog razvitka svjetske IT industrije (EU, SAD i
Azija)
- »Problem kod IT kadra je što ljudi koji rade u toj djelatnosti moraju
svakodnevno ulagati u svoje znanje i dodatnu edukaciju«, (izvršni direktor
portala posao.hr Saša Jurković)
- hrvatski stručnjaci u svemu konkurentni onima iz zemalja Europske unije
- Hrvati polako postaju svjesni da, uz formalno obrazovanje, moraju cijelog života
ulagati u svoje znanje

Vjesnik Utorak, 17. listopada 2006.


Tehnička, industrijska i obrtnička škola Čakovec 15
ALGORITMI

Tehnička, industrijska i obrtnička škola Čakovec 16


Razlozi za proučavanje algoritama
• računalni programi ne bi postojali bez algoritama
• proučavanje algoritama razvija analitičke vještine
• dobri algoritmi mogu poboljšati efikasnost računalnih
programa

Tehnička, industrijska i obrtnička škola Čakovec 17


Više o algoritmima
“A person well-trained in computer science knows how to deal
with algorithms: how to construct them, manipulate them,
understand them, analyze them.
This knowledge is preparation for much more than writing good
computer programs; it is a general-purpose mental tool that
will be a definite aid to the understanding of other
subjects, whether they be chemistry, linguistics, or music, etc.
The reason for this may be understood in the following way: It has
often been said that a person does not really understand
something until after teaching it to someone else. Actually, a
person does not really understand something until after
teaching it to a computer, i.e., expressing it as an algorithm....
An attempt to formalize things as algorithms leads to a much
deeper understanding than if we simply try to comprehend
things in the traditional way”

Donald E. Knuth (one of the most prominent


computer scientists of our time 1996.)
Tehnička, industrijska i obrtnička škola Čakovec 18
Upamti!
• Algoritmi
• nisu odgovori
• su dobro definirani koraci za dobijanje
odgovora
• Algoritmi koriste PODATKOVNE
STRUKTURE (DATA STRUCTURES)
• Učenje o algoritmima i podatkovnim
strukturama pomaže u stjecanju
kompetencija za uspješnije rješavanje
problema (better problem-solver)!
• The term algorithm is used in computer
science to describe a problem solving The A* algorithm
method suitable for implementation as
a computer program. [Sedgewick 2003]

Tehnička, industrijska i obrtnička škola Čakovec 19


Definicija
• Naziv ALGORITAM potječe od
imena arapskog matematičara
Muhamed ibn Musa al Horezmi.

• ALGORITAM je opis matematičkog


ili drugog postupka, sastavljen od
izvjesnog broja koraka ili akcija,
dan u obliku niza uputa koje treba
obaviti određenim redoslijedom.

• ALGORITAM je proces ili niz pravila


za rješavanje nekog zadatka ili
zadanog problema.

Tehnička, industrijska i obrtnička škola Čakovec 20


Primjeri algoritama
• Algoritam – uputa ili recept:
• Uputa za prelazak preko ulice
• Upute za uporabu kućanskih aparata
• Kuharski recept
• Upute za sijanje
• Uputa za zbrajanje brojeva

• Isti algoritam može biti predstavljen na niz različitih načina.


• Za rješavanje istog problema mogu postojati različiti algoritmi
(načini).
• Algoritmi za isti problem mogu biti utemeljeni na vrlo različitim
idejama i problem mogu rješavati sasvim različitim brzinama.

Tehnička, industrijska i obrtnička škola Čakovec 21


Programiranje – sinteza algoritama

• RAČUNALNI PROGRAM predstavlja


algoritam opisan uputama,
operacijama koje računalo razumije, a
služe rješavanju nekog problema.

• PISANJE PROGRAMA je proces


izražavanja algoritama nizom naredbi
u nekom jeziku za programiranje.

• Konvergentni algoritam se sastoji


od konačnog broja koraka koji
sigurno vode do rješenja (ako ono
uopće postoji).

Tehnička, industrijska i obrtnička škola Čakovec 22


Karakteristike algoritma
• Ima početne objekte (ulazni
podaci)
• Ima završne objekte (izlazni
podaci, rezultati)
• Ima konačni broj koraka (mogu se
opisati uputama, naredbama,
instrukcijama)
• Mogu biti općeniti ili specijalizirani
• Mogu biti uporabljivi i
neuporabljivi
• Imaju izvoditelja
• Postoji jezik za njihovo zapisivanje
(koji može biti umjetni – programski
jezik ili govorni)

Tehnička, industrijska i obrtnička škola Čakovec 23


Opis postupka
Nakon formulacije problema treba precizno opisati
algoritam, a zatim ga izraziti notacijom programskog jezika i
to se onda daje računalu na izvršenje.

Formulacija problema

Dekompozicija problema na određen broj Definiraju se


jednostavnijih potproblema koji se rješavaju koraci koji će
definiranim redoslijedom i na kraju dovode do dovesti do
rješenja cjelokupnog problema. rješenja

Precizan opis postupka ili algoritam za rješavanje

Tehnička, industrijska i obrtnička škola Čakovec 24


Primjeri različitih algoritama za
rješenje istog problema

Nalaženje riječi u rječniku

Tehnička, industrijska i obrtnička škola Čakovec 25


Algoritam 1.
• 1. korak: otvoriti stranu rječnika prije prve.
• 2. korak: otvoriti slijedeću stranu.
• 3. korak: ako posljednja riječ na otvorenoj strani nije po
abecedi prije tražene riječi ili ako je otvorena strana
posljednja, nastaviti sa 4. korakom, inače ponoviti 2.
korak.
• 4. korak: potražiti traženu riječ na otvorenoj strani i
zapisati njeno značenje. Ako tražena riječ nije nađena,
zapisati da je nema u rječniku.

Tehnička, industrijska i obrtnička škola Čakovec 26


Algoritam 2.
• 1. korak: napraviti snop iz svih listova rječnika.
• 2. korak: dok je tražena riječ po abecedi iza
posljednje riječi prve strane snopa i prije prve riječi
posljednje strane snopa, ili dok nije u snopu samo
jedan list, ponavljati 3. i 4. korak, inače napraviti 5.
korak.
• 3. korak: razdjeliti snop u dva dijela.
• 4. korak: ako je tražena riječ ispred posljednje riječi
prvog snopa, nastaviti rad sa tim snopom, u
suprotnom uzeti za novi snop drugi dio.
• 5. korak: potražiti traženu riječ na prvoj ili posljednjoj
strani snopa i zapisati njeno značenje. Ako tražena
riječ nije nađena, zapisati da je nema u rječniku.

Tehnička, industrijska i obrtnička škola Čakovec 27


Algoritam 3.
• 1. korak: napraviti snop iz listova rječnika koji leže između
oznake s prvim slovom tražene riječi i slijedeće oznake.
• 2. korak i ostali jednaki su kao i u algoritmu 2.

Tehnička, industrijska i obrtnička škola Čakovec 28


Primjer: Izračunati z=xy (x i y su cijeli pozitivni brojevi) -
napraviti algoritam za potenciranje
Rješenje 1.:

Ako računalo “zna” potencirati, onda se može napisati npr.

z=pow(x,y);
ili
z:=x^y;

Tehnička, industrijska i obrtnička škola Čakovec 29


Primjer – nastavak:
Rješenje 2.:

Ako računalo “zna” samo osnovne računske operacije, treba


sastaviti algoritam za potenciranje koji će tu operaciju raščlaniti
na niz množenja, npr.:

z:=1;
u:=y;
ponavljaj
z:=z*x;
u:=u-1
dok ne bude u=0;

Tehnička, industrijska i obrtnička škola Čakovec 30


Matematička logika u
programiranju

Tehnička, industrijska i obrtnička škola Čakovec 31


Uvod
• Izvođenje programa ne mora biti pravocrtno, bezuvjetno,
već se program može GRANATI

• kod grananja obično ISPITUJEMO NEKI UVJET (može biti


ispunjen ili ne) i DONOSIMO ODLUKU o daljnjem tijeku
izvođenja programa

• Ostvarenje PROGRAMSKIH GRANANJA, ali i


PROGRAMSKIH PETLJI zasniva se na POZNAVANJU
LOGIKE koje olakšava razumijevanje i stvaranje programa

• LOGOS – riječ, misao, zakon, razlog, razum


• LOGIKA - grana filozofije

Tehnička, industrijska i obrtnička škola Čakovec 32


Logika
• koja se bavi utvrđivanjem razložnosti rasuđivanja
• Nešto je logično ako se može obrazložiti nekim dokazima

• Osnovni pojam u logici je LOGIČKI SUD - TVRDNJA koja se


ocjenjuje s gledišta ISTINITOSTI ili LAŽNOSTI
• VALJANI sudovi mogu biti ISTINITI (TRUE) ILI LAŽNI (FALSE)

• Istraživanjima sudova bavi se posebna grana matematike:


MATEMATIČKA LOGIKA
• Osnovu matematičke logike čini ALGEBRA SUDOVA
(LOGIČKA, BOOLEOVA ALGEBRA)
• Operacije sa sudovima su LOGIČKE ili BOOLEOVE

Tehnička, industrijska i obrtnička škola Čakovec 33


George Boole 1815-1864

• Matematičar koji se
bavio logikom
• Razvio logičku algebru
(Boolean Algebra)
• Uveo operatore
• and (konjunkcija)
• or (disjunkcija)
• not (negacija)
• nor (exclusive or)

Tehnička, industrijska i obrtnička škola Čakovec 34


Složeni sudovi i označavanje sudova
• Za označavanje sudova koriste se logičke varijable koje
mogu poprimiti vrijednost 0 ili 1 (laž ili istina)
• od jednostavnih sudova stvaramo složenije

• Istinitost ili lažnost složenijih sudova može se utvrditi


temeljem formula koje uključuju logičke operatore:
negacija, konjunkcija, disjunkcija

• sudovi često uključuju i relacijske simbole ili operatore:


<, >, =, <=, >=, <>
• relacijski simboli opisuju odnose među vrijednostima
napisanim sa lijeve/desne strane operatora

Tehnička, industrijska i obrtnička škola Čakovec 35


Tablice istinitosti
A B !A !B A && B A || B

0 0 1 1 0 0

0 1 1 0 0 1

1 0 0 1 0 1

1 1 0 0 1 1

Tehnička, industrijska i obrtnička škola Čakovec 36


Istraži…
• Utvrdi istinitost ili lažnost sudova:

Sud Vrijednost

5>2

3>6

4=4

7<=6

• Napiši tablicu istinitosti za: (A||


B)&&(A&&B)
(A||C)||(A&&B)&&(B||C)

Tehnička, industrijska i obrtnička škola Čakovec 37


IZRADA PROGRAMA

Tehnička, industrijska i obrtnička škola Čakovec 38


Faze u izradi programa
1. Planiranje, definiranje, analiza i opisivanje
problema, određivanje algoritma, oblikovanje
rješenja
2. Kodiranje i prevođenje
3. Testiranje i ispravljanje, kontrola programa na
formalne (sintaktičke, semantičke) i logičke
greške
4. Održavanje programa

Dokumentiranje programa – faza koja se provodi


usporedo sa ostalim fazama (odvojeno i/ili u kodu)

Tehnička, industrijska i obrtnička škola Čakovec 39


Metode programiranja i
predstavljanje algoritama

Tehnička, industrijska i obrtnička škola Čakovec 44


Modularno programiranje
• Program se sastoji od modula (procedura, funkcija,
potprograma...) koji se mogu nezavisno razvijati i zatim koristiti
u više programa
• prednost: olakšano pisanje, testiranje, unošenje izmjena.

Strukturirano programiranje
• Program je građen pomoću elementarnih (osnovnih) logičkih
struktura: sekvence-niza, grananja i ponavljanja
• odvijanje programa:
• pravocrtno,
• temeljeno na rezultatima (odlukama, izboru, uvjetima) prethodne
obrade
• petlja.

Tehnička, industrijska i obrtnička škola Čakovec 45


Osnovne programske strukture
• Pravocrtan tijek programa, sekvenca
• Programska grananja
• if (ako)
• if-else (ako-onda)
• switch (višestruko grananje)
• Programske petlje
• for (poznati broj ponavljanja)
• do-while (ispitivanje uvjeta ponavljanja na kraju)
• while (ispitivanje uvjeta ponavljanja na početku)

Tehnička, industrijska i obrtnička škola Čakovec 46


Neki načini opisa algoritama
• Kod opisa algoritma i objašnjenja koda pomaže upotreba
• Blok dijagrama – simbolički prikaz algoritma/programa
• Pseudokoda – strukturirani opis u prirodnom jeziku

• Blok dijagrami - grafički

• Pseudokod – riječima

ako, onda, za, učitaj, ispiši,


dok je...

Tehnička, industrijska i obrtnička škola Čakovec 47


Blok dijagrami
POČETAK

I=1, S=0

BROJ

NE
BROJ>0
DA
S=S+BROJ

I<10 && S<99 DA I=I+1

NE
S, I

KRAJ

Tehnička, industrijska i obrtnička škola Čakovec 48


Pseudokod
i=1, s=0; i=1, s=0;
učitaj broj read broj
radi do
ako je (broj>0) onda if (broj>0)
s+=broj; s+=broj;
dok je (i+ while (i+
+<=10&&s<99); +<=10&&s<99);
ispiši s, i write s, i

Tehnička, industrijska i obrtnička škola Čakovec 49


Primjer
• napraviti program za zbrajanje dva cijela
broja
• napraviti program koji će zbrojiti, oduzeti,
pomnožiti i podijeliti dva cijela broja. Pri
tome izbjegnuti dijeljenje s nulom.
• napraviti program koji će zbrojiti pet
brojeva, pa ispisati kakav je zbroj (jednak,
veći ili manji od nule). Koristiti najviše tri
varijable.
• Ispisati sve djelitelje za deset učitanih
brojeva iz intervala [100, 1000].

Tehnička, industrijska i obrtnička škola Čakovec 50

You might also like