C++ Tutorijali

Teme vezane za console/GUI programiranje u C/C++ jeziku
11 post(ov)a • Stranica: 1/2.1, 2

C++ Tutorijali

PostPostao/la gagiD » 07 kol 2013, 04:25

slika




slika

slika

slika

slika

slika

slika

slika

slika

slika

slika

(( ostali naslovi ce biti upisani kade se urade ))

Re: C++ Tutorijali

PostPostao/la gagiD » 07 kol 2013, 05:20

slika


Eh , da krenemo ...

Prvo sto vam je potrebno ( ako vec nemate :D ) je kompajler koji dolazi uz IDE kao sto je ili

Zahvaljuejm se kolegi na temama :)


Evo i famozni "Hello world" :

cpp code
#include<iostream>
using namespace std;
int main() {
cout<<"Hello World!"<<endl;
system("pause");
return 0;
}


E sada cemo svaku komande Hello world programa obijasniti:

1. - #include<iostream> - ovom komandom ukljucujemo biblioteku iostream koja sadrzi izlazni tok i funkcije koje omogucavaju ispis podataka na ekran.Posle cemo komandom #include ukljucivati i vise biblioteka :D

2. - using namespace std; - ovim ukljucujemo sve standardne funkcije, ukljucujuci i funkcije iz iostream biblioteke.

3. - int main() - je glavna funkcija , pocinje sa { a zavrsava sa }. Svaki program mora imati int main() funkciju.

Ovo su bili glavni delovi programa , a slijede komande iz glavnog programa:

cout<<"Hello World!" je operator za ispis , i sve sto se nalazi unutar dvostrukih navodnika bit ce ispisano na ekran.
endl - oznacava kraj reda , tj. da smo napisali cout<<"Hello"<<endl<<world"; rijec world bila bi ispisana u novom redu.
system("pause"); - je komanda za zaustavljanje programa , npr. da nismo napisali system("pause"); DOS prozor ( crni ) bi se pojavio na sekundu i nestao , a kada imamo upisano system("pause"); taj prozor se nece zatvoriti sve dok ne pritisnemo neku tipku. system("pause"); se koristi u Win OS , u GNU/Linuxu ova naredba nije potrebna.
return 0; - salje operativnom sistemu da je program uspjesno izvrsen


Znak ";" mora biti na kraju svake naredbe

To je to za sada , nadam se da sam bio jasan ;)

Pozdrav.

Re: C++ Tutorijali

PostPostao/la gagiD » 22 kol 2013, 02:01

slika

Pozdrav.

Kao sto vidite u naslovu ovaj TuT je na temu varijabli.

Varijabala - mjesto u memoriji rezervirano za pohranu podatka. To mjesto u memoriji ima adresu i simbolicko ime , kojim pristupamo toj memoriji.

Simbolicko ime:
- moze sadrzavari slova engleske abecede , broje , donja crta (_)
- ne smije sadrzavati razmak
- duzina nije ogranicena
- ne smije sadrzavati kljucne rijeci , niti oznake operatora ( npr. int , cout , system )

Varijbla moze pohraniti samo jedan tip podatka.

U osnovne tipove podataka ubrajaju se:
-brojevi (cijeli i realni)
-znakovi
-logički podaci (npr. true/false, da/ne, istina/laž, 1/0)
-konstante.

Tipovi podataka u C++:

slika

Ovako to izgleda u programu:

cpp code
#include<iostream>
using namespace std;
int main() {
int celi_broj = 1;
char slovo = 'a' ;
float decimalni_broj = 1.73 ;
bool tvrdnja = true;
unsigned int broj_bez_predznaka = 1;
const double pi = 3.14;
}


* celi_broj , slovo , decimalni_broj , tvrdnja - to su simbolicka imena.
* Ako zelite broj bez predznaka , onda ispred tipa podatka kucate unsigned (npr. unsigned int broj_bez_predznaka = 1; )


Konstantu navodimo definisanom rijecju CONST ( primjer za pi u "programu" ).
Konstanta kroz program ne moze mijenjati vrednost , dok varijabla moze.

*Ako imate nekih pitanja oko ovog , pitajte me!

Re: C++ Tutorijali

PostPostao/la gagiD » 22 kol 2013, 02:39

slika

Pozdrav.

U prvom postu je spomenut upis/ispis - kada sam pisao o biblioteci iostream.

Dvije su osnovna operatora za upis/ispis :
1. cout - vec sam pisao o ovom operatoru , tako da nema potrebe da to radim ponovo.
2. cin - operator za upisivanje vrednosti u varijeble.

Znaci mi operatorom upisujemo odredenu vrednost u varijablu ( sa testarure ). U tu varijablu upisijemo sve dok ne stisnemo enter.

cpp code
#include<iostream>
using namespace std;
int main() {
int celi_broj;
cout<<"Upisite celi broj"<<endl;
cin>>celi_broj>>endl;
cout<<"Celi broj koji ste uneli je "<<celi_broj<<endl;

return 0;
}


Znaci u ovog gore programcicu , mi smo napravili varijablu.Posle smo ispisali na ekran da treba da se upise celi broj ( posto je varijabla tipa int ). Upisali samo taj broj u varijablu ( cin operator) , i ispisali smo ga sa nekim tekstom.

Mene su u pocetku , operatori odvajanja ( << i >> ) podsecali za sta je cin a za sta cout: Znaci ako je operator ">>" on je "uperen" u varijablu i u nju upisuje neku vrijednost , operator "<<" suprotno :D

To je to , nadam se da sam bio jasan.

Re: C++ Tutorijali

PostPostao/la gagiD » 30 kol 2013, 18:46

slika

Vrste operatora u C++:
1. Aritmeticki
2. Odnosni
3. Logicki
4. Operatori prikruzivanja

Aritmeticki:
+ -- sabiranje
- -- oduzimanje
* -- mnozenje
/ -- delenje
% -- ostatak delenja
- -- menja predznak broja
++-- povecava broj za 1 ( inkrement )
-- -- umanjuje broj za 1 ( dekrement )

Odnosni:
== -- jednako
> -- vece
< -- manje
>= -- vece ili jednako
<= -- manje ili jednako
!= --razlicito

Logicki:
! -- negacija
&& -- i ( AND )
|| -- ili ( OR )

Operatori prikruzivanja:
= -- pridruzjuje vrednost nekoj varijabli
+= -- npr. a+=3 je isto a=a+3
-= -- npr. a-=3 je isto a=a-3
*= -- npr. a*=3 je isto a=a*3
/= -- npr. a/=3 je isto a=a/3


Razlika izmedu postfiksnog ++ i prefiksnog ++.

cpp code
int m = 1, n = 1 , m1 , n1;
m1 = ++m;
n1 = n++;
cout<<"m1"<<m1<<" n1"<<n1<<endl;


U varijabli m1 imat cemo vrijednost 2 jer je varijabla m povecana za 1 i sve to upisano u m1.
Ali u varijabli n1 imat cemo vrijednost 1 , jer je prvo vracena vrijednost i upisana u n1 , pa je onda povecana vrijednost varijable n.

++i --> prvo poveca i pa vrati novo i
i++ --> vrati i pa ga poslije poveca

Ako se koriste izvan operatora dodjele onda nema razlika izmedu postfiksnog ++ i prefiksnog ++.

Sve ovo vazi i za --.

Re: C++ Tutorijali

PostPostao/la gagiD » 04 ruj 2013, 22:54

slika

If/Else koristimo kod uvjetnog grananja programa , tj. ako je neki uslov ispunjen izvrsit ce se odredene neradbe ili naredba , a ako uslov nije ispunjen izvrsit ce se neka druga naredba ili naredbe.


cpp code
#incluse<iostream>
using namespace std;
int main() {
int x;
cout<<"Unesite broj: "<<endl;
cin>>x;
if ( x > 0 ) {
cout<<"Uneli ste pozitivan broj."<<endl;
}
else {
cout<<"Uneli ste negativan broj."<endl;
}
return 0;
}


U zadacicu iznad mi unosimo neki broj sa testature.

Ako mi unesemo neki broj koji je veci od nule ( i ispunimo uvjet " x > 0 " ) onda ce kompajler izvrsiti naredbu "cout<<"Uneli ste pozitivan broj."<<endl;" odnosno ispisat ce na ekran da smo uneli pozitivan broj.

A ako unesemo neki broj koji je manji od 0 ( i ne ispunimo uvet " x > 0 " ) onda ce kompajler izvrsiti naredbu cout<<"Uneli ste negativan broj."<endl; odnosno ispisat ce na ekran da smo uneli negativan broj.

Re: C++ Tutorijali

PostPostao/la gagiD » 11 ruj 2013, 23:44

slika

Naredba switch se koristi za grananje kao i if/else. Veoma su slicne samo se switch koristi ako imamo potrebu za grananjem u vise od dvije grane.

cpp code
#inculde<iostream>
using namespace std;
int man () {
int ocena;
cout<<"Unesite ocenu (broj) "<<endl;
cin>>ocena;
switch (ocena) {
case 1: cout<<"Ocena je jedan"<<endl;
break;
case 2: cout<<"Ocena je dva"<<endl;
break;
case 3: cout<<"Ocena je tri"<<endl;
break;
case 4: cout<<"Ocena je cetiri"<<endl;
break;
case 5: cout<<"Ocena je pet"<<endl;
break;
default:
cout<<"Niste uneli ocenu!"<<endl;
}
return 0;
}


Kao sto mozete videti ovaj program iznad nam ispisuje ocenu koju smo uneli u tekstualnom obliku tj. ako unesemo npr. broj 1 izvrsit ce se naredba ili naredbe koja pripada naredbi case 1:.
Kljucnu rijec break moramo pisati jer ona oznacava kraj naradbi za odredeni case.Ako ne bismo stavili break izvrsavale bi se naredbe do prvog break-a ( u sledecem case-u).
Izmedu case i break moze stojati vise naradbi.

* Varijabla pomocu cije se vrednosti vrsi grananje u switch-u ( u nasem primeru ocena ) mora biti tipa int ili char ali i char je u sustini cijeli broj.

Re: C++ Tutorijali

PostPostao/la gagiD » 29 ruj 2013, 01:20

slika


Petlje u programu koristimo kada zelimo neki blok naredbi ponavljati vise puta.

U C++ postoje:
  • for
  • while
  • do-while



For petlju najcesce koristimo kada unapred znamo broj iteracija (izvodenja) petlje.

Primer koristenja for petlje:
cpp code
#include <iostream>
usin namespace std;
int main() {
int i;
for ( i=1 ; i<=10 ; i++ ) {
cout<<i<<endl;
}

return 0;
}

U primeru iznak koji ispisuje brojeve od 1 do 10 koristi se for petlja.
Kao sto vidite prima tri parametra koja su odvojena ;
-prvi parametar ( i=1 ) odredujemo pocetnu vrednost
-drugi parametar ( i<=10 ) petlja ce se izvrsavati sve dok je ovaj uslov ispunjen ili tacan
-treci parametar ( i++ ) odredujemo korak petlje


While petlja se obicno koristi kada ne znamo unapred broj iteracija.

Primer while petlje:
cpp code
#include <iostream>
usin namespace std;
int main() {
int i=1;
while( i > 0 ) {
cin>>i;
}

return 0;
}

U primeru iznak mi cemo unositi vrednost u i varijablu sve dok unosimo pozitivne brojeve odnosno dok je uslov iz while petlje ispunjen ( i > 0 ).
U ovom slucaju varijabla i je inicijalizirna na vrednost 1 da bi bili sigurni da ce uslov iz while petlje biti ispunjen.



Do-while petlju koristimo kada zelimo da se desi jedna iteracija petlje pa tek onda da se proveri uslov.

Primer do-while petlje:
cpp code
#include <iostream>
usin namespace std;
int main() {
int i;
do {
cin>>i;
} while( i != 0 );
return 0;
}

U primeru iznak unosit cemo vrednosti u varijablu i sve dok ne unesemo 0 . U ovom primeru ne moramo da inicijaliziramo i na neki broj koji nije 0 jer ce naredba cin>>i; sigurno da se izvrsi pre provere uslova i != 0.



Break:

Naredbu break koristimo kada zelimo da prekinemo petlju (nezavisno od toga koliko puta treba da se izvrsi).
cpp code
cout<<"Unesite red matrice(<=4):"<<endl;
while (1) {
cin>>n;
if ( n > 0 && n < 5 ) break;
else cout<<"Unesite n u rasponu od 0 do 5 - n(0,5)"<<endl;
}


U primjeru iznak unosit cemo vrijednost u n sve dok ne unesemo vrijednost u raspono od 0 do 5 ( ne ukljucujuci 0 i 5) - n(0,5).

Naredbu break je moguce koristiti samo u petljama i switch-u.


Continue:

Naredbu continue koristimo kada zelimo da predemo na sledecu iteraciju (zanemarujuci naredbe koje bi se trebale izvrsiti).

cpp code
int a = 10;
do
{
if( a == 15)
{
a ++;
continue;
}
cout << "vrijednost a: " << a << endl;
a ++;
}while( a < 20 );


U primjeru iznad ispisat ce se vrijednosti a od 10 do 20 (ne ukljucujuci 20) izuzev 15 jer ce se tada ispuniti uslov u if-u i vrijednost a ce se inkrementirati i preci ce se na sledecu iteraciju (preskacuci cout i a++ koje su izvan if-a) .

Naredbs continue se koristi samo u petljama.

Re: C++ Tutorijali

PostPostao/la gagiD » 04 svi 2014, 20:30

slika

Niz je slozeni tip podatka. Ima odredeni broj clanova(velicina_niza) i svi clanovi su istog tipa(npr. int). I svi clanovi niza u memoriji su poredani jedan do drugog.

Opšti oblik deklaracije niza odnosno alociranja memorije za niz:

cpp code
tip_niza naziv_niza[velicina_niza];


Primjeri deklaracije:
cpp code
char samoglasnici[5]; 
short mjeseci[12];
float temperature[7];


Svaki clan niza ima svoje mjesto u nizu odnosno indeks. Raspon indeksa svakog niza je od 0 do velicina_niza ne ukljucujuci velicina_niza - [0,velicina_niza).

Osim sto ima indeks svaki clan ima i vrijednost. Imamo vise nacina da dodjelimo vrijednost clanu/clanovima niza.
cpp code
//Prvi nacin - pri deklaraciji
char samoglasnici[5] = { 'a' , 'e' , 'i' , 'o' , 'u'};

//Drugi nacin - svaki posebno
samoglasnici[0] = 'a';
samoglasnici[1] = 'e';
samoglasnici[2] = 'i';
samoglasnici[3] = 'o';
samoglasnici[4] = 'u';


*Ne pokusavajte nikada dodjeliti vrijednost clanu samoglanici[5] jer ne postoji u memoriji( indeksi-[0,velicina_niza) ).

Isto tako mozemo unijeti velicinu niza pa ga deklarisati:
cpp code
int n;
cout<<"Unesite velicinu niza"<<endl;
cin>>n;

int niz[n];


Ako unapred ne znamo vrijednosti clanova niza odnosno treba da ih korisnik unese onda je for petlja najbolji nacin za to.
cpp code
short ocjene[5];

for ( int i=0 ; i<5 ; i++) {
cout<<i+1<<". ocjena:"<<endl;
cin>>ocjene[i];
}


Kada jednom dodjelimo vrijednosti clanovima niza, tim vrijednostima mozemo pristupati(indeksima naravno) gde god imamo potrebu.



Matrica je dvodimenzionalni niz, sto znaci da cu clanovi niza opet nizovi. I sve sto vazi za jednodimenzionalne vazi i za visedimenzionalne nizove.

Primjer deklaracije:

cpp code
int matrica[10][10];


Primjer dodjele vrijednosti clanovima matrice:
cpp code
for ( int i=0 ; i<10 ; i++) {
for ( int j=0 ; j<10 ; j++ ) {
cout<<"matrica["<<i<<"]["<<j<<"]=";
cin>>matrica[i][j];
}
}


Kao sto je matrica niz nizova odnosno dvodimenzionalni niz , isto tako mozemo napraviti i n-dimenzionalni niz.

cpp code
float n-mat[10][10][10]...[10];


I za n-dimenzionalne nizove vredi sve sto vrijedi i za jednodimenzionalne.




Ovo su C-eoski nizovi , a u C++-u imamo bibliteku vector pomocu koje nam je koristenje nizova/vectora mnogo "elgantnije".

Razlog zasto su vectori bolji od C-ovskih nizova je zato sto ne morate unaprijed odrediti ili unijeti velicinu vectora, nego se automatski prilagodava. To je prednost koja vas za sada moze zanimati, za vise pogledajte .

Da bi koristili biblioteku vector moramo je ukljuciti u zaglavlju - #include <vector>


Opšti oblik deklaracije vektora:
cpp code
vector<tip_vectora> ime_vectora(velicina_vectora, vrijednost_svakog clana);
// parametri velicina_vektora i vrijednost_svakog clana mogu biti izostavljeni
// parametar vrijednost_svakog_clana moze biti izostavljen dok obrnuto ne vazi


Primjer deklaracije:
cpp code
vector<int> a(10); // deklarisemo vector od 10 int-ova , analogno int a[10]
vector<int> a(10,0) // deklarisemo vector od 10 int-ova , i svakom clanu dodjeljujemo vrijednost 0


Sve sto je napisano za nizove vrijedi i za vectore(primjeri dodjele vrijednosti).

Operacije s vectorima( ime vektora je a):
  • a.empty() - vraca true ako je vector a prazan, false ako nije
  • a.size() - vraca broj clanova vactora a
  • a.clear() - brise sve clanove vectora a
  • a1 = a2 - a1 i a2 su vectori istog tipa, a operator = kopira sadrzaj vectora a2 u a1
  • a.push_back(vrijednost) - povecava broj clanova vectora a za 1, i zadnjem dodjeljuje vrijednost
  • a.pop_back() - izbacuje zadnji clan vectora


Primjer koristenja operacija sa vectorima:
cpp code
#include <iostream>
#include <vector>

using namespace std;

int main() {
vector<int> a,a1(5,1),a2; // alociramo vectore

while(1) {
int tmp;
cin>>tmp;
if(tmp != 0) a.push_back(tmp); //unosimo clanove niza sve
else break; //dok ne unesemo 0
}
a2 = a1; // kopiram0 sadrzaj a1 u a2

a1.pop_back(); // izbacujemo zadnji clan
a2.push_back(2); // dodajemo clan s vrijednosti 2

cout<<"vector a"<<endl;
for ( int i=0 ; i<a.size() ; i++) {
cout<<a[i]<<endl; //ispisujemo vector a
}
cout<<"vector a1"<<endl;
for ( int i=0 ; i<a1.size() ; i++) {
cout<<a1[i]<<endl; //ispisujemo vector a1
}
cout<<"vector a2"<<endl;
for ( int i=0 ; i<a2.size() ; i++) {
cout<<a2[i]<<endl; //ispisujemo vector a2
}

return 0;
}


Inicijalizacija matrice s vektorima:

cpp code
vector<vector<int> > matrica(10, vector<int>(10)); // inicijalizacija matrice int-ova 10x10


Reference:

Re: C++ Tutorijali

PostPostao/la gagiD » 26 svi 2014, 15:52

slika

String je niz znakova i za stringove vazi sve sto je napisano u prethodnom tutorijalu o nizovima.

String u C se inicijalizira ovako:

c code
char rijec[] = "Text";
char rijec2[5];


Po kovenciji string zavrsava sa znakom '\0' - nul-terminator. Tako da u string rijec2 mozemo staviti najvise 4 znaka jer svaki string zavrsava sa nul-terminatorom. Na osnovu toga string rijec ima velicinu 5.

Ali necemo se zadrzavati na C-ovskim stringovima jer imamo bolje rjesenje u C++-u.


U C++-u postoji biblioteka string, koja znatno olaksava rad sa stringovima.


Inicijalizacija, upis i ispis:

cpp code
#include <iostream>
#include <string>
#include <limits>


using namespace std;

int main() {
string a, b , neki("neki text"); //inicijalizacija

cout<<"Unesite a"<<endl;
cin>>a;

cout<<"Unesite b"<<endl;
cin.ignore( numeric_limits <streamsize> ::max(), '\n' );
getline(cin , b);

cout<<a<<endl;
cout<<b<<endl;

return 0;
}


Postoji bitna razlika izmedu operator funkcije ">>" i funkcije getline().
">>" ce upisivati u string sve dok ne dode do znaka " " , tako da ako upisemo recenicu u string ce otici samo prva rijec.
Funkcija getline() ce upisivati u string sve dok ne dode do '\n' odnosto kraja reda(ENTER). Prije getline() funkcije potrebno je pozvati cin.ignore() funkciju koja je otistiti standardni ulaz.

Upis i ispis za kod iznad:
Kod: Označi sve
Unesite a
Neka recenica za a string.
Unesite b
Neka recenica za b string.

String a:
Neka
String b:
Neka recenica za b string.



Operacije s stringovima:
  • length() - velicina/duzina stringa
  • empty() - proverava da li je string prazan - vraca true/false
  • clear() - brise sadzaj string, a alocirana memorija se ne oslobada
  • insert() - ubacivanje znaka u string
  • push_back() - ubacivanje znaka na kraj stringa
  • substr() - vraca dio stringa
  • replace() - mijenja dio stringa
  • find() - vraca poziciju trazenom znaka/stringa, ako ne postoji vraca string::npos
  • += - dodavanje znaka/stringa na kraj stringa
  • == - vraca true ako su jednaki inace false
  • != - vraca true ako su razliciti inace false
  • + - spajamo dva stringa

Primjeri:
cpp code
string a,b,ab,a1;
// Unosimo nesto u stringove a i b

cout<<"Velicina stringa a"<<a.length()<<endl;

if ( a.empty() ) cout<<"String a je prazan"<<endl;

if ( !b.empty() ) b.clear(); // brise sadrzaj b stringa u slucaju da nije prazan

a.insert(3,1,'A'); // ubacujemo 1 znak 'A' na index 3 u string a
a.insert(5,3,'B'); // ubacujemo 3 znaka 'B' u string a s pocetkom u indexu 5

b.push_back('M'); // ubacujemo znak 'M' na kraj stringa b

a1 = a.substr(5,3); // u string a1 kopiramo dio stringa a - s pocetkom u indexu 5 duzine 3 znaka

a.replace(4,5,"nesto"); // prepisujemo dio stringa a(s pocetkom u indexu 4 duzine 5 znaka) i na to mjesto stavljamo "nesto"

int n = a.find('a'); // trazimo pravo pojavljivanje znaka 'a' i index vracamo u n
cout<<"Provo pojavljivanje znaka a u stringu a je na indexu"<<n<<endl;

a += "kraj"; // dodajemo string "kraj" na kraj stringa a

if ( a == b ) cout<<"stringovi a i b su jednaki"<<endl;

if ( a != b ) cout<<"stringovi a i b su razliciti"<<endl;

ab = a + b; // stringovi a i b spojeni se kopiraju u string ab


Treba paziti da ne "izademo" iz velicine naseg stringa pa tamo pokusamo nesto upisati. Za to postoji funkcija length().

Reference:


11 post(ov)a • Stranica: 1/2.1, 2

Na mreži

Trenutno korisnika/ca: / i 1 gost.