Upload
others
View
17
Download
3
Embed Size (px)
Citation preview
Nastava
Nedeljni fond časova: 3 + 2
Predavanja: 3 x 15 = 45 časova
dr Suzana Marković, dipl.inž.el.
Laboratorijske vežbe: 2 x 15 = 30 časova
Asistent, Anastasija Trninić
Polaganje ispita
Kolokvijumi:
Teorijski (test na papiru)
Praktični (na računaru)
Integralni ispit
2 kolokvijuma tokom predavanja
Praktični kolokvijum nakon završenih vežbi
Položen praktični kolokvijum je uslov za ispit!
Ocenjivanje
Teorija - 60% od ukupnog broja poena sa oba kolokvijuma
Praktični kolokvijum - 40% od ukupnog broja
Konačna ocena: suma bodova iz svih aktivnosti (min. 50% za prolaznu ocenu)
Literatura S. Marković, Osnove programiranja,
Beogradska poslovna škola, 2016.
S. Nakov & Co, Fundamentals Of Computer
Programming With C#, 2013.
http://www.introprogramming.info/english-intro-
csharp-book/read-online/
Sve C# knjige koje pokrivaju sadržaj predmeta
https://sites.google.com/site/bbsosnoveprogra
miranja/
Predavanja (prezentacije)
Korisni linkovi i e-knjige
Cilj predmeta
Upoznavanje studenata sa programiranjem
računara i razvojem softvera.
Razumevanje algoritamskog načina rešavanja
problema i zadataka.
Upoznavanje sa osnovnim konceptima,
principima i metodama programiranja.
Sticanje znanja potrebnih za realizaciju svih faza
životnog ciklusa softvera.
Osposobljavanje studenata za samostalno
izučavanje i primenu programskih jezika i
okruženja.
Sadržaj predavanja
Istorijat brojeva i računarstva
Pojam jezika
Definicija programskih jezika
Sintaksa i semantika
Program i programiranje
Klasifikacija programskih jezika po stepenu zavisnosti od računara
Hronologija razvoja viših programskih jezika
Podela programskih jezika prema načinu rešavanja problema
Istorijat brojeva
Pre više od 5000 godina, Egipćani osmislili način
zapisivanja brojeva koristeći slike
Grci su znanja iz geometrije preuzeli od
Egipćana
umesto slika koristili slova za prikaz brojeva (Δ
(delta) – deka: 10, h (eta) – hekaton: 100, M (mi)
myrioi: 1000.
I jedni i drugi koristili su dekadni brojni sistem
Pojava nule
Nulu su stvorili Vavilonci
Za računanje koristili računaljku koja je radila po
principu nizanja kamenčića (lat. calculate, calculus -
kamenčić)
Brojevi 1 i 60 su isto zapisivani ali su na
računaljci zauzimali dve različite pozicije.
zapisivanje praznog mesta – nule.
Istorijat brojeva
Današnji brojevi razvili su se od simbola koji su
nastali u Indiji
trebalo bi da se zovu indijski, a ne arapski brojevi.
Arapi brojni sistem preuzimaju od Indijaca,
zajedno sa nulom
Početkom XIII veka Leonardo Fibonači donosi
sistem arapskih brojeva u Evropu
Fibonačijev niz (problem kunića) – odnos dva
susedna broja u nizu približava se zlatnom preseku
Pojam jezika
Sistem izražavanja misli koji ima određena
glasovna i gramatička pravila i služi kao glavno
sredstvo za sporazumevanje među ljudima.
ISO definicije:
Jezik je skup znakova, dogovora i pravila koji se
koriste za prenos i saopštavanje informacija
Prirodni jezik – jezik čija se pravila zasnivaju na
svakodnevnom korišćenju bez njihove eksplicitne
definicije
Veštački jezik – jezik čija su pravila eksplicitno
utvrđena pre njegovog korišćenja
Definicija programskih jezika
Programski jezik – veštački jezik koji se koristi za
pripremu programa za računar (ANSI)
Jezik za izradu programa, sastavljen od simbola koje
računar može da prevede u direktne radnje
Algoritamski jezik – veštački jezik namenjen opisu
algoritma
Sintaksa i semantika
Skup pravila koja formiraju programski jezik naziva se
sintaksa programskog jezika.
Utvrđuje se da li je određena konstrukcija pravilno
napisana.
Prevodilac otkriva sintaksne greške.
Semantika određuje značenje konstrukcija ili programa u
celini.
Semantičke greške su logičkog tipa i tiču se
razumevanja toga kako program funkcioniše.
Programer otkriva semantičke greške.
Program i programiranje
Izrazi kojima se zadaju mašinske operacije nazivaju se
mašinske instrukcije ili mašinske naredbe.
PROGRAM je niz instrukcija zapisanih u memoriji
računara kojim se precizno određuje na koji način će
se transformisati ulazni podaci da bi se dobio željeni
izlaz.
Proces pripreme programa, koji se sastoji od
projektovanja, pisanja i testiranja programa naziva se
programiranje.
Mašinski jezici
Najvažniji delovi računara izgrađeni su od
elektronskih i magnetnih komponenti, koje
karakterišu dva stabilna stanja (ima/nema
napona).
U računaru se sve predstavlja pomoću dva
simbola, 0 i 1, binarnom azbukom (bit, bajt).
Mašinski program sastoji od niza nula i jedinica i
zahteva dobro poznavanje načina rada i
arhitekture određenog računara.
Prevođenje programskih jezika
public class Zdravo {
public static void main
(String[] args) {
System.out.println("Zdravo!");
}
}
10010000010101001010101
00011111000100101010101
00000100110010101010101
11110010101010101010100
01101010101010100000101
izvorni program izvršni program
Ako je program napisan na nekom višem jeziku,
mora se izvršiti prevođenje na mašinski jezik.
Simbolički jezici
Koristi mnemoničke skraćenice (simbolički kodovi
instrukcija) za operacije i simboličke oznake podataka,
npr. naredbom ADD a, b vrši se sabiranje podataka.
Mašinski zavisan jezik - programiranje zavisi od
konkretnog procesora.
Program u simboličkom jeziku prevodi se na mašinski,
a obavlja ga asembler (translator).
Programski jezici višeg nivoa
Da bi se premostile poteškoće u programiranju na
asemblerskim jezicima, počinju da se razvijaju mašinski
nezavisni jezici.
Oni imaju visok stepen nezavisnosti u odnosu na
arhitekturu računara i operativni sistem na kojem se
izvršavaju.
Svaki program pisan jezikom višeg nivoa prevodi se na
mašinski jezik.
Na osnovu načina prevođenja i izvršavanja, jezike višeg
nivoa delimo na kompajlerske (Algol, Fortran, Cobol,
PL/I...) i interpreterske jezike (Lisp, Prolog, Basic, ...).
Kompajleri i interpretatori
Kompajliranje programa - prevođenje programa i
izvršavanje programa vremenski odvojeni procesi.
Kompajliranje izvode programi koji se nazivaju
prevodioci (kompajleri).
Interpretiranje programa - prevođenje programa i
izvršavanje programa vremenski spojeni procesi u
jedan.
Interpretiranje izvode programi koji se nazivaju
interpretatori.
Podela VJ prema načinu
rešavanja problema
Proceduralni jezici - računaru se daje
kompletan skup instrukcija kojim se rešava
problem - algoritam za rešavanje zadataka.
Program u proceduralnom jeziku je niz naredbi
koji određuje KAKO se određena akcija obavlja
(npr. ‘otvori datoteku’, ‘zatvori datoteku’ itd.)
Programski jezici su ovog tipa: Fortran, Cobol,
Basic, Pascal, C kao i mašinski zavisni jezici.
Programski jezik C
Nastaje 1970. godine
Jezik za razvoj UNIX-a
ANSI C standard – osnovna referenca za
programiranje
Sprega sa hardverom
Pogodan za razvoj komponenti sistemskog
softvera i u drugim primenama gde je potrebna
sprega sa resursima sistema
Objektna nadgradnja C++, C#
Podela VJ prema načinu
rešavanja problema
Deklarativni jezici - problemi se opisuju, a sam
sistem (interpreter) ima ugrađene postupke kako
da reši opisani problem.
Program u neproceduralnom jeziku je niz
naredbi koji određuje ŠTA treba učiniti (npr.
’izdvoji podatke… koji zadovoljavaju dati uslov’)
Primeri deklarativnih jezika su Prolog i SQL.
Objektno orijentisani jezici Prisutni su i proceduralni i neproceduralni elementi.
Podaci i akcije koje se izvode nad njima predstavljaju
jednu nerazdvojnu celinu i čine aktivan objekat.
Program u OO jeziku predstavlja skup objekata koji
između sebe i sa spoljnim svetom komuniciraju putem
„poruka”.
Mnoštvo različitih objekata može se uočiti u okruženju
grafičkih operativnih sistema (Graphic User Interface).
Npr. Ikona je objekat. Svakoj je pridružen skup osobina i
akcija koje opisuju reagovanje na spoljašnje događaje (klik
miša, dvoklik, itd.).
Kratak istorijat OO jezika
Prvi potpuno objektno orijentisan jezik Smalltalk-80
Koreni objektnih jezika u jeziku Simula 67
Današnji savremeni jezici su skoro svi objektno-orijentisani
Kombinacija objektnog i vizuelnog programiranja
Event Driven Programming
Visual Basic, Visual C++, Java, C#
C#
C# je objektno orijentisan programski jezik opšte
namene.
Razvio ga je Microsoft tim koji je vodio Andres
Hejlsberg.
Prva verzija (C# 1.0) se pojavila 2002. godine.
Poslednja verzija C# je 7.0 koja se pojavila 2017. god.
Pošto je naslednik C i C++ jezika, dobio je ime sharp
po inspiraciji muzičke notacije i znači da se napisana
nota izvodi za pola koraka više (C#).
Fajlovi pisani u ovom jeziku imaju ekstenziju cs.