C++ za pocetnike

Član
Učlanjen(a)
03.02.2009
Poruka
12
Ukoliko zelite poceti programirati u C++, onda pogledaje dolje navedene primere (jer najbolje se uci iz primera)..
C++ za pocetnike!
Varijable: imena, tipovi, deklaracija i dodjela vrijednosti

Varijabla ili promenjiva je zapravo lokacija u memoriji koja sadr?i odre?eni podatak. Svaka varijabla mora imati ime. Tokom imenovanja varijable moraju se po?tovati neka pravila, npr. ime varijable ne smie po?eti brojem i ne smie sadr?avati razmake ili specijalne znake osim donje crte (_). Treba voditi i ra?una da c++ razlikuje velika i mala slova pa su varijble broj, Broj i BROJ tri razli?ite varijable.. Budu?i da postoje razli?ite vrste podataka, postoje i razli?ite vrste varijabli. Za po?etak ?u pomenuti samo 3 tipa: int, char i float.
int sadr?i cele brojeve u intervalu od -maxint do +maxint, gdje je maxint naj?e??e 32768.
char mo?e da sa?uva bilo koje slovo, broj ili karakter du?ine 1 znaka (8 bajta).
float slu?i za rad sa decimalnim brojevima.
Izbor varijable zavisi uglavnom od vrednosti koju ?e ona sadr?avati i mora se definisati prije pokretanja samog programa. Varijable se zato moraju "deklarisati", odnosno svakom imenu varijable mora se odrediti tip. Na primer sa int broj deklari?emo promenjivu po imenu broj, odnosno u memoriji se otvara nova lokacija pod imenom "broj" koja mo?e da sadr?i cijele brojeve tipa integer. Sada mo?emo da u ovu varijablu spremimo na primjer broj 5 tako ?to ?emo napisati broj=5. Ako ovoj varijabli me?utim poku?amo da dodjelimo vrednost drugog tipa, npr broj='a' kompajler ?e prijaviti gre?ku. Tokom dodele vrednosti varijabli tipa char moramo da znak koji se varijabli predaje stavimo pod apostrofe, npr. char znak='d'. Jednoj varijabli mo?emo da dodelimo vrednost druge varijable, ali i tada naravno moramo da pazimo da te dve varijable budu istog tipa (tokom rada na zadacima koji slede pokaza?emo da ovo nije uvek ta?no). Evo primera nekoliko ispravnih deklaracija i dodele vr. varijablama:

Code:
int i,j=3,n;
float f;
char c;
i=4;
f=3.14;
c='a';


Aritmeti?ki operatori
Spomenu?emo sabiranje (+), oduzimanje (-), mno?enje (*) i deljenje (/). Njihova upotreba je jednaka kao u matematici, a isti je i redosled operacija (mno?enje i deljenje imaju prednost nad sabiranjem i oduzimanjem). Pri deljenju integera drugim integerom ostatak se zanemaruje, a operator koji nam pokazuje ostatak pri deljenju dva broja je %. Tako je 21/5=4, a 21&5=1 ukoliko radimo sa integerima. Ukoliko moramo da znamo i decimalne vrednosti pri deljenju tada koristimo tip float.

Unos i ispis na ekran
Objasni?u upotrebu samo po 1 po 1 naredbe za unos i ispis koju smatram najpogodnijom za po?etnike: cout i cin.
cout (Console OUTput) slu?i za ispis teksta, brojeva, sadr?aja varijabli i sli?nog na ekran. Sintaksa je cout << var; Gdje je var ime neke varijable, a isto tako to mo?e biti i tekst (tada ga ograni?avamo navodnicima). Naravno mo?emo da "?tampamo" na ekran istovremeno i varijable i tekst... Da ne bih prekr?io neki zakon ili napravio jeres, evo programa "Zdravo svete" (primjetite kako smije?no zvu?i) za po?etak.
Code:

#include <iostream.h>
main()
{
cout << "Zdravo svete!";
return 0;
}

cin (Console INput) slu?i za prihvatanje podataka od korisnika. Po nailasku na ovu naredbu program privremeno zaustavlja rad i o?ekuje od korisnika da unese neku povratnu informaciju. Nakon unosa i pritiska na ENTER, program prvo proverava da li unos sa tastature odgovara tipu varijable, pa ako je sve regularno une?enu vrednost dodeljuje navedeoj varijabli. Sintaksa je cin >> var; gdje je var neka varijabla koja je ve? definisana. Obratite pa?nju na "overloading operator", tj dve strelice okrenute na desno. O ovome ?u govoriti kasnije, ali za sada samo uo?ite da su okrenute na suprotnu stranu nego kod cout naredbe. Primjer:
Code:

#include <iostream.h>
main()
{
int n;
cin << n;
return 0;
}

Budu?i da programi koji koriste samo input ili output komande nisu od nikakve koristi (kao ?to vidite na prethodnom primeru), naj?e??e se koriste kombinacije:
Code:

#include <iostream.h>
main()
{
cout << "OVAJ PROGRAM SABIRA 2 BROJA" << endl;
int a,b;
cout << endl << "a=";
cin >> a;
cout << endl << "b=";
cin >> b;
cout << endl << "ZBIR JE " << a+b;
return 0;
}


If uslov

Provjerava istinitost nekog izraza. Sintaksa je sleda?a:
if (uslov) {naredba ako je uslov ta?an}; ili
if (uslov) {naredba ako je uslov ta?an} else {naredba ako je uslov neta?an};
uslov mo?e biti bilo koji izraz ?ija se ta?nost mo?e provjeriti, naj?e??e me?utim se proverava odnos izme?u dva broja. U tu svrhu koriste se relacioni operatori:
== (jednako), != (razli?ito), < (manje), <= (manje ili jednako), > (ve?e), >= (ve?e ili jednako)... primjer:
Code:
#include <iostream.h>
main()
{
int a,b;
cout << "a,b=";
cin >> a,b;
if (a==b) {cout <<"brojevi su jednaki";}
else {cout <<"brojevi su razli?iti";};
return 0;
}

For petlja

Slu?i za ponavljanje naredbe ili grupe naredbi ukoliko je unapred poznat broj ponavljanja. Sintaksa glasi: for (po?etna vrednost; uslov; stepen rasta) {naredba}.
For petljom "upravlja" kontrolna varijabla tipa integer (int) koja menja vrednost za odre?eni stepen kroz svaki prolaz petlje. Prvi korak je inicijacija gdje kontrlonoj varijabli pridru?imo neku po?etnu vrednost. Zatim navodimo uslov; petlja ?e se vrtiti dok kod je on ta?an. Stepenom rasta ozna?avamo za koji interval ?e se kontrolna varijabla uve?avati kroz svaki ciklus petlje. for (int i=1; i<10; i++) zna?i da ?e se varijabla i, po?ev?i od 1 uve?avati za jedan dok god je i manje od 10, dakle sve naredbe u sklopu petlje ?e se ponoviti 10 puta. Evo primjera koji ?e sabrati i pomno?iti brojeve do n.
Code:

#include <iostream.h>
main()
{
int n,s=0,p=1;
cout << "n=";
cin >> n;
for (int i=1; i<=n; i++)
{
s+=i;
p*=i;
}
cout << "s=" << s;
cout << "p=" << p;
return 0;
}

While petlja
Ukoliko nije unapred poznat broj ponavljanja onda koristimo while petlju. while (a>b) {naredba ili grupa naredbi} zna?i "ponavljaj naredbu u sklopu petlje dok kod je uslov ta?an". Poenta je da kod ove naredbe ne mora biti unaprijed poznat broj ponavljanja, te se naredbe ponavljaju sve dok se istinitost uslova ne promjeni. Tu me?utim moramo da budemo pa?ljivi, ako uslov nije dobro formulisan i ne postoji mogu?nost da se on u toku rada petlje izmeni program ?e ili presko?iti petlju ili beskona?no dugo ostati u njoj (do nasilnog prekidanja rada samog programa). Ovo zna da bude iritanto po?etnicima jer tako ?esto gube cijeli program, te moraju da ga pi?u iz po?etka (zna biti nezgodno na ispitu).... Evo primera jednog programa koji sabira brojeve sve dok je zbir manji od 5000;
Code:

#include <iostream.h>
main()
{
int i=0,s=0;
while (s<5000)
{
i++;
s+=i;
}
cout << "s=" << s;
return 0;
}

Ovdje se vidi bitna razlika izme?u while i for petlje. Ovaj program bi bilo (gotovo) nemogu?e napisati sa for petljom jer ne znamo unaprijed koliko brojeva ?emo morati sabrati, nego ih sabiramo dok zbir ne dostigne odre?enu vrednost.

Jednodimenzionalni nizovi
Nizove korisimo kada imamo vi?e varijabli jednog tipa koje su na neki na?in povezane. Niz je skup varijabli istog tipa kojima pristupamo prema njihovom indeksu. int niz[10] ?e u memoriji rezervisati 10 memorijskih lokacija za varijable tipa int. Ukoliko ?elimo da se obratimo nekom ?lanu niza jednostavno navedemo ime niza i zatim indeks (rednim broj) ?lana u tom nizu. Na primjer niz[0]=26 bi prvom ?lanu niza dalo vrijednost 26 (prvi ?lan niza ima indeks 0). Pri upisivanju ?lanova niza moramo da pazimo da ne pre?emo maksimalni broj elemenata niza koji smo pri definisanju naveli. Tako kompajler ne bi prijavio gre?ku kad bi u na? prethodni niz poku?ali da upi?emo niz[135]=15, ve? bi on u lokaciju koja se nalazi 135 "varijabli" daleko od po?etka niza upisao broj 15, zamenjuju?i na taj na?in sve ?to se tu prije nalazilo. Ovo je opasno i nepredvidivo i ?esto je uzrok ?udnih gre?aka ili pada programa. A sada evo zadatka koji ?e u niz upisati prvih 10 parnih brojeva:
Code:

#include <iostream.h>

main()
{
int nizParnihBrojeva[10];
for (int i=0; i<10; i++)
{
nizParnihBrojeva=i*2;
cout << "NIZ[" << i << "]=" << nizParnihBrojevai;
}
return 0;
}


Dvodimenzionalni nizovi (matrice)
Matricu mo?emo da zamislimo kao tabelu; sastoji se od elemenata koji pripadaju redovima i kolonama koje su zna?eni indeksima. int matrica[10][15] bi rezervisalo prostor za 10*15=150 varijabli tipa int. Uzmimo sada na primer matricu mat[x][y]. Ako je x==y, matrica je kvadratna. U takvoj matrici svi elementi za ?ije indekse va?i x==y nalaze se na glavnoj dijagonali. Za elemente za ?ije indekse va?i da su x+y==x+1, odnosno x+y==y+1 (iz uslova x==y) slijedi da se nalaze se na sporednoj dijagonali. Evo jednok zadatka ?ije je rje?enje nedavno tra?eno na forumu: Napisati program koji ?e sa tastature prvo u?itati prirodni broj n koji mora biti izme?u 2 i 10. Nakon toga u?itati nxn realnih brojeva u matricu. Pretpostaviti da u matricu mo?e stati najvi?e 10x10 brojeva. Prona?i i na ekran ispisati sumu svakog reda matrice i proizvod svake kolone matrice. Re?enje:
Code:

#include <iostream.h>
#define max 10

main ()
{
int matrica[max][max], suma[max], proizvod[max];
int n,s=0,p=1;
cout << "n=";
cin >> n;
for (int i=1; i<=max; i++)
{
suma=0;
proizvod=1;
}
for (int i=1; i<=n; i++)
for (int j=1; j<=n; j++)
{
cout <<"Mat["<<i<<","<<j<<"]=";
cin >> matrica[j];
suma[j]+=matrica[j];
proizvod*=matrica[j];
}
for (int i=1; i<=n; i++)
cout<<"Suma["<<i<<"]="<<suma<<endl;
for (int i=1; i<=n; i++)
cout<<"Proizvod["<<i<<"]="<<proizvod<<endl;
return 0;
}

;)
 
Član
Učlanjen(a)
02.07.2010
Poruka
11
Ukoliko neko zeli da nauci dobro da barata ovim programskim jezikom neka ode do neke kopirnice u okolini ETF-a u Bgd i neka kupi skriptu Porgramski jezik C- autor je Laslo Kraus, knjiga je neprevazidjena i potpuno je obradjen C, isto tako od istog autora postoji ceo serijal knjiga(C++,C# (sharp)).
 
Poslednja izmena:
Učlanjen(a)
10.04.2010
Poruka
29
nisam citao sve postove ali da pohvalim wladimira na dobrom turtorijalu ali ne razumijem zasto svi prave turtorijale za borlandov c++,a dev-c++ je mnogo bolji i mnogo je lakse raditi u njemu,a ovi primjeri sto su napisani ovdje tesko prolaze u dev-c++ i onda onome koji se prvi put sretne s tim bude nejasno zasto nece a oba su C++... :/
 
Natrag
Top