Professional Documents
Culture Documents
mr Draen Branin
Elektrotehniki fakultet Banja Luka
2012.
1.1. Uvod u C++
Malo istorije...
O programskom jeziku C
Nastao 70-ih godina prolog vijeka
1970. Ken Thompson, B
1972. Denis Ritchie, C
2
1.1. Uvod u C++
Malo istorije...
Standardizacija:
ISO/IEC 14882:1998
ISO/IEC 14882:2003
ISO/IEC 14882:2011 (C++11)
3
1.1. Uvod u C++
Razvoj C/C++
programa?
IZVORNI KOD
(SOURCE) OBJEKTNI KOD IZVRNI KOD
.C .OBJ .EXE
.CPP
EDITOR KOMPAJLER LINKER
4
1.1. Uvod u C++
cout ???
5
1.1. Uvod u C++
cout ???
Primjer:
#include <iostream.h> Prog. jezik C++
int main(int argc, char **argv)
{
cout << Prog. jezik C++;
return 0;
}
6
1.1. Uvod u C++
cout ???
Primjer:
#include <iostream.h> Jezik C++
int main(int argc, char **argv) _
{
cout << Jezik C++\n;
return 0;
}
7
1.1. Uvod u C++
Svi entiteti u C++ standardnoj biblioteci su
namespace ??? deklarisani u okviru std namespace-a
Namespace
Namespace omoguava grupisanje razliitih entiteta (promjenljive,
funkcije, klase, objekti) pod nekim imenom.
Za pristup elementima nekog namespace-a, koristi se operator ::
#include <iostream>
11
namespace mySpace
12.25
{
int x = 11;
double y = 12.25;
}
int main(int argc, char **argv)
{
std::cout << mySpace::x << " " << std::endl;
std::cout << mySpace::y << " " << std::endl;
return 0;
}
8
1.1. Uvod u C++
Uobiajeno se koristi std namespace.
using ???
9
1.1. Uvod u C++ 11 12
using ???
10
1.1. Uvod u C++
PROSTI TIPOVI ???
11
1.1. Uvod u C++
LITERALI ???
12
1.1. Uvod u C++
LITERALI ??? 65535
123 123 123 -654
9876543
-1
#include<iostream>
1.23 1 0.23 1.23000e+10
using namespace std;
1.23456
int main(int rgc, char **argv)
0 0.5 0.5
{
unsigned int a = 65535U;
int b = 123, c = 0173, d = 0x7B, e = -654;
unsigned long ul = 9876543UL;
short f = a;
cout << a << endl;
cout << b << " " << c << " " << d << " " << e << endl;
cout << ul << endl;
cout << f << endl;
float aa = 1.23, bb = 1., cc = .23, dd = 1.23e10f;
double ee = 1.23456;
cout << aa << " " << bb << " " << cc << " " << dd << endl;
cout << ee << endl;
cout << 1/2 << " " << 1/2.f << " " << 1/2. << endl;
return 0;
}
13
1.1. Uvod u C++
LOGIKI PODACI ???
14
1.1. Uvod u C++
LOGIKI PODACI ???
15
1.1. Uvod u C++
LOGIKI PODACI ??? 1 0 1 0
1 0 350
1 0 1
1 0 351
Logiki podaci u jeziku C++
Primjer:
#include<iostream>
using namespace std;
int main(int argc, char **argv)
{
bool t1 = true, f1 = false, t2 = 350, f2 = 0;
int a = true, b = false, c = 350;
bool rez1 = t1+f1, rez2 = f1+f2, rez3 = a+c;
int rez4 = t1+f1, rez5 = f1+f2, rez6 = t2+c;
cout << t1 << " " << f1 << " " << t2 << " " << f2 << endl;
cout << a << " " << b << " " << c << endl;
cout << rez1 << " " << rez2 << " " << rez3 << endl;
cout << rez4 << " " << rez5 << " " << rez6 << endl;
return 0;
}
16
1.1. Uvod u C++
PROMJENLJIVE ???
Primjer:
#include <iostream.h> Dozvoljena definicija promjenljive u C++
int main() U jeziku C nije dozvoljeno, jer definicija
{ promjenljive mora biti na poetku bloka
18
1.1. Uvod u C++
KONSTANTE ???
Konstante u jeziku C
Definisanje konstante mogue je preko pretprocesorske direktive
#define ime vrijednost
21
1.1. Uvod u C++
cin ???
Primjer:
#include <stdio.h>
main()
{
int broj;
printf( Unesite cijeli broj:\n );
scanf( %d, &broj );
printf( Unijeli ste %d, broj );
}
#include <iostream>
using namespace std;
main()
{
int broj ;
cout << Unesite cijeli broj:\n ;
cin >> broj ;
cout << Unijeli ste << broj ;
}
22
1.3.1. Polja
Unesite cijeli broj: 234
Dinamiki niz ?
Unijeli ste: 234
23
1.3.1. Polja
Dinamiki niz ?
#include<iostream>
using namespace std;
int main(int argc, char **argv)
{
int *niz, n;
do
{ n=3
cout << "n="; cin >> n;
}
1. broj: 345
while (n<1); 2. broj: 23
niz = new int[n]; 3. broj: 76
for (int i=1; i<=n; i++) Obrnuti red: 76 23 345
{
cout << i << ". broj: ";
cin >> niz[i-1];
}
cout << "Obrnuti red: ";
for (int i=n-1; i>=0; i--)
cout << niz[i] << " ";
delete [] niz;
return 0;
}
24
1.3.1. Polja n=2
m=2
mat[0,0]= 1
Dinamika MATRICA ? mat[0,1]= 2
mat[1,0]= 3
mat[1,1]= 4
1 2
#include<iostream>
using namespace std; 3 4
int main(int argc, char **argv)
{
int **mat, n, m;
do for (int i=0; i<n; i++)
{ {
cout << "n="; cin >> n; for (int j=0; j<m; j++)
cout << "m="; cin >> m; cout << mat[i][j] << "\t";
} cout << endl;
while ((n<1) || (m<1)); }
25
1.3.2. Strukture
STRUKTURA?
Deklaracija strukture
Alternativni oblik deklaracije:
struct ime { Npr:
tip1 element1; struct osoba {
... char ime[15];
tipN elementN; int visina;
}; };
struct ime lista_promjenljivih; struct osoba student, klub[100];
26
1.3.2. Strukture
STRUKTURA?
27
1.3.3. Unije
UNIJA?
28
1.3.3. Unije
BEZIMENA UNIJA?
Bezimena unija
U jeziku C++ unije mogu da se definiu bez navoenja identifikatora
iza kljune rijei union. Takve unije zovu se bezimene unije.
lanovi bezimene unije ponaaju se kao obine promjenljive
Primjer:
union { int i; char c; };
char d; Promjenjljive i,c su elementi
i = 65; bezimene unije i pristupa im se kao
obinim promjenljivima
d = c;
Primjer:
#include <iostream.h> 3
#define max(a,b) ((a)>(b))?(a):(b) 5
main()
{
int a=3, b=2, c;
c = max(a,b); c = ((a)>(b)) ? (a):(b) ;
cout << c << endl;
c = max(++a,++b); c = ((++a)>(++b)) ? (++a):(++b);
cout << c << endl;
}
#include <iostream.h>
inline int max(int a, int b) 3
{ return ((a>b)? a:b); } 4
main()
{ int a=3, b=2, c;
c = max(a,b); cout << c << endl;
c = max(++a,++b); cout << c << endl;
}
31
1.4. Funkcije
podrazumijevane
vrijednosti ?
32
1.4. Funkcije
podrazumijevane
vrijednosti ?
Primjer:
#include <iostream.h> 2.82843
#include <math.h> 1.41421
main()
{
Tacka p={1,1}, q={-1,-1};
cout << daljina(p,q) << endl; // udaljenost od p do q
cout << daljina(p) << endl; // udaljenost od p do O
}
33
1.4. Funkcije
function
overloading ?
Primjer:
...
int max (int i, int j) { return (i>j) ? i : j ; }
float max (float i, float j) { return (i>j) ? i : j ; }
char max (char i, char j) { return (i>j) ? i : j ; }
...
cout << max (2,6) << endl;
cout << max (B,A) << endl; 6
... B
34
1.4. Funkcije
function
overloading ?
35
1.4. Funkcije
function
overloading ?
Upuivai (reference)
Upuiva je alternativno ime za neki podatak (upuuje na podatak kojem je pridruen)
Ne zauzima prostor u memoriji i ne moe da se dobije njegova adresa
Mora da se inicijalizuje prilikom definisanja (mora da upuuje na neki stvarni objekat)
Sve operacije djeluju na stvarne podatke, a ne na upuivae
Veoma su slini pokazivaima, ali pokazivai fiziki postoje a upuivai ne
Glavna primjena upuivaa: prenos argumenata u funkciju
Primjer:
int k=1; // definisana promjenljiva k
int &u=k; // definisan upuiva u na promjenljivu k
// i u i k predstavljaju isti podatak
int x=u; // definisana promjenljiva x (x=u=k=1)
u=2; // k=2
u++; // k++ -> k=3
37
1.7. Upuivai
UPUIVA ?
Upuivai (reference)
Glavna primjena upuivaa: prenos argumenata u funkciju
Primjer: Primjer:
(prenos pomou pokazivaa) (prenos pomou upuivaa)
#include <iostream.h> #include <iostream.h>
void inkrement (int *a) void inkrement (int &a)
{ *a += 1; } { a += 1; }
int main() int main()
{ {
int x=10; int x=10;
inkrement (&x); inkrement (x);
cout << x << endl; cout << x << endl;
} }
11 Korienje upuivaa
je elegantnije
38