Klub Pocetnika u C++

  • Začetnik teme Pocetnik C++
  • Datum pokretanja
P

Pocetnik C++

Gost
Zdravo svim pocetnicima i profesionalcima u programiranju ovim i drugim jezicima...

Sta kazete na predlog da osnujemo klub pocetnika u C++ i tako zajednickim snagama resavamo probleme tokom ucenja programiranju u ovom C++

Cekam na predloge...
 
Za pocetak napisacu najednostavniji kod u C++.

//********************************************************************
//simple.cpp
//********************************************************************

#include <iostream.h>
#include <stdlib.h>

void main (void)

{
cout << "Najednostavnija C++ Dos Aplikacija.";
system("PAUSE");
}

:roll:
 
Pocetnik C++:
Za pocetak napisacu najednostavniji kod u C++.
Ima par stvari koje bi ispravio kod tvog programa, tj da ga dovedemo u standard. prva stvar je <iostream.h> prema najnovijem standardu trebalo bi da stoji samo <iostream>. Druga stvar koja ti nedostaje jeste koriscenje namespace-a, namespace je uveden da bi se jednostavno prevazisao problem sa klasama istog imena primera radi ja i ti napravimo klasu string i ako bi neko koristio nase obe klase imao bi problema.

Treca stvar, svaka aplikacija treba da vraca int, na osnovu povratne vrednosti iz main-a operativni sistem zna da li se aplikacija izvrsila pravilno ili je prekinula izvsavanje zbog neke greske. To je vazno ako zelimo da ukombinujemo vise aplikacija da se redom izvrsavaju.

Cetvrto nemoj NIKADA ALI NIKADA da koristis system funkciju jer ona preko shella poziva komandu koju si kao string naveo, to moze da dovede do ozbiljnih sigurnosnih problema, zamisli da je neko promenio PATH i na pocetku path-a napravio program koji se zove PAUSE, rezultat toga tvoj program nebi pauzirao vec bi izvrsio drugi program. Umesto toga bolje je reci cin.get(); da istreaam klasa procita jedan znak sa standardnog ulaza.


//********************************************************************
//simple.cpp
//********************************************************************

#include <iostream>

using namespace std;
int main (void)

{
cout << "Najednostavnija C++ Aplikacija.";
cin.get();
return 0;
}
 
Hvala Null ovo su bile veoma korisne informacije, odmah sam probao i mnogo ti hvala na savetima. Nadam se da ce i ostali programeri da se ukljuce a i pocetnici pa da zajedno ucenje ovog programskog jezika ucinimo ineteresantnijim i laksim

Pozdrav i jos jednom hvala Null-u
 
Evo jos jedan programcic u C++ sa elementima I/O i jedno pitanje za Null

//*****************************************************************************
// Najednostavniji program u C++ sa I/O
//*****************************************************************************

#include <iostream>
#include <stdlib.h>

using namespace std;
int main()

{
char Ime[15], Prezime [15];
int Godine;
cout << "Ovo je najednostavniji program u C++-u ";
cout << " Unesi Ime ";cin >> Ime;
cout << "Unesi Prezime ";cin >>Prezime;
cout << "Koliko godina ima osoba "; cin >> Godine;
cout << "Uneseni podaci sa tastature " << Ime << " " << Prezime << " " << Godine <<" ";
cin.get( );
system ("PAUSE");
return (0);
}

sa nardbom cin.get( ); u ovom slucaju nisam mogao da zadrzim command promt na ekranu da bih video rezultat programa pa sam morao ponovo da upotrebim system ("pause"). Zasto u ovom slucaju nije funkcionisala sin.get()?

Ako postoji bolje resenje za ovaj kod onda napred iznesite ga ovde...
 
metod get(klase istream) bi trebalo da procita jedan karakter sa ulaza

http://www.cplusplus.com/ref/iostream/istream/get.html

A to bi trebalo da zadrzi program da se ne prekine. U svakom slucaju mislim da je dobra praksa pokrenuti program uvek iz same komande linije.

Druga stvar na koju bi ti skrenuo paznju jeste da ti je drugi progarm opet bagovit. Zato sto si alocirao fixnu velicinu za ime i prezime probaj da pokrenes program i da krenes da unosis podatke koji su duzi. videces da ce ti kako budes krenuo da upisujes vece duzine jedan string da ti se ulije u drugi, a isto tako ako uneses dovoljno veliki string program ce ti puknuti. Ovaj tvoj bug se zove buffer overflow i on se koristi u 99% slucajeva kod hakera prilikom upada u tudji kompjuter.

Ovde imas primer da vidis kako da ogranicis velicinu unosa.
http://www.cplusplus.com/ref/iostream/istream/get.html

Mada ja licno iako preferiram C++ da koristim umesto C-a ipak kada sam god prinudjen da radim sa nekim I/O stvarima koristim uvek C funkcije, a ukoliko koristim binarne podatke onda se spustim direktno na POSIX-ove sistemske pozive read/write/open/close/lseek
 
Hej dobra vam je ideja zaista
Ovaj klub pocetnika bi trebao dugo da zivi. Valjda smo vece face od onih KoJeNaVezi iz svastare. Iako ni protiv njih nemam nista protiv. Mislim da bi svako ko misli da programira trebao poceti od C++.
Evo mog iskustva: Dve godine sam ziveo u mraku zvanom Visual Basic, onda sam uzeo knjigu C++ za 21 dan (ne "visual C++ za 21 dan") procitao je za dvadesetak dana i znate sta? Krenuo sam na kurs za pravljenje igara i za dva ipo meseca rada vec sam skoro savim sam isprogramirao 1/4 igre slicne Starcraftu (iako kad se sve sabere realno sam radio svega 20-ak sati)! Igru uopste nije tesko napraviti sa 4-5 ljudi samo je pocetak tezak. Oni na zapadu iz nekog razloga rade veoma neproduktivno jedan sa kursa kaze da ima rodjaka u industriji igara i da oni dobiju rok od 15 dana za posao koji dobro uvezban tim moze da odradi za 3. Nikome nije jasno zasto je tako ali tako je. Ostali na kursu su stigli jos dalje jednom nedostaje jos samo AI i pathfinding da zavrsi celu igru(svako radi za sebe). Posle cemo da pravimo neki 3D RPG ili nesto slicno. Treba da izadjemo i u "Svetu Kompjutera" uskoro.
 
Igru uopste nije tesko napraviti sa 4-5 ljudi samo je pocetak tezak. Oni na zapadu iz nekog razloga rade veoma neproduktivno jedan sa kursa kaze da ima rodjaka u industriji igara i da oni dobiju rok od 15 dana za posao koji dobro uvezban tim moze da odradi za 3. Nikome nije jasno zasto je tako ali tako je

Ove ne da nema veze sa istinom, nego NEMA VEZE!!!

Aj' sad idi nek' te josh malo lazhu. Pa posle dodji na taj zapad sa svim tim prichama kojima su ti napunili ushi. Evo, dodji samo da vidish kako su ljudi "neproduktivni"...
 
Lord British:
Igru uopste nije tesko napraviti sa 4-5 ljudi samo je pocetak tezak. Oni na zapadu iz nekog razloga rade veoma neproduktivno jedan sa kursa kaze da ima rodjaka u industriji igara i da oni dobiju rok od 15 dana za posao koji dobro uvezban tim moze da odradi za 3. Nikome nije jasno zasto je tako ali tako je

Ove ne da nema veze sa istinom, nego NEMA VEZE!!!

Aj' sad idi nek' te josh malo lazhu. Pa posle dodji na taj zapad sa svim tim prichama kojima su ti napunili ushi. Evo, dodji samo da vidish kako su ljudi "neproduktivni"...

Aman zaman da licno nisam uradio toliko za kratko vreme sigurno ne bih poverovao. I meni je ta prica sumnjiva ali pogledaj cinjenice: Starcraft je radjen 4 godin jer su ga prvo radili za DOS pa su ga onda prebacili na Windows pa je firma koja ga je pravila bankrotirala.....(starcraft nije pravio blizzard nego nekoliko firmi za njega)
. A za 4-5 ljudi, oprostite nisam bio precizan, mislio sam na 4-5 programera. Dizajneri i ostalo su posebna prica i njih treba dosta. A ovo za neproduktivnost vazi samo za izradu igara. Ja pri tom ne mislim toliko da se sporo radi nego i da se desavaju besmisleni problemi.
I na kraju kako je onaj drugi sa kursa uradio sve ono? Ako nisi citao do kraja fali mu samo AI i pathfinding za dva ipo meseca rada a poceli smo u isto vreme(doduse on je vec pre toga bio odlican c++ programer a ja pocetnik). Naravno ono kasnije 3D cemo raditi zajedno.
A vrlo rado bih dosao na zapad. I to sto pre. Mene itekako interesuje sta je istina a nemoj misliti da ista gutam bez rezerve. Sigurno ne mislim da do kraja zivota ostanem ovde.
 
To shto ti prichash je svetlosnim godinama daleko od bilo chega.
Nemoj da vam se neko smeje kad dajete takve glupe izjave, jer ochigledno nemate pojma kako se radi u zapdnim game-studijima.
Hocesh primer? Evo, FarCry je radjen vishe od 4 godine. Naravno, po tvom ubedjenju, to je radila gomila lenjih idiota, vi biste to spucali za godinu dana... dadada
Igra na kojoj ja radim je vec skoro 3 godine u izradi, sa engine-om pisanim od nule. I mi smo gomila neproduktivnih kretena, naravno.

Dakle, umesto kursista, posecuj malo sajtove koji se zaista bave problematikom profesionalnog razvoja igara, vishe cesh nauchiti.

PS
A to o AI-u i pathfinder-u za 2 meseca (a da je prava stvar) nemoj da shirish dalje. Svi mi AI programeri ispashcemo budale i ostacemo bez posla jer ima ljudi koji na kursu nauche ono shto mi retardirani uchimo i usavrshavamo godinama... tja...
 
Lord British:
To shto ti prichash je svetlosnim godinama daleko od bilo chega.
Nemoj da vam se neko smeje kad dajete takve glupe izjave, jer ochigledno nemate pojma kako se radi u zapdnim game-studijima.
Hocesh primer? Evo, FarCry je radjen vishe od 4 godine. Naravno, po tvom ubedjenju, to je radila gomila lenjih idiota, vi biste to spucali za godinu dana... dadada
Igra na kojoj ja radim je vec skoro 3 godine u izradi, sa engine-om pisanim od nule. I mi smo gomila neproduktivnih kretena, naravno.

Dakle, umesto kursista, posecuj malo sajtove koji se zaista bave problematikom profesionalnog razvoja igara, vishe cesh nauchiti.

PS
A to o AI-u i pathfinder-u za 2 meseca (a da je prava stvar) nemoj da shirish dalje. Svi mi AI programeri ispashcemo budale i ostacemo bez posla jer ima ljudi koji na kursu nauche ono shto mi retardirani uchimo i usavrshavamo godinama... tja...

Covece nismo se uopste razumeli... nije on uradio pathfinding i AI nego sve osim AI-ja i pathfinding-a. Uopste ja ne mislim da ste vi gomila idiota, naprotiv. Cast je pricati sa takvima kao sto ste vi. I najneproduktivniji rad na zapadu je bar 6 puta produktivniji od do sada najproduktivnijeg rada u nasoj zemlji. Siguran sam da biste mogli da radite i 10 puta brze od nas.... A nemoj misliti da to ja sve necu lagano usavrsavati godinama. Da video sam ja i sajtove na tu temu iako ih ne posecujem dovoljno. Ako hoces rado cu ti poslati screen shootove one nase igre kad ih nabavim (nisu mi trenutno tu) samo reci e-mail. Ne, ne mislim da jos mozemo da uradimo FarCry za godinu dana :wink: jer je ta igra zaista izuzetna. Ali sigurno mozemo Starcraft za 7-8 meseci. Nemoj zaboraviti da je Sid Mejer sam uradio Civilisation za godinu dana. Zaista se izvinjavam C++ Pocetniku zbor ovog naseg raspravljanja. Sledeci put cu doci sa konkretnim primerima.
 
Drustvo na taj nacin nikako ne pomazete pocetnicima da napreduju u ovom (C++) jeziku, Ok lepo je znati i te podatke ali hajde malo svoje konkretno znanje pokazite ovde na jednostavnim primerima za pocetnike:

Juce i danas sam radio sa funkcijama header fajla iostream i poceo sam malo sa cstdlib i eto ti problem a on izgleda ovako..

Hocu da iz moj osnovnog programa funkcijom system ( ) pozovem drugi program ovako...

# include <cstdlib>
using namespace std;

ing main () {
system ("Ucenje");
} /// :~

Naravno u istom direktorijumu se nalazi file Ucenje.cpp i Ucenje.exe

i kada dodje do ove linije dobijem sledecu poruku;

The name specified is not recognized as an internal or external command, operable program or batch file:

U cemu je problem....

Hvala unapred...
 
Nasao sam u cemu je problem...File Ucenje.cpp sam trebao da postavim za pocetak tamo gde mi je izvrsni fajl kompajlera...ali sada sledi drugi problem kako da se iz drugog programa vratim u nastavak glavnog programa

Pozdrav
 
Pocetnic C++:
Drustvo na taj nacin nikako ne pomazete pocetnicima da napreduju u ovom (C++) jeziku, Ok lepo je znati i te podatke ali hajde malo svoje konkretno znanje pokazite ovde na jednostavnim primerima za pocetnike:

Juce i danas sam radio sa funkcijama header fajla iostream i poceo sam malo sa cstdlib i eto ti problem a on izgleda ovako..

Hocu da iz moj osnovnog programa funkcijom system ( ) pozovem drugi program ovako...

# include <cstdlib>
using namespace std;

ing main () {
system ("Ucenje");
} /// :~

Naravno u istom direktorijumu se nalazi file Ucenje.cpp i Ucenje.exe

i kada dodje do ove linije dobijem sledecu poruku;

The name specified is not recognized as an internal or external command, operable program or batch file:

U cemu je problem....

Hvala unapred...

Ja vec rekoh jednom izbegavaj system po svaku cenu. U sustini po zavrsetku onoga sto si pozvao kroz system glavni program bi trebalo da se nastavi od tog reda. Ne znam tacno kako se zovu funkcije pod windowsom za ovu namenu. Ali pod unix-ima se tu kortisti neki od exec sistemskih poziva. A ako mislis da ja pricam prazne price vezano za system funkciju savetujem ti da skoknes malo do sajta www.hackerslab.org tamo je prvih par primera bas vezano za system funkciju.
 
Dobro Gost nemoj da se ljutis ja samo idem kroz knjigu i proucavam primere...ali za pocetnike imam jedan jdan kod kako koristiti vectore za smestaj sadrzaja nekog vajla i to svaku liniju u jedan indeksirani vector koji posle narednom
for (expresion) mozemo da prikazemo na displeju...

Evo koda:

// Kopiranje sadrzaje fajla u sting vekotr...

#include <string>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int main () {
int i;
vector<string> v;
ifstream in("Scopy.cpp");
string line;
while (getline(in, line))
v.push_back(line); //dodaj liniju na kraju

// dodaj indeks linije i prikzai na ekranu...
for(int i=0; i<v.size(); i++)
cout << i << ": " << v << endl;
cin >> i;
} ///:~

Rezultat ovag koda je sledeci: Sadrzaj fajla Scopy.cpp se smesta u v gde je i-brih linije...tako da kasnije mozemo da prikazemo ovaj sadrzaj na ekranu linijom koda

cout << i koja se nalazi u okviru for petlje...

Toliko od mene za sada....a zamolio bih profesionalce u C++ da malo prokomentarisu ovaj kod...to ce nam mnogo pomoci...

Hval
 
Pocetnik C++:
Anonymous:
ovo je C a ne C++ !

zasto ?

pa nemash klase! C++ je "objektni jezik" a C obican! ali OK! (recimo ono cin.asdasd je funkcija klase cin ali o tom potom)
sad mozda je izvorni C bez ovih f-ja, a izvorni C++ ih ima ali ideja je bliza C-u. C++ je objektni jezik koji se pise na C-u.
klasa je kao tip podatka, npr


class SKUP {

celi brojevi; //elementi skupa

napravi_presek(...)
razlika(...)
prepisi skup(...)
napravi nov skup(...) // "radnje" koje mozes da
radis sa skupom
}

klasa ima znaci "atribute", tj neke vrednosti, tj podatke, i "metode", tj neke radnje koje mogu da se vrse nad tim podacima
to je oblik kako klasa izgleda, a objekat je jedna "promenljiva" klase (kao sto je int a,b,c; bilo bi SKUP s;) i ceo program bi trebalo da bude tako "napravljen", da vi samo pozivate funkcije koje postoje u nekoj klasi i tako radite nad objektom.
Ako znate recimo pascal, znate da u njemu postoje i "zapisi", e pa klase su recimo "zapisi" koje osim polja sadrze i funkcije.. Npr, zapis Auto se sastoji iz polja Marka, Registracija, Vlasnik
e sad sta sve sa Markom i Registracijom auta moze da se radi, pa dodas f-je i eto ti klase :)

C++ koristi C, Delphi je zasnovan na Pascalu, Visual Basic na Basicu (ako je objektni?)
Java je isto objektni, lici dosta na C++ ali je malo u nekim stvarima mozda "laksa" i "dodata".. Java mislim da ima i druge neke prednosti ili zasto su je vec smisilli, ali OK

Sad oni vas prvo uche C!
Mi smo na fakultetu C polagali kroz test, znaci moras da budes vrlo siguran.. (dobijes nebulozu i pita - sta ovde ispadne) meni je C bio nezgodan u pocetku ali sada mi je skroz prirodno da na nejmu nesto pisem (retko nesto pisem), i kad treba da pisem pisem u njemu, mozda nije lose da nabavite to (ispiti iz programiranja, ETF, ima da se nabavi tamo), ako vam se cini da zapinjete i da vas muchi sam C. mislim da su i OK etfovske knjige, Laslo Kraus, isto to pise i po nekim debelim knjigama, samo je sazetije.

e kad to naucite onda ce da vam objasnjavaju logiku tih klasa, i razne fore, al to chitajte :)

eto
 

Back
Top