Osnove programiranja 3 12 2020 predava Zadaci Svakodnevni

  • Slides: 48
Download presentation

Osnove programiranja 3. 12. 2020. predavač:

Osnove programiranja 3. 12. 2020. predavač:

Zadaci Svakodnevni životni zadaci Računalo je stvoreno da nam pomogne u rješavanju svakodnevnih zadataka.

Zadaci Svakodnevni životni zadaci Računalo je stvoreno da nam pomogne u rješavanju svakodnevnih zadataka. U rješavanju koristimo logiku, iskustva, znanja, intuiciju i osjećaje Kako ono to radi? • • prema unaprijed zadanim pravilima određene stvari pamti, ali i odlučuje prema određenim smjernicama Računalo trebamo pripremiti za određenu vrstu zadataka, a zadatke koje pred njega postavljamo moramo pretvoriti u njemu razumljiv oblik.

Kako čovjek pretvara zadatke iz svijeta koji ga okružuje u oblik prihvatljiv računalu? Opisom

Kako čovjek pretvara zadatke iz svijeta koji ga okružuje u oblik prihvatljiv računalu? Opisom i analizom konkretnog problema (Što imam? - Što želim? ) promatranje, istraživanje, razmišljanje, razgovor Određivanjem postupka rješavanja problema (Što raditi i kako? ) crtanje dijagrama tijeka, zapis u pseudokodu Zapisom puta do rješenja na način kako ga razumije računalo – "računalnim jezikom" programiranje u programskom jeziku RAČUNALNI PROGRAM

? Korisnik računala ü ne piše programe već pokreće već gotove programe instalirane ili

? Korisnik računala ü ne piše programe već pokreće već gotove programe instalirane ili spremljene na računalu Program se izvršava, zahtjeva od korisnika unos pojedinih parametara i vraća rezultat kao rješenje problema. include <stdio. h> void main () { int a, b, c; scanf ("%d, %d", &a, &b); z=a+b; printf ("%d", z); }

include <stdio. h> void main () { int a, b, c; scanf ("%d, %d",

include <stdio. h> void main () { int a, b, c; scanf ("%d, %d", &a, &b); z=a+b; printf ("%d", z); } Program je niz naredbi koje se izvode točno određenim redom i s točno određenim ciljem. Temeljni element programa je naredba. Naredbama se točno opisuje što i kako računalo treba raditi. Naredba predstavlja nalog računalu za izvršenje određene radnje. Programe pišu stručnjaci – programeri i pri tome koriste neki od programskih jezika razumljivih računalu. Postupak nastajanja programa naziva se programiranje. Pravilnom upotrebom programa korisnik upravlja računalom.

PROGRAMSKI JEZICI Programski jezik je skup ključnih riječi i pravila za njihovo korištenje koje

PROGRAMSKI JEZICI Programski jezik je skup ključnih riječi i pravila za njihovo korištenje koje “razumije” računalo. Razvoj programskih jezika pratio je razvoj računala. Prva generacija: strojni jezici Strojni jezik je binarni prikaz programa za računalo. programski jezik prvih računala programe su uglavnom pisali konstruktori računala i oni se nisu mogli prenositi s računala na računalo vezan je uz građu računala (od programera se zahtijeva dobro poznavanje građe) otežano je pisanje programa velika je vjerojatnost pogreške pri pisanju programa

PROGRAMSKI JEZICI Druga generacija: simbolički jezici, asembler Programer pri pisanju operacija koristi riječi izvedene

PROGRAMSKI JEZICI Druga generacija: simbolički jezici, asembler Programer pri pisanju operacija koristi riječi izvedene iz svakodnevnog govora (uglavnom engleskog), a za podatke koristi varijable. “Olakšano” pisanje programa Za vrijeme izvođenja programa memorija može primiti samo niz nula i jedinica. Stoga se svaka naredba asemblerskog jezika prije izvođenja prevodi u strojnu naredbu

PROGRAMSKI JEZICI Treća generacija: viši programski jezici U višim programskim jezicima više naredbi strojnog

PROGRAMSKI JEZICI Treća generacija: viši programski jezici U višim programskim jezicima više naredbi strojnog ili asemblerskog jezika zamjenjuje se jednom naredbom višeg programskog jezika. Programer ne treba poznavati građu računala, a isti se program može pokrenuti na različitim modelima računala. FORTRAN, ALGOL, COBOL, PL/1, Ada, LISP, PROLOG BASIC (QBASIC), LOGO, Pascal, C (C++) TO ZBROJI MAKE “A READ MAKE “B READ MAKE “Z : A+: B PR : Z END INPUT A INPUT B Z=A+B PRINT Z END program zbroji; var a, b: integer; begin readln (a); readln (b); z: =a+b; writeln (z); end. #include <stdio. h> void main () { int a, b, c; scanf ("%d, %d", &a, &b); z=a+b; printf ("%d", z); } Proceduralni jezici

Program zapisan u višem programskom jeziku naziva se izvorni program (source code). QBASIC -

Program zapisan u višem programskom jeziku naziva se izvorni program (source code). QBASIC - datoteke tipa. BAS Pascal - datoteke tipa. PAS C++ -. CPP datoteke interpreteri JEZIČNI PREVODITELJI prevode program u strojni jezik kompajleri Tijekom svakog izvođenja interpreteri prevode svaku naredbu izvornog programa u strojni (binarni) oblik. (primjer BASIC-a) Kompajleri izvorni program prevode u strojni oblik u posebnom postupku prevođenja (kompajliranja). Prevođenjem izvornog programa dobit ćemo datoteku objektnog koda (object code). Povezivanjem objektnog koda s već postojećim bibliotekama nastaje izvršni program (EXEcutable program). Za pokretanje programa na bilo kojem računalu dovoljna je njegova izvršna verzija. (primjer Pascala, C-a)

PROGRAMSKI JEZICI Četvrta generacija: jezici prilagođeni krajnjim korisnicima § upitni jezici za bazu podataka

PROGRAMSKI JEZICI Četvrta generacija: jezici prilagođeni krajnjim korisnicima § upitni jezici za bazu podataka (SQL) Objektno programiranje Programeri programe sastavljaju od već gotovih dijelova - objekata. Visual BASIC, Visual C Već je i programski jezik C++ objektno orijentiran, ali omogućava i pisanje proceduralnog koda. Programski jezici neovisni o sklopovlju i operacijskom sustavu INTERNET Java

Što smo naučili? • • Što je programiranje? Što je program? Tko piše program?

Što smo naučili? • • Što je programiranje? Što je program? Tko piše program? Što je naredba? Kako zovemo jezike u kojima zapisujemo program? • Nabroji vrste programskih jezika i njihove osnovne karakteristike. 12

Zadaci Jesi li tijekom osnovne škole programirao? § Napiši (potraži) nekoliko programa u QBASICU?

Zadaci Jesi li tijekom osnovne škole programirao? § Napiši (potraži) nekoliko programa u QBASICU? § Nabroji osnovne naredbe QBASICA. § Potraži neki program u Pascalu § Potraži neki program u C-u 13

14

14

Osnove programiranja RAČUNALNI PROGRAM #include <stdio. h> void main () { int a, b,

Osnove programiranja RAČUNALNI PROGRAM #include <stdio. h> void main () { int a, b, c; scanf ("%d, %d", &a, &b); z=a+b; printf ("%d", z); }

ETAPE IZRADE RAČUNALNOG PROGRAMA

ETAPE IZRADE RAČUNALNOG PROGRAMA

ANALIZA PROBLEMA • dobro razumijevanje zadatka • raščlanjivanje zadataka • što imamo – što

ANALIZA PROBLEMA • dobro razumijevanje zadatka • raščlanjivanje zadataka • što imamo – što želimo dobiti? SURADNJA S BUDUĆIM KORISNIKOM PROGRAMA!

OPIS ULAZNIH I IZLAZNIH PODATAKA Što imamo – što želimo dobiti? PRECIZAN OPIS ULAZNIH

OPIS ULAZNIH I IZLAZNIH PODATAKA Što imamo – što želimo dobiti? PRECIZAN OPIS ULAZNIH I IZLAZNIH PODATAKA: - vrijednost, tip, ograničenja

ALGORITAM, DIJAGRAM TIJEKA

ALGORITAM, DIJAGRAM TIJEKA

PISANJE PROGRAMA (KODIRANJE) • provjereni algoritam prevodimo u naredbe nekog višeg programskog jezika (IZVORNI

PISANJE PROGRAMA (KODIRANJE) • provjereni algoritam prevodimo u naredbe nekog višeg programskog jezika (IZVORNI KOD) • izvorni kod može se upisivati u bilo kojem programu za obradu teksta (text editor)

PREVOĐENJE, ISPRAVLJANJE GREŠAKA • program u višem programskom jeziku prevodimo u strojni jezik PROGRAM

PREVOĐENJE, ISPRAVLJANJE GREŠAKA • program u višem programskom jeziku prevodimo u strojni jezik PROGRAM PREVODITELJ Provjera sintakse jezika – pravilnog pisanja naredbi • greške ispravlja programer REZULTAT: izvršni program (objektni kod + biblioteke)

PREVOĐENJE, ISPRAVLJANJE GREŠAKA • LOGIČKE GREŠKE, FUNKCIONALNE GREŠKE TESTIRANJE DEBUGGERI VAŽNI SU DOBRI TEST

PREVOĐENJE, ISPRAVLJANJE GREŠAKA • LOGIČKE GREŠKE, FUNKCIONALNE GREŠKE TESTIRANJE DEBUGGERI VAŽNI SU DOBRI TEST PODACI! • greške ispravlja programer

IZRADA DOKUMENTACIJE • važna je tijekom svih faza izrade programa • programeru olakšava buduće

IZRADA DOKUMENTACIJE • važna je tijekom svih faza izrade programa • programeru olakšava buduće izmjene programa

Za kraj … • Poznaješ li nekog programera? • Porazgovaraj s njim o poslu

Za kraj … • Poznaješ li nekog programera? • Porazgovaraj s njim o poslu koji obavlja. • Neka te upozna sa svim fazama tijekom pisanja nekog od svojih programa.

25

25

Osnove programiranja POSTUPCI PRI PISANJU PROGRAMA

Osnove programiranja POSTUPCI PRI PISANJU PROGRAMA

ALGORITAM = UPUTA Znaš gdje stanujem? MATEMATIKA? Kreni kraj zgrade Pošte lijevo, na prvom

ALGORITAM = UPUTA Znaš gdje stanujem? MATEMATIKA? Kreni kraj zgrade Pošte lijevo, na prvom raskršću desno, na drugom kružnom toku ravno, na kraju ulice kod visoke kuće. . . Kako ću pokrenuti program za crtanje na računalu? Klikni na gumb Start, u izborniku All Programs potraži. . . Riječ algoritam dolazi od riječi Alchwarizmi ili Kovarezma kako je glasio nadimak arapskog pisca, matematičara i astronoma iz 9. stoljeća Muhammeda ibn Muse al Khowarizmi koji je napisao knjigu o brojevima i aritmetici. 27

ALGORITAM • Cjelokupan zadatak svodi se na rješavanje više jednostavnijih, vezanih manjih zadataka. •

ALGORITAM • Cjelokupan zadatak svodi se na rješavanje više jednostavnijih, vezanih manjih zadataka. • PISANJE: detaljno i jasno, tako da osoba koja nikad nije rješavala postavljeni zadatak može slijediti korake algoritma i doći do rješenja. Postoji čitav niz zadataka koje prema uputama algoritma u načelu može riješiti i stroj. Tada se algoritam sastoji od niza mehaničkih radnji za čije izvršenje nije potrebna posebna inteligencija. 28

ALGORITAM • Ako je riječ o računalima, onda je algoritam uputa računalu kako može

ALGORITAM • Ako je riječ o računalima, onda je algoritam uputa računalu kako može riješiti postavljeni zadatak. • Mora biti napisan tako da se može pretvoriti u naredbe računalnog jezika.

ALGORITAM slijed radnji ili postupaka koji dovode do rješenja postavljenog zadatka. Put do rješenja

ALGORITAM slijed radnji ili postupaka koji dovode do rješenja postavljenog zadatka. Put do rješenja – jednoznačan! dva višeznamenkasta prirodna broja ZAPIŠI … ZAMISLI … INSTRUKCIJE ZBROJI … POSTAVI … Međurezultati broj za prijenos ZAVRŠNI OBJEKTI suma brojeva UČINKOVITOST! ALGORITAMSKI PROCES POČETNI OBJEKTI

 • Osim opisnog načina, kod kojeg je algoritam zapravo opis u svakodnevnom govornom

• Osim opisnog načina, kod kojeg je algoritam zapravo opis u svakodnevnom govornom jeziku, računalni algoritam pogodno je prikazati dijagramom tijeka ili pseudokôdom.

DIJAGRAM TIJEKA • Dijagram tijeka (engl. flow chart) je grafički prikaz algoritma. • olakšava

DIJAGRAM TIJEKA • Dijagram tijeka (engl. flow chart) je grafički prikaz algoritma. • olakšava izradu programa, uklanjanje logičkih ili proceduralnih grešaka. • zbog preglednosti, pogodan je za analizu problema i traženje povoljnijih rješenja

SIMBOLI DIJAGRAM TIJEKA

SIMBOLI DIJAGRAM TIJEKA

Primjer: POČETAK Je li a=b? UPIŠI a, b a=b Je li a<b? NE DA

Primjer: POČETAK Je li a=b? UPIŠI a, b a=b Je li a<b? NE DA a<b ISPIŠI "Brojevi su jednaki" DA ISPIŠI a KRAJ NE ISPIŠI b

PSEUDOKOD Pseudokod je zapis rješenja problema sličan klasičnom programu, ali ne vezan uz programski

PSEUDOKOD Pseudokod je zapis rješenja problema sličan klasičnom programu, ali ne vezan uz programski jezik. Koristi ključne riječi izdvojene iz govornog jezika (pseudojezik) i strukturu računalnog programa.

Primjer: ključne riječi

Primjer: ključne riječi

OSNOVNI ALGORITAMSKI POSTUPCI • slijed • grananje • ponavljanje (petlja)

OSNOVNI ALGORITAMSKI POSTUPCI • slijed • grananje • ponavljanje (petlja)

SLIJED Naredbe slijede jedna iza druge.

SLIJED Naredbe slijede jedna iza druge.

GRANANJE Omogućuje različiti tijek odvijanja programa ovisno o rezultatu postavljenog uvjeta.

GRANANJE Omogućuje različiti tijek odvijanja programa ovisno o rezultatu postavljenog uvjeta.

PONAVLJANJE (petlja) Određeni niz naredbi izvršava se zadani broj puta. Prije početka ponavljanja unaprijed

PONAVLJANJE (petlja) Određeni niz naredbi izvršava se zadani broj puta. Prije početka ponavljanja unaprijed se točno zna koliko puta postupak treba ponoviti. Broj ponavljanja ovisi o rezultatu izvršenog niza naredbi koje se ponavljaju. U tom slučaju broj ponavljanja ne zna se unaprijed.

PONAVLJANJE (petlja)

PONAVLJANJE (petlja)

Vrste instrukcija

Vrste instrukcija

Vrste instrukcija

Vrste instrukcija

Vrste instrukcija

Vrste instrukcija

Vrste instrukcija

Vrste instrukcija

Što smo naučili? Naučili smo što je … • algoritam • dijagram tijeka •

Što smo naučili? Naučili smo što je … • algoritam • dijagram tijeka • pseudokod - ključne riječi • instrukcija Vrste instrukcija? 46

Zadaci: 1. Napiši algoritam za prelaženje ulice. 2. Nacrtaj dijagram tijeka koji opisuje postupke

Zadaci: 1. Napiši algoritam za prelaženje ulice. 2. Nacrtaj dijagram tijeka koji opisuje postupke pri kuhanju jaja. 3. Napiši algoritam koji provjerava da li je trokut pravokutan. (Sjeti se Pitagorinog poučka!) 4. Opiši što prikazuje dijagram tijeka: 47

Zadaci: 5. Kolika je vrijednost varijable a nakon izvršenja slijedeće naredbe a: = 5

Zadaci: 5. Kolika je vrijednost varijable a nakon izvršenja slijedeće naredbe a: = 5 mod 3; ? 6. Koja će biti vrijednost varijable u nakon izvođenja sljedećega dijela programa? a : = -3; b : = 1; u : = (a > b) ILI (a = 3); 48