Fizicki Fakultet
Beograd
Smer: Fizika i informatika
Predmet: Programiranje I (Fond casova 2+2 nedeljno, I godina II
semestar)
Predmetni nastavnik: Docent dr Goran Poparic
Plan predavanja:
1. Shema rada racunara. Organizacija procesora. Mašinski jezik,
asembleri, simbolicki jezici. Proceduralno i objektno orjentisano
programiranje. Kompajleri, linkeri.
2. Tipovi podataka: int, float, long, double, char. Elementarni programi.
Pretprocesor. Editor. Kompajler. Linker.
3. Sintaksa i semantika. Algoritmi. Simbolicki prikaz elementarnih
naredbi deklaracije, ulaza, izlaza naredbi grananja. Simbolicki prikaz
naredbi iteracije.
4. Operatori dodeljivanja. Aritmeticki i logicki operatori. Prioritet
operatora. Elementarna programska grananja. If else grananje.
Primeri.
5. Blok naredbe. Naredbe iteracije. While i Do while iteracije. Naredbe
iteracije sa For petljama.
6. Switch naredbe. Nizovi, njihova deklaracija i inicijalizacija.
Višedimenzionalni nizovi.
7. Funkcije. Prototip, deklaracija i definicija i upotreba. Globalne i
lokalne promenljive. Pozivanje funkcije po vrednosti. Polimorfizam
funkcija. Rekurzije.
8. Pointeri. Deklaracija i upotreba. Pozivanje funkcija po referenci preko
pointera.
9. Reference. Deklaracija i upotreba. Pozivanje funkcija po referenci
preko referenci.
10. Stek i slobodni prostor memorije. Alociranje memorije. Upotreba
slobodnog prostora. Naredbe NEW, DELETE.
11. Elementarne klase. Deklaracija, definicija. i upotreba. Kreiranje
objekata i upotreba.
12. Klase.Kljucne reci public:, private:, i protected:. Konstuktori i
destruktor.
Konstruktor za kopiranje. Metodi pristupa. Enkapsulacija podataka.
Metodi klasa. Preopterecivanje metoda (overload).
13. Klase. Bazna i izvedena klasa. Hijerarhija i nasledivanje. Izvedena
klasa. Preskakanje metoda bazne klase (override). Eksplicitno
pozivanje metoda bazne klase.
14. Klase. Virtuelni metodi. Polimorfizam.
15. Upisivanje u fajl. Modovi pristupa. Stringovi. Elementarne funkcije za
rad sa stringovima. Generator slucajnih brojeva. Osobine i test
validnosti. Elementi matematickog modeliranja. Primeri.
Spisak ispitnih pitanja:
1. Proceduralno programiranje.
2. Objektno orjentisano programiranje.
3. Kompajler.
4. Linker.
5. Pretprocesor.
6. Sintaksa i semantika.
7. Algoritmi. Simbolicki prikaz elementarnih naredbi deklaracije, ulaza,
izlaza naredbi grananja.
8. Algoritmi. Simbolicki prikaz naredbi iteracije.
9. Tipovi podataka: int, float, long, double, char. Njihov opseg.
10. Operatori dodeljivanja. Aritmeticki i logicki operatori. Prioritet
operatora.
11. Elementarna programska grananja. If else grananje. Primeri.
12. Blok naredbe.
13. Naredbe iteracije. While i Do while iteracije.
14. Naredbe iteracije. For petlje.
15. Switch naredbe. Naredbe break i continue.
16. Nizovi, njihova deklaracija i inicijalizacija. Višedimenzionalni nizovi.
17. Funkcije. Prototip, deklaracija, definicija i upotreba.
18. Globalne i lokalne promenljive. Pozivanje funkcije po vrednosti.
19. Polimorfizam funkcija.
20. Rekurzije.
21. Pointeri. Deklaracija i upotreba.
22. Pozivanje funkcija po referenci preko pointera.
23. Reference. Deklaracija i upotreba.
24. Pozivanje funkcija po referenci preko referenci.
25. Stek i slobodni prostor memorije. Alociranje memorije.
26. Upotreba slobodnog prostora. Naredbe NEW, DELETE.
27. Elementarne klase. Deklaracija, definicija. i upotreba.
28. Elementarne klase. Kreiranje objekata i upotreba.
29. Klase.Kljucne reci public:, private:, i protected:.
30. Klase. Konstuktori i destruktor.
31. Klase. Konstuktor za kopiranje.
32. Klase. Metodi pristupa. Enkapsulacija podataka.
33. Klase. Metodi klasa. Preopterecivanje metoda (overload).
34. Klase. Bazna i izvedena klasa. Hijerarhija i nasledivanje.
35. Klase. Izvedena klasa. Preskakanje metoda bazne klase (override).
36. Klase. Eksplicitno pozivanje metoda bazne klase.
38. Klase. Polimorfizam.
39. Upisivanje u fajl. Modovi pristupa.
40. Stringovi. Elementarne funkcije za rad sa stringovima.
41. Generator slucajnih brojeva. Osobine i test validnosti.
42. Elementi matematickog modeliranja. Primeri.
Preporucena literatura: Jesse Liberty C++ (sedmo izdanje),
Pitanja su pokrivena sa prvih 12 poglavlja knjige.
Zbirka programa radenih na vežbama iz predmeta Programiranje I
//Programiranje I
//Vezbe: Program broj 1
//Program za izracunavanje modula broja //demonstrira if grananje
#include <iostream.h> int main()
{
float a;
cout<<"Ovo je program za izracunavanje modula nekog broja\n\n"; cout<<"Unesite broj a:";
cin>>a; if(a<0) a=-a;
cout<<"\nVrednost modula broja a:"<<a; return 0;
//Programiranje I
//Vezbe: Program broj 2
//Program za izracunavanje korena nekog broja //demonstrira if else grananje
#include <iostream.h> #include <math.h> int main() { float a; float b;
cout<<"Ovo je program za izracunavanje korena nekog broja\n"; cout<<"Unesite broj a:";
cin>>a; if(a<0) {
b=-a; b=sqrt(b);
cout<<"\nVrednost korena broja a:"<<a<<" je: i*"<<b; }
else {
b=a;
b=sqrt(b);
cout<<"\nVrednost korena broja a:"<<a<<" je: "<<b; }
return 0; }
//Programiranje I
//Vezbe: Program broj 3
//Program za izracunavanje 1/moduo(a) //demonstrira dvostruko if else grananje #include <iostream.h>
int main() {
float a; float b;
cout<<"Ovo je program za izracunavanje 1/modua(a)\n"; cout<<"Unesite broj a:";
cin>>a; if(a<0) {
b=1/(-a);
cout<<"\nVrednost funkcije je:"<<b; }
else {
if(a==0)
cout<<"Funkcija nije definisana!"; else
{
b=1/a;
cout<<"\nVrednost funkcije je:"<<b; }
} return 0; }
//Programiranje I
//Vezbe: Program broj 4
//Program za izracunavanje faktorijela celobrojne vrednosti n //demonstrira naredbu iteracije while
//ekvivalentno moze da se resi i preko for petlje #include <iostream.h>
int main() {
int n,m; int fakt=1;
cout<<"Ovo je za izracunavanje faktorijela celobrojne vrednosti n\n";
cout<<"\nUnesite ceo pozitivan broj n:"; cin>>n; if (!(n<0)) { m=n; while(m>0) { fakt=fakt*m; m-=1; }
cout<<"\nFaktorijel broja n je n!:"<<fakt; }
else
cout<<"\nUneli ste negativan broj"; return 0;
//Programiranje I
//Vezbe: Program broj 5
//Program za izracunavanje maksimuma 3 broja a,b,c //demonstrira visestruko if else grananje
#include <iostream.h> int main()
{
float a,b,c; float max,min;
cout<<"Ovo je program za izracunavanje maksimuma 3 broja a,b,c\n";
cout<<"\nUnesite broj a:"; cin>>a; cout<<"\nUnesite broj b:"; cin>>b; cout<<"\nUnesite broj c:"; cin>>c; if(a<b) { min=a; max=b; if(b<c) max=c; else if(c<a) min=c; } else { min=b; max=a; if(c<b) min=c; else if(a<c) max=c; }
cout<<"\nMaksimalna vrednost brojeva je:"<<max; cout<<"\nMinimalna vrednost brojeva je:"<<min; return 0;
//Programiranje I
//Vezbe: Program broj 6
//Program za ispitivanje da li je dati broj prost //demonstrira naredbu iteracije while
//ekvivalentno moze da se resi i preko for petlje #include <iostream.h>
int main() {
int n,m,p;
bool prost=true;
cout<<"Ovo je program za ispitivanje da li je dati broj prost\n";
cout<<"\nUnesite ceo pozitivan broj n:"; cin>>n; if (!(n<=0)) { m=2; while(m<n) { p=n%m; if(p==0) { prost=false; break; } m+=1; } if(prost) {
cout<<"\nBroj: "<<n<<" je prost broj:"; }
else {
cout<<"\nBroj: "<<n<<" nije prost broj:"; }
} else
cout<<"\nNiste uneli pozitivan broj veci od nule"; return 0;
//Programiranje I
//Vezbe: Program broj 7
//Program za izracunavanje sume a(n)=1*2+...+n*(n+1) //demonstrira naredbu iteracije do while
//ekvivalentno moze da se resi i preko for petlje // Rezultat je: a(n)=n*(n+1)*(n+2)/3
#include <iostream.h> int main()
{
int n,m,a;
cout<<"Ovo je program za za izracunavanje sume a(n)=1*2+...+n*(n+1)\n";
cout<<"\nUnesite ceo pozitivan broj n:"; cin>>n; m=0; a=0; do { m+=1; a+=m*(m+1); } while(m<n);
cout<<"Vrednost sume a("<<n<<")="<<a; return 0;
//Programiranje I
//Vezbe: Program broj 8
//Program za izracunavanje minimuma i maksimuma niza a(i) //demonstrira upotrebu nizova i for petlje
#include <iostream.h> int main()
{
int i,min,max; int a[100],n;
cout<<"Ovo je program za minimuma i maksimuma niza a(i)"; cout<<"\nUnesite broj clanova niza n:";
cin>>n;
cout<<"\nUnesite clanove niza:\n"; for(i=0;i<n;i++) { cout<<"a("<<i+1<<")="; cin>>a[i]; } min=a[0]; max=a[0]; for(i=1;i<n;i++) { if(a[i]<min) min=a[i]; if(a[i]>max) max=a[i]; }
cout<<"\nMaksimalni clan niza:"<<max; cout<<"\nMinimalni clan niza:"<<min; return 0;
//Programiranje I
//Vezbe: Program broj 9
//Program za uredjenje niza po velicini njegovih elemenata a(i) //demonstrira upotrebu nizova i for petlje
//metoda uredjenja je najprostija tzv. "direktno odabiranje" #include <iostream.h>
int main() {
int i,j,min,index,temp; int a[100],n;
cout<<"Ovo je program za uredjenje niza u rastuci a(i)"; cout<<"\nUnesite broj clanova niza n:";
cin>>n;
cout<<"\nUnesite clanove niza:\n"; for(i=0;i<n;i++) { cout<<"a("<<i+1<<")="; cin>>a[i]; } for(j=0;j<n;j++) { min=a[j]; for(i=j;i<n;i++) { if(a[i]<min) { min=a[i]; index=i; } } if (min<a[j]) { temp=a[j]; a[j]=a[index]; a[index]=temp; } }
cout<<"Rastuci niz je:\n"; for(i=0;i<n;i++) { cout<<"a("<<i+1<<")="<<a[i]<<"\n"; } return 0; }
//Programiranje I
//Vezbe: Program broj 10
//Program za odredjivanje preseka dva niza a(i) i b(i) //demonstrira upotrebu nizova i for petlje
#include <iostream.h> int main()
{
int i,j,min,index,temp;
int a[100],b[100],c[100],n,m;
cout<<"Ovo je program za odredjivanje preseka dva niza a(i) i b(i)";
cout<<"\nUnesite broj clanova prvog niza n:"; cin>>n;
cout<<"\nUnesite clanove prvog niza:\n"; for(i=0;i<n;i++)
{
cout<<"a("<<i+1<<")="; cin>>a[i];
}
cout<<"\nUnesite broj clanova drugog m:"; cin>>m;
cout<<"\nUnesite clanove drugog niza:\n"; for(i=0;i<m;i++)
{
cout<<"b("<<i+1<<")="; cin>>b[i];
}
//inicijalizacija kontrolnog niza preseka dva niza for(i=0;i<n;i++) { c[i]=0; } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(a[i]==b[j]) c[i]=1; } }
cout<<"Niz presek nizova a[i] i b[j] je:\n"; for(i=0;i<n;i++)
{
if(c[i]!=0)
cout<<"a presek b:"<<a[i]<<"\n"; }
return 0; }
//Programiranje I
//Vezbe: Program broj 11
//Program za izracunavanje sume geometrijskog niza //demonstrira upotrebu funkcije
#include <iostream.h>
float stepen(float a, int n); int main() { float a,q; int n; int i; float s=0;
cout<<"Ovo je program za izracunavanje sume geometrijskog niza";
cout<<"\nUnesite prvi clan niza a1:"; cin>>a;
cout<<"Unesite kolicnik niza q:"; cin>>q;
cout<<"Unesite broj clanova niza:"; cin>>n;
for(i=0;i<=n-1;i++) {
s+=a*stepen(q,i); }
cout<<"Vrednost sume je:"<<s; return 0;
}
float stepen(float a, int n) { int i; float b=1; for(i=1;i<=n;i++) { b*=a; } return b; }
//Programiranje I
//Vezbe: Program broj 12
//Izracunavanje binomnog koeficijena (n k) = n!/(k!(n-k)!) //Demonstrira poyivanje funkcije unutar druge funkcije #include <iostream.h>
float faktorijel(int n); float binom(int n, int k); int main()
{
int i; int n;
cout<<"Ovo je program za izracunavanje binomnih koeficijenata (n k)"; cout<<"\nUnesite n:"; cin>>n; for(i=0;i<=n;i++) { cout<<"\n";
cout<<"Vrednost binomnog koeficijena ("<<n<<" "<<i<<") je:"<<binom(n,i)<<endl;
} return 0; }
float binom(int n, int k) { float b; b=faktorijel(n); b=b/faktorijel(k); b=b/faktorijel(n-k); return b; } float faktorijel(int n) { int i; float f=1; for(i=1;i<=n;i++) { f*=i; } return f; }
//Programiranje I
//Vezbe: Program broj 13
//Program sa menijem koji izracunava: // 1) Mnozenje matrice skalarom // 2) Zbir dve matrice
// 3) Proizvod dve matrice #include <iostream.h> void skalar(); void sabiranje(); void mnozenje(); int main() { int index; do { cout<<"\nMeni:";
cout<<"\n1 - Mnozenje matrice skalarom:"; cout<<"\n2 - Sabiranje matrica:";
cout<<"\n3 - Mnozenje matrica:"; cout<<"\n4 - izlaz";
cout<<"\nUnesite zeljeni izbor:"; cin>>index; switch(index) { case 1:skalar();break; case 2:sabiranje();break; case 3:mnozenje();break;
case 4:cout<<"kraj programa";break; default:cout<<"Nedefinisan izbor!"; } } while(index!=4); return 0; } void skalar() { int i,j,n,m; float a[20][20]; float scalar;
cout<<"\nMnozenje matrice skalarom:"; // Unos matrice
cout<<"\nUnesite broj redova matrice n=";cin >> n; cout<<"\nUnesite broj kolona matrice m=";cin >> m; for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j) {
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cin >> a[i][j]; } } //unos skalara cout<<"\nUnesi skalar="; cin >> scalar; //mnozenje for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { a[i][j]=a[i][j]*scalar; } } // Stampanje matrice for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { cout<<"\nElement matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cout<<a[i][j]; } } } void sabiranje() { int i,j; int n,m; float a[20][20]; float b[20][20]; float c[20][20]; cout<<"\nSabiranje matrica:"; // Unos matrica
cout<<"\nUnesite broj redova matrica n=";cin >> n; cout<<"\nUnesite broj kolona matrica m=";cin >> m; for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j) {
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")=";
cin >> a[i][j]; }
}
{
for(j=0;j<=m-1;++j) {
cout<<"\nUnesi element matrice b(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cin >> b[i][j]; } } //Inicijalizacija for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { c[i][j]=0.; } } //Sabiranje for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { c[i][j]=a[i][j]+b[i][j]; } } // Stampanje matrice for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { cout<<"\nElement matrice c(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cout<<c[i][j]; } } } void mnozenje() { int i,j,k; int n,m,p,q; float a[20][20]; float b[20][20]; float c[20][20]; cout<<"\nMnozenje matrica:"; // Unos matrica
cout<<"\nUnesite broj redova prve matrica n=";cin >> n; cout<<"\nUnesite broj kolona prve matrica m=";cin >> m; cout<<"\nUnesite broj redova druge matrica p=";cin >> p; cout<<"\nUnesite broj kolona druge matrica q=";cin >> q; if(m==p)
{
for(i=0;i<=n-1;++i) {
for(j=0;j<=m-1;++j) {
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cin >> a[i][j]; } } for(i=0;i<=p-1;++i) { for(j=0;j<=q-1;++j) {
cout<<"\nUnesi element matrice b(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cin >> b[i][j]; } } //Inicijalizacija for(i=0;i<=n-1;++i) { for(j=0;j<=q-1;++j) { c[i][j]=0.; } } //Mnozenje for(i=0;i<=n-1;++i) { for(j=0;j<=q-1;++j) { for(k=0;k<=m-1;++k) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } } // Stampanje matrice for(i=0;i<=n-1;++i) { for(j=0;j<=q-1;++j) { cout<<"\nElement matrice c(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cout<<c[i][j]; } } } else {
cout<<"\nMnozenje nije definisano !"; }
//Programiranje I
//Vezbe: Program broj 14
//Program koji izracunava transponovanu matricu #include <iostream.h> void transponovana(); int main() { transponovana(); return 0; } void transponovana() { int n,m,i,j; float a[10][10],b[10][10]; // Unos matrice
cout<<"\nUnesite broj redova matrice n=";cin >> n; cout<<"\nUnesite broj kolona matrice m=";cin >> m; for(i=0;i<=n-1;++i)
{
for(j=0;j<=m-1;++j) {
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cin >> a[i][j]; } } for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { b[j][i]=a[i][j]; } } // Stampanje matrice for(i=0;i<=n-1;++i) { for(j=0;j<=m-1;++j) { cout<<"\nElement matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cout<<a[i][j]; } }
// Stampanje transponovane matrice
cout<<"\nTransponovana matrica je: a\n"; for(i=0;i<=m-1;++i) { for(j=0;j<=n-1;++j) { cout<<"\nElement matrice b(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cout<<b[i][j]; } } }
//Programiranje I
//Vezbe: Program broj 15
//Program koji izracunava determinantu matrice #include <iostream.h> void determinanta(); int main() { determinanta(); return 0; } void determinanta() { int n,m,i,j,k,p,q; float a[10][10],b[10][10]; float det=1.; float indexdet=1.; float temp; // Unos matrice
cout<<"\nUnesite broj redova matrice n=";cin >> n; for(i=0;i<=n-1;++i)
{
for(j=0;j<=n-1;++j) {
cout<<"\nUnesi element matrice a(";cout<<i+1;cout<<")(";cout<<j+1;cout<<")="; cin >> a[i][j]; } } // Preuzimanje matrice for(i=0;i<n;++i) { for(j=0;j<n;++j) { b[i][j]=a[i][j]; } } for(k=0;k<n;k++) { if (b[k][k]==0.) { for(p=k+1;p<n;p++) { indexdet=indexdet*(-1.); if (b[p][k]!=0.) { for(q=k;q<n;q++) { temp = b[k][q];
b[k][q] = b[p][q]; b[p][q] = temp; } p=n; } } } for(i=k+1;i<n;i++) { for(j=n-1;j>=k;j--) { if (b[k][k]!=0.) { b[i][j]=b[i][j]-b[i][k]*b[k][j]/b[k][k]; } } } } // Stampanje matrice cout<<"\nMatrica a=\n"; for(i=0;i<n;++i) { for(j=0;j<n;++j) { cout<<a[i][j]<<"\t"; } cout<<"\n"; }
// Stampanje trougaone matrice cout<<"\nTrougaona matrica b=\n"; for(i=0;i<n;++i) { for(j=0;j<n;++j) { cout<<b[i][j]<<"\t"; } cout<<"\n"; } for(i=0;i<n;++i) { det=det*b[i][i]; } det *= indexdet;
cout<<"Index permutacije vrsta je:"<<indexdet; cout<<"\n";
cout<<"Determinanta matrice je:"<<det; }
//Programiranje I
//Vezbe: Program broj 16
//Program koji demonstrira rekurziju pri izracunavanju // n-tog clana Fibonacci-jevog niza
#include <iostream.h> int fibonacci(int n); int main() { int n,a; cout<<"Unesi n:"; cin>>n; a=fibonacci(n);
cout<<"\n"<<n<<"-ti clan niza je:"<<a; return 0;
}
int fibonacci(int n) {
int b;
cout<<"U toku je fibonacci("<<n<<")\n"; if (n>2) b=fibonacci(n-1)+fibonacci(n-2); else b=1; return b; }
//Programiranje I
//Vezbe: Program broj 17
//Program koji demonstrira globalne i lokalne promenljive #include <iostream.h> int i=-1; void funk1(); void funk2(); void funk3(); int main() { i=0; cout<<i; cout<<"\n"; funk1(); cout<<"\n"; cout<<i; cout<<"\n"; funk2(); cout<<"\n"; cout<<i; cout<<"\n"; funk3(); cout<<"\n"; cout<<i; cout<<"\n"; return 0; } void funk1() { int i=1; cout<<i; } void funk2() { i=2; cout<<i; } void funk3() { i=3; cout<<i; } //Programiranje I
//Program koji demonstrira globalne i lokalne funkcije #include <iostream.h> int i=-1; void funk1(); void funk2(); int main() { i=0; void funk3(); cout<<i; cout<<"\n"; funk1(); cout<<"\n"; cout<<i; cout<<"\n"; funk2(); cout<<"\n"; cout<<i; cout<<"\n"; funk3(); cout<<"\n"; cout<<i; cout<<"\n"; return 0; } void funk1() { int i=1; cout<<i; funk2(); } void funk2() { i=2; cout<<i; // funk3(); } void funk3() { i=3; cout<<i; funk1(); funk2(); }
//Programiranje I
//Vezbe: Program broj 19
//Program koji demonstrira pozivanje sakriveno implementirane funkcije
//Kompajliranje mora ukljuciti i fajl 19a.cpp, gde je funkcija implementirana
// kao i fajl 19h.h, gde je prototip funkcije #include <iostream.h> #include "19h.h" int main() { cout << funkc(5); return 0; } //Programiranje I
//Vezbe: Program broj 19
//Program koji demonstrira pozivanje sakriveno implementirane funkcije
//Kompajliranje mora ukljuciti i fajl 19a.cpp, gde je funkcija implementirana
// kao i fajl 19h.h, gde je prototip funkcije int funkc(int a)
{
return a; }
//Programiranje I
//Vezbe: Program broj 19
//Program koji demonstrira pozivanje sakriveno implementirane funkcije
//Kompajliranje mora ukljuciti i fajl 19a.cpp, gde je funkcija implementirana
// kao i fajl 19h.h, gde je prototip funkcije int funkc(int a);
int funkc(int a) {
return a; }
//Programiranje I
//Vezbe: Program broj 20
//Program koji demonstrira upotrebu pointera #include <iostream.h> int main() { int a = 5; int b = 7; int * c = NULL; c=&a;
cout<<"Vrednosti a i pokazivaca na a:\n"; cout <<"a="<<a;
cout<<"\n";
cout <<"*c="<<*c; cout<<"\n";
cout<<"Adresa a i adresa memorisana u pokazivacu na a:\n"; cout <<"&a="<<&a; cout<<"\n"; cout <<"c="<<c; cout<<"\n"; c=&b; cout<<"Vrednosti b i pokazivaca na b:\n"; cout <<"b="<<b; cout<<"\n"; cout <<"*c="<<*c; cout<<"\n";
cout<<"Adresa b i adresa memorisana u pokazivacu na b:\n"; cout <<"b&="<<&b;
cout<<"\n"; cout <<"c="<<c; cout<<"\n"; a=a+b;
cout<<"Vrednosti a, nakon dodavanja b po vrednosti:\n"; cout <<"a="<<a;
cout<<"\n"; a=a+*c;
cout<<"Vrednosti a, nakon ponovnog dodavanja b preko pointera:\n";
cout <<"a="<<a; cout<<"\n"; return 0; }
//Programiranje I
//Vezbe: Program broj 21
//Program koji demonstrira upotrebu referenci #include <iostream.h> int main() { int a = 5; int b = 7; int & c = a;
cout<<"Vrednosti a i reference na a:\n"; cout <<"a="<<a;
cout<<"\n"; cout <<"c="<<c; cout<<"\n";
cout<<"Adresa a i adresa reference na a:\n"; cout <<"&a="<<&a;
cout<<"\n"; cout <<"c="<<&c; cout<<"\n";
a=a+b;
cout<<"Vrednosti a i reference na a, nakon dodavanja b:\n"; cout <<"a="<<a;
cout<<"\n"; cout <<"c="<<c; cout<<"\n"; c=c+b;
cout<<"Vrednosti a i reference na a, nakon dodavanja b referenci na a:\n"; cout <<"a="<<a; cout<<"\n"; cout <<"c="<<c; cout<<"\n"; return 0; }
//Programiranje I
//Vezbe: Program broj 22
//Program koji demonstrira pozivanje funkcije po vrednosti #include <iostream.h>
void izmena(int a,int b); int main()
{
int a=5; int b=7;
cout<<"Vrednosti pre poziva funkcije:\n"; cout <<"a="<<a;
cout<<"\n"; cout <<"b="<<b; cout<<"\n"; izmena(a,b);
cout<<"Vrednosti posle poziva funkcije:\n"; cout <<"a="<<a; cout<<"\n"; cout <<"b="<<b; cout<<"\n"; return 0; }
void izmena(int a,int b) { int pomocna; pomocna=a; a=b; b=pomocna; cout<<"Vrednosti u funkciji:\n"; cout <<"a="<<a; cout<<"\n"; cout <<"b="<<b; cout<<"\n"; }
//Programiranje I
//Vezbe: Program broj 23
//Program koji demonstrira pozivanje funkcije po referenci preko pointera
#include <iostream.h>
void izmena(int * a,int * b); int main()
{
int a=5; int b=7;
cout<<"Vrednosti pre poziva funkcije:\n"; cout <<"a="<<a;
cout<<"\n"; cout <<"b="<<b; cout<<"\n"; izmena(&a,&b);
cout<<"Vrednosti posle poziva funkcije:\n"; cout <<"a="<<a; cout<<"\n"; cout <<"b="<<b; cout<<"\n"; return 0; }
void izmena(int * a,int * b) { int pomocna; pomocna=*a; *a=*b; *b=pomocna; cout<<"Vrednosti u funkciji:\n"; cout <<"a="<<*a; cout<<"\n"; cout <<"b="<<*b; cout<<"\n"; }
//Programiranje I
//Vezbe: Program broj 24
//Program koji demonstrira pozivanje funkcije po referenci preko referenci
#include <iostream.h>
void izmena(int & a,int & b); int main()
{
int a=5; int b=7;
cout<<"Vrednosti pre poziva funkcije:\n"; cout <<"a="<<a;
cout<<"\n"; cout <<"b="<<b; cout<<"\n"; izmena(a,b);
cout<<"Vrednosti posle poziva funkcije:\n"; cout <<"a="<<a; cout<<"\n"; cout <<"b="<<b; cout<<"\n"; return 0; }
void izmena(int & a,int & b) { int pomocna; pomocna=a; a=b; b=pomocna; cout<<"Vrednosti u funkciji:\n"; cout <<"a="<<a; cout<<"\n"; cout <<"b="<<b; cout<<"\n"; }
//Programiranje I
//Vezbe: Program broj 25
//Program koji demonstrira upotrebu pointera za rukovanje nizovima #include <iostream.h> int main() { int i; int b[10]={1,2,3,4,5,6,7,8,9,10}; int * c = b; for(i=0;i<10;i++) { cout<<*c<<" "; c++; } return 0; }
//Programiranje I
//Vezbe: Program broj 26
//Program koji demonstrira upotrebu pointera za kreiranje i koriscenje
//memorije na heap-u, i pristupanje iz funkcije #include <iostream.h>
void promena(int * x,int * y); int main()
{
int a=5; int * b=&a;
int * c = new int; if(c==NULL)
{
cout<<"Nema slobodne memorija na heap-u"; return 0; } *c=7; cout<<a<<"\n"; cout<<*b<<"\n"; cout<<*c<<"\n"; promena(b,c); cout<<a<<"\n"; cout<<*b<<"\n"; cout<<*c<<"\n"; delete c; c=NULL; cout<<a<<"\n"; cout<<*b<<"\n"; cout<<c<<"\n"; return 0; }
void promena(int * x,int * y) { int pomocni; pomocni=*x; *x=*y; *y=pomocni; }
//Programiranje I
//Vezbe: Program broj 27
//Program koji demonstrira upotrebu pointera za kreiranje i koriscenje
//memorije na heap-u u kombinaciju sa kreiranjem nizova na heap-u #include <iostream.h>
int main() {
int i;
int * c = new int[10]; int * b=c; for(i=0;i<10;i++) { *b=i+1; //c[i]=i+1; b++; } b=c; for(i=0;i<10;i++) { cout<<*b<<" "; //cout<<c[i]<<" "; b++; } b=NULL; delete [] c; c=NULL; return 0; }
//Programiranje I
//Vezbe: Program broj 28
//Program koji demonstrira deklaraciju i upotrebu elementarne klase #include <iostream.h>
class Point {
public:
Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; private: int itsx; int itsy; }; Point::Point() { itsx=0; itsy=0;
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=initx; itsy=inity;
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
itsx=thePoint.GetX(); itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
itsx=newx; }
void Point::SetY(int newy) { itsy=newy; } Point::GetX() const { return itsx; } Point::GetY() const { return itsy; } int main() { Point tacka1(5,7);
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; tacka1.SetX(3);
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; tacka1.SetY(9);
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; return 0;
//Programiranje I
//Vezbe: Program broj 29
//Program koji demonstrira klase sa drugim klasama kao podacima clanovima
//Takodje je prikazana upotreba vise konstruktora i definicija copy konstruktora #include <iostream.h> #include <math.h> class Point { public: Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; private: int itsx; int itsy; }; Point::Point() { itsx=0; itsy=0;
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=initx; itsy=inity;
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
itsx=thePoint.GetX(); itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
}
void Point::SetY(int newy) { itsy=newy; } Point::GetX() const { return itsx; } Point::GetY() const { return itsy; } class Line { public: Line();
Line(Point initStart,Point initStop); ~Line();
void SetLine(Point initStart,Point initStop); void SetStart(Point newStart);
void SetStop(Point newStop); Point GetStart() const; Point GetStop() const; float GetLenght() const; private: Point itsStart; Point itsStop; }; Line::Line() {
cout<<"Default konstruktor klase Line\n"; }
Line::Line(Point initStart,Point initStop) {
itsStart.SetX(initStart.GetX()); itsStart.SetY(initStart.GetY()); itsStop.SetX(initStop.GetX()); itsStop.SetY(initStop.GetY()); cout<<"Konstruktor klase Line\n"; }
Line::~Line() {
cout<<"Destruktor klase Line\n"; }
void Line::SetLine(Point initStart,Point initStop) { itsStart.SetX(initStart.GetX()); itsStart.SetY(initStart.GetY()); itsStop.SetX(initStop.GetX()); itsStop.SetY(initStop.GetY()); }
Point Line::GetStart() const {
return itsStart; }
Point Line::GetStop() const {
return itsStop; }
float Line::GetLenght() const { return sqrt((itsStart.GetX()-itsStop.GetX())*(itsStart.GetX()- itsStop.GetX())+(itsStart.GetY()-itsStop.GetY())*(itsStart.GetY()-itsStop.GetY())); //return (itsStart.GetX()-itsStop.GetX())*(itsStart.GetX()- itsStop.GetX())+(itsStart.GetY()-itsStop.GetY())*(itsStart.GetY()-itsStop.GetY()); } int main() { Point initStart(2,3); Point initStop(3,4); Line Linija1; //(initStart,initStop); Linija1.SetLine(initStart,initStop); cout<<Linija1.GetStart().GetX(); cout<<Linija1.GetStart().GetY(); cout<<Linija1.GetStop().GetX(); cout<<Linija1.GetStop().GetY(); cout<<Linija1.GetLenght()<<"\n"; return 0; }
//Programiranje I
//Vezbe: Program broj 30
//Program koji demonstrira deklaraciju i upotrebu elementarne klase //ciji se objekat formira na slobodnom skladistu heap-u
#include <iostream.h> class Point
{
public:
Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; private: int itsx; int itsy; }; Point::Point() { itsx=0; itsy=0;
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=initx; itsy=inity;
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
itsx=thePoint.GetX(); itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
itsx=newx; }
void Point::SetY(int newy) {
itsy=newy; } Point::GetX() const { return itsx; } Point::GetY() const { return itsy; } int main() {
Point * PPoint = new Point(5,7);
cout<<"Kordinata x tacke1 je:"<<(*PPoint).GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<PPoint->GetY()<<"\n"; PPoint->SetX(3);
cout<<"Kordinata x tacke1 je:"<<PPoint->GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<PPoint->GetY()<<"\n"; PPoint->SetY(9);
cout<<"Kordinata x tacke1 je:"<<PPoint->GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<PPoint->GetY()<<"\n"; delete PPoint;
return 0; }
//Programiranje I
//Vezbe: Program broj 31
//Program koji demonstrira deklaraciju i upotrebu elementarne klase //ciji se objekat formira na slobodnom skladistu heap-u, a takodje i podaci clanovi #include <iostream.h> class Point { public: Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; private: int * itsx; int * itsy; }; Point::Point() { itsx=new int(0); itsy=new int(0);
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=new int(initx); itsy=new int(inity);
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
*itsx=thePoint.GetX(); *itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
delete itsx; delete itsy;
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
}
void Point::SetY(int newy) { *itsy=newy; } Point::GetX() const { return *itsx; } Point::GetY() const { return *itsy; } int main() {
Point * PPoint = new Point(5,7);
cout<<"Kordinata x tacke1 je:"<<(*PPoint).GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<PPoint->GetY()<<"\n"; PPoint->SetX(3);
cout<<"Kordinata x tacke1 je:"<<PPoint->GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<PPoint->GetY()<<"\n"; PPoint->SetY(9);
cout<<"Kordinata x tacke1 je:"<<PPoint->GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<PPoint->GetY()<<"\n"; delete PPoint;
return 0; }
//Programiranje I
//Vezbe: Program broj 32
//Program koji demonstrira nasledjivanje klasa // definiciju bazne i izvedene klase
#include <iostream.h> class Point
{
public:
Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; private: int itsx; int itsy; }; Point::Point() { itsx=0; itsy=0;
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=initx; itsy=inity;
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
itsx=thePoint.GetX(); itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
itsx=newx; }
void Point::SetY(int newy) {
itsy=newy; } Point::GetX() const { return itsx; } Point::GetY() const { return itsy; }
class TDPoint : public Point {
public: TDPoint(); ~TDPoint();
void SetZ(int newz); int GetZ() const; private: int itsz; }; TDPoint::TDPoint() { itsz=0;
cout<<"Default konstruktor klase TDPoint\n"; }
TDPoint::~TDPoint() {
cout<<"Destruktor klase TDPoint\n"; }
void TDPoint::SetZ(int newz) { itsz=newz; } TDPoint::GetZ() const { return itsz; } int main() { TDPoint tacka1;
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; cout<<"Kordinata z tacke1 je:"<<tacka1.GetZ()<<"\n"; tacka1.SetX(3);
tacka1.SetY(6); tacka1.SetZ(9);
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; cout<<"Kordinata z tacke1 je:"<<tacka1.GetZ()<<"\n"; return 0;
}
//Programiranje I
//Vezbe: Program broj 33
//Program koji demonstrira nasledjivanje klasa // i preklapajuce konstruktore u izvedenim klasama #include <iostream.h>
class Point {
public:
Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; private: int itsx; int itsy; }; Point::Point() { itsx=0; itsy=0;
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=initx; itsy=inity;
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
itsx=thePoint.GetX(); itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
itsx=newx; }
{ itsy=newy; } Point::GetX() const { return itsx; } Point::GetY() const { return itsy; }
class TDPoint : public Point {
public: TDPoint();
TDPoint(int x,int y,int z); TDPoint(int z);
~TDPoint();
void SetZ(int newz); int GetZ() const; private: int itsz; }; TDPoint::TDPoint() { itsz=0;
cout<<"Default konstruktor klase TDPoint\n"; }
TDPoint::TDPoint(int x,int y,int z) :Point(x,y)
{
itsz=z;
cout<<"Konstruktor klase TDPoint\n"; }
TDPoint::TDPoint(int z): itsz(z)
{
cout<<"Konstruktor2 klase TDPoint\n"; }
TDPoint::~TDPoint() {
cout<<"Destruktor klase TDPoint\n"; }
void TDPoint::SetZ(int newz) { itsz=newz; } TDPoint::GetZ() const { return itsz;
} int main() { TDPoint tacka0; TDPoint tacka1(1,2,3); TDPoint tacka2(3);
cout<<"Kordinata x tacke0 je:"<<tacka0.GetX()<<"\n"; cout<<"Kordinata y tacke0 je:"<<tacka0.GetY()<<"\n"; cout<<"Kordinata z tacke0 je:"<<tacka0.GetZ()<<"\n"; cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; cout<<"Kordinata z tacke1 je:"<<tacka1.GetZ()<<"\n"; cout<<"Kordinata x tacke2 je:"<<tacka2.GetX()<<"\n"; cout<<"Kordinata y tacke2 je:"<<tacka2.GetY()<<"\n"; cout<<"Kordinata z tacke2 je:"<<tacka2.GetZ()<<"\n"; tacka1.SetX(3);
tacka1.SetY(6); tacka1.SetZ(9);
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; cout<<"Kordinata z tacke1 je:"<<tacka1.GetZ()<<"\n"; return 0;
//Programiranje I
//Vezbe: Program broj 34
//Program koji demonstrira nasledjivanje klasa // i overriding i overloading #include <iostream.h> class Point { public: Point();
Point(int x,int y);
Point(const Point & thePoint); ~Point();
void SetX(int newx); void SetY(int newy); int GetX() const; int GetY() const; void Move(); void Move(int x);
// void Move(int y);
void Move(int x, int y); void print(); protected: int itsx; int itsy; }; Point::Point() { itsx=0; itsy=0;
cout<<"Default konstruktor klase Point\n"; }
Point::Point(int initx,int inity) {
itsx=initx; itsy=inity;
cout<<"Konstruktor klase Point\n"; }
Point::Point(const Point & thePoint) {
itsx=thePoint.GetX(); itsy=thePoint.GetY();
cout<<"Copy konstruktor klase Point\n"; }
Point::~Point() {
cout<<"Destruktor klase Point\n"; }
void Point::SetX(int newx) {
itsx=newx; }
void Point::SetY(int newy) {
itsy=newy; }
int Point::GetX() const {
return itsx; }
int Point::GetY() const { return itsy; } void Point::Move() { cout<<"default move\n"; } void Point::Move(int x) { itsx=itsx+x; cout<<"move x\n"; }
void Point::Move(int x, int y) { itsx=itsx+x; itsy=itsy+y; cout<<"move xy\n"; } void Point::print() {
cout<<"Metod klase Point!\n"; }
class TDPoint : public Point {
public: TDPoint();
TDPoint(int x,int y,int z); TDPoint(int z);
~TDPoint();
void SetZ(int newz); int GetZ() const;
void Move(int x, int y, int z); void print(); private: int itsz; }; TDPoint::TDPoint() {
itsz=0;
cout<<"Default konstruktor klase TDPoint\n"; }
TDPoint::TDPoint(int x,int y,int z) :Point(x,y)
{
itsz=z;
cout<<"Konstruktor klase TDPoint\n"; }
TDPoint::TDPoint(int z): itsz(z)
{
cout<<"Konstruktor2 klase TDPoint\n"; }
TDPoint::~TDPoint() {
cout<<"Destruktor klase TDPoint\n"; }
void TDPoint::SetZ(int newz) {
itsz=newz; }
int TDPoint::GetZ() const {
return itsz; }
void TDPoint::Move(int x, int y, int z) { itsx=itsx+x; itsy=itsy+y; itsz=itsz+z; cout<<"move xyz\n"; } void TDPoint::print() {
cout<<"Metod klase TDPoint!\n"; } int main() { TDPoint tacka0; TDPoint tacka1(1,2,3); TDPoint tacka2(3);
cout<<"Kordinata x tacke0 je:"<<tacka0.GetX()<<"\n"; cout<<"Kordinata y tacke0 je:"<<tacka0.GetY()<<"\n"; cout<<"Kordinata z tacke0 je:"<<tacka0.GetZ()<<"\n"; cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; cout<<"Kordinata z tacke1 je:"<<tacka1.GetZ()<<"\n"; cout<<"Kordinata x tacke2 je:"<<tacka2.GetX()<<"\n"; cout<<"Kordinata y tacke2 je:"<<tacka2.GetY()<<"\n"; cout<<"Kordinata z tacke2 je:"<<tacka2.GetZ()<<"\n";
tacka1.SetX(3); tacka1.SetY(6); tacka1.SetZ(9);
cout<<"Kordinata x tacke1 je:"<<tacka1.GetX()<<"\n"; cout<<"Kordinata y tacke1 je:"<<tacka1.GetY()<<"\n"; cout<<"Kordinata z tacke1 je:"<<tacka1.GetZ()<<"\n"; tacka0.print(); tacka0.Point::print(); tacka0.Point::Move(); tacka0.Point::Move(1); tacka0.Point::Move(1,1); tacka0.Move(1,1,1); return 0; }
//Programiranje I
//Vezbe: Program broj 35
//Program koji demonstrira upisivanje podataka u fajl #include <iostream.h> #include <math.h> #include <stdlib.h> #include <stdio.h> int main() { FILE * file; float x; int i; file=fopen("name.txt","w"); for(i=1;i<=100;i++) { x=i; cout<<x<<"\n"; fprintf(file,"%f\n",x); } fclose(file); return 0; }
//Programiranje I
//Vezbe: Program broj 36
//Program koji demonstrira upotrebu stringova #include <iostream.h>
int main() {
char String1[]="Programiranje I"; char String2[]={'P','r','o','g','r','a','m','i','r','a','n','j','e','I','\ 0'}; char String3[80]; char String4[80]; char String5[80]; char buffer[80]; strcpy(String3,String2); cout<<String1; cout<<String2; strncpy(String4,String1,3); cout<<String3; cout<<String4; cout<<"\nunesi string\n"; cin>>String5; cout<<String5; return 0; }
//Programiranje I
//Vezbe: Program broj 37
//Program koji demonstrira koriscenje generatora slucajnih brojeva #include <iostream.h> #include <math.h> int main() { float x; int i; for(i=1;i<=100;i++) { x=1.0*rand()/RAND_MAX; cout<<x<<"\n"; } return 0; } //Programiranje 1
//Program koji demonstrira virtuelne metode
//Pointer bazne klase kome se dodeljuje izvedena klasa //poziva metode izvedene klase ukoliko su oni virtuelni #include<iostream.h>
class Avion {
public: Avion();
Avion(int broj, float raspon, float duzina); virtual ~Avion();
void SetBrojSedista(int broj); int GetBrojSedista() const; void SetRaspon(float raspon); float GetRaspon() const; void SetDuzina(float Duzina); float GetDuzina() const; void startMotora();
void virtual potisakMotora(); private: int brojSedista; float rasponKrila; float duzinaTrupa; }; Avion::Avion() { brojSedista = 100; rasponKrila = 25; duzinaTrupa =40;
cout<<"\nDefault konstruktor klase Avion"; }
Avion::Avion(int broj, float raspon, float duzina) { brojSedista = broj; rasponKrila = raspon; duzinaTrupa = duzina; cout<<"\nKonstruktor Avion"; } Avion::~Avion() { cout<<"\nDestruktor Avion"; }
void Avion::SetBrojSedista(int broj) {
brojSedista = broj; }
void Avion::SetRaspon(float raspon) {
rasponKrila = raspon; }
void Avion::SetDuzina(float duzina) {
duzinaTrupa = duzina; }
int Avion::GetBrojSedista() const {
return brojSedista; }
float Avion::GetRaspon() const {
return rasponKrila; }
float Avion::GetDuzina() const { return duzinaTrupa; } void Avion::startMotora() { cout<<"\nStart motora\n"; } void Avion::potisakMotora() {
cout<<"\nPotisak apstraktnog motora\n"; }
class ElisniAvion : public Avion {
public:
ElisniAvion();
ElisniAvion(int broj, float raspon, float duzina); ~ElisniAvion(); void startMotora(); void potisakMotora(); }; ElisniAvion::ElisniAvion() :Avion() {
cout<<"\nDefault konstruktor klase ElisniAvion"; }
ElisniAvion::ElisniAvion(int broj, float raspon, float duzina) :Avion(broj, raspon, duzina)
{ cout<<"\nKonstruktor ElisniAvion"; } ElisniAvion::~ElisniAvion() { cout<<"\nDestruktor ElisniAvion"; } void ElisniAvion::startMotora() {
cout<<"\nStart elisnog motora\n"; }
{
cout<<"\nPotisak elisnog motora\n"; }
int main() {
Avion * pAvion = new ElisniAvion; cout<<"\n"; cout<< pAvion->GetBrojSedista(); cout<<"\n"; cout<< pAvion->GetRaspon(); cout<<"\n"; cout<< pAvion->GetDuzina(); pAvion->SetBrojSedista(120); pAvion->SetRaspon(35); pAvion->SetDuzina(50); pAvion->startMotora(); pAvion->potisakMotora(); cout<<"\n"; cout<< pAvion->GetBrojSedista(); cout<<"\n"; cout<< pAvion->GetRaspon(); cout<<"\n"; cout<< pAvion->GetDuzina(); delete pAvion; pAvion = NULL; return 0; } //Programiranje 1
//Vezbe: Program broj 39
//Program koji demonstrira Polimorfizam i dinamicko povezivanje //Pointer bazne klase poziva virtualne metode bazne klase,
// a realizuje se pozivanje metoda izvedenih klasa
//Virtualne metod bazne klase se ostvaruje preko na razne nacine u zavisnosti
//sa kojom izvedenom klasom je bazna klasa povezana
//Virtuelni metod bazne klase se realizuje na vise nacina sto je //sustina Polimorfizma
//Pitanje koja izvedena klasa i koji njen metod ce biti pozvan razresava
//se u momentu realizacija programa kada korisnik odlucuje koja izvedena
//klasa ce se konstruisati. Povezivanje virtuelnih metoda sa metodom izvedene
//klase se na ovaj nacin izvrsava u fazi izvrsenja programa sto se //zove dinamicko povezivanje.
#include<iostream.h> class Avion
{
public: Avion();
Avion(int broj, float raspon, float duzina); virtual ~Avion();
void SetBrojSedista(int broj); int GetBrojSedista() const; void SetRaspon(float raspon); float GetRaspon() const; void SetDuzina(float Duzina); float GetDuzina() const; void startMotora();
void virtual potisakMotora(); private: int brojSedista; float rasponKrila; float duzinaTrupa; }; Avion::Avion() { brojSedista = 100; rasponKrila = 25; duzinaTrupa =40;
cout<<"\nDefault konstruktor klase Avion"; }
Avion::Avion(int broj, float raspon, float duzina) { brojSedista = broj; rasponKrila = raspon; duzinaTrupa = duzina; cout<<"\nKonstruktor Avion"; } Avion::~Avion() { cout<<"\nDestruktor Avion"; }
{
brojSedista = broj; }
void Avion::SetRaspon(float raspon) {
rasponKrila = raspon; }
void Avion::SetDuzina(float duzina) {
duzinaTrupa = duzina; }
int Avion::GetBrojSedista() const {
return brojSedista; }
float Avion::GetRaspon() const {
return rasponKrila; }
float Avion::GetDuzina() const { return duzinaTrupa; } void Avion::startMotora() { cout<<"\nStart motora\n"; } void Avion::potisakMotora() {
cout<<"\nPotisak apstraktnog motora\n"; }
class ElisniAvion : public Avion {
public:
ElisniAvion();
ElisniAvion(int broj, float raspon, float duzina); ~ElisniAvion(); void startMotora(); void potisakMotora(); }; ElisniAvion::ElisniAvion() :Avion() {
cout<<"\nDefault konstruktor klase ElisniAvion"; }
ElisniAvion::ElisniAvion(int broj, float raspon, float duzina) :Avion(broj, raspon, duzina)
{
cout<<"\nKonstruktor ElisniAvion"; }
ElisniAvion::~ElisniAvion() { cout<<"\nDestruktor ElisniAvion"; } void ElisniAvion::startMotora() {
cout<<"\nStart elisnog motora\n"; }
void ElisniAvion::potisakMotora() {
cout<<"\nPotisak elisnog motora\n"; }
class MlazniAvion : public Avion {
public:
MlazniAvion();
MlazniAvion(int broj, float raspon, float duzina); ~MlazniAvion(); void startMotora(); void potisakMotora(); }; MlazniAvion::MlazniAvion() :Avion() {
cout<<"\nDefault konstruktor klase MlazniAvion"; }
MlazniAvion::MlazniAvion(int broj, float raspon, float duzina) :Avion(broj, raspon, duzina)
{ cout<<"\nKonstruktor MlazniAvion"; } MlazniAvion::~MlazniAvion() { cout<<"\nDestruktor MlazniAvion"; } void MlazniAvion::startMotora() {
cout<<"\nStart Mlaznog motora\n"; }
void MlazniAvion::potisakMotora() {
cout<<"\nPotisak Mlaznog motora\n"; } int main() { int izbor; Avion * pAvion; do { izbor = 3;
cout<<" Meni:\n 1 - Elisni Avion\n 2 - Mlazni Avion\n 3 - izlaz\n";
cin>>izbor; }
while(izbor != 1 && izbor != 2 && izbor != 3); if(izbor == 1 || izbor == 2)
{
if(izbor == 1)
pAvion = new ElisniAvion; if(izbor == 2)
pAvion = new MlazniAvion; cout<<"\n"; cout<< pAvion->GetBrojSedista(); cout<<"\n"; cout<< pAvion->GetRaspon(); cout<<"\n"; cout<< pAvion->GetDuzina(); pAvion->SetBrojSedista(120); pAvion->SetRaspon(35); pAvion->SetDuzina(50); pAvion->startMotora(); pAvion->potisakMotora(); cout<<"\n"; cout<< pAvion->GetBrojSedista(); cout<<"\n"; cout<< pAvion->GetRaspon(); cout<<"\n"; cout<< pAvion->GetDuzina(); delete pAvion; pAvion = NULL; } return 0; }