[ I0stream @ 29.01.2005. 10:37 ] @
Pozdrav svima na forumu!!!


Imam 2 pitanja.

1.Poceo sam da citam knjigu od Eckela "Misliti na jeziku C++ i vec sam naisao na prvi problem.


Napravio sam fajl Hello.cpp sa ovim codom

Code:

//: CO2:Hello.cpp
// Pozdrav u C++-u
#include <iostream.h> //Deklaracije tokova
using namespace std;


int main () {
    cout << "Zdravo, svete! Danas imam"
        << 8 << " godina!" <<endl;
} ///:~


Kada ovo kompajliram u MS Visual C++ dobijam ove greske :

Code:

--------------------Configuration: hello - Win32 Debug--------------------
Compiling...
hello.cpp
C:\Documents and Settings\I0\My Documents\C++ dev\Vjezbe\hello.cpp(4) : error C2871: 'std' : does not exist or is not a namespace
C:\Documents and Settings\I0\My Documents\C++ dev\Vjezbe\hello.cpp(10) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.

hello.exe - 1 error(s), 1 warning(s)



Ne znam kako da rijesim ovo,a tek sam poceo da citam knjigu....


2.Jel ima neki forum za "C++ newbie" nije bitno na srpskom ili eng. gdje bih mogao da postavljam pitanja ovakvog kalibra...


poz
[ franticnick @ 29.01.2005. 11:12 ] @
Probaj da napises "#include <iostream>" (znaci bez".h")

a za main ti lepo pise da treba da vrati vresnost. Dakle dodaj "return 0;" pre "}".

[ I0stream @ 29.01.2005. 13:46 ] @
Hvala brate,linkovao ga je i sad imam exe.


A sad mi reci zashto Eckel nije to ispravio?
[ Dragi Tata @ 29.01.2005. 14:59 ] @
Citat:
I0stream: A sad mi reci zashto Eckel nije to ispravio?


Zato što je Eckel poslednji put programirao u C++u pre 10 godina. Moj savet ti je da nađeš neku drugu knjigu, po mogućstvu "Accelerated C++" ili "C++ Primer" 4-to izdanje.
[ I0stream @ 29.01.2005. 15:54 ] @
Pa ne mogu da vjerujem,kad sam pitao prije 3 mjeseca vidio sam masu odgovora kao Eckel on je bog,pa sam prochitao i dosta postova kako Eckel najbolji.....


I sad ti kazes da je on torima ....

Ja imam ovu Eckelovu knjigu http://www.mikroknjiga.co.yu/Prikazi/MNCP_prikaz.html

Prvi tom...


p.s. : ono nije bila Eckelova greska vec moja,stavio sam iostream.h a u knjizi he bez .h
[ Dragi Tata @ 29.01.2005. 16:16 ] @
Nađi ti, blago meni, ovu knjigu:

http://www.mikroknjiga.co.yu/Prikazi/EPCP_prikaz.html

Ne samo da je mnogo kraća nego Eckelova, nego će da te nauči modernom C++u a ne onom od pre 10 godina.
[ franticnick @ 29.01.2005. 20:47 ] @
Ima dosta dobrih knjiga za C++. Ja bih ipak izdvojio: Laslo Kraus - "Programski jezik C++ sa resenim zadacima", Mikro Knjiga Beograd. Mozda nije bas za totalne pocetnike, ali ipak preporucujem.

[ 3MAJ86 @ 29.01.2005. 21:12 ] @
da li se neko susretao sa "Objektno orijentisano programiranje u C++" autor: Dragan Milicev. (mozhda sam pogreshio naziv, ali u sushtini to je to)

dobio sam dosta pozitivnu kritiku na rachun ove knjige, pa me interesuje da chujem josh mishljenja
[ NastyBoy @ 30.01.2005. 01:27 ] @
Herb Sutter, Scott Meyers, i (za naprednije stvari) Andrei Alexandrescu su autori chije knjige treba chitati.

Knjige koje su napisane pre vishe od 5 godina (i nemaju dopunjena izdanja) su u mnogim stvarima diskutabilne, C++ je zadnjih godina otishao daleko, narochito na polju meta-programiranja (templejta)
[ franticnick @ 30.01.2005. 12:18 ] @
Citat:
3MAJ86: da li se neko susretao sa "Objektno orijentisano programiranje u C++" autor: Dragan Milicev. (mozhda sam pogreshio naziv, ali u sushtini to je to)

dobio sam dosta pozitivnu kritiku na rachun ove knjige, pa me interesuje da chujem josh mishljenja


Imam je. Vise puta sam bezuspesno pocinjao da je citam :) Knjiga odaje utisak da se stalno obilazi sustina. Mozda nekom odgovara ovakav stil pisanja, ali meni nije koristila. Meni se vise svidja Kraus-ov pristup gde svaka recenica ima smisla a objasnjenja su kratka i jasna.



[ Dragi Tata @ 30.01.2005. 14:01 ] @
Citat:
NastyBoy: Herb Sutter, Scott Meyers, i (za naprednije stvari) Andrei Alexandrescu su autori chije knjige treba chitati.


Polako, prijatelju, čovek je početnik. Sutter i Meyers se čitaju kad si već profesionalac, a Alexandrescu ako pišeš biblioteke u C++u.
[ partlov @ 30.01.2005. 14:18 ] @
Kod Krausa jeste stvarno sve objasnjeno do detalja i primeri su reprezentativni, pa malo toga ostane nejasno posle njih. Meni on drzi vezbe iz objektnog programiranja i zaista ume da objasni sve. Imas novije izdanje od prosle godine gde je malo jos stvari dodato, mada se on tu dosta oslanja na knjigu Reseni zadatci iz programskog jezika C.
[ NastyBoy @ 30.01.2005. 15:39 ] @
Citat:
Dragi Tata: Polako, prijatelju, čovek je početnik. Sutter i Meyers se čitaju kad si već profesionalac, a Alexandrescu ako pišeš biblioteke u C++u.


OK, tachno donekle, ali ostatak mog posta je bio ustvari savet pochetnicima - da ne veruju previshe knjigama koje su zadnji put shtampane neke '95. Iz njih se mozhe izvuci sintaksa i generalni principi OOP-a u C inkrementu, i to je sasvim OK. Ali ideje i nachin implementacije su dobrano sazrele od tada. Mi i danas muku muchimo sa kolegama koji nisu makli dalje od "hijerarhija klasa", svaka klasa nasledjena iz base-klase koja ima 150 metoda, od toga polovina virtuelnih. To nije C++ :)

PS
Bez chitanja gore pomenutih autora i ne mozhe se postati profesionalac, tako da mi chitanje tih knjiga nakon tvrdnje da je neko vec profesionalac zvuchi kao prevara :)

[ leka @ 30.01.2005. 16:33 ] @
Izgleda da pokusavas da kompajliras taj kod sa kompajlerom koji je podesen da bude jako striktan. :)

Na GNU/Linux-u se program kompajlira sa jako opsirnim upozorenjem:

dejan@gnu ~/prj/cxx/es
$ make hello_world
g++ hello_world.cpp -o hello_world
I fil inkluderad från /usr/lib/gcc/i386-redhat-linux/3.4.2/../../../../include/c++/3.4.2/backward/iostream.h:31,
från hello_world.cpp:3:
/usr/lib/gcc/i386-redhat-linux/3.4.2/../../../../include/c++/3.4.2/backward/backward_warning.h:32:2: varning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

Pretpostavljam da bi kompajliranje proslo i u Dev-C++-u ako bi ubacio -Wno-deprecated u kompajler-opcije...
No, ubuduce bi ipak trebalo izostavljati ".h" u #include direktivama (bar kad su standardni hederi u pitanju). Mozda je pitanje navike, ali ja bih vise voleo da se ostalo na tome da se kuca i .h ...
[ Dragi Tata @ 30.01.2005. 17:34 ] @
Citat:
NastyBoy:  Mi i danas muku muchimo sa kolegama koji nisu makli dalje od "hijerarhija klasa", svaka klasa nasledjena iz base-klase koja ima 150 metoda, od toga polovina virtuelnih. To nije C++ :)


Uh, zvuči mnogo poznato :(
[ spaka-s @ 01.02.2005. 09:44 ] @
Milicev-Objektno orjentisano progr. na C++-u je fina knjiga ali je zaista problem sto ima nekih djelova koji su prilicno , da kazem "Ne citljivi"... Mozda se moze reci da je on ,pa...nedje "Drzao filosofiju", mozda da bi stvorio neki svoj stil...
Sto se tice Kraus-a ,meni se cini da je njegovo tumacenje odlicno . :) Odnosno Ucenje :)
Za C++ je jako dobra knjiga , eto ni ja nesto tacno ne znam naziv :) Autori su Deitel&Deitel a knjiga je nesto kao "C++ , kako nauciti .." Ili tako nesto ...
Mislim da je dobra , a ako se neko sreo sa njom neka da koji komentar ...
Poz...
[ zika ajkula @ 12.02.2005. 00:33 ] @
Johnny je nijveci lik sto se programiranja tice, tako da njega sve pitajte.
[ rj444 @ 12.02.2005. 16:04 ] @
Knjiga OOPRV od Miliceva postoji i u elektronskoj formi, mogu ti je poslati, ako zelis sam da se uveris kakva je. Inace mislim da jeste teska za citanje, mozda zbog toga sto Milicev predaje PRV-Programiranje u realnom vremenu, a ne kurs iz C++.
[ filmil @ 12.02.2005. 17:21 ] @
Citat:
uveris kakva je. Inace mislim da jeste teska za citanje, mozda zbog toga sto Milicev predaje PRV-Programiranje u realnom vremenu, a ne kurs iz C++.
Milićev drži i kurs C++-a. Ali svejedno, knjiga jeste teška za čitanje. Šta da se radi, takvim stilom piše.

f
[ Microsoft @ 12.02.2005. 21:42 ] @
//: CO2:Hello.cpp
// Pozdrav u C++-u
#include <iostream.h> //Deklaracije tokova
using namespace std;


int main () {
cout << "Zdravo, svete! Danas imam"
<< 8 << " godina!" <<endl;
} ///:~

Inace program ti ne radi jer si i osmicu trebao staviti u navodne znakove...
[ IronTIRANIN @ 19.02.2005. 15:31 ] @
Svejedno je da li pise cout<<8 ili cout<<"8". Jedino sto je po meni problem, to je ovo int main(). Mnogo je prikladnije void main().
[ Burgos @ 19.02.2005. 15:40 ] @
Pa nije baš svejedno
I probaj kompajlirati source nekim C++ kompajerom, pa ćeš videti šta ti kaže za void main()

A po meni (i po g++u) problem je ovde:

Code:

#include <iostream.h> //Deklaracije tokova
using namespace std;


Kad je već naglašeno

using namespace std;

treba koristiti

#include <iostream>

umesto

#include <iostream.h>


[Ovu poruku je menjao Burgos dana 19.02.2005. u 16:50 GMT+1]
[ Dragi Tata @ 19.02.2005. 15:42 ] @
Citat:
IronTIRANIN: Mnogo je prikladnije void main().


To je zabranjeno standardom. Mora int main.
[ Burgos @ 19.02.2005. 15:49 ] @
Za one koji ne shvataju zašto nije svejedno da li je "8" i 8 (možda i takvih ima)

Izraz 8 + 8 vraća 16, a "8" + "8" vraća "88"
[ Marko Stankovic @ 19.02.2005. 19:31 ] @
U ovom primeru je apsolutno svejedno da li je "8" ili 8. Odnosno i u jednom i u drugom slucaju ce ispisati isti tekst na ekranu.
A ovo oko izraza ti i nije bas tacno. Drugi izraz jedino moze da radi ako je levi operand tipa string jer je u toj klasi preklopljen operator + i on radi ovo sto si ti zamislio.

[ Dragi Tata @ 19.02.2005. 19:37 ] @
Citat:
Burgos: "8" + "8" vraća "88"


Jok, vala. To vraća samo grešku kod kompajliranja.
[ leka @ 19.02.2005. 21:23 ] @
Zaboravio sam da posaljem ispravan kod:
Code:

// C++ kod "prema standardima"

#include <iostream>

using namespace std;

int main() 
{
  cout << "Zdravo, svete! Danas imam "
    << 8 << " godina!" << endl;
  return 0; // main() mora da vrati int vrednost!
}


Sledi primer kompajliranja+linkanja i izvrsavanja:

dejan@gnu ~/prj/cxx/es
$ make hello_world
g++ hello_world.cpp -o hello_world

dejan@gnu ~/prj/cxx/es
$ ./hello_world
Zdravo, svete! Danas imam 8 godina!
[ Burgos @ 20.02.2005. 09:51 ] @
Citat:
//main mora da vrati int vrednost!


Po defaultu int funkcija u kojoj nema return vratiće 0, pa je taj red suvišan (jeste da će te kompajler upozoriti)

I imam jedno pitanje, da ne postavljam novu temu: Zašto me kompajler upozorava:

Warning: There is no newline at the end of file

EDIT:

Što se tiče 8 i "88" znam da se nisam dobro izrazio, tj. podrazumevao sam da je prvi broj tipa string.

Code:

#include <string>
#include <iostream>

int main()
    {
          std::string a = "8";
          std::cout << a + "8";
}
[ Microsoft @ 21.02.2005. 20:13 ] @
Hm...Ispricavam se na netočnom navodu.Mislio sam da std::cout ispisuje samo varijable ili, ako nesto što se ispisuje nije varijabla, da treba ići u navodne znakove.
[ Toyo @ 21.02.2005. 23:57 ] @
Citat:
Warning: There is no newline at the end of file


Mozda gresim, ali pre jedno 10 godina je bilo problema sa konstrukcijom tipa:

Code:

while not eof(f) do
  while not eoln(f)
    ....


I kada je program dosao do kraja fajla u 2. petlji, tada naravno nije naiso na eoln nego na eof. Posto je trazio eoln a ne eof, ostao je u istoj petlji, i prilikom sledeceg citanja javljao je gresku da je dosao do kraja fajla, a ti bi ga jos citao. :)

Verovatno je to upozorenje ostalo od tog vremena.
[ Burgos @ 22.02.2005. 15:13 ] @
Moguće. Ne vidim drugo objašnjenje...