Programiranje 1

Ovo su web stranice kolegija Programiranje 1 koji slušaju studenti prve godine preddiplomskog sveučilišnog studija Matematika kao obavezni kolegij, te studenti druge godine preddiplomskog sveučilišnog studija Matematika, smjer nastavnički kao izborni kolegij.

Kolegij se održava u zimskom semestru, a nastava se sastoji od dva sata predavanja i dva sata vježbi svakog tjedna.

Glavni cilj ovog kolegija upoznavanje studenata s osnovama programiranja u programskom jeziku C, te elementarnim algoritmima iz teorije brojeva i manipulacije poljima.

Način polaganja

Elementi ocjenjivanja
1) kolokvij - 40%, 2) pismeni ispit – 100%, 3) domaće zadaće, 4) radionice programiranja

Kolokvij
U prvom dijelu semestra će se održati redoviti kolokvij. Ukupan broj bodova na kolokviju je najmanje 40 (mogu postojati bonus bodovi).

Praktična provjera
Sredinom semestra će se održati praktična provjera u trajanju 45 minuta. Student će na praktičnoj provjeri na računalu morati točno riješiti odabrani programski zadatak. Postojat će jedan popravak praktične provjere. Praktična provjera je uvjet za polaganje kolegija i izlazak na ispit.

Ispit
Ispit donosi najmanje 100 bodova (mogu postojati bonus bodovi) i sadrži gradivo cijelog kolegija. Ispit se može održati u pismenom, usmenom ili kombiniranom pismenom i usmenom obliku uz praktičnu provjeru na računalu. Iznimno, studenti zadovoljni brojem bodova ostvarenih na kolokviju, mogu biti oslobođeni polaganja dijela gradiva na pismenom ispitu. Za uspješno polaganje kolegija, potrebno je na barem jednom "programskom" zadatku sakupiti najmanje 80% mogućih bodova. Na pismenom ispitu će biti navedeno koji zadaci se smatraju programskim.

Domaće zadaće
Domaće zadaće donose dodatne bodove (omogućuju podizanje ocjene). Predaja 80% domaćih zadaća je preduvjet za pristupanje ispitu. Ne postoje uvjeti na točnost predanih zadaća za polaganje ili pristupanje ispitu. O broju zadaća i bodova koje je moguće dobiti rješavajući zadaće te o krajnjem roku za predaju zadaća studenti će biti obaviješteni na predavanjima.

Radionice programiranja
Demonstratori će održati do 5 radionica programiranja na kojima će se poticati suradnja između studenata i demonstratora s ciljem rješavanja nekog zadanog problema u programskom jeziku C. Za svaki dolazak na radionicu programiranja, studenti će dobiti po 1 bonus bod (ukupno do 5 bonus bodova, naime višestruki dolasci na radionice u istom tjednu se neće dodatno bodovati). Ostvareni bonus bodovi ne ulaze u granicu za prolaz već za višu ocjenu.


Za prolaz kolegija potrebno je barem 45 bodova na kolokviju i/ili pismenom ispitu. Na kolokvijima/pismenom ispitu je kao pomoć dozvoljeno koristiti isključivo službeni podsjetnik.

Studentima koji ostvare sve uvjete za prolaz, ocjena se zaključuje prema sljedećoj skali (računa se zbroj postignutih bodova):

[45, 60> bodovadovoljan (2)
[60, 75> bodovadobar (3)
[75, 90> bodovavrlo dobar (4)
90+ - bodovaizvrstan (5)

Sadržaj kolegija

  1. Uvod u algoritme. Pojam algoritma. Primjeri algoritama. Osnovna svojstva.
  2. Matematičke osnove računarstva. Brojevni sustavi. Sudovi. Logički veznici i složeni sudovi. Konjunktivna i disjunktivna normalna forma.
  3. Principi rada računala. Pojam naredbe. Ulaz, izlaz, memorija. Izvršni dio računala. Von Neumannov model. Turingov stroj.
  4. Građa računala. Matična ploča i procesor. Ulazno-izlazne naprave. Memorija.
  5. Prikaz podataka u računalu. Osnovni tipovi podataka. Prikaz i aritmetika cijelih brojeva. Prikaz realnih brojeva - IEEE standard. Greške zaokruživanja: pojam i primjeri.
  6. Uvod u programski jezik C. Izvođenje programa. Struktura programa. Osnove rada u Unix okruženju. Osnove rada u Win okruženju: Dev-C++.
  7. Osnovni tipovi podataka. Konstante. Varijable. Operatori i izrazi.
  8. Ulaz i izlaz podataka. Funkcije getchar i putchar. Znakovni nizovi: funkcije gets i puts. Funkcije scanf i printf.
  9. Naredbe za kontrolu postupaka. Naredbe if i if-else. Naredba switch. Petlje while, for i do-while. Naredbe break i continue.
  10. Osnovni algoritmi na brojevima. Opća načela provjere: postoji li objekt traženog svojstva i ima li svaki objekt zadano svojstvo. Primjeri (Euklidov algoritam, ispitivanje djeljivosti, prikaz broja u zadanoj bazi, pronalaženje znamenke zadanog broja koja zadovoljava neki uvjet).
  11. Funkcije. Definicija i deklaracija. Naredba return. Funkcije tipa void. Prijenos argumenata. Rekurzivne funkcije.
  12. Složene strukture podataka. Jednodimenzionalna polja. Osnovne karakteristike. Inicijalizacija i definicija. Polje kao argument funkcije. Primjeri (najveći/najmanji element niza, aritmetička sredina).
  13. Operacije s nizovima podataka. Sekvencijalno pretraživanje. Binarno pretraživanje. Sortiranje traženjem ekstrema. Bubble sort.