1 / 19

Ra čunarski praktikum 1 Vježbe

Ra čunarski praktikum 1 Vježbe. Zvonimir Bujanović Vinko Petričević. Gradivo i način polaganja. gradivo: osnove jezika C++ način polaganja (detalji na predavanjima) : 5 zadaća (5 * 5%) 2 kolokvija (35% + 35%) prisustvo na nastavi / zalaganje (5%). Unix – komandna linija.

phila
Download Presentation

Ra čunarski praktikum 1 Vježbe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Računarski praktikum 1Vježbe Zvonimir Bujanović Vinko Petričević

  2. Gradivo i način polaganja • gradivo: osnove jezika C++ • način polaganja (detalji na predavanjima): • 5 zadaća (5 * 5%) • 2 kolokvija (35% + 35%) • prisustvo na nastavi / zalaganje (5%)

  3. Unix – komandna linija • unutar terminala: • kreiranje novog direktorija – mkdir • promjena trenutnog direktorija – cd • izlistavanje sadržaja direktorija – ls –l mkdir RP1 cd RP1 cd .. ls -l

  4. Unix – komandna linija • unutar terminala: • brisanje postojeće datoteke – rm • brisanje praznog direktorija – rmdir rm program.cpp rmdir RP1

  5. Alati koje koristimo • editor text-a – gedit • kompajliranje programa – iz terminala: g++ • pokretanje programa – iz terminala: g++ program.cpp –o prog ./prog

  6. Zadatak 1 • napravite direktorij RP1 i unutar njega poddirektorije Vjezbe01, Vjezbe02 i Vjezbe03 • pomoću gedit-a napišite program koji ispisuje poruku “Hello world!” i spremite ga po imenom hello.cpp u direktorij RP1/Vjezbe01 • u terminalu otiđite u taj direktorij i kompajlirajte program tako da se izvršna verzija zove hello • pokrenite program • obrišite izvršnu verziju programa

  7. Naredba cout • ispisivanje texta i varijabli pomoću naredbe printf u C/C++: • rezultat: #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; } Evo ga: a=5, str=abcde bla

  8. Naredba cout • ispisivanje texta i varijabli pomoću naredbe cout u C++-u: • rezultat: #include <iostream> using namespace std; int main( void ) { int a=5; char str[10]= "abcde"; cout <<"Evo ga: a="<< a <<", "; cout <<"str="<< str<<"\n"<<"bla"; return 0; } #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; } Evo ga: a=5, str=abcde bla

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

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

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

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

  13. Razdvajanje programa u više datoteka • tip podatka tocka i opisane funkcije mogu nam zatrebati više puta • umjesto da svaki puta iznova pišemo deklaraciju tipa i implementiramo funkcije (što osim utroška vremena povećava i mogućnost pogreške) razdijelit ćemo program na: • sučelje – dio programa koji sadrži deklaraciju tipa podatka tocka i pripadnih funkcija • implementaciju – sam kod funkcija koje pripadaju tipu podatka tocka • klijentski dio – glavni dio programa (main) koji samo koristi tip podatka tocka i pripadne funkcije; deklaracije doznaje iz sučelja.

  14. Sučelje • tocka.h – samo deklaracije tipova i funkcija struct tocka { int x, y; }; void ispisiTocku(tocka P); tocka simetricnaTocka(tocka P); float udaljenost(tocka P, tocka Q);

  15. Implementacija • tocka.cpp – implementacija 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.. }

  16. 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); tocka simP = simetricnaTocka(P); ispisiTocku(simP); return 0; }

  17. 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 – tomu služe #include direktive Nastale su datoteke tocka.o i main.o. g++ tocka.cpp –c g++ main.cpp –c

  18. 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: • funkcija main je u točno jednoj .o datoteci • poznate su implementacije svih funkcija koje se koriste u svim .o datotekama • kompajliranje i linkanje odjednom: g++ main.o tocka.o –o program g++ main.cpp tocka.cpp –o program

  19. 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: #include "stack.h" int main( void ) { stack S; makeNull(&S); push(&S, 3); push(&S, 5); int a = top(S); pop(&S); return 0; }

More Related