Professional Documents
Culture Documents
Openito o predmetu
pretpostavka:
studenti znaju operativno programirati u jeziku C
2 / 38
1.04
1.07
1.09
1.06
1.01
1.05
1.08
1.03
1.02
Dubravka Pukljak-Zokovi
Andrija Rubelj
Boris Milainovi
Ivana Nieti
Gordan Gledec
Ivica Botiki
Hrvoje Hegedu, Marko Jurevi
Zvonimir Vanjak
Tomislav Rajnovi
administracija
Zavod za primijenjeno raunarstvo, III kat zgrada D
Tel: 6129-915 (ga. Sonja Majstorovi)
Obavijesti: na web-stranici predmeta ili na vratima Zavoda za primijenjeno raunarstvo (3. kat
zgrade D)
http://www.fer.hr/predmet/asp
3 / 38
Literatura
http://www.fer.hr/predmet/asp
vlastita biljenica
Horowitz & Sahni: Fundamentals of Computer Algorithms, Pitman, London,
1995
Weiss: Data Structures and Algorithm Analysis in C, Addison Wesley, 1997
Sedgwick: Algorithms in C, Addison-Wesley, 2001
Cormen, Leiserson & Rivest: Introduction to algorithms, 2/e,MIT Press, 2001
Budin: Informatika za 1. razred gimnazije, Element, Zagreb, 1996
Knuth: Fundamental Algorithms, Addison-Wessley, 1973
Wirth: Algorithms + Data Structures = Programs, Prentice-Hall, 1976
Eckel: Thinking in C++ Vol. 1 (PDF u Repozitoriju predmeta)
Algoritmi i strukture podataka, 2006/07.
4 / 38
Materijali
materijali za ovaj predmet mogu se preuzeti s weba u repozitoriju
stranice predmeta
http://www.fer.hr/ Ustroj ustanove Zavodi ZPR Predmeti
Algoritmi i strukture podataka
ili
http://www.fer.hr/predmet/asp
5 / 38
Ankete
rezultati ankete bitni su za analizu i unapreenje nastave
anonimno!
ulazna anketa
tijekom prva tri tjedna predavanja.
zavrna anketa
tijekom zadnja tri tjedna predavanja
6 / 38
Laboratorijske vjebe
pokazalo se da gotovo svi studenti imaju vlastita raunala pa mogu
raditi kod kue, odnosno gdje i kad im odgovara
za svladavanje predvienog programa i predaju domaih zadaa
studentima je na raspolaganju i laboratorij
7 / 38
Ocjenjivanje
elementi:
sudjelovanje u nastavi
automatsko ocjenjivanje domaih zadaa (3 x 3)
automatsko ispitivanje znanja (3 x 6)
I meuispit
II meuispit
zavrni ispit
8%
9%
18 %
15 %
20 %
30 %
8 / 38
8 % bodova
9 / 38
3 x 3 = 9% bodova
10 / 38
3 x 6 = 18% bodova
11 / 38
Prvi meuispit
ispit je pismeni
sastoji se od problemskih zadataka koji ukupno donose 15% bodova
u tjednu 26.03.2007. 30.03.2007.
rjeenja ispravljaju asistenti
12 / 38
Drugi meuispit
ispit je pismeni
sastoji se od problemskih zadataka koji ukupno donose 20% bodova
u tjednu 07.05.2007. 11.05.2007.
rjeenja ispravljaju asistenti
13 / 38
Zavrni ispit
ispit je pismeni
sastoji se od problemskih zadataka koji ukupno donose 30% bodova
u tjednu 18.06.2007. 21.06.2007.
rjeenja ispravljaju asistenti, a verificiraju nastavnici
ispitu ne mogu pristupiti studenti koji e do tada prikupiti manje od
20% bodova
14 / 38
15 / 38
Ocjenjivanje Gauss
15% - 5
35% - 4
35% - 3
15% - 2
16 / 38
Konzultacije
konzultacije kod izvoditelja nastave
svaki dan od 12-13h ili prema dogovoru s nastavnikom
Subject: [ASP]
podesite svoje programe za slanje elektronike pote tako da koriste vae
puno ime i prezime i u potpisu navedite svoj matini broj
17 / 38
Plan nastave
prvi ciklus (5 tjedana)
utvrivanje gradiva iz prethodnog semestra
algoritmi, sloenost algoritma, tehnike adresiranja
poziv funkcije na sistemskom stogu, rekurzija
18 / 38
Pokazivai
to e se ispisati izvoenjem sljedeeg programskog odsjeka?
Pokazivac
#include <stdio.h>
int main () {
int a = 4;
int *b;
to se rezervira u memoriji?
to je u programu *b?
to je u programu b?
b = &a;
to bi se dogodilo da nema ovog?
*b = 8;
printf ("%d %d\n", a, *b);
return 0;
}
Algoritmi i strukture podataka, 2006/07.
20 / 38
Rjeenje
to bi se dogodilo kad bismo izostavili liniju b = &a; ?
Budui da pokaziva b prije pridruivanja vrijednosti pokazuje na
nedefiniranu adresu, moglo bi doi do pokuaja upisivanja vrijednosti 8 na
adresu koja je rezervirana za pohranu drugih varijabli ili koda, to moe
izazvati neoekivano ponaanje ili pogreku pri izvoenju programa zbog
neovlatenog pristupa dijelu memorije.
uvijek treba inicijalizirati vrijednost pokazivaa prije upotrebe
program u MS Visual C++ zavrava pogrekom zbog koritenja varijable
koja nije definirana
21 / 38
KomunikacijaSFunkcijama
Algoritmi i strukture podataka, 2006/07.
22 / 38
KomunikacijaSFunkcijama
Algoritmi i strukture podataka, 2006/07.
23 / 38
KomunikacijaSFunkcijama
Algoritmi i strukture podataka, 2006/07.
24 / 38
#include <malloc.h>
Algoritmi i strukture podataka, 2006/07.
25 / 38
Rezervacija memorije
#include <malloc.h>
void *malloc (size_t size);
PrimjerZaMalloc
Algoritmi i strukture podataka, 2006/07.
26 / 38
27 / 38
Oslobaanje memorije
#include <malloc.h>
void free (void *block);
28 / 38
1
2
3
Algoritmi i strukture podataka, 2006/07.
1
1
1
2 3
4 9
8 27
29 / 38
Ispis na zaslonu:
3
9
27
81
243
2
4
8
16
32
4
16
64
256
1024
8
64
512
4096
32768
5
25
125
625
3125
MallocMatrica
30 / 38
Polja pokazivaa
Deklaracija
char *p[3];
rezervira u memoriji polje od 3 elementa iji se lanovi
p[0], p[1] i p[2] tipa char *
to moemo promatrati kao
?
?
?
31 / 38
Primjer
Nainiti program koji e sadraj slijedne formatirane datoteke
prepisati u drugu datoteku redak po redak, ali od posljednjeg retka
prema prvom. Imena datoteka treba zadati iz naredbenog retka.
Rjeenje s realociranjem memorije
Realloc
0
10
21
32
45
Algoritmi i strukture podataka, 2006/07.
prvi red\n
drugi red\n
treci red\n
cetvrti red\n
peti red\n
32 / 38
Zadaci za vjebu
Pokazivai
Polja
Zapisi
Datoteke
Pokazivai
Napisati funkciju koja e iz zadanog JMBG-a vratiti datum roenja
kao niz znakova u obliku DD.MM.GGGG. Memorijski prostor
potreban za novi niz znakova obavezno zauzeti u funkciji (funkcija
malloc).
DatumJMBG
34 / 38
Polja - 1
Iz slijedne formatirane datoteke UlazZaDvodimenzionalnoPolje.txt
proitati broj redaka i stupaca cjelobrojnog polja, zatim redom itati
vrijednosti.
Ispisati lanove dvodimenzionalnog polja zajedno s indeksima
dvodimenzionalnog i indeksom analognog jednodimenzionalnog
polja. Za zadane indekse dvodimenzionalnog polja izraunavati
pripadni indeks analognog jednodimenzionalnog polja i ispisivati
sadraj.
DvodimenzionalnoPolje
35 / 38
Polja - 2
Napisati funkciju koja rauna zbroj pozitivnih elemenata
dvodimenzionalnog polja, te prikazati poziv funkcije iz glavnog
programa.
Podsjetnik: dvodimenzionalno polje se u funkciju prenosi kao
jednodimenzionalno. Pohranjeno je po retcima pa se elementu p[i,j]
pristupa kao p [i*maxstup + j].
SumaUPolju
36 / 38
Zapisi i datoteke
Iz slijedne datoteke studenti.txt treba stvoriti direktnu datoteku studenti.dat u
kojoj je struktura zapisa:
struct zapis {
int mbr; // 3 znamenke
char ime [40+1];
char spol [1+1];
}
37 / 38
Zapisi i datoteke
U poreznoj upravi u slijednoj neformatiranoj datoteci porez.dat postoje podaci s
poreznih kartica poreznih obveznika. Bitni podaci su:
JMBG (13+1 znamenka),
ime i prezime (40+1 znak),
ukupni prijavljeni prihod (float) i
iznos poreza koji jo moraju platiti (float).
Na poetku datoteke je upisan jedan podatak tipa long koji govori koliko ima
zapisa u datoteci. Potrebno je napisati glavni program sa sljedeim dijelovima:
funkcijom koja uitava sadraj datoteke u dinamiki alocirano polje struktura
funkcijom koja nalazi poreznog obveznika koji mora platiti najvei porez
Porez
38 / 38