Uvod u programiranje

Računar

Mehanizam iz Antikitere

Diferencijalni analizator

Diferencijalni analizator

Lehmer-ovo sito

MONIAC

Analitička mašina

Digitalni signal

Digitalni signal

Digitalni signal

Predstavljanje podataka

Kako računar pohranjuje podatke?

  • Svi podaci na računaru su predstavljeni kao niz nula i jedinica
  • Bit: osnovna jedinica informacije
    • može biti u jednom od dva isključiva stanja
    • binarna cifra (binary digit)
  • Byte: 8 bita
    • dovoljna količina memorije za pohranu slova ili malog broja
    • upaljen/ugašen uzorak bita u bajtu predstavlja podatak pohranjen u bajtu

Kako računar pohranjuje podatke?

Pohranjivanje brojeva

 

Pohranjivanje brojeva

  • Bit predstavlja dvije vrijednosti 0 i 1

  • Računari koriste binarni brojni sistem
    • pozicije cifre \(j\) se dodjeljuje vrijednost \(2^{j-1}\)
    • da bi se odredila vrijednost binarnog broja zbrajaju se  pozicione vrijednosti na kojima se nalaze jedinice
  • Limit jednog bajta: od 0 do 255
    • 0 - svi biti nula
    • 255 - svi biti jedan
    • za pohranjivanje većih vrijednosti koristi se više bajtova

Konverzija \((10011101)_b\) u \((157)_d\)

Konverzija \((10011101)_b\) u \((157)_d\)

Konverzija \((1548)_d\) u \((11000110000)_b\)

1584 : 2 = 792

792 : 2 = 396

396 : 2 = 198

198 : 2 = 99

99 : 2 = 49

49 : 2 = 24

24 : 2 = 12

12 : 2 = 6

6 : 2 = 3

3 : 2 = 1

1 : 2 = 0

0

0

0

0

1

1

0

0

0

1

1

ASCII

Digitalni zvuk

Digitalne slike

Hardware i software

Računar radi samo dvije stvari!

1. Računa

2. Pamti

Hardware

Procesor

  • Centralna procesorska jedinica (CPU): dio računara koji izvršava program

    • najvažnija komponenta

    • bez procesora računar ne može pokretati programe

Radna memorija

  • Radna memorija: mjesto gdje računar pohranjuje program prilikom izvršavanja, kao i podatke koje program koristi
  • Poznata i kao memorija sa nasumičnim pristupom (Random Access Memory or RAM)
    • procesor može brzo pristupiti podacima u RAM memoriji
    • nepostojana memorija koja se koristi za privremeni pristup prilikom izvršavanja programa
    • sadržaj se briše prilikom gašenja računara

Sekundarna memorija

Sekundarna memorija

 

  • Sekundarna memorija: može čuvati podatke tokom dužeg vremenskog perioda
    • Programi se tipično pohranjuju u sekundarnu memorija i učitavaju u radnu memoriju prema potrebi
  • Tipovi sekundarne memorije
    • Čvrsti disk (HDD): zapisuje podatke magnetski na rotirajući kružni disk
    • Čvrsti disk (SSD): brži od HDDa, bez pokretnih dijelova, pohranjuje podatke u memoriju stalnog stanja
    • USB disk: prenosiv, nema fizičkog diska
    • Optički uređaji: podaci zapisani optički

Ulazni i izlazni uređaji

Software

  • Kontroliše sve što računar radi
  • Osnovne kategorije
    • aplikativni software
    • sistemski software

Šta su programski jezici?

Komunikacija

sa računarom

To-do lista za računar

# Python program to check if the input number is prime or not

num = 407

# take input from the user
# num = int(input("Enter a number: "))

# prime numbers are greater than 1
if num > 1:
   # check for factors
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           print(i,"times",num//i,"is",num)
           break
   else:
       print(num,"is a prime number")
       
# if input number is less than
# or equal to 1, it is not prime
else:
   print(num,"is not a prime number")

Kako radi program?

Kako radi program

  • Procesor je dizajniran za izvršavanje jednostavnih operacija nad podacima
    • primjeri: čitanje podataka, sabiranje, oduzimanje, množenje i dijeljenje brojeva, poređenje
    • Procesor razumije instrukcije napisane u mašinskom jeziku koje su sadržane u njegovom skupu instrukcija
      • Svaka marka procesora ima vlastiti skup instrukcija
      • 10110000 – govori Intelovom procesoru da premjesti vrijednost u memoriju

  • Prilikom značajnijih proračuna procesor mora izvršiti mnogo operacija

Kako radi program

Od mašinskog do asemblerskog jezika

  • Nepraktično pisati kod u mašinskom jeziku
  • Asemblerski jezik: koristi kratke riječi za instrukcije umjesto binarnih brojeva
    • Olakšava rad programerima
  • Asembler: prevodi asemblerski jezik u mašinski

Od mašinskog do asemblerskog jezika

Jezici visokog nivoa

  • Jezik niskog nivoa: po prirodi sličan mašinskom jeziku
    • primjer: asemblerski jezik
  • Jezik visokog nivoa: omogućava jednostavnije kreiranje snažnih i složenih programa
    • Nije potrebno poznavanje rada procesora ili pisanje velikog broja instrukcija
    • Intuitivnije razumijevanje
    • print(“Hello world”)

Kompajleri i interpreteri

  • Programi napisani u jezicima visokog nivoa se moraju prevesti u mašinski jezik da bi se izvršili
  • Kompajler: prevodi jezik visokog nivoa u mašinski jezik
    • Mašinski jezik se može izvršiti u bilo koje vrijeme

Kompajleri i interpreteri

  • Interpreter: prevodi i izvršava instrukcije napisane u jeziku visokog nivoa
    • Koristi ga Python programski jezik
    • Interpretira jednu instrukciju u datom trenutku
    • Ne postoji odvojen program u mašinskom jeziku
  • Izvorni kod (source code): izjave koje je napisao programer

Šta je potrebno za programiranje?

Jednostavan editor teksta

Interpreter ili kompajler

Koje su primjene programiranja?

Programiranje i arhitektura

Još analogija

  • Pisanje knjige
  • Kuhanje
  • Pravljenje motocikla
  • Slikanje
  • Sport

O predmetu

  • Nastavnik: Dr. Elmedin Selmanović
    • Vanredni profesor na Prirodno-matematičkom fakultetu
    • Direktor UTIC-a
    • Interesovanja: digitalna obrada slike, računarska grafika i računarska vizija
    • eselmanovic - pmf.unsa.ba
  • Asistent: Adisa Bolić
    • Najbolja studentica UNSA
    • Interesovanja: vještačka inteligencija, kompjuterska vizija, algoritmi
    • Spoljni saradnik u nekoliko IT kompanija

O predmetu

  • Asistenti:
    • Adisa Bolić
    • Dr. Džana Drino
    • Meliha Kurtagić

O predmetu

  • T. Gaddis: Starting out with Python, 5th Edition, 2020

     

O predmetu

  • E. Selmanovic, S. Delalić: Uvod  u programiranje, 2019

O predmetu

Testovi tokom nastave 30%
Laboratorijske vježbe 20%
Završni ispit 50%

O predmetu

  • Aplikacija za ispite

O predmetu

O predmetu

  • Jedan ECTS studijski bod-kredit predstavlja 25 sati ukupnog opterećenja studenta kroz sve oblike njegovog rada na određenom predmetu
  • 7 * 25 = 175 sati u semestru
  • 175 / 16 = 11 sati sedmično
  • 11 - 6 = 5 sati samostalno

O predmetu

  • Programiranje je vještina

 

O predmetu

  • Programiranje je vještina

 

Sugestije studenata

  • Realizovane:
    • Rad ispita na računaru
    • Mogućnost izbora ispita u popravnom roku
    • Dodatni ispit za studente sa preko 49 bodova
    • Trajanje ispita
    • Dodatni testni primjeri na ispitima
  • Djelimično realizovane:
    • Literatura na bosanskom jeziku
  • Neće biti realizovane:
    • Parcijalno bodovanje zadataka na ispitu
    • Izlazak na više ispita u jednom roku
    • Dodatno produženje trajanja ispita
    • Težina zadataka

Šta je potrebno za vježbu?

  • Računar sa pristupom internetu
  • Python interpreter
  • Editor teksta

IDLE

Sažetak

  • Podesiti okruženje za rad
  • Vježbati

Programiranje I - P01

By Elmedin Selmanovic

Programiranje I - P01

  • 1,246