C++ tutorijali... zaključana tema

poruka: 148
|
čitano: 113.221
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
C++ tutorijali...

Primjetio sam da nema ove teme a vjerujem da je možda potrebna,ako nije ili ako se ne pokaže interes za nju ,
neka se i ukine,nije mi namjera pokretati nešto što nema smisla.
Nadam se da će se c++ programeri odazvati i napisati pokoji tut....počevši od nekih osnova.
Ja ću sigurno napisati par tutova,,ne govorim da odmah večeras ili s ovim datumom krećete ,nego kad se stigne,nisam niti ja non-stop on line
ali kad se stigne od drugih obveza uvijek se može nešto napisati...
Za nekolko dana dignem jedan od početka.Prema tome ,ne želim biti sam autor tutorijala nego svi su pozvani tome pridonijeti.

Naravno  pri svakom otvaranju knjige svi bi željeli na programiranje ,a ja ću tome i udovoljiti.

Nadam se da ste bar učitali neko programsko okruženje u kojem možete pisati

kod(Dev ili Visual Studio Express izdanje ,oba su besplatna)...jer mi odmah

počinjemo s programom.



#include <iostream>                                                              //ove dvije crtice znače komentar a
                                                                                             //#include(uključi) zaglavlje <iostream> što znači  

                                                                                            //da to zaglavlje sadrži stnadardne input/output
                                                                                                  //naredbe,to je pretprocesorska direktiva –tamo

                                                                                        //  gdje prvo prevodilac pogleda
 using namespace std;                                                        //uključujemo s ovom deklaracijom(objavom)

                                                                                         //namespace(o tome kasnije) koji sadrži standard naših naredbi iz I/O zaglavlja .
int main()                                                                        //svaki c++ program ima jednu main funkciju koja

                                                                                      //je int tipa(integer)cjelobrojni tip

{
cout<<"Svima na forumu pozdrav!"<<endl;

system("PAUSE");                                                        //ova naredba pauzira naš program dok

                                                                                    //ne stisnemo tipku
                                                                                   //to je uglavnom za one koji rade na

                                                                                  //windows os i s Dev-om...kasnije objasnim za ostale.

return 0;                                                                    //vraća sve na početak ako je program ok
}

                                                       /*cout naredba je naredba za ispis i uvijek se piše cout<<
                                                       <<endl; naredba je u biti manipulator koji naređuje da skočimo u novi redi uvijek

                                                                                   se piše tako
                                                         a sve naredbe u c++-u obavezno završavaju s točkom zarez  ;   */

 


/**/---također između ovih znakova je isto komentar!!!

Glani program je u int main() fukciji čiji body je između {} para vitičastih zagrada

Pri izvršetku progarma zbog naredbe cout<< ispis je:

Svima na forumu pozdrav!

press any.......

a praznina između ispisa i press any..... je zbog manipulatora <<endl;

******************************************************************************************+
/*ok...vidim treba i o stilu nešto reći na malu opasku moderatora.....
sam program možete ispisati ovako */


#include <iostream>

using namespace std;

int main()

{

    
     cout<<"Pozdrav svima na forumu!"<<endl;


     system ("PAUSE");

     retirn 0;

}

*********************************************
Evo to bi se smatralo jednom vrstom pisanja koda koja je pregledna i čitljiva za sve...naravno vi možete pisati
kako vas volja recimo:

#include <iostream>

using namespace std;

int main(){cout<<"Pozdrav svima na forumu!"<<endl;system("PAUSE");return 0;}

Znači možete sve u jednom redu ,ma možete kako hoćete ovisi samo o vama kako ćete se snalaziti u kodu koji pišete!

U ovom zadnjem primjeru sam sve napisao u jednom redu,možete sve pisati u jednom redu ali vjerujem da ćete se izgubiti.
Ono što je bitno pri svakom pisanju koda je preglednost koda!
Početak određenog bloka naredbi koji počinje s vitičastom zagradom mora uvijek imati i svoju završnu vitičastu zagradu {}.
Svaka naredba (osim nekih oblika o kojima ćemo kasnije ) mora završiti s točka zarez  ;

Tokom tutorijala ćete se sami upoznavati s stilom pisanja da sad ne radim poseban tut o stilu pisanja koda ali
uvijek mora biti pregledan...pogotovo recimo kod if-else uvjeta ili petlji ali o tome kasnije ...zato svaki program ću dva puta ispisati
da bi upoznali stil kakav je recimo dobar.....ovisi o vama naravno kako ćete ga pisati i uljepšavati ili ne....
Nadam se da je sad u svezi stila bar malo jasnije..........

 

v_maxcpp

Poruka je uređivana zadnji put pon 1.9.2008 0:00 (v_maxcpp).
 
2 0 hvala 1
16 godina
neaktivan
offline
RE: C++ tutorijali...

Ako pišeš kôd onda ga uredi stilom za kôd kako i treba.

Zahvaljujemo. :)


Entrepreneurs are simply those who understand that there is little difference between obstacle and opportunity and are able to turn both to their advantage.
16 godina
neaktivan
offline
RE: C++ tutorijali...

Sad jedan vrlo karatki osvrt na tipove podataka u c++-u.

int tip je za cijele brojeve.
char za znakove
float
double (oba su za decimalne brojeve)

int x =1;
char = 'a';
double y = 2.456;

float d = 2.0;


Napisao sam primjere svakog tipa i kao se vrši njhova deklaracija u programu.
U programu koji pišete uvijek prije upotrebe neke varijable određenog imena(x ili y) i tipa(int ili double) morate
objaviti (deklaracija) ,a ako ste još toj varijabli dodali i vrijednost onda ste je inicijalizirali tj. deklarirali i definirali.
Naravno ovo su osnovni tipovi kojima se koristimo u c++-u i uglavnom ću se oslanjati na njih pri pisanju koda
,a same detalje o njima i o drugim inačicama tih tipova ,u kasnijim nadopunama,zasad onome tko počinje i
ovo je dovoljno.

char tip navodimo uvijek s  '  '  tim znakovima jer se radi o jednom znaku ,za razliku riječi koje pišemo
između navodnika "",riječi su u c++-u tkz. stringovi a o tome kasnije.
Sad da bi bolje razumjeli ono što smo napisali ,evo i kratki program koji zbraja dva broja tipa int.

#include <iostream>

using namespace std;

 

int main()

 {

       int x = 4;

       int y=3;

       int c;
    
     c=x+y;
     cout<<"Rezultat zbroja x i y je : "<<c<<endl;

    
     system("PAUSE");

     return 0;

 }


Ispis na ekranu će biti:

Rezultat zbroja x i y je : 7


Evo to je bio mali program gdje smo vidjeli kombinaciju upotrebe int tipa i
cout naredbe za ispis i naravno endl manipulatora koji pomiče sve u novi red.
Probajte izostaviti endl i pogledajte što se dogodilo.
Na početku programa smo deklarirali tip i ime naše varijable ali i definiciju jer smo
dodijelili vrijednosti,a varijabla c je samo deklarirana da bismo je upotrijebili za definiciju
male formule zbrajanja i naravno to pridružili varijabli c ,i sve je int tipa!!!
Ispis je naravno pomoću cout<<  naredbe i prvo smo program uljepšali s rečenicom
koja nam govori što smo računali i ispis varijable c i naravno   <<endl;
Primjetite da smo sve završili s točka zarez i to je obavezno!!!!!!
Mogli smo samo napisati i :

cout<<c<<endl;

 

...ispisalo bi se sve isto ali bez rečenice,primjetite kako se vrši ispis same varijable....vježbajte i uočite logiku.

Savjet za biranje imena varijabli je da ne smijete koristiti ključne riječi samog jezika c++(naredbe i ostalo što se odnosi na sastavni dio samog jezika) i pokušjate ne raditi razmake nego recimo moja_varijabla i slično  , imena koja imaju smisla za sami progarm.
Pokušavam što jednostavnije objašnjavati a što više koda kad bude moguće jer kroz logiku programa i
samo pisanje lakše je teoretski dio  svladati, barem je to moje mišljenje.

 

v_maxcpp
Poruka je uređivana zadnji put sri 2.4.2008 14:52 (v_maxcpp).
16 godina
neaktivan
offline
C++ tutorijali...

Super je ideja za ovaj tutorijalNamigiva

Ja pratim temu, a vjerujem da ce se skupit jos ekipe.

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...
...hvala..pišem kad stignem tako da bude i pauza između tutova...a i drugi mogu naravno!!!
16 godina
neaktivan
offline
RE: C++ tutorijali...

Do sad smo se susreli s naredbama cout(ispis ) koja naravno ide zajedno s <<
...i naredbim endl koja se piše također s <<endl;
Sad što to znači << ,to je znak (operator)da podaci idu ka ekranu pod naredbom cout-znači izlaz!
Naravno ,slično značenje je i učinka naredbe endl ali ovaj put učinak je preskakanje u novi red,znači
opet naredba u banalnom smislu riječi "slijedeći podaci u novi red!" to je prijevod.
Sad ,slijedeća naredba je cin.
Ona nam služi za unos podataka s ekrana preko tipkovnice i zatim naravno ide ispis pomoću
naredbe cout.
Ali cin se ne piše cin<< jer je <<operator za tok podataka iz računala(memorije) na ekran a mi moramo
prvo podatke s tipkovnice unijeti u memoriju i tek onda ispisati!
Zato nam služi  >> taj operator toka podataka ali u kombinaciji s cin:
cin>>broj;
Evo u gornjoj naredbi unosimo broj.
Ispisati ćemo ga pomoću cout<<
Sve što smo spomenuli se nalazi u zaglavlju <iostream>(standardni I/O)!
Sad ćemo onaj gornji program preformulirati zajedno s cin naredbom i uljepšati ga s riječima:

#include <iostream>

using namespace std;

int main()

 
{

      int a;

      int b;

      int c;

      cout<<"Unesite prvi broj : "<<endl;

      cin>>a;

      cout<<endl;

      cout<<"Unesite drugi broj :"<<endl;
      cin>>b;
      cout<<endl;
      c=a+b;
      cout<<"Zbroj a+b je c : "<<c<<endl;
     

      system ("PAUSE");
      return 0;

   }

Evo ,sad to ispišite i uočite funkciju naredbe cin,na početku programa smo deklarilari sve što
nam treba u programu i primjetite da smo formuli c=a+b; ispisali tek nakon unosa vrijednosti ,a ne na početku
programa,mogli smo na početku ali program bi ispisao besmislice jer prevodilac prevodi po redu
a tad ne bi imao što staviti u formulu zbarajanja-uočite logiku.
Naravno ono što ne ispišete s cout to se ne vidi na ekranu i svaka deklaracija naravno završava s točka zarez!!!!!
Toliko zasad.

 

v_maxcpp
Poruka je uređivana zadnji put sri 2.4.2008 14:54 (v_maxcpp).
16 godina
neaktivan
offline
RE: C++ tutorijali...

Naravno s ovom programom možemo napraviti sve računske operacije ali samo s cijelim brojevima(probajte još dijeljenje /  i množenje   *  :



#include <iostream>

using namespace std;

int main()

 
{
       int a;
      int b;

     int c;

      cout<<"Unesite prvi broj : "<<endl;

      cin>>a;

      cout<<endl;

      cout<<"Unesite drugi broj :"<<endl;
      cin>>b;
      cout<<endl;
      c=a-b;
      cout<<"Zbroj a - b je c : "<<c<<endl;

           system(PAUSE");

          return 0;

   }

Da bi radili ovaj isti program za decimale morate raditi s tipom float ili double !


include <iostream>

using namespace std;

int main()

 
{

      float a;

      float b;

      float c;

      cout<<"Unesite prvi broj : "<<endl;

      cin>>a;

      cout<<endl;

      cout<<"Unesite drugi broj :"<<endl;
      cin>>b;
      cout<<endl;
      c=a/b;
      cout<<"Zbroj a : b je c : "<<c<<endl;
     

      system ("PAUSE");
      return 0;

   }

Sad možete raditi i s necijelim brojevima.
Umjesto float možete staviti i double.
Naravno,ja ne ulazim u analize koliko koji tip podataka zauzima mjesta u memoriji jer na ovom nivou
učenja za sve koji se upoznavaju s c++-om po meni je bitno shvatiti pisanje i logiku koda a kasnije tokom
tutorijala o zauzeću memorije i drugim teorijskim zahvatima,lakše je kad prođeš malo koda i zatim

teoretski dio lakše "uđe"......ako netko hoće odmah i više teorije neka napiše a i kolege se mogu pridružiti i sami napisati posebno o 
tipovima ako misle da to sad u ovom trenutku fali.

Sad možete i sami vježbati malo tako da sastavite formulu za izračun površine nečega ili obujam....primjenite maštu
i rješavajte takve zadatke...vježbajte.....

U ovom programu ostaviti ću sve isto ali samo da vidite kako program radi za one koji nemaju Windows os i na koji način
program natjerati da pauzira da bismo vidjeli što smo napisali.....primjeniti ću tip char   i    cin>>    na kraju programa da bi to bilo umjesto
system("PAUSE");


include <iostream>

using namespace std;

int main()

 
{
      char pause;          //vi možete staviti i drugo ime

      float a;

      float b;

      float c;

      cout<<"Unesite prvi broj : "<<endl;

      cin>>a;

      cout<<endl;

      cout<<"Unesite drugi broj :"<<endl;
      cin>>b;
      cout<<endl;
      c=a/b;
      cout<<"Zbroj a : b je c : "<<c<<endl;
     

       cin>>pause;       //umjesto system("PAUSE");

      return 0;

   }
Ovdje vidite i prvi put primjenu char tipa s kojim ćemo se još puno puta sresti.

v_maxcpp
Poruka je uređivana zadnji put sri 2.4.2008 14:56 (v_maxcpp).
16 godina
neaktivan
offline
C++ tutorijali...

Ajd da ja probam nesto... :)

 

 

 

Dakle operateri +,-,/,*,% nazivaju se binarnim zbog toga sto djeluju na dvije varijable

Uz njih postoje i unarni koji djeluju samo na jednu varijablu... npr.

-a   ... mijenja predznak
a++  ... uvecava broj za 1
a--  ... umanji broj za 1
++a  ... uvecava broj za 1
--a  ... umanji broj za 1

Razlika kod a++ i ++a je u tome sto se se kod ++a broj prvo uveca za 1 i spremi u varijablu
npr.

a=1
b=++a + 5

Broj a se prvo uveca za jedan a onda se pribroji 5
Reztultat b= 7

dok kod a++

a=1
b=a++  + 5

Broj a se pribroji 5 a tek onda uveca za 1
Rezultat b=6
              a=2


Jednaka stvar je i sa --a i a--

Primjer jednog zadatka...

#include<iostream>
using namespace std;
int main()
{ int a,x;
cout<<"Unesi broj"<<endl;
cin>>a;
x=a--;
cout<<"Kada operacija zavrsi x="<<x<<endl;
cout<<"Kada operacija zavrsi A="<<a<<endl;

system("PAUSE");
return 0;
}

Poruka je uređivana zadnji put uto 20.5.2008 19:19 (Bruno).
 
0 0 hvala 1
16 godina
neaktivan
offline
RE: C++ tutorijali...

Bravo...tako kratko i jasno i to je to....




Eto kolega je jasno pružio osnovno objašnjenje i upotrebu operatora uvećanja i obrnuto i njihovu primjenu u jednostavnom
programu...po meni takvi tutovi su najbitniji za sve koji počinju.
Ja ću nastavit moj dio a naravno da svako može priložiti svoj tut....

.............................................................
Nastavljam s upotrebom još jednog zaglavlja    <cmath>   koje sadrži matematičke "funkcije" koje su definirane već
same po sebi u tom zaglavlju a naravno kasnije u tutovima moći ćete stvarati i svoje funkcije u pravom smislu riječi i definicije
funkcije u c++-u kao samoizvršavajućeg bloka između {} zagrada.
Zasad koristimo već gotove u  spomenutom zaglavlju.

U ovom programu upotrijebiti ću pow() "funkciju" naredbu koja nam izračunava potenciju nekog broja
Zasad vam je dovoljno upamtiti samo oblik kako se ona piše i kako se upotrebljava .

#include <iostream>

#include <cmath>     //naše novo zaglavlje

using namespace std;

 

int main()

  { 

     float x;

     float y;

     float c;

     cout<<"Unesite broj koji ćemo potencirati : " <<endl;

     cin>>x;

     cout<<endl;

     cout<<"Unesite potenciju koju želite : "<<endl;

    cin>>y;

    cout<<endl;

    c = pow(x,y);   //upamtite redoslijed kako unosimo podatke da bi funkcija radila
    cout<< "Rezultat našeg malog programa je : "<<c<<endl;

    cout<<endl;

    system("PAUSE");

    return 0;

  }

 

..............................................................................................................
Znači sama pow() funkcija traži unos brojeva unutar njenih zagrada da bi uopće mogla raditi i to redoslijedom
 se unosi prvo broj koji želimo potencirati a zatim i potencija ....tim redoslijedom.....odvojeni zarezom!!!!Naravno ne zaboravite točka zarez.
Napominjem da je pow() funkcija i njezina definicija već u zaglavlju <cmath>  a sam pojam funkcije je malo složeniji nego ovaj program
ali kako rekoh nadam se da ću ili ćemo doći i do tih tutova kako napredujemo ,ne mora to biti brzo ali neka bude.....
Također imamo i funkcije za izračun kuta u sinusima:

sin(x) - gdje između zagrada unesete kut u radijanima i i dobiti ćete kut u sinusima.Gdje je x kut u radijanima.

Zatim imamo i sqrt(y) ...za izračun korijena   ...gdje je y broj za koji želimo znati korijen

zatim   abs(x)....finkcija koja negativan broj x pretvara u pozitivan broj.....

pow(x,y) ...znači ima taj oblik unosa...eto to je sama logika unosa brojeva u ove funkcije....

naravno napisati ću i par programa s tim funkcijama i postati....
............................................................................................................................................
#include <iostream>

#include <cmath>     //naše novo zaglavlje

using namespace std;

 

int main()

  { 

     float x;

      float c;

     cout<<"Unesite kut u radijanima : " <<endl;

     cin>>x;

     cout<<endl;

    c = sin(x);  

    cout<< "Rezultat našeg malog programa je sinus kuta : "<<c<<endl;

    cout<<endl;

    system("PAUSE");

    return 0;

  }

 ........................................................................................................................................................

#include <iostream>

#include <cmath>     //naše novo zaglavlje

using namespace std;

 

int main()

  { 

     float x;

      float c;

     cout<<"Unesite negativan broj : " <<endl;

     cin>>x;

     cout<<endl;

    c = abs(x);  

    cout<< "Rezultat  je pretvorba u pozitivan broj : "<<c<<endl;

    cout<<endl;

    system("PAUSE");

    return 0;

  }
...........................................................................................................................................................................

Ostala vam je još jedna koju možete sami napisati,kod za nju   sqrt(),logiku ste shvatili.

Slijedeći post ću napraviti if-else uvjete a može i bilo tko od dobrovoljaca ili naravno što smatraju da bi trebalo.
Naravno ako se potkrade pokoja greška,vjerujte nije namjerno i unaprijed se ispričavam.
..............................................................................................................................................................................

Evo dok imam vremena za jedan if-else početak i naravno da ne načinjem bezveze post novi dok ovaj ne bude predugačak.
If(ako)-else(tad ovaj) je u biti uvjetovanje.....ako je prvi uvijet točan tad njega izvrši ako nije tad drugi i to je osnova
if-else uvjeta...najbolje ćete ga shvatiti kroz program .....

#include <iostream>

using namespace std;

 

int main()

 

  {

      int x;

      cout<<"Unesite jedan broj : "<<endl;

      cin>>x;

      cout<<endl;

      if(x>20)

 

     {

          cout<<"Unijeli ste broj veći od dvadeset. "<<endl;

      }

 

      else

 

      {

         cout<<"Unijeli ste broj manji od dvadest."<<endl;

     }

      cout<<endl;

      system("PAUSE");

      return 0;

 }
.....................................................................................................................................................

Ove dvije naredbe su povezane kao što vidite i ide jedna iza druge,to je osnovni obllik koji se koristi
ali uvijek se može modificirati(više if ,jedan else,ili samo if) ali o tome malo kasnije.
Sad priimjetite da savka naredba(uvijet )ima svoj blok {} vitićastih zagrada a same naredbe se nalaze prije
početka svakog bloka {} i to je osnovni oblik koji prisutan u tom obliku.

Prvo posatvite uvijet u if zgradama----bez točka zarez jer ne završavate naredbu
nego počinjete i ako se taj uvijet ne ispuni tad se ide na else(tad izvrši ovaj blok i što se nalazi u njemu)


Na početku programa smo deklarirali ono što nam treba u programu(varijablu int tipa) i odmah je koristimo postavljajući uvjet i to je to.
Opet logikom sam prevodilac dolazi do zaključka idući po redu i na taj način radi ,uvijek prevodi dio po dio ,od predprocesorske direktive
#include(uključi)  to i to zaglavlje  pa redom ,nailazi na main funkciju koja je znak da je to glavno program i uskače u njen blok i izvršava
po redu što dolazi i ako je uspješno program izvršen slijedi na kraju
return 0; 

 što je znak da je uspješno izvršen program(true==0) a (false==1) što je u biti znak sve je ok vrati na početak.
Ja sam pojednostavio objašnjenje programa ali kostur je takav u svim prevodiocima.

............................................................................................................................................................

v_maxcpp
Poruka je uređivana zadnji put ned 10.8.2008 11:45 (v_maxcpp).
16 godina
neaktivan
offline
C++ tutorijali...

Evo mislio sam napisati nesto o logickom tipu podataka prije nego
v_maxcpp prede u grananje

Mogu imati jednu od dvije vrijednosti true(1) ili false(0)
deklarira ih se sa bool ...

#include<iostream>
using namespace std;
int main()

{
bool a,b;


________________________________________
LOGICKI OPERATORI

Negacija          -       !
logicki I  (and)  -      &&   
logicki ILI(or)   -      ||
________________________________________
logicki I vraca jedinicu samo ako su oba uvjeta true
u ostalim situacijama rezultat je 0

npr. Serijski spojen strujni krug sa dvije sklopke
i zaruljom. Zarulja ce svjetliti samo ako su obje sklopke
zatvorene..

0 0 = 0
0 1 = 0
1 0 = 0
1 1 = 1


logicki ILI
ako je jedan od uvjeta ispunjen logicki ILI vraca jedinicu

npr. Paralelno spojen strujni krug sa dvije sklopke
i zaruljom. Zarulja ce svjetliti ako je jedna od sklopki zatvorena
ili ako su zatvorene obje...

0 0 = 0
0 1 = 1
1 0 = 1
1 1 = 1

________________________________________

#include<iostream>
using namespace std;
int main()
{
bool a,b,c,d,e;
cout<<"Ako je logicki podatak A= ";
cin>>a;
cout<<"Ako je logicki podatak B= ";
cin>>b;

c=!a;
cout<<"Tada je suprotno od A "<<c<<endl;
d=a&&b;
e=a||b;
cout<<"Za A= "<<a<<" i "<<"B="<<b<<" (A I B)= "<<d<<endl;
cout<<"Za A= "<<a<<" i "<<"B= "<<b<<" (A ILI B)= "<<e<<endl;
return 0;
}


________________________________________

Dva Podatka mogu se i usporedivati a rezultat usporedbe je bool

Ako je napisani izraz istinit rezultat ce biti 1 a ako nije 0
usporeduje se operatorima usporedbe

<             manje
<=            manje ili jednako
>             vece
>=            vece ili jednako
==            jednako
!=            razlicito

________________________________________

#include<iostream>
using namespace std;
int main()
{
int a,b;
bool c,d,e,f;
cout<<" Prvi broj = ";
cin>>a;
cout<<" Drugi broj = ";
cin>>b;
c=a<b;
d=a>b;
e=a==b;
f=a!=b;
cout<< " Je li "<<a<<" < "<<b <<" odgovor:"<< c<<endl;
cout<< " Je li "<<a<<" > "<<b <<" odgovor:"<< d<<endl;
cout<< " Je li "<<a<<" == "<<b <<" odgovor:"<< e<<endl;
cout<< " Je li "<<a<<" != "<<b <<" odgovor:"<< f<<endl;
return 0;
}

     


Uff.... nadam se da netko ovo cita :)))))))

Poruka je uređivana zadnji put ned 3.8.2008 11:23 (Bruno).
 
2 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...

...Evo vidim da je kolega objasnio bolean tip bool koji ima samo dvije vrijednosti a služi nam jako dobro
u granjanju i radu s petljama i usporedbama ,naravno ja ću obraditi granjanja s usporedbama koje je  kolega Bruno već
obradio ali i njihovu primjenu u if-else uvjetima i njhovom granjanju gdje ćete vidjeti primjenu da li je nešto true ili false
Sad i jedan mali program kao nadopuna da vidite da nije ništa imaginarno nego da true znači 0
a false 1:

Naravno to je bool tip koji ima samo te dvije vrijednosti i niti jednu drugu.
Samo kratki program koji ispisuje brojevne vrijednosti true ili false:
.....................................................................................................................
#include <iostream>

using namespace std;

int main()

 

  {

 

      bool x = true;

      bool y =false;

     cout<<x<<endl;      //ispisati će 0

     cout<<y<<endl;      //ispisati će 1

 

    system("PAUSE");

    return 0';

 }   

.......................................................................................................................

U biti se radi o int tipu ali deklariran kao bool....koga više zanima neka progoogla boolean algebra u tražilici.
kolegi svaka čast na trudu i ja mislim da ljudi ipak ovo prate...ako prate nadam se da su bar malo zadovoljni.
........................................................................................................................

Nasatviti ću s granjanjima ali ne večeras nego eto kad vremena opet uhvatim.
Hvala PROTECTORU na pohvali...volim c++ ali i c# pa mi nije teško bar početke c++-a obraditi.
Sad nastavljam također s primjerom if-else.
***********************************************************************
#include <iostream>
#include <cmath>     //ne zaboravite ovo zaglavlje radi sqrt()

using namespace std;

 

int main()

 {

 

     float x;

     float c;

     cout<<"Unesite broj : " <<endl;

     cin>>x;

     cout<<endl;

     if(x<0)

      {

           cout<<"Broj je negativan!!!"<<endl;

       }

        else

       {

           c=sqrt(x);

           cout<<"Korijen je : " <<endl;

           cout<<c;

          cout<<endl;

        }

        system ("PAUSE");

       return 0;

}

**************************************************************    

#include <iostream>
#include <cmath>

using namespace std;

 

int main()

 {

 

     float x;

     float c;

     float y;

     cout<<"Unesite broj : " <<endl;

     cin>>x;

     cout<<endl;

     if(x<0)

      {

           y=abs(x);

           c=sqrt(y);

           cout<<"Korijen je : "<<endl;

          cout<<c;

          cout<<endl; 

 

       }

        else

       {

           c=sqrt(x);

           cout<<"Korijen je : " <<endl;

           cout<<c;

          cout<<endl;

        }

        system ("PAUSE");

       return 0;

}

 

***************************************************************

 

 Evo u ova dva programa smo promjenili uvjete if-else,u prvom se programu prekida kad unesemo nulu
i nema else uvjeta ,ako unesemo pozitivan broj tad program skaće na else uvjet,,,,,,......u drugom programu
primjetitte razliku....bilo što da unesemo i ovisi što unesemo(pozitivan ili negativan) taj blok se izvršava i to je čitava
osnovna logika if-else,samo je bitno kako mi sami rješavamo kad se što izvršava.
U bloki if....drugog programa probajte shvatiti što sam naprvio,prvo sam morao na početku programa dotati još jednu varijablu
jer u nju ću spremiti izračun abs() funkcije a zatim ću na varijabli y izvršiti sqrt() i zatim ispis c varijable! Sve to da bi radili s negativnim
brojevima,ako unesemo pozitivan tad sve ide na else blok ao i u prvom programu.Vidite kako se u biti igramo.
Kombiniramo..a tako možete i vi.
*****************************************************************
Evo još jedan kratki program usporedbe dva broja i s time počinjemo s logičkim
usporedbama u if-else:
*******************************************************************
#include <iostream>

using namespace std;

 

int main()

 {

     int x;

     int y;

     cout<<"Unesite vaš prvi broj : "<<endl;

     cin>>x;

     cout<<endl;

     cout<<"Unesite vas drugi broj : "<<endl;

     cin>>y;

     cout<<endl;

     if(x==y)

     {

        cout<<"Unijeli ste brojeve koji su jednaki !"<<endl;

     }

     else

      {

          cout<<"Unijeli ste različite brojeve!"<<endl;

       }

 

       cout<<endl;

       system("PAUSE");

       return 0;

}

 ********************************************************************

 Sad proučite ovaj mali program usporedbe dva broja...i vidite da je moguće ili jedno ili drugo
 Naravno možemo uspoređivati da li je jedan broj manji ili veći od drugog ili dali su brojevi koje
smo unijeli veći ili manji od 1000 ili veći manji od nule i mogućnosti usporedbe su

vam otvorene.
Slijedeći programi će uključiti malo kompliciranije usporedbe koje uključuju  logičke &&(isključivo)  ||(ali)  !=(nije jednak)
....naravno kad uhvatim vremena.

*******************************************************************
#include <iostream>

using namespace std;

 

int main()

{

 

     float y;

     float x;

     cout<<"Prvi broj : "<<endl;

     cin>>x;

     cout<<"A sad drugi broj : "<<endl;

    cin>>y;

      cout<<endl;

 

 

       if((x>100)    &&  (y>100))     //obratite pažnju na zagrade!

            {

                cout<<"Oba broja su veća od sto."<<endl;

            }

 

           else  

              {

                  cout<<"Jedan nije manji od sto!" <<endl;

               }

 

          cout<<endl;

         system("PAUSE");

          return 0;

}           

*******************************************************************

Ovako,ovo je početak složenih spitivanja,koristimo se isključivom usporedbom &&  što znači da oba
uvjeta u if uvjetu moraju biti točna i tad i samo tad se izvršava prvi blok unutar if uvjeta a ako nije
tad se skače na else blok i ispiše da nije točno ono što je u if uvjetu(da moraju biti oba veća od sto!).
Obratite pažnju na to kako pišemo if uvjet, točnije na zagrade kojima izdvajamo jednu usporedbu s drugom a između njih znak && usporedbe
i tek onda završavamo zagradama if uvjeta,što to znači?
To znači da prevodioc radi po principu važnosti u c++-u......a rješava prvo zagrade unutar zagrada ,zatim uspoređuje i onda odlučuje.
Važnije su zagrade pa tek onda ostalo...tako prevodilac to rješava i naravno ima o tome puno više ali ukorak s tutovima.
Također treba znati da sama usporedba teče slijeva na desno....ako je prvi zadovoljen idemo provjeriti drugi i tako redom.
U ovom slučaju moraju biti oba i nema else ..ako nisu idemo na else....i to je to.
Prije nego ispišem program s uvjetom || (ili jedan ili drugi) taj znak dobijete AltGr + W   probajte sami umjesto
 && staviti  || i pogledajte što se zbiva,pokušajte sami napraviti točne ispise...ja malo kasnije sve objasnim.

 

 #include <iostream>

using namespace std;

 

int main()

{

 

     float y;

     float x;

     cout<<"Prvi broj : "<<endl;

     cin>>x;

     cout<<"A sad drugi broj : "<<endl;

    cin>>y;

      cout<<endl;

 

 

       if((x>100)    ||  (y>100))     //obratite pažnju na zagrade!

            {

                cout<<"Jedan broj je veći od sto."<<endl;

            }

 

           else  

              {

                  cout<<"Niti jedan nije veći od sto!" <<endl;

               }

 

          cout<<endl;

         system("PAUSE");

          return 0;

}           

*******************************************************************

 

 Evo vidite da nije teško kad primjenite  ||(ili ) , tad je objašnjenje da je bar jedan točan ide if blok
ako nije, ide else blok ,i naravno pazite na zagrade,prilagodite značenje ispisa,i opet ponavljam da
prevodioc ispituje slijeva na desno,prvi pa drugi i ako otkrije da je bar jedan ,bilo to prvi ili drugi
veći od sto to se ispisuje,usporedite ova dva programa i razliku   && i   ||   ta dva operatora.
**********************************************************************

 Jednostavna ispitivanja:
_____________________________________________________________

if(x<5)   :  ispitujemo da li je sadržaj varijable x manji od pet

______________________________________________________________

if(x>5)   :  --|------|--------------------varijable x veći od pet

______________________________________________________________

 if(x==5)   :---------------|-----------|---- jednak broju pet

______________________________________________________________
if(x!=0)   : ------------|...................|   nejednak broju pet

_______________________________________________________ 
if(x<y)   :  da li je sadržaj varijable x manji pd sadržaja varijable y

_________________________________________________________  
if(x>y)   :  -----------------|---------------|----- veci od sadržaja varijable y

______________________________________________________________

if(x==y)   : -------------------|------------da li su sadržaji varijablli jednaki

___________________________________________________________ 

Složena ispitivanja se temelje na uspoređivanje rezultata u zagradama i primjenom već spomenutih
 operatora usporedbe  &&  i   ||  :

if((x<100) && ( y<100))   : Uvjet je zadovoljen ako su i x i y manji od sto

______________________________________________________________ 

if((x<100)  ||(y<100))  :   ....ako je samo jedan manji pd sto.

_____________________________________________________________ 

if(((x<100) ||  (y<100))  &&  ( d<100))  :  ako je prvi ili drugi manji od sto ili obrnuto

                                                                ali svakako treći mora biti manji od sto

                                                                   pratite zagrade!!!! 

____________________________________________________________
if((x<100) ||  (y<100)  ||  ( d<100))  :   barem jedan mora biti manji od sto

___________________________________________________________

if((x<100) &&  (y<100)  &&  ( d<100))  : moraju svi biti manji od sto da bi uvjet bio zadovoljen!!!

___________________________________________________________________________

Sad vidite da možemo u jednom programu imati kombinacija koliko želimo i kombinirati možemo jednostavna ispitivanja s složenim.
Naravno sad se možemo baciti na progarme koji će nam to i dočarati....
**********************************************************************************

#include <iostream>

using namespace std;

 

int main()

 {

 

     float x;
     float y;

     double c;        //malo kombiniram tipove.

     cout<<"Unesite vaš broj prvi : "<<endl;

     cin>> x;

     cout<<endl;

     cout<<"Unesite vas broj drugi : "<<endl;

     cin>>y;

     cout<<endl;

     cout<<"Unesite vas broj treci : "<<endl;

    cin >>c;

     cout<<endl;

     if (((x<55) || (y<55)) && ( c<55))   //ovdje smo postavili onaj već spominjani složeni uvjet

         {

             cout<<"Ova recenica je ako je uvjet u if -u ispunjen !"<<endl;

         }

     else

         {

             cout<<"Ova recenica je ako uvjet u if-u nije zadovoljen!"<<endl;

          }

     cout<<endl;

      system("PAUSE");

      return 0;

}


*****************************************************************

Naravno proučite i shvatite logiku programa i uvidjet ćete da nije teško ,možete mijenjati program
kako vi hoćete samo da vidite rezultate,pratite zagrade,svaki blok mora imati svoj početak i kraj {} i naravno
ne zaboravite točku zarez........
 Sad slijedi složeni program od više if uvjeta zajedno s else uvjetom tako da vidite malo kako se mogu slagati
uvjeti jedan iza drugoga pa čak i jedan unutar drugoga.......
*****************************************************************************

 #include <iostream>

using namespace std;

 

 int main()

 {

 

     float x;

     cout<<" Unesite broj  : "<<endl<<endl;    //sad malo vidite kako se može ubaciti još jedan endl;

     cin>>x;

     cout<<endl<<endl;

    if(x<100)

       {

           cout<<"Broj koji ste unijeli je manji od sto"<<endl;

        }

        else                            //sad ovdje u else dio od prvog if stavljamo još jedan if else dio !!!!

         {

 

                if(x>100)

                      {

                           cout<<"Broj koji ste unijeli je veći od sto!"<<endl;

                      }

                       else

                       {

                            cout<<"Broj koji ste unijeli je jednak broju sto!<<endl;

                       }

 

          }      //ovdje završavate onaj prvi blok else od prvog if  !!!!!!

  cout<<endl;

   system("PAUSE");

  return 0;

}

 

  ***************************************************
Onaj blok koji smo stavili unutar prvog if-else bloka zove se "ugniježđena "petlja a u ovom slučaju je if-else uvjet.

Sjetite se što sam rekao kako prevodilac radi i kako provjerava po redu sve i na taj način se i blokovi jedan po jedan izvršavaju ovisi
koji se uvjet ispuni.....naravno sve ovo se odigrava unutar main funkcije i to je samo jedan aspekt gdje sve stavljamo unutar main funkcije
i zasad je to dovoljno.nadam se da nije teško bilo za razumjeti ovo granjanje petlji u if -else uvjetima...da biste shvatilli još bolje
predlažem da vježbate i vježbate!!!!!Slijedeći poseban post posvetiti    ću switch() naredbi koja nam omogućava granjanje u više grana
 samo jednom naredbom ,i elegantnija je u nekim slučajevima nego if-else granjanje....

***************************************************************************************    

 

 

 

 

 

 

 

 

v_maxcpp
Poruka je uređivana zadnji put ned 10.8.2008 11:48 (v_maxcpp).
16 godina
neaktivan
offline
C++ tutorijali...

svaka čast maxcpp mislim pored toliko tutoriala o c-u, c++ i c# ne kontam kako ti se da pisatiSmijeh u svakom slučaju svaka čast na volji i truduCool  Ako još netko nakon ovoga zatraži neki tutorial o c++ pa ja bi mu opalio crveni u startuBelji se


Atheistic to the point of fanaticism, there u have me in a nutshell so kill me again or take me as I am for I shall not change.
 
0 0 hvala 0
16 godina
odjavljen
offline
C++ tutorijali...

svaka vam čast dečki meni se to nikad nebi dalo pisat!!

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...

Hvala PROTECTORU i Radeon PRO-u...na pohvalama...eto volim c++ pa mi nije teško....pokušat ću sve važnije aspekte c++-a u osnovama obraditi.Hvala još jednom.Zaboravih na kolegu Bruna i njegov odličan doprinos!!!!

Poruka je uređivana zadnji put sub 29.3.2008 17:44 (v_maxcpp).
16 godina
neaktivan
offline
C++ tutorijali...

switch()

if-else nam uvijek dopušta samo dva moguća izbora,možemo ih staviti puno i napisati program samo pomoću if-else petlji
ali imamo  i naredbu koja nam omogućava izbor u kojem smjeru će krenuti izvršavanje a to naravno radimo
preko naredbe switch()
Preko programa koji ispišemo najbolje ćete shvatiti ovu naredbu

_____________________________________________________________________________________________
/* u ovom progarmu ćemo napraviti izračun dva broja pomoću
računske operacije koju sami izaberemo uz pomoć switch() naredbe*/


#include <iostream>

using namespace std;

int main()

 

{

 

     double x;

     double  y;

     int  z;         //ovaj tip nam dolazi u svezu s switch() naredbom.
    
     cout<<"Unesite broj : " <<endl;

     cin>>x;

     cout<<endl;

     cout<<"Unesite drugi broj : "<<endl;

     cin>>y;

     cout<<endl;

   
    //sad pišemo naše izbore  
  
   cout<<"Izaberite računske operacije : "<<endl;

   cout<<"Ako pritisnete jedan - oduzimanje."<<endl;

   cout<<"Ako pritisnete dva - zbrajanje."<<endl;

   cout<<"Ako pritisnete tri-množenje."<<endl;

   cout<<"Ako pritisnete četiri - dijeljenje."<<endl;

 

    cin>>z;   //ovdje unosite vas izbor koji se odnosi na switch()

    switch(z)     //sad switch uzima u obzir broj koji ste izabrali i sakače na case koji je izabran
        {

                   case 1:

                         cout<<x<<" - " <<y<<" = "<<x-y<<endl;          

                       break;

 

                    case 2:

                         cout<<x<<" + " <<y<<" = "<<x+y<<endl;          

                       break;

 

                    case 3:

                         cout<<x<<" * " <<y<<" = "<<x*y<<endl;          

                      break;

 

                      case 4:

                         cout<<x<<" : " <<y<<" = "<<x/y<<endl;          

                      break;

 

                     default:

                          cout<<"Niste unijeli vas izbor!"<<endl;

 

       }//zavrsetak switch() naredbe
   
  cout<<endl;

   system ("PAUSE");

    return 0;

 

}

 

________________________________________________________________

 

Uočite u programu s čime povezujemo našu switch() naredbu-> s izborom koji je naravno int
tipa jer se radi samo o jednostavnom izboru i ne trebaju nam decimale za to.....
Zatim naredba cin>>z ;   kojom unosimo taj izbor i automatski se taj izbor smješta u zagrade switch(z)
naredbe i ona po tome zna koji ste case :  izabrali i taj se izvršava.
Znači :
int z;
cin>>z
switch(z)
{}

je povezano i uvjek na taj način....
Unutar bloka switch() naredbe {} je
case 1: naredba i blok cout<< sve završavamo s
break;
...upamtite da case :    uvijek ide s dvotočkom

 break ;    ide s točkom zarez i znači prekid(sad stani nakon izvršenja i iskoči iz swicth() bloka)

U ovom slučaju je case broj jedan koji smo unijeli i želimo znači oduzimanje i taj case : će se izvršiti
Uočite povezanost kao switch()naredba radi i s čime je povezana i kako se vrši izbor.

Svaki case : ima svoj blok koji završi s break;

....ako ništa ne izaberemo prevodilac traži default naredbu unutar switch() bloka i izvršava taj blok unutar default: naredbe
Ona također kao i case se piše s dvotočkom.

Poslije toga ide završna vitičasta zagrada i to je kraj switch()  naredbe i njenog bloka.

Sad zamislite da se radi o više izbora u nekom programu...toliko možemo staviti i case naredbi.
Tip koji se nalazi unutar switch(int) je int tip i on je znak izbora i ima znači utjecaj na case:

Vidite povezanost i ispišite nekoliko puta sam program,maknite neku naredbu iz njega,promatrajte
što se dešava,vježbajte,na sve te načine se uči i shvaća logika samog programskog koda i pojedine naredbe.

 

Nadam se da je sama switch() naredba sad malo jasnija.Ispričavam se na greškama u pisanju ako ih ima.

Prije samih petlji for malo ćemo razjasniti pojam namespace   ....ali o tome kasnije......
_____________________________________________________________________________________

Prije namespaces.....evo još jedan switch() naredba da malo vježbate:


_____________________________________________________________________________________

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int izbor;

    cout<<"U restoranu u rukama držite elektronski meni i vi ćete izabrati?"<<endl<<endl;

    cout<<" 1.  Pizza Napolitana"<<endl;

    cout<<"2.  Škampi na žaru"<<endl;

    cout<<" 3. Lignje na žaru  "<<endl;

    cout<<"4.  Jaje na oko"<<endl;

    cout<<endl;

 

    cin>>izbor;    //vidite da je uvijek int tipa jer se radi o izborima

    switch(izbor)

        {

             case 1:

                  cout<<" Pizza Napolitana"<<endl;

                      break;
              case 2:    

                  cout<<"Skampi na žaru"<<endl;

                      break;

               case 3:
                  cout<<"Lignje na žaru  "<<endl;
                      break;

                case 4:

                     cout<<"Jaje na oko"<<endl;

                      break;

 

                 default:

                      cout<<"Unijeli ste pogrešan broj i ništa niste izabrali!!!"<<endl;

                cout<<endl;

         }

 

cout<<endl;

 system("PAUSE");

 return 0;

 

}

 

________________________________________________________________

 

Evo ovdje mislim da objašnjenje nije potrebno i vježbajte vježbajte!!!
Prije nego otvorim post o namespace pojmu,malo o samoj dohvatljivosti varijabli

koje deklarirate......pojam globalne varijable i lokalne.....
________________________________________________________________                   

 #include <iostream>

using namespace std;

 

int a=5;      //ovo je globalna varijabla

 

int main()

 {

 

     {     //otvaramo blok unutar main funkcije

 

          int c:     //zato su ovo lokalne varijable

         int b=5;

        c=a+b;     //koristimo zajedno globalnu i lokalnu

       cout<<a+b<<endl;

     }

 

     //cout<<c<<endl;

 

  system ("PAUSE");

   return 0;

 

 

 _________________________________________________________
....znači globalna varijabla je dohvatljiva unutar bloka unutar main funkcije...drugim
riječima globalna varijabla je dohvatljiva svima unutar main funkcije,svim blokovima itd....
ona je univezalna svojom dohvatljivošću.Pokušajte skinuti komentare s cout<<c<<endl;
...i vidjet ćete značenje lokalne varijable...ona je dohvatljiva samo u dotičnome bloku gdje je i deklarirana!!!
Vidite sad razliku globalne i lokalne!!!!!
Sad pogledajmo ovaj program;

________________________________________________________________________________

 

 

 #include <iostream>

using namespace std;

 

int a=5;      //ovo je globalna varijabla

 

int main()

 {

      int c;

      int b=7;

 

     {     //otvaramo blok unutar main funkcije

 

          int c:     //zato su ovo lokalne varijable

         int b=5;

        c=a+b;     //koristimo zajedno globalnu i lokalnu

       cout<<a+b<<endl;

     }

      c=a+b;

     cout<<c<<endl;

 

  system ("PAUSE");

   return 0;

 

 _____________________________________________________________

Sad našu globalnu varijablu koristi i funkcija main() ali i blok unutar funkcije main()
Vidite da globalnu varijablu svi koriste!!!!!Ali ako u slijedećem programu napravimo ovo:
____________________________________________________________________

 

#include <iostream>

using namespace std;

 

int a=5;      //ovo je globalna varijabla

 

int main()

 {

      int c;

      int b=7;

      int a=2;   //deklariramo varijablu a kao lokalnu u main()

     {     //otvaramo blok unutar main funkcije

 

          int c:     //zato su ovo lokalne varijable

         int b=5;

        c=a+b;     //koristimo zajedno globalnu i lokalnu

       cout<<a+b<<endl;

     }

      c=a+b;    //sad se ta varjabla koristi jer je dohvatljiva main() funkciji

     cout<<c<<endl;

 

  system ("PAUSE");

   return 0;

 

 

_______________________________________________________________
Vidite sad razliku ,u lokalnom bloku nismo a deklarirali pa zato koristi globalnu,a u main()
funkciji imamo deklariranu lokalnu a za nju......kad koristimo ista imena za varijable a
različito ih koristimo to se zove preklapanje imena varijabli a kasnije ćemo vidjeti i
preklapanje imena funkcija!
______________________________________________________________

 

Sad sami probajte unutar lokalnog bloka deklarirati int a=9; i vidjet ćete da se
ona koristi prije nego globalna!
Da bismo izbjegli nepotrebna preklapanja i zbunjivanja programa
postoji namespace pojam gdje spremamo sve što želimo
dohvatiti a da se ne miješa međusobno a o tome malo kasnije....
Sad vježbajte i shvatite logiku globalno i lokalno.....
________________________________________________________________

v_maxcpp
Poruka je uređivana zadnji put ned 10.8.2008 11:51 (v_maxcpp).
 
1 0 hvala 1
16 godina
neaktivan
offline
C++ tutorijali...

Pohvale i Bruni..njega sam nenamjerno izostavio..sry...


Atheistic to the point of fanaticism, there u have me in a nutshell so kill me again or take me as I am for I shall not change.
 
0 0 hvala 0
16 godina
neaktivan
offline
C++ tutorijali...

MA znate, trebap bi neki dobar tutorial za C++ programiranje. Gdje da nađem??

hehehehe ma šalim se.. :))

 

Svaka čast v_maxcpp na trudu. To se cijeni.. :)


...code your life...
Moj PC  
1 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...

namespace(pojam )
  imenski prostori
Nadovezujemo se na pojmu globalne varijable...često u velilkim programima dolazi do problema u
njihovom korištenju,u raznim djelovima programa i kad rade program više programera i koriste istu globalnu
varijablu....u različite svrhe i naravno to može dovesti do problema i "sudaranja ".
Pojam namespace služi nam da sve to izbjegnemo.
namespace prostor služi da grupiramo ta naša globalna imena u jedan zaseban prostor zasebnog imena
i može ih biti više i onda samo uzimamo koji nam treba i za koju namjenu!!!
tako se varijable ili naredbe ili imena mogu staviti u svaki svoj namespace i zato neće doći do bilo kakvih direktnih
preklapanja.
Kroz par programa naravno jednostavnih pokazati ćemo kako funkcioniraju namespace.
Da bi ih koristili na početku programa a poslije include direktiva a prije main()  funkcije u program
ih uključujemo s naredbom using!!!!
opći oblik same deklaracije namespace je:

namespace ime_koje_dajemo

{

      //sadržaj namespace
}

 ....vidite kao se namespace deklarira i definira prije main funkcije a poslije te
deklaracije naravno i definicije koristimo using :

using namespace ime_koje_smo_dali;   //naravno točka zarez
 ...i tek sad :

int main()
{}
_______________________________________________________
Sad možemo na kratke programe koji nam sve to pokazuju i način kako doći
do onoga što smo definirali unutar bloka namespace s operatorom razriješenje a to je
dupla dvotočka    ::    
sjetite se samo onog izraza
usin namespace std;
a u tom imenskom prostoru nam se nalaze naše naredbe cout i endl;
sad kad ne bismo napočetku pisali using namespace std;(standard-std)
morali bi prije svake naredbe cout ili endl pisati :
std::cout<<"I tako dalje<<std::endl;
na taj način mi govorimo prevodiocu da koristimo naredbu cout iz imenskog prostora std;
Da bismo došli do naredbe cout iz tog namespaca koristimo dvotočke duple::
E sad ćemo napisati vlastite namespace da vidite kako to funkcionira......
_________________________________________________________________

 

 #include <iostream>
namespace moj   //ovdje stvaramo vlastiti namespace
{
    int a =0;
}
 using namespace moj;  //ovdje ga uključujemo  
using namespace std;

int main()
{
   
  cout<<"Unesite broj : "<<endl;
  cin>>a;
  cout<<"Unijeli ste " <<a<<endl;  
   
   
   
    system("PAUSE");
    return 0;
}

 ____________________________________________________-

 

/*Primjetite da nema deklaracije int a;   unutar main funkcije jer koristimo namespace
i tako smo je mogli koristiti je smo naveli  using naredbu  , a  sad bez nje:*/
_______________________________________________________________

 #include <iostream>
namespace moj   //ovdje stvaramo vlastiti namespace
{
    int a =0;
}
 
using namespace std;

int main()
{
   
  cout<<"Unesite broj : "<<endl;
  cin>>moj::a;
  cout<<"Unijeli ste " <<moj::a<<endl;  
   
   
   
    system("PAUSE");
    return 0;
}

________________________________________________________

A u ovom programu vidite kako smo pomoću operatora razriješenja  ::
došli do naše varijable ,to radimo bez korištenja using naredbe.
Malo proučite ove programe jer slijedi još malo o namespace-u.
_________________________________________________________

Naravano sad ćem napisati dva namespace-a i koristiti nihove varijable i kroz programe najlakše
shvatite logiku:
___________________________________________________________________________

 

#include <iostream>
namespace moj_prvi      //prvi namespace
{
   int a=0;
}
namespace moj_drugi   //drugi namespace
{
    int a = 0;
}            
using namespace std;

int main()
{
    int c = moj_prvi::a=6;   
    cout<<"Prikaz kako koristimo namespace. "<<endl<<endl;


    cout<<"U varijablu c smo spremili a iz moj_prvi : "<<c<<endl;


    int v = moj_drugi::a=8;
    cout<<"U varijablu v smo spremili varijablu a iz moj_drugi :"<<v<<endl;


    int z = c+v;
    cout<<"Sad smo sve fino zbrojili i spremili u z varijablu : "<<z<<endl<<endl;

 


    system("PAUSE");
    return 0;
}
______________________________________
_______________________________

U ovom programu smo vidjeli kako koristiti namespace.
____________________________________________________________________

 

#include <iostream>
namespace moj_prvi
{
   int a=4;
}
namespace moj_drugi
{
    int a = 67;
}
using namespace moj_prvi;
using namespace moj_drugi;            
using namespace std;

int main()
{
    int c =moj_prvi::a;
    cout<<"Prikaz kako koristimo namespace. "<<endl<<endl;
    cout<<"U varijablu c smo spremili a iz moj_prvi : "<<c<<endl;
    int v = moj_drugi::a;
    cout<<"U varijablu v smo spremili varijablu a iz moj_drugi :"<<v<<endl;
    int z = c+v;
    cout<<"Sad smo sve fino zbrojili i spremili u z varijablu : "<<z<<endl<<endl;
    system("PAUSE");
    return 0;
}
____________________________________________________________

 

Sad sami uočit koje promjene sam napravio i vidite kako se može koristiti namespace
 i uvijek naznačite o kojoj varijabli je riječ kad je korstite koristeći operator
razriješenja   ::      duplu dvotčku!!!!!

O imenskim prostorima se može još pisati jer oni se mogu stavljati jedan u drugi
zatim postoje i bezimeni imenski prostori,i naravno da bi različiti dijelovi programa tj.
njihove funkcije koristile svaka poneki imenski prostor koji mi definiramo
moramo te imenske prostore podijeliti u datoteke i uključiti ih u program
ali ovo što sam zasad opisao  o namesapace-u je dovoljno da ih razumjete i
shvatite zajedno s pojmom globalno i lokalno........
Slijedećim postom započinjemo objašnjavati for petlje............
_____________________________________________________________________

 

v_maxcpp
Poruka je uređivana zadnji put ned 10.8.2008 12:01 (v_maxcpp).
16 godina
neaktivan
offline
RE: C++ tutorijali...
Hvala na podršci!!!
16 godina
odjavljen
offline
C++ tutorijali...

svaka pohvala dečki...Coolzahvaljujući vama počeo sam raditi na C++....hvala na poticaju

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...

Petlje
...petlja for()

Da bismo razumjeli petlju for najprije ćemo napisati program i tako je najlakše
po meni objasniti petlje--kroz programe :
______________________________________________________________

 

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    int y=10;

    int c;

 

    for(x=1;x<=y;x++)

         {

              c=x+x;

           cout<<endl;

           cout<<"zbroj  x+x = "<<c<<endl;

          cout<<"x je = "<<x<<endl;

 

          }

cout<<endl;

system("PAUSE");

return 0;

}

 

 

________________________________________________________________

Kad ispišete program i pokrenete ga dobiti ćete lijepi niz brojeva i ako malo
bolje pogledate sve ima svoje kako i zašto.
Sam program počinje s varijablama koje nam trebaju i koje ćemo koristiti...
zatim for petlja   ...ona se uvijek piše u tom obliku :

 

for(početna vrijednost odakle kreće for petlja ; ovdje pišemo vrijednost koliko puta će se petlja vrtiti ; koraci za koje se petlja vrti)

{

      //ovdje pišemo naše zahtjeve

}

 

Petlja for unutar sebe tj.običnih zagrada mora imati uvijek dvije točka zarez  for(;;) a između njih pišemo naše uvijete u petlji
i ako ih ima više možemo ih razdvajati zarezima....inače mala digresija ....sama petlja se može napisati koristeći samo for(;;)
ali onda se radi o beskonačnoj petlji...o tome kasniije.
Bitno je znati da zadnja vrijednost x++ utvrđuje korak petlje,probajte napisati x=x+2 i sad ste odredili korak petlje po dva i ispisati
će vam brojeve počecši od jedan pa po dva i njhove zbrojeve!!!!

_________________________________________________________________________________________________

 

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    int y=10;

    int c;

 

    for(x=1;x<=y;x=x+2)

         {

              c=x+x;

           cout<<endl;

           cout<<"zbroj  x+x = "<<c<<endl;

          cout<<"x je = "<<x<<endl;

 

          }

cout<<endl;

system("PAUSE");

return 0;

}

 

_______________________________________________________________-

 

Vidite sad kako miijenjate korak petlje ,sad ide po dva,ali mi bismo sad željeli da nam ispiše sve parne brojeve
,zato promjenimo početnu vrijednost petlje   x=2;
______________________________________________________________________

 

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    int y=10;

    int c;

 

    for(x=2;x<=y;x=x+2)

         {

              c=x+x;

           cout<<endl;

           cout<<"zbroj  x+x = "<<c<<endl;

          cout<<"x je = "<<x<<endl;

 

          }

cout<<endl;

system("PAUSE");

return 0;

}

_______________________________________________________________________

Sad pogledajte ispis i vidite parne brojeve!!!!!!!
Probajte sad ispisati neparne brojeve sami   ...nije teško.
Ok,mi smo imali zadanu veličinu   y   do koje će se vrtiti naša petlja ,ali mi i to možemo izmjeniti
samo stavite broj :
________________________________________________________________________-

 

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    int y=10;

    int c;

 

    for(x=2;x<=20;x=x+2)

         {

              c=x+x;

           cout<<endl;

           cout<<"zbroj  x+x = "<<c<<endl;

          cout<<"x je = "<<x<<endl;

 

          }

cout<<endl;

system("PAUSE");

return 0;

}

______________________________________________________________

/*Sad opet proučite ispis i vidite što koji dio u petlji for radi,naravno svaki dio mora biti odvojen s točka zarez  ;   !!!!!!
_______________________________________________________________________________________

Evo samo još jedan primjer kako bi bilo lakše shvatiti for petlju........*/

________________________________________________________________________________

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    cout<<"Izvan i prije for petlje je ova rečenica"<<endl<<endl;

 

    for(x=2;x<=20;x=x+2)

         {

                    cout<<"x je = "<<x<<endl;

 

          }

cout<<endl;

cout<<"Opet izvana for petlje i nakon nje!!!!!"<<endl<<endl;

cout<<"Ako izvan zatražimo ispis x---uvijek će biti onaj zadnji + još jedan korak ="<<x<<endl;

cout<<endl;

system("PAUSE");

return 0;

}

________________________________________________________________________

 

Ispisati ću još koju petlju ali malo kasnije..........vježbajte.
____________________________________________________________________

 

 #include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    cout<<"Izvan i prije for petlje je ova recenica"<<endl<<endl;

 

    for(x=25;x>5;x=x-2)

         {

                    cout<<"x je = "<<x<<endl;

 

          }
          cout<<endl;

cout<<"Opet izvana for petlje i nakon nje!!!!!"<<endl<<endl;

cout<<"Ako izvan zatrazimo ispis x---uvijek ce biti onaj zadnji +1  :  "<<x<<endl;

cout<<endl;

system("PAUSE");

return 0;

}
___________________________
___________________________________

Ova petlja radi korake unazad zbog x-2 koraka!!!A ovaj kod ispod je ista petlja ali ide i u minus
područje......

_________________________________________________________________

 

 #include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

    cout<<"Izvan i prije for petlje je ova recenica"<<endl<<endl;

 

    for(x=25;x>-5;x=x-2)

         {

                    cout<<"x je = "<<x<<endl;

 

          }
          cout<<endl;

cout<<"Opet izvana for petlje i nakon nje!!!!!"<<endl<<endl;

cout<<"Ako izvan zatrazimo ispis x---uvijek ce biti onaj zadnji +1  :  "<<x<<endl;

cout<<endl;

system("PAUSE");

return 0;

}
___________________________________________________________________

U samo nekoliko primjera smo pokazali mogućnosti petlji a one su višestruko korisne
pri pisanju velikih programa,igre,grafika i dr.
Uskoro ćemo prijeći na petlje u petlji...tj. na pojmove vanjske i unutarnje petlje
gdje još unutarnju petlju nazivamo i ugniježđena petlja.
___________________________________________________________________

#include <iostream>

using namespace std;

 

int main()

 

{

    int x;
    int y;
    cout<<"Prije vanjskih i unutrasnjh petlji ."<<endl<<endl;
    for(x=0;x<3;x=x+1)


    {


       cout<<"Ovo je prva ili vanjsaka petlja i njezin x : "<<x<<endl;

 


       
       for(y=0;y<4;y++)   //ovo je isto kao i y=y+1
       {
             cout<<"Ovo je unutarnja petlja i njen y = "<<y<<endl;
       }

 


        
    }                   //zatvaramo vanjsku petlju

 


    cout<<endl<<endl;
    cout<<"Nakon svih petlji ."<<endl;
    cout<<endl;                                  

 

system("PAUSE");

return 0;

}
________________________________________________________

Ovaj ovdje program zorno prikazuje funkcioniranje petlje u petlji.
Glavna nam je vanjska petlja i ona se prva vrti i za svaki korak vanjske petlje unutrašnja se mora izvrtiti
do kraja.....znači unutrašnja petlja se ukupno izvrti tri puta koliko koraka ima vanjsaka  0,1,2 koraka ima vanjsaka
a unutrašnja ima 0,1,2,3 i sad znači za svaki x ,y se izvrti do kraja.....i to je logika petlje u petlji!!!
_____________________________________________________________________________

Sad taj isti program možemo napisati kao petlja po petlja   ......jedna iza druge!!!
___________________________________________________________________________

 

 #include <iostream>

using namespace std;

 

int main()

 

{

    int x;
    int y;
    cout<<"Prije  petlji ."<<endl<<endl;
    for(x=0;x<3;x=x+1)
    {
       cout<<"Ovo je prva  petlja i njezin x : "<<x<<endl;
    }
    cout<<endl;
    cout<<"____________________________________________"<<endl;
       for(y=0;y<4;y++)   //ovo je isto kao i y=y+1
       {
             cout<<"Ovo je druga petlja i njen y = "<<y<<endl;
       }
       
                       //zatvaramo vanjsku petlju
    cout<<endl<<endl;
    cout<<"Nakon svih petlji ."<<endl;
    cout<<endl;                                  

 

system("PAUSE");

return 0;

}
______________________________________________________________

Evo ovo je jedna pa druga petlja i tako ih možemo slagati puno...i kod jedne vrste petlje i kod
druge morate paziti na vitićaste zagrade i koja kojoj petlji pripada i tako završiti pravilno
....to najbolje radite uvlačeći svaki put novi blok vitićastih zagrada da znate koja pripada kojoj
...uvijek u istoj ravni neka budu vitičaste zagrade od iste for petlje.

Naravno postoji i petlja koja je nedozvoljenog oblika:
___________________________________________________________________

 

for(x=0;x<8;x++)

{

  cout<<x<<endl;

for(y=0;y<9;y++)

}

{

cout<<y<<endl;

}

___________________________________________________________________

 Ovo što sam pozelenio je petlja koja je neispravna  i shvatite sami nelogičnost ove petlje u petlji
ne može slijedeća petlja biti unutar ispisa prve petlje, a ispis druge posebno...to je stvarno nelogično!!!!!
___________________________________________________________________________________
Prije nego otvorim opet slijedeći post s kojim ću početi govoriti i
pisati o while i do-while petlji   napisati ću još jedan oblik for petlje iako nije ništa novo ali oblik je malo drugačiji
...naravno zaboravio sam na beskonačnu petlju i taj oblik petlje svakako izbjegavajtei ako radite u Dev-u
ili u Visual izdanju c++-a nije problem izaći iz beskonačne petlje(samo ugasite program) za druga okruženja ne
garntiram i to radite na vlastitu odgovornost......!
______________________________________________________________________________________

#include <iostream>

using namespace std;

 

int main()

 

{

 

    int x;

 

 

    for(x=25;x>-5;x=x+2)

         {

                    cout<<"x je = "<<x<<endl;

 

          }

system("PAUSE");
return 0;
}

__________________________________________________________________

Ovo iznad je progarm koji prelazi u beskonačnu petlju jer je program u nemogućnosti
izvršiti zadano unutar petlje for....proučite i vidjet ćete da nema granice do koje
program mora doći da bi završio petlju!!!!!!Znači Neprekidna petlja!
-----------------------------------------------------------------------------------------------------------

Sad još jedan oblik beskonačne petlje ali koju možemo iskoristit za odvijanje programa
koji možemo našom voljom prekinuti ubacivši if uvjet......
-------------------------------------------------------------------------------------------------------------

 

  #include <iostream>

using namespace std;

int main()
{
     double broj=0.0;
     double zbroj=0.0;
    int x=0;
    char izbor = 'n'; //ovdje upotrbljavamo znak slovo n
    for(;;)
    {
        cout<<"Unesite broj : "<<endl;
        cin>>broj;
        ++x;   //ponovite unarne oblike povećanja 
        zbroj +=broj;   //ovdje je također operacija zbrajanja dva broja
        cout<<endl;
        cout<<"Da li zelite nastaviti unijeti drugi broj(d)?(unesite n za kraj)? "<<endl;
        cin>>izbor;
        if((izbor == 'n') || (izbor == 'N'))
           break;
    }
    cout<<endl<<endl;
    cout<<"Prosjek od : "<<x  <<"  vrijednosti koje ste unijeli je: "
    <<zbroj/x<<" . " <<endl;
        
   
system("PAUSE");
return 0;
}

--------------------------------------------------------------------------------------------------------

Evo ovo vam je program za kraj o for petlji i proučite ga detaljno...u njemu je sve što ste dosad naučili.
Takoreći i svi tipovi koje koristim su u njemu.....for(;;) je znak za beskonačnu petlju i nakon svakog unosa ona stane zbog
cout i cin kombinacije    a    varijabla x   se svaki put uveća za jedan i pamti koliko puta
ste napravili unos.....doslovno znači uvećaj prvo   i zapamti....i to je naš brojač koji nam koristi da bismo izračunali
prosjek naših unesenih brojeva !!!U if uvjetu je break; što znači prekini ako je uvjet i if ispunjen...i proučite
ono što sam rekao o načinu kako prevodioc kreće u prevođenje i korak po korak nije teško!
Pogledajte kako sam pisao ispise,sve se poštiva i točka zarez i vitičaste zagrade...sve...sama beskonačna petlja
u tom obliku se prepoznaje po tom izrazu   for(;;)  .

 +=  je zbrajanje
-= je oduzimanje

*= je množenje

/= djeljenje
...dva broja na kojima želimo izvršiti te operacije.

Nakon što ste prošli sve do ovog programa nadam se da ovaj možete s lakoćom
shvatiti.Samo vježbanjem i upornošću se uči...tako sam i ja i samtram da još mogu samo naučiti
u c++-u jer njegovim kombinacijama gotovo da nema kraja.
Ima još par petlji koje bih vam mogao pokazati..recimo sama petlja može raditi unutar jedne
petlje dvije petlje...i baš zbog obima petlji do sad ne želim se zapetljati pa ni vas...
Zato slijedeći post počinjemo s while i do-while petljama.
______________________________________________________________________________________________

 

 

 

v_maxcpp
Poruka je uređivana zadnji put ned 10.8.2008 11:59 (v_maxcpp).
16 godina
neaktivan
offline
RE: C++ tutorijali...

Hvala...svaka podrška je dobrodošla!!
@coder-u

 

v_maxcpp
Poruka je uređivana zadnji put pon 31.3.2008 0:07 (v_maxcpp).
16 godina
neaktivan
offline
RE: C++ tutorijali...

while(petlja)----uvjetovana petlja

U svim dosad programima mi smo da bi više puta htleli nešto unijeti ili pitati pomoću programa morali ponovo pokretati
programe i to svaki put,e sad da to ne bismo morali postoji znači while(dok je nešto) petlja s otprilike takvim prijevodom.
U if uvjetu smo imali ako je nešto točno tad true ili false tj.else,a kod while je doslovno :dok je uvjet ispunjen neka blok unutar while petlje radi!!
Kako to prekinuti?
Tako da unutar while petlje postavimo pitanje da li želimo kraj ili nastavak poslije svakog unosa ili više unosa,ili nakon neke for petlje.
Upamtite da program odmah ispituje uvjet unutar while petlje i odmah ide na izvršavanje i naravno prvo provjera.
To govorim zato jer kad budemo kod do-while petlje ,ona prvo uvjek izvrši program koji zadamo jednom i tek onda provjerava uvjet u while petlji.
No,dosta priče jer kroz primjere to najbolje shvatite:
____________________________________________________________________

 

#include<iostream>
using namespace std;


int main()
{
int broj;
int broj2;
int zbroj;
int uvjet;
                                                                                        //ovdje smo deklarirali nase varijable int tipa
uvjet = 5;                                                                       //ovdje dodjelimo nasoj
                                                                                        //varijabli uvjet  vrijednost pet   while(uvjet== 5)        

                                                                                       //a u while petlji stavljamo uslov
                                                                                       // dok nam je uvjet 5.program se nastavlja
       {
         cout<<"unesite broj"<<endl;
         cin>>broj;
         cout<<"Unesite drugi broj"<<endl;
         cin>>broj2;
         cout<<endl;
         zbroj = broj + broj2;
         cout<<"Zbroj brojeva je : "<<endl;
         cout<<zbroj<<endl;
         cout<<"Za ponovo unesite 5."<<endl;

         cout<<"Za kraj unesite bilo koji broj osim pet"<<endl;
         cin>>uvjet;
       }


cout<<endl;
system("PAUSE");
return 0;
}

____________________________________________________________

Pošto sam koautor nekih programa mogu si dozvoliti preformuliranje nekih programa,ako
moderatore zanima mogu pitati ako nešto misle da je krivo.Inače sve programe možete naći
i googlanjem (svemogući googl).
Na početku programa smo deklarirali naše varijable koje nam trebaju u programu
i naravno program radi jednostavan zbroj i ispisuje rezultat,da ne bismo svaki put pokretali program
i vršili izračun uvelli smo while petlju i naravno sve stavili u blok  naše nove petlje   {}  .
Unutar petlje mi vršimo i pitanja ako želimo ponoviti ili ne,već dobro poznatim cout pitanjem i cin unosom i ako
je uvjet u petlji ispunjen(koji smo na početku zadalil ) tad se program nastavlja u protivnom
izlazi iz bloka i završava program.....jednostavno.....
Probjate prvo samo ispisati program bez
 int uvjet = 5;
 while(uvjet==5)

i onog pitanja cout i cin i narano {} zagrade while petlje
Vidite što sam ,izdvojio-glavne značajke while uvjeta i dobiti ćete "običan " program i naknadno sve stavite
kad to sve napišete,na taj način se sami učite stavljati while petlju ili stavljanje određenog dijela programa za koji

smatarmo da nas treba pitati za nastavak...pri igrama recimo.

Svi ovi  programi već postoje da ne bi netko mislio da mi tu nešto novo izmišljamo.

______________________________________________________________

Naravno,svi ovi programi s while uvjetima se mogu napisati i s drugim vrstama petlji,
ali puno elegantnija je while petlja zar ne?
Još da nas pita slovo za unos umjesto broja ,no i do toga ćemo doći!
Sad još jedan primjer da biste bolje shvatili while naredbu i taj program više puta
izvršite da bi vam "legao" s while naredbom .........
______________________________________________________________

 

 

#include<iostream>
using namespace std;
int main()


{
int odgovor;                                                                                                                              //ovdje unosimo varijablu tipa int(uvjet)
int uvjet = 5;                                                                                                                            //ovdje joj dodajemo vrijednost pet
cout<<"Prije while petlje!"<<endl;//ispis na ekran prije petlje
cout<<"_____________________________________________________"<<endl;
cout<<endl;


    while(uvjet==5)                                                                                                                  //znaci sve dok ne pritisnemo pet!
       {
         cout<<"Ovdje se while petlja izvrsava i ispisuje na ekran!"<<endl;
         cout<<endl;
  
        cout<<"Unesite : 5=nastavak ili 6=kraj"<<endl;                                                              //ovdje pitamo za nastavak ili kraj!
        cin>>uvjet;                                                                                                                     //ovdje unosimo(cin) uvjet tipa int!

        cout<<endl;
                                                                                                                                                //taj unos se ne vidi jer je unos a ne ispis kao cout ali
                                                                                                                                                // kad otipkamo sa tipkovnice tad se vidi!
                                                                                                                                               //tome sluzi cin naredba(unos preko tipkovnice trenutno!)
         cout<<"Zadnji dio koji se ispisuje(unutra)"<<endl;
                                                                                                                                                //sa nasim odgovorom se ispisuje i ovo
                                                                                                                                               //zajedno sa slijedecim cout!
       }

 


cout<<endl;
cout<<"_______________________________________________________"<<endl;
cout<<"Poslije while naredbe!"<<endl;                                                                              //ispis kad upisemo 6!
cout<<endl;

 


system("PAUSE");
return 0;
}

 

_______________________________________________________________

Evo u ovom programu su i komentari s strane i nadam se da ste dosad naučili snalaženje u kodu tako da
vam neće biti teško čitatai komentare s strane i protumačiti ih,nakon što vježbate s ova dva programa
prijeći ćemo na uljepšavanje while petlje da nas pita slovima da ili ne ali to malo kasnije.....
Sad ide taj program i sve je isto ili bar slično kao i u prošlom programu ali ovaj put uvijet je unos slova
čiju varijablu smo deklarirali kao tip char i naravno spremili slovo 'n' kao znak za kraj u uvjetu while   !!!!
Primjetite samo još jednu dolje novinu     system("CLS");   TO JE ZA WINDOWS OS   i kad
se ponavlja program kad stisnemo 'd' ekran nam je čist kao ispočetka .....probajte taj system izbrisati i vidjet ćete razliku
CLS--doslovno clear screen->očisti ekran.
_______________________________________________________________

 

 #include<iostream>
using namespace std;


int main()
{


int zbroj;                                                                                //deklaracija varijable zbroj(tip int)koja nam sluzi za definiciju formule
int x;
int y;
                                                                                               //deklaracija varijable x i y!
char odgovor;                                                                         //deklaracija varijable odgovor tipa char u koji mozemo spremati slovo kao znak!
odgovor = 'd';                                                                        //dodjela varijabli char slovo 'd' uvijek kad je slovo u tom obliku!(definicija)


 while(odgovor!='n')                                                               //doslovno:dok ne stisnemo slovo n petlja while radi svoj posao!


      {
           cout<<"Unesite x :!"<<endl;
           cin>>x;                                                                                //uvijek nakon nekog zahtijeva za unos preko tipkovnice mora
                                                                                            //ici naredba za unos,znaci jedna iza druge!
           cout<<"Unesite y :!"<<endl;
          cin>>y;
          zbroj = x + y;                                                                    //definicija nase formule  u kojoj se nalazi varijabla broj koju unosimo sami!
          cout<<"zbroj  brojeva je :"<<endl;                                  //uljepsavanje naseg programa sa ispisom
          cout<<zbroj;                                                                   //ispis rezultata nase formule koji je spremljen u varijablu zbroj!
          cout<<endl;                                                                     //manipulator endl da bi napravili razmak
          cout<<"Zelite li ponovo?(d/n)"<<endl;                             //unosom 'd' ponavlja se, a unosom 'n' izlazimo iz petlje!
                                                                                          //jer u uvjetu petlje while je uvjet da se izvrsava dok ne stisnemo n!
           cin>>odgovor                                             //i opet nakon upita u cout iznad mora doci unos, a u ovom slucaju  varijabla odgovor!

 

          system("CLS");                                                                 // nova naredba ali za windows os
     }

cout<<endl;                                                                      //ovo je samo da nam ljepse izgleda program!

 
system("PAUSE");
return 0;
}

 _____________________________________________________________________________

 

Evo proučite ovaj gore program i svaki redak koda proučite jer stvarno nije teško
za razumjeti i svako moje objašnjenje više od onoga što sam napisao bi možda bilo
suvišno ,naravno uvijek tko misli da treba nešto dodati slobodno neka doda!
______________________________________________________________________________

Sad nakon while petlje prelazimo na do-while petlju........

do-while petlja je tamo gdje želimo da se program prvo izvrši pa tek onda provjeri uvjet ili nas pita za nastavak
....tome služi do-while petlja
Petlja sadrži sve deklaracije kao i while petlja ali ovo upamtite......
while uvijet uvijek dolazi nakon završetka do bloka i while uvijet završavamo točkom zarez!!!!!!!

Naravno u programu ćmo to bolje pokazati ,pitanje koje nas pita za nastavak ili ne mora biti unutar do-bloka{}
kao i kod prethodnih while petlji u prije napisanim programima...znači glavna izmjena u programu je da smo
prije while uvjeta stavili do(radi,izvrši prvo) petlju i tek onda uvjet!!!!!
U programu koji slijedi naravno proučite redoslijed kako je pisan kod......
Recimo odgovor= 'd'; deklaraciju tj definiciju smo mogli staviti unutar do {} zagrada na početku programa,
i tako igrajte se malo ,izmjenite imena varijabli i poredak i pogledajte koje  greške vam program javlja
i tako se uči ,a znajte da je učenje na pogreškama i pogotovo ako ih otkrijete nakon mukotrpna traženja
jedan vrlo uvjerljiv način učenja!!!
__________________________________________________________________________________
#include<iostream>
using namespace std;
int main()
{
                                   //unos nasih deklaracija koje nam trebaju u programu!
int x;
int kvadrat;
char odgovor;
odgovor='d';
    do                                                                     //ovdje zapocinjemo nasu do-while petlju sa do(kreni)
        {
          //odgovor='d';                                         //maknite oznake komentara a gore istu definiciju zbrišite i opet isto
                                                                        // varijabli odgovor dodijelili slovo 'd' unutar petlje do!!!!!
         cout<< "unesite broj : "<<endl;
         cin>> x;
         kvadrat = x * x;
         cout<<"Kvadrat x je:";
         cout<< kvadrat<<endl;        
         cout<< endl; cout << "Ako zelite nastavak (d) ako ne (n)"<< endl;
         cin>>odgovor;                                         //unutar petlje do pitamo za nastavak!
        
          system("CLS");                                    //samo za windows os                                         
                                          
        }
while(odgovor=='d');                         //tek sad postavljamo while uvijet!!
                                                        //!U ovom obliku do-while ,while uvjet uvijek zapamtite
                                                      // uvijek zavrsava sa tockom zarez!!!!!
cout<<endl;                                   //ovo je samo da nam ljepse izgleda program!
system("PAUSE");
return 0;
}



______________________________________________________________________________

 

 

Znači iz ovih programa možemo zaključiti da se while petlja neće niti jednom izvršiti ako uvjet nije ispunjen
za razliku od do-while petlje gdje se prvo izvrši jednom pa tek onda pita za uvjet!!!!!!!!

 

 

 ______________________________________________________________________________

S ovim postom završavamo s while i do-while petlji a slijedeći post će biti o slučajnim brojevima ,ili grafika
ili polja....još se nisam odlučio ali između tog izbora očekujte rezultat.....
_______________________________________________________________________________

v_maxcpp
Poruka je uređivana zadnji put ned 10.8.2008 11:54 (v_maxcpp).
16 godina
neaktivan
offline
C++ tutorijali...

Funkcije

Evo odlučio sam se za funkcije u ovom postu....
Funkcije su samoizvršavajući blok koda s točno određenom svrhom i ciljem koju ćemo koristiti u programu gdje nam zatreba
što je i njezina prednost ...samo je pozvete ma gdje ona bila ako je pravilno spremljena da se do nje može doći.
Funkcije možemo podijeliti ,možemo ih pozvati koliko hoćemo puta,možemo dati da programeri rade svaki svoje funkcije i to spojiti kasnije
i sad sami vidite prednosti funkcija....
Funkcija se sastoji od svoje glave što je njeno ime zajedno s tipom tog imena i naravno njezini parametri.
Zatim imamo tijelo funkcije između vitičastih zagrada u kojem(tijelu)  mi napravimo kod što će ta funkcija napraviti
i naravno završimo blok.Unutar bloka još samo moramo odrediti return;    tip koji naravno odmah na početku odredimo
po samom tipu našeg imena funkcije(int ime,float ime_funkcije) i dr.
Znači opći oblik funkcie bi bio:

tip  ime_funkcije(parametri_funkcije)

{

       //kod funkcije

 

  return tip;
}

.....znači ovo je definicija funkcije.......
Također mi možemo prvo deklarirati funkciju:

tip ime_funkcije(parametri_funkcije);

....to je deklaracija koja uvijek navodi samo ime funkcije i naravno tip i pararmetre ali uvijek s točka zarez završavamo!!!!!!!
Sad samo općeniti oblik kako implementiramo funkciju u program  :

_______________________________________________________________________

 

#include <iostream>

using namespace std;

 

tip ime_funk(parametri);    //znači samo deklaracija(objava-upoznavanje programa da postoji)

int man()

{

     //kod glavnog programa
    //zajedno s pozivom funkcije

}

 

tip ime_funk(parametri_funk)//tek sad definicija i kad program traži funkciju ovdje se linka i to je to

{

     //kod  funkcije

}

_______________________________________________________________

Ovdje do sad sam samo naveo općenite oblike kako jedna funkcija može općenito izgledati i kako je
deklariramo i definiramo....prevodioc(prevodilac) je na početku već upoznat s funkcijom i sad
samo moramo napraviti definiciju...samu definiciju smo moglli napisati i odmah gore ali  razlog zašto
smo to radili je kasnije u programiranju vi definicije i deklaracije možete razdvojiti u posebne datoteke
i onda samo pozivati te datoteke nakon što ih s #include uključite...ali o tome puno kasnije...
Sad možemo i na program da bi uopće videjeli o čem sam ja ovdje trabunjao....
_______________________________________________________________

 

 

#include <iostream>
using namespace std;
int zbroj(int ,int );                                       //deklaracija funkcije zbroj
                                                                 /*evo ovdje je deklaracija i zavrsavamo s tocka zarez!!!
                                                                     dovoljno je navesti samo tip i tako dajemo na
                                                                   znanje glavnom programu da pronadje taj oblik funkc.(link)*/
int main()
{
    int d = 7;
    int e = 3;
   
    cout<<endl;
                                                                                        //sad u biti radimo prijenos vrijednosti
    cout<<"Zbroj je : "<<zbroj(7,3)<<endl;                    //poziv i ispis
    cout<<"d je :"<<d<<endl;                                         //ovdje dokazujemo da se naši brojevi nisu pomijenili
    cout<<"e je :"<<e<<endl;                                        //znaci samo smo ih prenjeli u parametre i oni su postali argumenti
    cout<<endl;                                                              // s kojima funkcija radi  ali ih ne mjenja
    system("PAUSE");
    return 0;
}

 


int zbroj(int a,int b)                                             //ovdje se linka deklaracija na definiciju


{
    int c;                                                        //definicija , jer deklaracija je drugdje
    c= a+b;
    return c;
}
                                                        //cilj je zbrajanje!!
                                                       
/*znaci mi smo kopirali nase brojeve u funkciju
 to je prijenos po vrijednosti(podacima)*/

___________________________________________________________________

 

Evo proučite ovaj program jer smo teoretski dio objasnili na početku i sad samo to spojite
Radi se o funkcijij zbroj....mi smo napravili zbrajanje i return na c kao rezultat tog zbrajanja
smo odredilio kao int tip(mogli smo i float) i čitava funkcija se po pozivu samo izvršava
u glavnom programu kad joj proslijedimo podatke(brojeve )kao argumente u njezine parametre
što znači da moraju biti int tipa!!!!!Da je funkcija float morali bi biti float ili bi sama funkcija

ptetvorila naše brojeve u float...u svakom slučaju mora se poštivati ono što je u funkcijskim parametrima
Mi smo samo u ovoj funkciji vršili prijenos podataka i to je sve,nismo ih mijenjali jer na kraju programa
naše varijable ostaju iste,ovdje dolazi do izražaja vaše već naučeno znanje(nadam se )
o odosu lokalno i globalno...Ako još niste u potpunosti shvatili deklaraciju i definiciju funkcije
biti će još programa i objašnjenja jer tek smo počeli s funkcijama!!!
___________________________________________________________________

 Samo malo da ponovimo ....
Funkcija koju smo gore deklarirali je int tipa(mogla je biti float ili double) i kao svoje parametre ima dva int tipa
unutar zagrad i konačni izgled deklaracije je znači  :

int zbroj(int,int);

Vi u glavnom programu morate poštivati te parametre i
ako želite da funkcija "šljaka" morate joj proslijediti znači dva int tipa,to smo i uradili proslijedivši joj
brojeve koje smo definirali u deklaraciji naših varijabli!!!
Sad što će funkcija s tim brojevima ovisi o body dijelu tj .što smo napravili dolje u definiciji
što će funkcija raditi a ona će zbrajati!!!!!!
Isti učinak bi imalo da napišete i samo :

return(a+b);

što znači da vrati zbroj int tipa jer je naša funkcija int tipa.
Vježbajte sad ,mijenjajte i shvatite.
To je naravno bio prijenos po vrijednosti,a što to znači pokazati ću s još jednim programom.
To je prijenos podataka s kojima radimo u funkciji ali s kopijom originala jer original ostaje
isti,znači mi ne mijenjamo vrijednosti naših varijablli unutar funkcije main() nego koristimo kopije
da bi radili s funkcijom ali mi u biti ništa ne mijenjamo što se tiče originala!!!
____________________________________________________________________
Sad još jedna funkcija koja o tome govori......ja ću se malo više zaddržati na funkcijama
općenito jer su vrlo bitne u c++-u...i ovaj post će biti dugačak a možda se razlomi i na dva tri
jer će u sebi sadržavati i poglavlje o pokazivačima i adresama.
No,sad ponovo na prijenos po vrijednosti :
____________________________________________________________________

 #include <iostream>
using namespace std;
int uvecaj(int);
int main()
{
    int broj = 3;                                                    //odmah smom izvrsili dekalraciju i inicijalizaciju(definiciju) varijable
    cout<<"uvecaj(broj) = " <<uvecaj(broj)<<endl;
    cout<<endl;
    cout<<broj<<endl<<endl;                            //ovdje vidite da je original isti
   
    system("PAUSE");
    return 0;
}
int uvecaj(int broj)
{
    broj +=10;
    return broj;
}

 

 _________________________________________________________

Kad izvršite ovaj program vidite što sam govoro.....original ostaje isti a njegovu kopiju u funkciji
smo uvećali za deset i tamo je u samo privremeno tj.dok traje izračun ta nova vrijednost.
Nadam se da ste sad bar približno shvatli prijenos po vrijednosti ,da je to
kopiranje originalne vrijednosti i korištenje kopije u funkciji za dobivanje rezultata!
Primjetite da u deklaraciji nije bitno ime varijable navoditi  nego samo oblik s kojim
upoznajemo glavni program s tom funkcijom...a prava definicija dolje mora sadržavati
i ime varijable!!!!!Probjate izostaviti dolje int broj;   samo broj(napišite samo int),zatim probajte promjeniti
samo ime broj u recimo blabla i to dolje u definicij napraviti i pogledajte što se zbiva,
Tako se uči,kombiniranjem,bar sam ja tako učio.
_____________________________________________________________________

Slijedeća funkcija je također prijenos po vrijednosti ali malo kompliciranija ,stoga vam savjetujem
da ovo prije dobro proučite........
________________________________________________________________________

 

 Sad u ovom programu također imamo prijenos po vrijednosti ,i tri različite verzije same funkcije,tj.funkcija je ista
ali smo je različito koristili......
____________________________________________________________________________

 

 #include <iostream>
using namespace std;


double funk(double x,int n);                          //dakako ovdje smo mogli izostaviti imena varijabli ali eto ostavio sam


int main()
{
    int a=3;
    double x=3.0;
    double y =0.0;
   
    y= funk(2.0,3);
    cout<<"Dva na trecu je : "<<y<<endl;
    cout<<endl;


    cout<<"Tri na trecu je ; "<<funk(3.0,a)<<endl<<endl;
    cout<<endl;


    y = funk(x,funk(2.0,2.0));
    cout<<"y je sad : "<<y<<endl<<endl;
    
    system("PAUSE");
    return 0;
}
double funk(double x,int n)
{
       double rezultat = 1.0;
       int i;


       for(i = 1; i<=n;i++)      //primjetite da smo ovdje izostavili viticaste zagrade
        rezultat *=x;

 


                      return rezultat;
      
}

 

________________________________________________________________________________ 

 U samoj definiciji funkcije vidite da je n moguće primjeniti i for petlju ali u malo izmjenjenom obliku,kakvom pitate se?
Bez vitičastih zagrada,zašto?
Da smo stavili for petlju u blok,što bismo morali staviti u blok?
samo znači jedan red i to:

 rezultat *x;

....upamtite kad neka petlja bilo to if ili else ili while ili bilo koja petlja ima samo jedan red koda
moguće je izostaviti vitičaste zagrade,čim ima više redova koda to pravilo ne vrijedi...a zove se sažimanje koda
što u biti znači smanjenje redova pisanja koda i ništa drugo...još ćemo se susretati s time ali kako napredujemo
tu i tamo ću to pokazati......
Funkcija je dakle double tipa i ima dva parametra,x i n,različitih tipova....sad ovdje ćemo ssusresti s pojmom
konverzije tipa   u našem slučaju prevodilac će pretvoriti int u double jer je funkcija  double tipa i na to nas prevodilac
dolje upozorava...zasad to zanemarite jer o tome ću kasnije....
Pošto je funkcija double tipa ...return tip je double i stoga na, je i varijabla u koju spremamo rezultat
double tipa ,stavili smo je odmah na vrijednost 1.0 jer  samo tako možemo izvesti množenje,probajte promjeniti u nulu ili ništa
pa pogledajte rezultat!
int i ;

...nam treba radi for petlje i načina izračuna potencije!!!!Opet smo je stavili na jedan jer se radi o množenju i moramo
krenuti od jedan da bi rezultat bio realan izračunu,petlja se zato vrti točno koliko navedemo potenciju a  to je varijabla n i zato
ako je dva dobijemo kvadrat,ako je tri dobijemo kub i dr.  Proučite prije for petlje i sve će vam biti jasno!!

 

 double funk(double x,int n)
{
       double rezultat = 1.0;
       int i;


       for(i = 1; i<=n;i++)      //primjetite da smo ovdje izostavili viticaste zagrade
        rezultat *=x;               //rezultat = rezultat * x;

 


                      return rezultat;
      
}

 

________________________________________________________________________________ 

U ovom dijelu programa prvi put pozivamo funkciju ali u kom obliku?
Spremamo je u varijablu y koja je naravno double oblika ,a u samu funkciju proslijeđujemo argumente koji se slažu s parametrima funkcije
Prvi je broj(x) koji ćemo potencirati a drugi je potencija(n),da bi sve bilo double tipa prevodilac nas dolje upozorava na konverziju
i tako mora biti...zasad konverzije tipova ostavimo postrani jer vratiti ću se na njih u posebnom postu......

  y= funk(2.0,3);
    cout<<"Dva na trecu je : "<<y<<endl;
    cout<<endl;

________________________________________________________________________________

Ovdje smo se malo igrali i već na početku programa smo deklarali našu potenciju u obliku a=3;

i zato broj tri dižemo na kub jer a je sad naš n...i opet smo poštivalli sve kako je u funkciji deklairano!!!!!

cout<<"Tri na trecu je ; "<<funk(3.0,a)<<endl<<endl;
    cout<<endl;

___________________________________________________________________________________

 

Ovo što smo sad napravili je zanimljivo.....

 y = funk(x,funk(2.0,2.0));
    cout<<"y je sad : "<<y<<endl<<endl;
    
.......vidite opet smo upotrijebili našu y varijablu koja je ostala originalna ,jer smo radili s kopijom i zato je možemo
ponovo upotrijebiti iako smo na početku  progarma moglli deklarirati i drugu varijablu ali pošto original ostaje isti
možemo i nju ponovo,,,,,.........ali sad vidite da je x na početku programa kojem smo dodali vrijednost x=3.0;
naš prvi argument i znači prvi parametar smo ispoštivali u funkcijii,ali što je s drugim parametrom?
Drugi argument kao parametar smo proslijedili samu funkciju -> funk(double,int);
Naravno i to je moguće u c++-u i dok god bilo koji oblik zadoljava tip u krajnosti sve se poštiva,znači drugi argument
(n) nam je sama funkcija kao parametar broj dva!!!!Nabrajanja u c++ se odvajaju zarezom i tako imamo samo dva argumenta i to je to...
prevodilac će izračun te funkcije shvatiti kao drugi parametar...podsjećam vas da zgrade imaju prioritet i prevodilac
prvo izračuna vrijednost u zagradama i zatm ide dalje....to je sad čista matematika i njezina pravila....
Opet smo sve znači spremili u varijablu y i ispisali....izračunajte i uočite logiku.......
_________________________________________________________________________

Eto i u ovom programu smo upotrijebili prijenose po vrijednosti ,pozvali funkciju više puta
igrali se s njezinim oblikom ali sve u svemu smo sve poštivali kako je i u deklaraciji navedeno!!!!!!

__________________________________________________________________________

Nadam se da ste shvatili prijenos po vrijednosti i poštivanje parametri -----argumenti    !
__________________________________________________________________________

 Samo natuknica o čemu ćemo slijedeće raspraviti je tip finkcije void()-----funkcija koja nema return tip...
A zašto ?
Opet kroz jedan mali program koji proučite dok ga ne objasnim jer je vrlo kasno...void() znači praznina recimo.
____________________________________________________________________________

 

#include <iostream>
using namespace std;
 void racunaj()
         {
                int a;
                int b;
          cout<<"Unesite broj a : "<<endl;
          cin>>a;
          cout<<"Broj b : "<<endl;
          cin>>b;
          int c = a+b;
          cout<<c<<endl;
         
         }
int main()
{
 
      racunaj();
    system("PAUSE");
    return 0;
}

 

 

Ako želite možete dodati u funkciju tipa void i return ali bez brojeva samo return;
Isti efekat kao i da je niste stavili.
Primjetite da void() funkciju racunaj samo pozovemo u glavnom programu
i ona se uzvršava po pozivu i kad je pozivamo moramo je uvijek pozivati u ovom obliku unutar main() funkcije:

ime_funkcije_void();

_

Na taj način  funkcija sama sebe izvršava tj ono što smo definirali u body-u funkcije void().

_____________________________________________________________

Evo još malo koda da vidize razliku void i return tip,u zagrade return tipa je moguće unositi brojeve ili varijable u koje smo prije
smjestili vrijednosti ,dok kod void() nema unosa u zagrade kao kod return tipa!!!!

_____________________________________________________________________

 

Sad malo veći programčić ali lako razumljiv da vidite kombinacije ...i  novost koja je primjetna je da ne morate varijable deklarirati
odmah na početku programa nego možete to neposredno prije njihovog korištenja!!!!!!!
Proučite malo kod i shvatite što po kojem redoslijedu ide.....malo se igrajte....
________________________________________________________________________

 

#include <iostream>
using namespace std;


  void naslov()
     {
              cout<<"Racunamo zbroj dva broja koja cemo prvo unijeti(void funkcija)!!!"<<endl<<endl;
     }


   void pisi()
         {
                    int a;
                    int b;
                    cout<<"Unesite broj a : "<<endl;
                    cin>>a;
                    cout<<"Broj b : "<<endl<<endl;
                     cin>>b;
                    int c= a+b;
                   cout<<"Zbroj je :"<<c<<endl<<endl; 
         }


               double funk(double a,double b)
                      {
                               double c = a*b;
                                 return c;
                     }
                 
int main()
{
     
      naslov();
      pisi();
      cout<<endl;
      cout<<"A ovdje je uporaba funkcije return tipa double"<<endl<<endl;
      cout<<"funk(double,double) :"<<funk(3.456,8.4)<<endl<<endl;
      cout<<"Sad malo kombiniramo!!!"<<endl;
      cout<<"unesite  broj : "<<endl;
      int x;
      cin>>x;
      cout<<endl;
      cout<<"Unesite drugi broj :"<<endl;
      int y;
      cin>>y;
      cout<<endl<<endl;
      cout<<"Opet pozivamo funkciju return tipa funk(x,y),ali sad proslijedimo x i y i umnozak je = "<<endl;
      cout<<funk(x,y)<<endl<<endl;     
    system("PAUSE");
    return 0;
}

 

 

 

Malo proučavajte i ........mali odmor.
Nadam se da u gore prikazanom programu ne trebaju dodatna objašnjenja...ako i trebaju ,u slijedećim
programima gdje ću objašnjavati preklapanje(overload) imena funkcije ,znači ime funkcije a u biti različite funkcije.
Da bi se primjenila funkcija koju zovemo ona automatski traži svoje argumente i tip,kad se u svemu podudaraju tad se ta funkcija izvršava
ako ne ,automatski prevodilac traži funkciju koja odgovara tom obliku i mora sve odgovarati i tad se izvršava opet funkcija istog imena ali sve drugo je različito
Malo proučite ovaj program.......
______________________________________________________________________________

 

#include <cstdlib>
#include <iostream>

using namespace std;
int zbroj(int,int);
float zbroj(float,float);
int main()
{
    int x=3;
    int y=8;
    float a = 3.89;
    float b= 2.9;
    cout<<"Ispis funkcije int zbroj : "<<zbroj(x,y)<<endl<<endl;   
    cout<<"Ispis funkcije float zbroj : "<<zbroj(a,b)<<endl<<endl;   
    system("PAUSE");
    return 0;
}
int zbroj(int a,int b)
{
    return(a+b);
}
float zbroj(float a,float b)
{
   return(a+b);
}

/*eto sad vidite kako funkcionira preklapanje imena funkcije*/

 

 
Naravno kad stignem....
Evo stižem polako.....u ovom gore programu ste vidjeli preklapanje imena funkcije .Znači funkcije se mogu razlikovati po broju
parametara kojima u main() funkciji proslijeđujemo argumente(ovisi koliko parametara navedemo pri deklaraciji.
Zatim po tipu(int,float,double,void) i naravno po tipu samog parametra....i sad kad imate isto ime a funkcija se razlikuje
bar po jednom gore nabrojenom čimbeniku tad se radi o "drugoj funkciji",eto to bi bilo o preklapanju ,ali evo još jedan program
s preklapanjem imena a radi različitu stvar jer smo u definiciji drugačije napravili body(izračun) funkcije...
Proučite program..a ostavioo sam i one dvije funkcije iz prošlog programa,samo nadodao.....
__________________________________________________________________________________

 

#include <cstdlib>
#include <iostream>
using namespace std;

int zbroj(int,int);
float  zbroj(float,float);

int kvadrat(int);                           //drugi nacin kako mozemo preklapati,koristimo novu funkciju
int kvadrat(int,int);


int main()
{                                             //ovdje u programu samo prikazujemo
                                              //preklapanje unutar programa tj.kako jednu
                                              //funkciju mozemo upotrijebiti na dva nacina
                                              //radi se o funkciji kvadrat koju na dva nacina iskoristavamo  

    cout<<"Samo s jednim argumentom :"<<kvadrat(3)<<endl;
    cout<<"Oba argumenta : "<<kvadrat(3,3)<<endl;
    cout<<"Ovo je funkcija zbroj() kao u prošlom programu : "<<zbroj(3,3)<<endl;
   
    system("PAUSE");
    return 0;
}
int kvadrat(int a,int kvadrat)
{
    int x;
   int rezultat = 1;
    for(x=1;x<=kvadrat;x++)
       {
          rezultat = rezultat * a;
       }
      return rezultat;
}


int kvadrat(int a)
{                       //nova funkcija
    return a*a;
}


int zbroj(int a,int b)
{
  return(a+b);
}

float zbroj(float a,float b)
{
  return(a+b);
}

/*i kad pokrenemo program sve nam ostaje isto
samo na drugi nacin smo rabli deklaraciju i definiciju
od prošlog programa,koji nam vise odgovara taj primjenjujemo
i tako vidimo razlicite nacine preklapanja i
koliko može biti funkcija----puno!!!!*/


____________________________________________________________-
Ako ste dosad sve pratili i "naučili" tad proučavanje ovih programa iznad ne bi trebalo biti teško.
U slijedećem programu malo ćemo nešto izmjeniti...također ćemo koristiti preklapanje ali malo na drugačiji način
Postaviti ćemo jedan parametar funkcije kvadrat po defaultu na određenu vrijednost...proučite program a ja ga kasnije objasnim
još jednom........
_____________________________________________________________________________

 

#include <cstdlib>
#include <iostream>
using namespace std;

int zbroj(int,int);
float zbroj(float,float);
int kvadrat(int,int=2);                    //ako unesemo samo jedan argument
                                           //tada program (funkcija odmah po defaultu koji mi postavimo)
                                           // radi s brojem dva!!!!
                                           //dvije funkcije istog imena ali
                                           //razlicitog tipa i to je bitno,to su one nase "stare" gore iz programa
int main()
{
    int d=5;
    int e=8;
    float g =3.5;
    float h=4.3;
    cout<<"Ispis int funkcije : "<<zbroj(d,e)<<endl;
    cout<<"Ispis float funkcije . "<<zbroj(g,h)<<endl;
    cout<<"Ispis funkc. kvadrat s dva argumenta:"<<kvadrat(3,3)<<endl;
    cout<<"ispis funkcije kvadrat s jednim arg. :"<<kvadrat(3)<<endl;
                                                                        //ovdje je preklapanje takodjer istim imenom ali primjetite
                                                                        //da je u prvom rad s dva argumenta a  u drugom s jednim
                                                                         //argumentom i to su razlicite funkcije ali s istim imenom
                                                                        //opet preklapanje,ali sad zbog navođenja argumenta u glavnoj funkciji!
    cout<<endl;
    system("PAUSE");
    return  0;
}

int kvadrat(int a,int kvadrat)
{                                                                      //proucite for petlju i vidite da funkcije mogu biti
                                                                      //citav jedan mali program!!!!
    int x;
    int rezultat=1;                                                      //ovdje mora biti na jedan proucite ili
                                                                        //mijenjajte pa otkrivajte a mislim da sam gore negdje i to objasnio!!!
    for(x=1;x<=kvadrat;x++)
      {
           rezultat = rezultat * a;
      }
      return rezultat;

    
int zbroj(int a,int b)
{
    return(a+b);
}

float zbroj(float a,float b)
{
    return(a+b);
}

/*ZNACI OVO JE PRIMJER (OVERLOADING)PREKLAPANJA
FUNKCIJE...ISTA IMENA I PARAMETRI ALI RAZLICITI
TIPOVI ali i default parmetar!!!!!!!!!!*/


Proučavajte malo i vježbajte,griješite namjerno ,mijenjajte i gledajte što se dešava,tako ulazite u logiku
programiranja i proučavanja samog koda,i sad ljutim "čistunce" ali na greškama se i uči ......
______________________________________________________________________________
Da bismo objasnili funkcije koje rade prijenos podataka po adresama proći ćemo poseban post o pokazivačima
i adresama(  *   i   &  )   znakovi za pokazivač *    i za adresiranje   &   (upućivać)---ako griješim ispravite me.
Stoga ,ovim završavam prvi dio o funkcijama.......a poslije ,na kraju objasniti ću template funkcija(predlošci funkcija).
__________________________________________________________________________________________

 





-

v_maxcpp
Poruka je uređivana zadnji put sri 2.4.2008 23:33 (v_maxcpp).
 
0 0 hvala 1
16 godina
offline
C++ tutorijali...

Ej dečki, super je ovo što radite....moja podrška.

Zanima me dal će možda netko nešto napisati o c#(barem neke osnove,kak počet)?

 

Nitko nije beskoristan.Svatko može poslužiti kao loš primjer.
Poruka je uređivana zadnji put uto 1.4.2008 11:03 (mali.ivica87).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...

Hvala na podršci....a što se tiče C#  imam i to u vidu ali kad završim ono što mislim staviti u tut o C++-u.
Ako netko od programera hoće može i to započeti.Naravno svi su pozvani biti autori!!


v_maxcpp
16 godina
offline
C++ tutorijali...

Bogme mi je ovaj tut lijepo problizio osnove c++ .... cak sam se i zainteresirao..

 

ali.....  ono  sto  me  je  zainteresiralo  citajuci  ovaj  tut  je  to  koliko  zajednickih  crta  ima  c++  sa  PHP-om.....

 

mogao bi cak rec da mi poznavanje PHP-a olaksava snalazenje i "kopcanje" ovoga tutorijala....

 

btw  thanX


eeehhheem...
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ tutorijali...
Gdije mogu pronaci dobar tutorijal na hrvatskom za C++
16 godina
neaktivan
offline
RE: C++ tutorijali...
24v kaže...

Bogme mi je ovaj tut lijepo problizio osnove c++ .... cak sam se i zainteresirao..

 

ali.....  ono  sto  me  je  zainteresiralo  citajuci  ovaj  tut  je  to  koliko  zajednickih  crta  ima  c++  sa  PHP-om.....

 

mogao bi cak rec da mi poznavanje PHP-a olaksava snalazenje i "kopcanje" ovoga tutorijala....

 

btw  thanX


 Hvala na znimanju,a poznavanje bilo kojeg programskog jezika a pogotovo onih "sličnih" c++-u je poželjno jer ubrzava samo učenje
c++-a ili npr. Jave,ili C#,i brže "kopčanje",logika je skoro ista tj.ista samo naredbe su različite.Naravno ne ulazim ovdje u nikakve rasprave o jezicima za sve one
koji čitaju jer svi jezici su odlični ,jer programiranje je univerzalan "posao"!

v_maxcpp
16 godina
neaktivan
offline
RE: C++ tutorijali...

Pokazivači.

K
ako sam i napomenuo ,malo ćemo o pokazivačima.
Malo opećenito što je to pokazivač.
To je također varijabla ili objekt koji pokazuje na drugi objekt ili varijablu...doslovno.
On u biti je vrijednost koja predstavlja adresu pokazivanog objekta ili varijable.
Ako pokazivač  p ili pok (što svi programeri unuiverzalno označavaju tako) pokazuje na varijablu  x tad da bi došli do te varijable
,ako smo prije toga spremili adresu od x u pokazivač p , moramo izvršiti deadresiranje(dereferenciranje) *p  i tad je to
pokazivanje vrijednosti varijable x.
Sad samo da pokažem o čemu sam govorio:

int x =2;    //deklaracija i definicija varijable
int* p ;      //samo smo deklariralli pokazivač tipa int
p=&x;       //dodijelili smo pokazivaču p adresu od x
cout<<*p<<endl;  //sad smo dereferencirali i rezultat je dva

evo tog prigramčića u kompletu....

#include <iostream>

using namespace std;

int main()
{
    int x=2;
    int* p;
    p=&x;
    cout<<*p<<endl;
   
    system("PAUSE");
    return 0;
}

 

 

Znači u memoriji svaki podatak ima adresu pomoću koje možemo doći do nje.
Pokazivaći su isto podaci i mi te podatke možemo mijenjati pomoću pokazivača...znači originalnu vrijednost neke varijable je
pomoču pokazivača moguće mijenjati jer je pokazivać uzeo adresu od te varijable i sad je varijabla na raspolaganju
pokazivaču!!!!
Proučite program...

#include <iostream>

using namespace std;

int main()
{
    int x=2;
    int* p;
    p=&x;
    cout<<*p<<endl;
    *p=6;
    cout<<*p<<endl;
    cout<<x<<endl;
    system("PAUSE");
    return 0;
}

Vidite........sad je x ono što smo napravili pokazivaču.
sad vidite u ovom slijedećem programu kako možemo prebaciti vrijednost prve varijable u drugu pomoću pokazivača.
#include <iostream>

using namespace std;

int main()
{
    int x=2;
    int* p;
    p=&x;
    cout<<*p<<endl;
    *p=6;
    cout<<*p<<endl;
    cout<<x<<endl;
    int y ;   //uvodimo novu varijablu
    y=*p;       //  dodijeljujemo  varijabli y vrijednost koju sadržava pokazivac(6)
    cout<<y<<endl;  // to ovdje vidimo
   
    system("PAUSE");
    return 0;
}

Sad još malo da pnovimo:
Ako je x varijabla tad je  &x---to adresa te varijable....
napravite:
cout<<&x<<endl;
...dobiti ćete adresu u memoriji od varijable x i sad vi na tu adresu spremate vrijednosti.
Da bi došli do nje pomoću pokazivača služi am operator dereferenciranja što je zvjezdica  *   !!!!!!
Ako pokazivač p sadrži adresu od x tad ukazuje na vrijednost koja je na adresi varijable x postupkom dereferenciranja!!!!
Iz svega ovoga proizlazi da pokazivači imaju svoj tip a to je tip na koji ukazuju!!!!
Znači ako imamo :
int x;

deklarirali smo znači da je naša varijabla tipa x tipa int.
Varijabla p koja će biti naš pokazivač trba znači pokazivati na tip int i zato imamo
deklaraciju :
int* p;(možemo i int *p)
ili

int(*p);

 

Nadam se da ste shvatili bit pokazivača i što je to adresa & neke varijable(objekta).....memorijska lokacija  a pokazivač je...završite sami...
Naš slijedeći program će nam pokazati malo više o povezanosti adresa i pokazivača da vam bude još jasnije i naravno
upamtite da su pokazivači pravi podaci  ,zauzimaju prostor u memoriji i mogu im se dodijeliti i mijenjati vrijednosti,ovo govorim jer osim
adresiranja i pokazivanja imamo još jedan sličan pojam a to su upućivaći koji samo upućuju na nešto ali nisu podaci u pravom smislu riječi
Sad sam vas zbunio ali kroz programe ćete sve razumjeti....ne brinite....a tek kad dođemo do funkcije na koju pokazuje pokazivač.

Proučite malo i ovaj program.....
#include <iostream>
using namespace std;
//ovaj kratki program je gore objašnjen u kontekstu!!
int main()
{                                                   //proučite ovaj program

    int a = 9;
    int *p;                                      //deklariranje na dva načina je isto
                                                  //int* p;
    p=&a;
    cout<<"varijabla a je : "<<a;
    cout<<endl;
    cout<<"Upotrijebili smo samo taj & znak"<<endl;
    cout<<"adresa od a na drugi nacin: "<<&a;
    cout<<endl;
    cout<<"ovdje upotrebljavamo pokazivac!"<<endl;
    cout<<"adresa od a je: "<<p;                                        //heks broj
    cout<<endl;
    cout<<"pokazivac *p :"<<*p;
    cout<<endl;
    cout<<endl;
    system("PAUSE");
    return 0;
}

Slijedi objašnjenje.....dobro ali umjesto objašnjenja još jedan program i onda objašnjenje...
naravno vi možete već sad sami zaključivati kako se radi s pokazivačima... 

_____________________________________________________________________________

#include <iostream>

using namespace std;

int main()
{
    long* pbroj=NULL; //ovdje smo odmah pokazivac stavili na null vrijednost što je preporuka
    long broj = 55;
    long broj_2 = 88;
    pbroj=&broj;      //sad adresu od broj spremamo u varijablu pbroj koja je pokazivac
    *pbroj +=11;       //sad tu vrijednost uvećamo ua jedanaest,znaci mijenjamo vrijednost originala
    cout<<endl;
    cout<<"   broj = "<<broj<<endl;
    cout<<"  &broj(adresa) = "<<pbroj<<endl;
    cout<<endl<<endl<<endl;
    cout<<"_________________________________________________"<<endl;
    pbroj = &broj_2;   //ovdje obvezno primjetite da smo sad u nas pokazivac
                       //spremili adresu od broj_2 na kojoj je 88 vrijednost!!!!!
    cout<<endl;
    broj = *pbroj*10;   //zbog onoga gore mi u biti množimo 88 x 10 !!!!
    cout<<endl;
    cout<<" broj = "<< broj<<endl;    //a ovdje je ono što smo uvecali a u biti smo radili s 88!!!!
    cout<<" pbroj = "<<pbroj<<endl;   //ovdje je adresa od druge varijable
    cout<<" *pbroj = "<<*pbroj<<endl;  //dereferenciramo ono sto smo stavili broj_2!!!!
    cout<<endl;
   
    system("PAUSE");
    return 0;
}


.....na početku programa smo odmah inicijalizirali pokazivač na vrjednost nula što je uvijek poželjno kad radite s pokazivačima
da ih negdje smjestite jer ako nisu smješteni mogli bi napraviti malo bugova u programu...možete napisati i
long* broj = 0; 

...isti učinak.
ztim deklariramo i odmah definiramo(inicijalizacija) naših varijabli koje smo mogli unijeti i sami(ono s cin>>) ali radi jednostavnosti eto...
Naravno naš pokazivač je pokazivač na long tip kako i priliči.
U programu dalje ide sve logičkim slijedom ,vi ono što morate pratiti je pokazivač!!!
On je najbitniji..mjenjamo adresu i sad je vrijednost na toj adresi drugi broj(u drugom dijelu programa) ali i sama varijabla broj ima tu vrijednost
samo smo premjestili sve  pomoću pokazivaća u varijablu broj a varijabla broj_2 je ostala ista...i što smo mi to radili....
preko pokazivača smo manipulirali s dvije vrijednosti i vidite prednosti pokazivača ....na njima se mogu vršiti računske operacije i aritmetika uvećanja!!!
Pokazivači su podaci s kojima možemo raditi i mijenjati vrijednosti!
Malo proučavajte program i logiku rada s pokazivačima naravno i s adresama!
Adresa je u biti ulica....u kojoj se nalazi kuća(broj,podatak) a pokazivač je putokaz točno na tu kuću(podatak)
ovo je i napisano negdje u masi knjiga o c++-u!

Znači dereferenciranjem mi pronalazimo kuću!

/*u ovom primjeru samo je objasnjenje one inicijalizacije na NULL
sto je gore definirano u programu*/
#include <iostream>
using namespace std;
int main()
{

    int* p=0;
   // int* p=NULL;
   /* if(p==NULL)
    {
      cout<<"pkazivac je NULL"<<endl;
    }*/


    if(p==0)
    {
      cout<<"pokazivac je nula!"<<endl;
    }
     
    system("PAUSE");
    return 0;
}

Ovdje samo pokazujemo isti način inicijalizacije pokazivača na NULL!Uporabom if uvjeta.
Sad programi samo za vašu vježbu i učenje....samo ih sami sebi sad objasnite i vježbajte!!!!

#include <iostream>
using namespace std;
int main()
{//izvršite ovaj pa zatim drugi
//prepišite prvo jedan pa drugi!!
    int a = 0;  
    cout<<&a<<endl;
    int* p = &a;
    *p = *p + 10;
    cout<<&p<<endl;
    cout<<*p<<endl;
    a=a+20;
    cout<<a<<endl;
    cout<<&a<<endl;
    cout<<&p<<endl;
    system("PAUSE");
    return 0;
}

....drugi:


#include <iostream>
using namespace std;
int main()
{
    int a = 1;   
    cout<<a<<endl;
    cout<<&a<<endl;
    int& b  = a;
    b=b+130;
    //a=a+130;
    cout<<a<<endl; 
    cout<<b<<endl;
    cout<<&b<<endl;
    system("PAUSE");
    return 0;
}

....eto malo rada s pokazivačima i adresama.....

Ono što će dalje slijediti je objašnjenje pojma pokazivač na pokazivač,pokazivač na funkcije i upućivać...eto zvuči komplicirano.
Ako ja što izostavim ili drugi programeri smatraju da trba još dodati neka dodaju,jer samo možete pomoći s što više
objašnjenja!
Evo program da malo proučavate do sutra kad ću ga razjasniti.....
#include <iostream>
using namespace std;


#include <iostream>
using namespace std;
int main()
{
    int x=1;                  /*deklaracija naših varijabli tipova int*/
    int y=5;
    int* px=&x;
    cout<<*px<<endl;         
    int** ppx;              
    ppx=&px; 
    cout<<**ppx<<endl;                  
    *px=2;                     
    cout<<**ppx<<endl;
    **ppx=3;
    cout<<**ppx<<endl;
    cout<<*px<<endl;        //ovo je isto što i cout<<*ppx<<endl;
    cout<<x<<endl;                    
    cout<<endl<<endl<<endl;
    *ppx=&y;
    cout<<**ppx<<endl;
   
    system("PAUSE");
    return 0;
}

_Naravno radi se o pokazivačima i pokazivači na pokazivače!

int x=1;                  /*deklaracija naših varijabli tipova int*/
    int y=5;
    int* px=&x;

_Znači,ovdje deklariramo naše varijable tipa int i pridružili smo im odmah i vrijednosti što zči da na adresama tih varijabli postoje podaci.
Ujedno smo odmah deklarirali pokakizač koji će pokazivati na adresu od x....znači odmah i definicija.
px je pkazivač na tip int koji pokazuje na varijablu x.

cout<<*px<<endl;  


Sad  idemo dereferenciranjem pogledati na što to naravno ukazuje....na x.


Ovdje smo dakle deklarirali varijablu ppx pokazivač na pokazivač tipa ,natavno,int ,i ppx ukazuje na px(vidite da smo mu pridružili adresu od px)
Što znači da posredno pokazivač na pokazivač isto pokazuje podatak na adresi varijable x.

int** ppx;              
    ppx=&px; 


Što naravno dereferenciranjem našeg ppx možemo i videjeti
___

cout<<**ppx<<endl;      //mogli smo i ovako    cout<<(**ppx)<<endl;

 


Sad ovdje pokazivaču mijenjamo vrijednost i postavljamo na dva....automatski ima učinak i na ppx!!!!!Ali i na x!!!!!!Vidite sve je povezano.

*px=2;                     
    cout<<**ppx<<endl;
    cout<<*px<<endl;
    cout<<x<<endl;

 ___
Isti učinak ima i ovaj dio koda!!!!!

**ppx=3;
    cout<<**ppx<<endl;      //kada bi dereferencirali npr. cout<<*ppx<<endl; dobili bi adresu od px!
    cout<<*px<<endl;      //isto što i cout<<*ppx<<endl;
    cout<<x<<endl;

__**ppx...malo detaljnije...od prije znamo da ppx ukazuje na px,pa je rezultat jednog dereferenciranja *ppx ono što je na px
i sad rezultat još jednog dereferencirana je ono na što ukazuje px a to je x  a na kraju znači d je to broj tri!!!!_


Sad s ovom deklaracijom *ppx što znači da smo već napravili jednu operaciju dereferenciranja i sad je do px koji pokazuje na adresu od y i zato je sad
dereferenciranjem te adrese podatak na adresi y a to je pet!!!
*ppx=&y;        //zato ovdje ovakvom deklaracijom u biti ppx je pokazivač na px a ovaj opet na adresu y koja ima podatak 5
    cout<<**ppx<<endl;
     cout<<*px<<endl;    //što nam ovo i dokazuje....dodajte to gore.
     cout<<y<<endl ;      //isto
     cout<<*ppx<<endl;    //i ovo dodajte gore pa ćete vidjeti adresu od px na koju ukazuje px a to je y tj broj 5
___Evo
....dobro proučite što mi tu sve radimo ,sve je to povezano ,primjetite da znači imamo dvije opearcije dereferenciranja kad je u pitanju dvostruku ** znak
a to znači da prvom operacijom dereferenciranja mi pokazujemo prvi pokazivač a drugom operacijom dreferenciranja skačemo na x ,što znači da
**ppx pokazuje na *px  a on opet na x ,inače umjesto ppx mogli smo napisati samo pp ali zbog lakšeg razumijevanja sam napisao ppx da vidite na
što ukazuje...tako da vas ne zbuni kad radimo s varijablom y,stavite samo umjesto px    slovo p a umjesto ppx slova pp......ako vam je lakše za razumjeti.
Vidite  da s pokazičima možemo manipulirati s više adresa i podataka u programu.
*ppx=&y;  // je ok deklaracija
ppx = &x  //nije dobra deklaracija i dolazi do greške----zašto?
____
Zato
..jer ppx nije pokazivač na tip int nego pokazivač na pokazivač tipa int i zato je gornja deklaracija točna!!!
a u najgornjem dijelu koda mogli smo napisati
int* px;
px=&x;__________________________________________________________
To je zato jer je px pokazivač na tip int.....sad vidite što znači pokazivač na pokazivač i ppx (u tom obliku)ne možemo dodjeljivati adrese tipa int jer smo
prije deklarirali da je ppx pokazivač na pokazivač px tipa int i pokazuje na njgovu adresu i jednom operacijom dereferenciranja samo dolazimo do podatka na adresi px a još jednom operacijom dereferenciranja dolazimo do varijable.......
Nadam se da ste razumjeli ovaj dio koda i pokazivače bar donekle ili bar ono osnovno što su sami pokazivači....i tek nakon više puta
čitanja i izvršenja progarma čete sve shvatiti i sjesti će vam...tako je i meni bilo.
Sad ćemo na ono što sam i najavio a to su upućivaći i usporedba da vidite razliku između upućivaća i pokazivača.....
Eto to vam je c++ i njegovi pokazivači i upućivaći i adresiranje....ali sve to je vrlo bitno jer vi radite i upravljate tako s memorijom u c++-u.
Ali prije samo još  pokazujemo unarne oparacije tj.aritmetika uvećanja se može raditi i s pokazivačima što kasnije u programima ćemo i primjeniti.

#include<iostream>
using namespace std;

int main()
{
    int x = 5;
    int* pok;
    pok=&x;
   
    cout<<(*pok)++<<endl;  //uvecaj pet nakon
    cout<<++(*pok)<<endl;   //zato je ovdje sedam
   
   
    system("pause");
    return 0;
}

Sad malo o upućivaćima pa program o njima....
Oni su alias ime za (drugo) ime za varijablu ,podatak.Oni izgledaju kao da su podaci i da imaju memorijsku lokaciju ali oni to nisu!!!
Oni kako im i ime govori upućuju samo na taj podatak(shvatite to kao nadimak).
Znači oni ne zauzimaju prostor u memeoriji,njihova adresa se ne može naći,i ne postoje nikakvi pokazvači koji nam ih mogu pokazati .
Oni jesu slični pokazivačima ali pokazivači imaju svoju adresu i možemo ih pokazati  drugim pokazivačem,pokazivači imaju mjesto u memoriji i njima samima
možemo dodijeliti neku vrijednost,upućivaći to ništa ne mogu.
Pokazivači imaju operaciju dereferenciranja s * tim znakom ,upućivaći to nemaju.
Kad deklariramo upućivać odmah zatim se mora provesti i inicijalizacija (definicija ) upućivaća tj. mi mu moramo dati vrijednst na koju će upućivati.
Sve kasnije operacije nad upućivaćem su u biti operacije nad tom originalnom vrijednošću koju mi mijenjamo...znači sve što utiče na naš nadimak
utiče i na ime ali nadimak u biti ne postiji,nigdje ga nema u papirima a možemo s njime raditi kao s imenom...eto usporedbe.
Znači vi upućivaću ništa ne možete promjeniti i sve što radite s njime radite s originalom.
Sad će uslijediti i kratki program koji će vam razjasniti pojam upućivaća i razlike od pokazivaća.
________________________________________________________________________________________________________
 
#include <iostream>
using namespace std;
int main()
{
    int y = 1;  
    int& x = y;          //evo upucivac x koji upucuje na y i njega predstavlja(nadimak)
    cout<<x<<endl;       //daje naravno jedan.
    int z = x;           //novoj varijabli dodajemo x znači jedan znaci y ,int z = 1;
    cout<<z<<endl;       //daje jedan
    x=2;                 //mijenjamo u biti y
    cout<<y<<endl;       //evo dokaza
    cout<<x++<<endl;     //uvecavamo u biti y   za jedan   ali nakon(nadam ste da ste sad shvatili unarni povecaj nakon)
    cout<<y<<endl;       //evo o cem govorim
    cout<<"Sad počinjemo s pokazivacima   "<<endl<<endl;
    int *p = &x;         //pokazivac p u biti pokazuje na y !!!!!!!!!
    cout<<*p<<endl;      //evo dokaza
    *p = 4;              //y je sad četiri a ne x  
    cout<<*p<<endl;      //opet dokaz
    (*p)++;              
    cout<<*p<<endl;      //dokaz uvecanja y preko pokazivaca
    cout<<y<<endl;       //ovdje su dokazi  i utjecaj na nas "nadimak"
    cout<<x<<endl;
    p=0;                 //mijenjamo samo pokazivac a ne y,dok mijenjanjem "nadimka" uvjek mijenjamo i y !!!!
    cout<<p<<endl;      //evo dokaza da su pokazivači posebni podaci
   
    cout<<y<<endl;      //a pomocu njih smo utjecali na varijable a pokazivač je poseban podatak i on je sad nula(iznad)
    system("PAUSE");
    return 0;
}


Evo ,ako dobro proučite ovaj program vidjet ćete razliku između upućivaća i pokazivaća.
Zašto je (*p)++ u tom obliku ...jer ++ operator ima prednost nad * tim operatorom i da nema zagrada dobili bismo besmislenu vrijednost..
Zaboravio sam i napomenuti da treba razlikovati upućivaće jer su oni u biti izvedeni tip koji se deklariraju int& x = y;   što znači upučivač na tip int
i to je izvedeni tip,od uzimanja adrese kod pokazivača,mi pokazivačima uzimamo adrese na koje ćemo pokazivati,a upućivaći su tkz.tip "reference" izvedeni tip.
Sad nakon svih ovih adresa i pokazivaća i &  i * tih operatora možemo prijeći ponovo na funkcije i prijenos po adresi..u drugom dijelu funkcija
tj. slijedećem postu o funkcijama!
______________________________________________________________________________________________________________


 _______________________________________________________________________________________________________


v_maxcpp


Poruka je uređivana zadnji put sri 23.4.2008 21:47 (v_maxcpp).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice