Računarski praktikum I - Vježbe 01 - Uvod

Слични документи
Računarski praktikum I - Vježbe 09 - this, static

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Uvod u računarstvo 2+2

Funkcije predavač: Nadežda Jakšić

Računarski praktikum I - Vježbe 11 - Funktori

Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Strukture predavač: Nadežda Jakšić

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Objektno orjentirano programiranje

070-ALIP2-udzbenik.indb

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Uvod u računarstvo 2+2

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Uvod u računarstvo 2+2

PowerPoint Presentation

Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 10 Zvonimir Bujanović Luka Grubišić Vinko Petričević

Uvod u računarstvo 2+2

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Sveucilište u Zagrebu

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Grananje u programu predavač: Nadežda Jakšić

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Писање и превођење модула

PowerPoint Presentation

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Tutoring System for Distance Learning of Java Programming Language

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

Računarski praktikum I - Vježbe 06 - Standard Template Library (2)

obavezno je koristiti spell-checker

PuTTY CERT.hr-PUBDOC

Upute - JOPPD kreiranje obrasca

Programski jezik C

Programski jezik C

Datoteke predavač: Nadežda Jakšić

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Slide 1

Trimble Access Software Upute za korištenje V2.0 Geomatika-Smolčak d.o.o.

8 2 upiti_izvjesca.indd

JMBAG Ime i Prezime Mreže računala Završni ispit 16. veljače Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter.

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Programiranje za UNIX Okruženje unix procesa

Pojačavači

Programiranje 1

Microsoft Word - KORISNIČKA UPUTA za pripremu računala za rad s Fina potpisnim modulom_RSV_ doc

I

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Microsoft Word - IP_Tables_programski_alat.doc

I

Microsoft Word - 24ms241

Računarski praktikum II - Predavanje 03 - Apache Web server

Primenjeno programiranje - vezbe GUI i baze podataka

PowerPoint Presentation

Document ID / Revision : 0419/1.1 ID Issuer Sustav (sustav izdavatelja identifikacijskih oznaka) Upute za registraciju gospodarskih subjekata

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

I

Microsoft Word - WP_kolokvij_2_rjesenja.doc

Microsoft Word - CCERT-PUBDOC doc

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ У ОСНОВНОМ ОБРА

Slide 1

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Apache Maven Bojan Tomić

PowerPoint Presentation

Recuva CERT.hr-PUBDOC

Microsoft Word - Uputstvo za koristenje aplikacije GIPKO

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

studirko.com predstavlja: Večernja škola C# za FPZ ( ) v 4.0 Za studirko.com napisao: Slaven Špigl

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

I

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Često postavljana pitanja u programu OBRT 1. Kako napraviti uplatu u knjizi tražbina i obveza? 2. Kako odabrati mapu/disk za pohranu podataka? 3. Kako

Модел уређаја – I2C уређај

INTEGRIRANI KNJIŽNIČNI SUSTAV Sustav za podršku Upute za instalaciju: Aleph v22 ZAG

Tutoring System for Distance Learning of Java Programming Language

Državna matura iz informatike

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Tutoring System for Distance Learning of Java Programming Language

Primenjeno programiranje - Vežbe

Funkcionalna specifikacija za provođenje elektroničkog glasovanja

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

(Microsoft Word - Dr\236avna matura - kolovoz ni\236a razina - rje\232enja)

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ТЕСТ МАТЕМАТИКА УПУТСТВО ЗА О

Microsoft PowerPoint - LB7-2_WCCF_2010.ppt

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ НА КРАЈУ ОСНОВН

Microsoft Word - 2.FRANCUSKI A1 MOR

07_PJISP_II_Predavanja

Транскрипт:

Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović

Gradivo i način polaganja Gradivo: osnove jezika C++. Način polaganja (detalji na predavanjima): 4 zadaće (4 * 6 bodova) 2 kolokvija (35 + 35 bodova) prisustvo na nastavi / zalaganje (6 bodova) Uvjeti za prolaz: ukupno 45 bodova; minimalno po 10 bodova na svakom od kolokvija. Moguće je popravljati samo jedan od kolokvija. Točnost zadaća se provjerava automatski. Vaše rješenje mora u potpunosti točno raditi za pojedini test da biste dobili bod. Kolokviji se pišu na računalu. Točnost se ne provjerava automatski. 2

Alati koje koristimo Službeni operacijski sustav na ovom kolegiju je GNU/Linux. (Vježbati možete i pod Windows-ima.) Službeni kompajler je g++ (verzija instalirana u praktikumima). Editor teksta: Visual Studio Code, Atom, gedit, Geany, Nećemo koristiti CodeBlocks da bismo bolje razumjeli proces kompajliranja programa koji se sastoji od više datoteka. Ovo je vrlo važno za zadaće! 3

Linux -- komandna linija Većinu ovih naredbi možete izvesti i klikanjem miša. Kompajliranje i kretanje po direktorijima svakako treba savladati i unutar terminala. Unutar terminala: Kreiranje novog direktorija mkdir mkdir RP1 Promjena trenutnog direktorija cd cd RP1 cd.. Izlistavanje sadržaja direktorija ls -l ls -l 4

Linux -- komandna linija Unutar terminala: Brisanje postojeće datoteke rm rm program.cpp Brisanje praznog direktorija rmdir rmdir RP1 5

Linux -- komandna linija Kompajliranje programa iz terminala: g++ program.cpp -std=c++11 -o prog Pokretanje programa iz terminala:./prog 6

Standardi jezika C++ Jezik C++ standardiziran je u više navrata: postoje standardi C++98, C++11, C++14, C++17, a u pripremi je C++2a. Na ovom kolegiju koristimo standard C++11. Ovaj standard automatski je podržan od verzije 6.1 kompajlera g++. Kod tih kompajlera možemo ispustiti opciju -std=c++11: g++ program.cpp -o prog U praktikumima je instaliran g++ verzije 5.4.1 i potrebna je opcija -std=c++11. Velika većina naših programa će raditi i po C++98 (upozorit ćemo na iznimke). Verziju kompajlera možete doznati pomoću naredbe g++ --version 7

Zadatak 1 1 Napravite direktorij RP1 i unutar njega poddirektorije Vjezbe01, Vjezbe02 i Vjezbe03. 2 Pomoću odabranog editora teksta napišite program koji ispisuje poruku Hello world! i spremite ga pod imenom hello.cpp u direktorij RP1/Vjezbe01. 3 U terminalu otiđite u taj direktorij i kompajlirajte program tako da se izvršna verzija zove hello. 4 Pokrenite program. 5 Obrišite izvršnu verziju programa. Umjesto ponovnog tipkanja naredbi, u terminalu možete koristiti strelicu prema gore. 8

Naredba cout Ispisivanje teksta i varijabli pomoću naredbe printf u C/C++: #include <stdio.h> int main( void ) { int a = 5; char str[10] = "abcde"; printf( "Evo ga: a=%d, ", a ); printf( "str=%s\nbla", str ); } return 0; Rezultat: Evo ga: a=5, str=abcde bla 9

Naredba cout Ispisivanje teksta i varijabli pomoću naredbe cout u C++: #include <iostream> using namespace std; int main( void ) { int a = 5; char str[10] = "abcde"; cout << "Evo ga: a=" << a << ", "; cout << "str=" << str << endl << "bla"; } return 0; Rezultat: Evo ga: a=5, str=abcde bla 10

Naredba cin Želimo učitati: string 3 2.71 Pomoću naredbe scanf u C/C++: #include <stdio.h> int main( void ) { int a = 5; char str[10]; float f; scanf( "%s %d %f", str, &a, &f ); } return 0; 11

Naredba cin Želimo učitati: string 3 2.71 Pomoću naredbe cin u C/C++: #include <iostream> using namespace std; int main( void ) { int a = 5; char str[10]; float f; cin >> str >> a >> f; } return 0; 12

using namespace std Funkcije iz standardne C++ biblioteke (cin, cout, ) se nalaze u prostoru funkcija std. Ako ne navedemo using namespace std, trebamo pisati ovako: #include <iostream> int main( void ) { int a = 5; char str[10]; float f; std::cin >> str >> a; std::cout << "bla bla" << std::endl; } return 0; 13

Deklaracija struktura Deklaracije strukture tocka u C-u: typedef struct { int x, y; } tocka;... tocka P, Q; Deklaracije strukture tocka u C++-u: struct tocka { int x, y; };... tocka P, Q; 14

Zadatak 2 1 Deklarirajte strukturu tocka. 2 Napišite funkciju koja prima dvije točke i vraća njihovu udaljenost. 3 Napišite funkciju koja prima točku A i vraća točku centralno simetričnu točki A s obzirom na ishodište. 4 U main-u sa tipkovnice učitajte koordinate dviju točaka, izračunajte njihovu udaljenost pomoću funkcije i ispišite ju na ekran. 15

Razdvajanje programa u više datoteka Tip podatka tocka i opisane funkcije mogu nam trebati više puta. Ponovno pisanje deklaracije tipa i implementacija funkcija utrošak vremena, povećana mogućnost pogreške. Umjesto toga, razdijelit ćemo program na: 1 sučelje datoteka koji sadrži deklaraciju tipa podatka tocka i pripadnih funkcija. 2 implementaciju datoteka koja sadrži sam kod funkcija koje pripadaju tipu podatka tocka. 3 klijentski dio datoteka koja sadrži glavni dio programa ( main ). Klijentski dio samo koristi tip podatka tocka i pripadne funkcije; deklaracije doznaje iz sučelja. Ako nam u nekom drugom programu zatreba tocka, iskoristit ćemo ranije napisano sučelje i implementaciju. Treba promijeniti samo klijentski dio. Ako program koristi više tipova (npr. tocka i duzina), često za svaki od tipova postoji po jedna datoteka za njegovo sučelje i jedna za implementaciju. 16

Sučelje tocka.h sadrži samo deklaracije tipova i funkcija. struct tocka { int x, y; }; void ispisitocku( tocka P ); tocka simetricnatocka( tocka P ); float udaljenost( tocka P, tocka Q ); Napomene: Ako u ovoj datoteci koristite neke vanjske tipove varijabli, dodajte potrebne #include direktive na vrh. Ako koristite standardnu biblioteku using namespace std. (Preporuka: u.h datotekama umjesto toga je bolje koristiti std::cout i slično.) 17

Implementacija tocka.cpp sadrži implementaciju funkcija iz tocka.h. #include <iostream> #include "tocka.h" // sucelje! using namespace std; void ispisitocku( tocka P ) { cout << "(" << P.x << ", "; cout << P.y << ")"; } tocka simetricnatocka( tocka P ) {...kod... } float udaljenost( tocka P, tocka Q ) {...kod... } 18

Klijentski program main.cpp koristimo tip tocka i funkcije. #include <iostream> #include "tocka.h" // sucelje! using namespace std; int main( void ) { tocka P, Q; cin >> P.x >> P.y >> Q.x >> Q.y; cout << "d(p,q)=" << udaljenost( P, Q ) << endl; tocka simp = simetricnatocka( P ); ispisitocku( simp ); } return 0; 19

Kompajliranje i linkanje Kompajliraju (prevode u strojne instrukcije) se samo.c/.cpp datoteke (ne i.h). Za uspješno kompajliranje moraju biti poznate deklaracije svih tipova i funkcija koje se koriste u pojedinoj datoteci tome služe #include direktive. Proces kompajliranja provodimo dodavanjem opcije -c: g++ tocka.cpp -std=c++11 -c g++ main.cpp -std=c++11 -c Nastale su datoteke tocka.o i main.o. 20

Kompajliranje i linkanje Linkanje (povezivanje u izvršnu verziju) rezultira programom kojeg možemo pokrenuti iz terminala; linkaju se.o datoteke. Za uspješno linkanje nužno je da vrijedi: 1 funkcija main je u točno jednoj.o datoteci; 2 poznate su implementacije svih funkcija koje se koriste u svim.o datotekama. Uz ranije napravljeno kompajliranje, linkanje radimo ovako: g++ main.o tocka.o -std=c++11 -o program Kompajliranje i linkanje možemo provesti odjednom: g++ main.cpp tocka.cpp -std=c++11 -o program 21

Zadatak 3 Napišite sučelje i (neku, bilo koju) implementaciju apstraktnog tipa podatka stack (stog cijelih brojeva). Sučelje mora biti takvo da se donji klijentski program uspješno kompajlira i izvršava: #include "stack.h" int main( void ) { stack S; makenull( &S ); push( &S, 3 ); push( &S, 5 ); int a = top( S ); pop( &S ); } return 0; 22