際際滷

際際滷Share a Scribd company logo
Raunarski praktikum 1
Predavanja
Goran Igaly
Sveuili邸te u Zagrebu
PMF, Matematiki odsjek
2. predavanje
2
Malo povijesti
 Simula (1967.)
 Prvi programski jezik sa svojstvima objektno-orijentirane paradigme
 Namijenjen izgradnji sustava za simulaciju
 Uveden pojam klase
 Primjer koda
http://www.angelfire.com/tx4/cus/shapes/simula.html
 Smalltalk (1972.)
 Prvi pravi (isti) objektno-orijentiran programski jezik (sve je objekt)
 Razvijen u Xerox PARC laboratoriju
 Najkori邸tenija verzija je Smalltalk-80
 SmallTalk Tutorial for Java Programmers!
http://web.gioorgi.com/squeak/squeak_tutorial.html#toc1
O objektno orijentiranom razvoju
 Iz knjige Alec Sharp: Smalltalk by Example
 http://stephane.ducasse.free.fr/FreeBooks/ByExample/SmalltalkByExampleNewRe
 OO thinking is fun and it is different.
OO razmi邸ljanje je zabavno i drugaije [od proceduralnog].
 One difference is that OO development tends to be more iterative than
procedural development, more spiral.
Jedna od razlika je da OO razvoj nastoji biti vi邸e iterativan, spiralan od
proceduralnog razvoja.
 In OO development we acknowledge that we don't fully understand our
objects and their interactions and we acknowledge that they will be changed
and transformed as we increasingly understand the problem
U OO razvoju smo svjesni injenice da ne razumijemo u potpunosti na邸e
objekte i njihove interakcije te prihvaamo injenicu da e se oni mijenjati i
transformirati uslijed na邸eg boljeg razumijevanja problema.
3
 C++
 hibridni objektno-orijentirani jezik nastao iz C-a - ispoetka se zvao
C s klasama (C with Classes)
 Razvio ga je Bjarne Stroustrup (1983.) u Bell Labs
 Inicijalna ANSI standardizacija je dovr邸ena (tek) 1998., a 2003. je izdana
standardna verzija s ispravljenim pogre邸kama
 C++ je predak danas 邸iroko kori邸tenih jezika - Java, C# i VB.NET
4
5
Upoznavanje s konceptima OOP
 Kreemo od jednostavnog problema koji
emo rije邸iti u C- u
 Identificirat emo nedostatke tog rje邸enja i
kroz postupno uvoenje koncepata objektne
orijentacije vidjeti kako se oni mogu rije邸iti
implementacijom u C++
Programski jezici
6
AssemblerAssembler
CobolCobol
FortranFortran
C++C++
CC
SimulaSimula
C++11C++11
Apstrakcija za opu namjenu
Apstrakcija za
odreeno podruje
Izravno preslikavanje
na hardver
JavaJava
C#C#
BCPLBCPL
to nudi C++
 Nesavr邸en
 Naravno
 Nije sve za svakoga
 Naravno
 vrst temeljni model
 Da, stvarno
 Vi邸e od 30 godina profinjavanja u stvarnom svijetu
 Funkcionira
 Performanse
 Prilagodljiv svemu
7
8
Problem kojim emo se baviti
 Zadana je datoteka u kojoj se nalazi odreeni
(nepoznat) broj podataka. Radi jednostavnosti,
datoteka je sekvencijalna, formatirana i sadr転i u
svakom retku samo jedan podatak cjelobrojnog tipa
 Potrebno je napisati program koji e uitati podatke
iz datoteke u memoriju (u strukturu polja  nakon
uitavanja mo転emo dohvatiti podatke po indeksu) i
omoguiti njihovu obradu
 VA貼NA NAPOMENA
 S obzirom da podaci moraju ostati u memoriji nakon
uitavanja, nije mogue jednostavno rje邸enje slijednog
itanja podataka (jedan po jedan) sve do kraja datoteke!
9
Jednostavno C rje邸enje
 Proitamo sve podatke iz datoteke u jednom prolazu
radi utvrivanja koliko ih ukupno ima
 Zatim alociramo polje potrebne veliine pomou
malloc
 Ponovno prolazimo kroz datoteku i iznova
uitavamo podatke (s time da ih sada spremamo u
alocirano polje)
 NAPOMENA
 Ovaj pristup zahtijeva dva prolaza kroz datoteku i primjenjiv
je kada efikasnost programa (vrijeme izvr邸avanja) nije
problem
10
Bolje rje邸enje:
Alociranje memorije po potrebi

Mo転emo koristiti funkciju realoc
 Alociramo inicijalni blok memorije (npr. za 100 podataka) i zatim
ga po potrebi poveavamo tijekom uitavanja
 Sada imamo 2 veliine koje opisuju uitane podatke
 Pokaziva na alociranu memoriju
 Koliinu alocirane memorije
 Dobro je povezati podatke  definiramo strukturu
struct DinamickoPolje
{
int *Podaci;
int BrojElem;
};
11
 Funkcije za strukturu DinamickoPolje:
 int Inicijaliziraj (
struct DinamickoPolje *Polje,
int InicijalniBrojElem);
 void Izbrisi (
struct DinamickoPolje *Polje);
 int PostaviNovuVelicinu (
struct DinamickoPolje *Polje,
int NoviBrojEl);
 (analogija s funkcijama za strukturu FILE (struct FILE): fopen,
fscanf, fread, ...)
Skup funkcija koje rada sa
strukturom DinamickoPolje
12
Primjer P01
 DinamickoPolje_C_osnovna_impl
http://dama.math.hr/moodle/pluginfile.php/51
0/mod_page/content/5/Primjer01.zip
 Podaci (ulazna datoteka)
http://dama.math.hr/moodle/pluginfile.php/51
0/mod_page/content/5/Podaci.txt
13
Tehniki nedostaci
C implementacije:
 Sami moramo paziti na iskori邸tenost prostora
(BrojUcitanih)
 ova struktura je samo vrlo jednostavan omota
(engl. wrapper) oko pokazivaa (sakrili smo
malloc i realloc od korisnika strukture, ali
nismo definirali nikakvo dodatno pona邸anje)
 Pristup podacima ide preko direktnog
kori邸tenja pokazivaa koji je dio strukture
(Polje.Podaci[ ])
Ad

Recommended

RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
Goran Igaly
Predavanja 04
Predavanja 04
Goran Igaly
Rp1 predavanja 01
Rp1 predavanja 01
Goran Igaly
Predavanja 05 - Osnovne osobine klasa
Predavanja 05 - Osnovne osobine klasa
Goran Igaly
Predavanja 06 Konstruktori i destruktori
Predavanja 06 Konstruktori i destruktori
Goran Igaly
Raunarski praktikum 1 - Konstruktor kopiranja
Raunarski praktikum 1 - Konstruktor kopiranja
Goran Igaly
Raunarski praktikum 1 - Objektno orijentirani dizajn (9. predavanje)
Raunarski praktikum 1 - Objektno orijentirani dizajn (9. predavanje)
Goran Igaly
M files
M files
Rade Tolimir Tolimir
Uvod u programiranje
Uvod u programiranje
Vesna Tomi
Zadaa 2 1
Zadaa 2 1
Goran Igaly
LaTeX - prvo predavanje
LaTeX - prvo predavanje
Goran Igaly
Make hyperlink
Make hyperlink
alvin567
Powerpoint HYPERLINK
Powerpoint HYPERLINK
killercom0
M辿todo Etnogr叩fico
Anita Rink
How to add clickable links to slideshare
How to add clickable links to slideshare
Chris Humphreys
How to Include Clickable Links on 際際滷share Presentation
How to Include Clickable Links on 際際滷share Presentation
David Laubner
C# predavanja
C# predavanja
Tihana Grubi邸i
C# predavanja
C# predavanja
Diana peranda
Programiranje c jezikom
Programiranje c jezikom
saidsakic
Prezentacija 1: Uvod u C programiski jezik
Prezentacija 1: Uvod u C programiski jezik
kenanskoladigitalnih
C++ radna skripta
C++ radna skripta
jelicastevanovic
Uvod_u_C++.pdf
Uvod_u_C++.pdf
Valentina Todorovi
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
Amar Kalabi
Asp audit01
Asp audit01
Aleksandar Micic
11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx
Dzoja
Prezentacija 1: Uvod u C programiski jezik
Prezentacija 1: Uvod u C programiski jezik
kenanskoladigitalnih
Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01
Leonardo Miljko
P01- Uvod uu programiranje- osnove1.pptx
P01- Uvod uu programiranje- osnove1.pptx
SkyMaster4
Python_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdf
sbjezanabistric
Natjecanje za srednjoskolce - Osnove informatike
Natjecanje za srednjoskolce - Osnove informatike
Agencija za odgoj i obrazovanje - Education and Teacher Training Agency

More Related Content

Viewers also liked (8)

Uvod u programiranje
Uvod u programiranje
Vesna Tomi
Zadaa 2 1
Zadaa 2 1
Goran Igaly
LaTeX - prvo predavanje
LaTeX - prvo predavanje
Goran Igaly
Make hyperlink
Make hyperlink
alvin567
Powerpoint HYPERLINK
Powerpoint HYPERLINK
killercom0
M辿todo Etnogr叩fico
Anita Rink
How to add clickable links to slideshare
How to add clickable links to slideshare
Chris Humphreys
How to Include Clickable Links on 際際滷share Presentation
How to Include Clickable Links on 際際滷share Presentation
David Laubner
Uvod u programiranje
Uvod u programiranje
Vesna Tomi
LaTeX - prvo predavanje
LaTeX - prvo predavanje
Goran Igaly
Make hyperlink
Make hyperlink
alvin567
Powerpoint HYPERLINK
Powerpoint HYPERLINK
killercom0
M辿todo Etnogr叩fico
Anita Rink
How to add clickable links to slideshare
How to add clickable links to slideshare
Chris Humphreys
How to Include Clickable Links on 際際滷share Presentation
How to Include Clickable Links on 際際滷share Presentation
David Laubner

Similar to Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja (20)

C# predavanja
C# predavanja
Tihana Grubi邸i
C# predavanja
C# predavanja
Diana peranda
Programiranje c jezikom
Programiranje c jezikom
saidsakic
Prezentacija 1: Uvod u C programiski jezik
Prezentacija 1: Uvod u C programiski jezik
kenanskoladigitalnih
C++ radna skripta
C++ radna skripta
jelicastevanovic
Uvod_u_C++.pdf
Uvod_u_C++.pdf
Valentina Todorovi
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
Amar Kalabi
Asp audit01
Asp audit01
Aleksandar Micic
11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx
Dzoja
Prezentacija 1: Uvod u C programiski jezik
Prezentacija 1: Uvod u C programiski jezik
kenanskoladigitalnih
Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01
Leonardo Miljko
P01- Uvod uu programiranje- osnove1.pptx
P01- Uvod uu programiranje- osnove1.pptx
SkyMaster4
Python_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdf
sbjezanabistric
Natjecanje za srednjoskolce - Osnove informatike
Natjecanje za srednjoskolce - Osnove informatike
Agencija za odgoj i obrazovanje - Education and Teacher Training Agency
[TVZ Raunarstvo] Dinamike web aplikacije, predavanje 7.
[TVZ Raunarstvo] Dinamike web aplikacije, predavanje 7.
Stipe Predanic
Fms Logo
Fms Logo
Agencija za odgoj i obrazovanje - Education and Teacher Training Agency
Pascal abc
Pascal abc
nihadc
07_funkcije.pptx
07_funkcije.pptx
OsnovnakolaJovanCvij
Algoritmi i strukture podataka
Algoritmi i strukture podataka
Tibor Weigand
Razvoj softvera: crno/bijeli svijet?
Razvoj softvera: crno/bijeli svijet?
Robert Lujo
Programiranje c jezikom
Programiranje c jezikom
saidsakic
Prezentacija 1: Uvod u C programiski jezik
Prezentacija 1: Uvod u C programiski jezik
kenanskoladigitalnih
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
Amar Kalabi
11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx
Dzoja
Prezentacija 1: Uvod u C programiski jezik
Prezentacija 1: Uvod u C programiski jezik
kenanskoladigitalnih
Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01
Leonardo Miljko
P01- Uvod uu programiranje- osnove1.pptx
P01- Uvod uu programiranje- osnove1.pptx
SkyMaster4
Python_Priprema za zavr邸ni ispit_polaznici.pdf
Python_Priprema za zavr邸ni ispit_polaznici.pdf
sbjezanabistric
[TVZ Raunarstvo] Dinamike web aplikacije, predavanje 7.
[TVZ Raunarstvo] Dinamike web aplikacije, predavanje 7.
Stipe Predanic
Pascal abc
Pascal abc
nihadc
Algoritmi i strukture podataka
Algoritmi i strukture podataka
Tibor Weigand
Razvoj softvera: crno/bijeli svijet?
Razvoj softvera: crno/bijeli svijet?
Robert Lujo
Ad

More from Goran Igaly (20)

Predavanja3. word 1
Predavanja3. word 1
Goran Igaly
Mogunosti kori邸tenja mikrokontrolera u obrazovanju i raniji slini projekti
Mogunosti kori邸tenja mikrokontrolera u obrazovanju i raniji slini projekti
Goran Igaly
Nacionalni parkovi
Nacionalni parkovi
Goran Igaly
Nova prezentacija
Nova prezentacija
Goran Igaly
Predavanja 11
Predavanja 11
Goran Igaly
Predavanje 10 - Raunarski praktikum 1 - Analiza i dizajn kori邸tenjem UML-a
Predavanje 10 - Raunarski praktikum 1 - Analiza i dizajn kori邸tenjem UML-a
Goran Igaly
Raunarski praktikum 1 - Razvoj softvera i dizajn
Raunarski praktikum 1 - Razvoj softvera i dizajn
Goran Igaly
Powerpoint za nastavnike 2016
Powerpoint za nastavnike 2016
Goran Igaly
Internet - korisniki dio
Internet - korisniki dio
Goran Igaly
Proraunske tablice - 3. dio
Proraunske tablice - 3. dio
Goran Igaly
Predavanje9 - Excel 2. dio
Predavanje9 - Excel 2. dio
Goran Igaly
Raunarski praktikum 1 - Excel 1
Raunarski praktikum 1 - Excel 1
Goran Igaly
Obrada teksta - 2. dio
Obrada teksta - 2. dio
Goran Igaly
Osnovni koncepti informatike tehnologije
Osnovni koncepti informatike tehnologije
Goran Igaly
Hrvatsko nazivlje u nastavi matematike
Hrvatsko nazivlje u nastavi matematike
Goran Igaly
Hrvatsko nazivlje u matematici temeljni pojmovi - zavr邸no predavanje
Hrvatsko nazivlje u matematici temeljni pojmovi - zavr邸no predavanje
Goran Igaly
Matematiki postupci u automatskom prevoenju
Matematiki postupci u automatskom prevoenju
Goran Igaly
Matematiki postupci u automatskom prevoenju
Matematiki postupci u automatskom prevoenju
Goran Igaly
Matematiki postupci u automatskom prevoenju
Matematiki postupci u automatskom prevoenju
Goran Igaly
Kako tra転e tra転ilice - predavanje za CoolMath
Kako tra転e tra転ilice - predavanje za CoolMath
Goran Igaly
Predavanja3. word 1
Predavanja3. word 1
Goran Igaly
Mogunosti kori邸tenja mikrokontrolera u obrazovanju i raniji slini projekti
Mogunosti kori邸tenja mikrokontrolera u obrazovanju i raniji slini projekti
Goran Igaly
Nacionalni parkovi
Nacionalni parkovi
Goran Igaly
Nova prezentacija
Nova prezentacija
Goran Igaly
Predavanja 11
Predavanja 11
Goran Igaly
Predavanje 10 - Raunarski praktikum 1 - Analiza i dizajn kori邸tenjem UML-a
Predavanje 10 - Raunarski praktikum 1 - Analiza i dizajn kori邸tenjem UML-a
Goran Igaly
Raunarski praktikum 1 - Razvoj softvera i dizajn
Raunarski praktikum 1 - Razvoj softvera i dizajn
Goran Igaly
Powerpoint za nastavnike 2016
Powerpoint za nastavnike 2016
Goran Igaly
Internet - korisniki dio
Internet - korisniki dio
Goran Igaly
Proraunske tablice - 3. dio
Proraunske tablice - 3. dio
Goran Igaly
Predavanje9 - Excel 2. dio
Predavanje9 - Excel 2. dio
Goran Igaly
Raunarski praktikum 1 - Excel 1
Raunarski praktikum 1 - Excel 1
Goran Igaly
Obrada teksta - 2. dio
Obrada teksta - 2. dio
Goran Igaly
Osnovni koncepti informatike tehnologije
Osnovni koncepti informatike tehnologije
Goran Igaly
Hrvatsko nazivlje u nastavi matematike
Hrvatsko nazivlje u nastavi matematike
Goran Igaly
Hrvatsko nazivlje u matematici temeljni pojmovi - zavr邸no predavanje
Hrvatsko nazivlje u matematici temeljni pojmovi - zavr邸no predavanje
Goran Igaly
Matematiki postupci u automatskom prevoenju
Matematiki postupci u automatskom prevoenju
Goran Igaly
Matematiki postupci u automatskom prevoenju
Matematiki postupci u automatskom prevoenju
Goran Igaly
Matematiki postupci u automatskom prevoenju
Matematiki postupci u automatskom prevoenju
Goran Igaly
Kako tra転e tra転ilice - predavanje za CoolMath
Kako tra転e tra転ilice - predavanje za CoolMath
Goran Igaly
Ad

Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja

  • 1. Raunarski praktikum 1 Predavanja Goran Igaly Sveuili邸te u Zagrebu PMF, Matematiki odsjek 2. predavanje
  • 2. 2 Malo povijesti Simula (1967.) Prvi programski jezik sa svojstvima objektno-orijentirane paradigme Namijenjen izgradnji sustava za simulaciju Uveden pojam klase Primjer koda http://www.angelfire.com/tx4/cus/shapes/simula.html Smalltalk (1972.) Prvi pravi (isti) objektno-orijentiran programski jezik (sve je objekt) Razvijen u Xerox PARC laboratoriju Najkori邸tenija verzija je Smalltalk-80 SmallTalk Tutorial for Java Programmers! http://web.gioorgi.com/squeak/squeak_tutorial.html#toc1
  • 3. O objektno orijentiranom razvoju Iz knjige Alec Sharp: Smalltalk by Example http://stephane.ducasse.free.fr/FreeBooks/ByExample/SmalltalkByExampleNewRe OO thinking is fun and it is different. OO razmi邸ljanje je zabavno i drugaije [od proceduralnog]. One difference is that OO development tends to be more iterative than procedural development, more spiral. Jedna od razlika je da OO razvoj nastoji biti vi邸e iterativan, spiralan od proceduralnog razvoja. In OO development we acknowledge that we don't fully understand our objects and their interactions and we acknowledge that they will be changed and transformed as we increasingly understand the problem U OO razvoju smo svjesni injenice da ne razumijemo u potpunosti na邸e objekte i njihove interakcije te prihvaamo injenicu da e se oni mijenjati i transformirati uslijed na邸eg boljeg razumijevanja problema. 3
  • 4. C++ hibridni objektno-orijentirani jezik nastao iz C-a - ispoetka se zvao C s klasama (C with Classes) Razvio ga je Bjarne Stroustrup (1983.) u Bell Labs Inicijalna ANSI standardizacija je dovr邸ena (tek) 1998., a 2003. je izdana standardna verzija s ispravljenim pogre邸kama C++ je predak danas 邸iroko kori邸tenih jezika - Java, C# i VB.NET 4
  • 5. 5 Upoznavanje s konceptima OOP Kreemo od jednostavnog problema koji emo rije邸iti u C- u Identificirat emo nedostatke tog rje邸enja i kroz postupno uvoenje koncepata objektne orijentacije vidjeti kako se oni mogu rije邸iti implementacijom u C++
  • 6. Programski jezici 6 AssemblerAssembler CobolCobol FortranFortran C++C++ CC SimulaSimula C++11C++11 Apstrakcija za opu namjenu Apstrakcija za odreeno podruje Izravno preslikavanje na hardver JavaJava C#C# BCPLBCPL
  • 7. to nudi C++ Nesavr邸en Naravno Nije sve za svakoga Naravno vrst temeljni model Da, stvarno Vi邸e od 30 godina profinjavanja u stvarnom svijetu Funkcionira Performanse Prilagodljiv svemu 7
  • 8. 8 Problem kojim emo se baviti Zadana je datoteka u kojoj se nalazi odreeni (nepoznat) broj podataka. Radi jednostavnosti, datoteka je sekvencijalna, formatirana i sadr転i u svakom retku samo jedan podatak cjelobrojnog tipa Potrebno je napisati program koji e uitati podatke iz datoteke u memoriju (u strukturu polja nakon uitavanja mo転emo dohvatiti podatke po indeksu) i omoguiti njihovu obradu VA貼NA NAPOMENA S obzirom da podaci moraju ostati u memoriji nakon uitavanja, nije mogue jednostavno rje邸enje slijednog itanja podataka (jedan po jedan) sve do kraja datoteke!
  • 9. 9 Jednostavno C rje邸enje Proitamo sve podatke iz datoteke u jednom prolazu radi utvrivanja koliko ih ukupno ima Zatim alociramo polje potrebne veliine pomou malloc Ponovno prolazimo kroz datoteku i iznova uitavamo podatke (s time da ih sada spremamo u alocirano polje) NAPOMENA Ovaj pristup zahtijeva dva prolaza kroz datoteku i primjenjiv je kada efikasnost programa (vrijeme izvr邸avanja) nije problem
  • 10. 10 Bolje rje邸enje: Alociranje memorije po potrebi Mo転emo koristiti funkciju realoc Alociramo inicijalni blok memorije (npr. za 100 podataka) i zatim ga po potrebi poveavamo tijekom uitavanja Sada imamo 2 veliine koje opisuju uitane podatke Pokaziva na alociranu memoriju Koliinu alocirane memorije Dobro je povezati podatke definiramo strukturu struct DinamickoPolje { int *Podaci; int BrojElem; };
  • 11. 11 Funkcije za strukturu DinamickoPolje: int Inicijaliziraj ( struct DinamickoPolje *Polje, int InicijalniBrojElem); void Izbrisi ( struct DinamickoPolje *Polje); int PostaviNovuVelicinu ( struct DinamickoPolje *Polje, int NoviBrojEl); (analogija s funkcijama za strukturu FILE (struct FILE): fopen, fscanf, fread, ...) Skup funkcija koje rada sa strukturom DinamickoPolje
  • 12. 12 Primjer P01 DinamickoPolje_C_osnovna_impl http://dama.math.hr/moodle/pluginfile.php/51 0/mod_page/content/5/Primjer01.zip Podaci (ulazna datoteka) http://dama.math.hr/moodle/pluginfile.php/51 0/mod_page/content/5/Podaci.txt
  • 13. 13 Tehniki nedostaci C implementacije: Sami moramo paziti na iskori邸tenost prostora (BrojUcitanih) ova struktura je samo vrlo jednostavan omota (engl. wrapper) oko pokazivaa (sakrili smo malloc i realloc od korisnika strukture, ali nismo definirali nikakvo dodatno pona邸anje) Pristup podacima ide preko direktnog kori邸tenja pokazivaa koji je dio strukture (Polje.Podaci[ ])