infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Cserei Zoltan din Iulie 15, 2007, 20:41:36



Titlul: Header in C++: cu sau fara ".h"
Scris de: Cserei Zoltan din Iulie 15, 2007, 20:41:36
In cartea "Thinking in C++" (2nd revision) peste tot se foloseste headere fara .h, si zice ca standardul exclude .h.
In cartea respectiva hellowordul incepe in modul urmator:
Cod:
#include <iostream>
using namespace std;
si nu
Cod:
#include <iostream.h>
/* nu apare precizarea namespaceului */
Am incercat sa compilez hello worldul c++ cu GCC de sub FreeBSD, si cu Dev-C++ de sub Windows, ambele urlau ca conform sectiunii 17.nu.stiu.nr.subcapitolului din standardul C++, trebuie sa folosesc headerurile in forma <X> in loc de <X.h>.
Thinking in C++ zice ca headerele C X se includ sub forma de <cX> in loc de <X.h> deci, de exemplu:
Cod:
#include <cstdio>
Eu acum am terminat clasa a VIII-a, iar aveam un profesor de informatica caruia nu prea ii pasea daca invatam.. ne lasea sa joacem.. cine juca.. incercasem la el.. Ii ziceam ca ar fi mai bine, dar zicea ca numai eu vreau, si daca restul clasei nu vrea, el lasa sa facem ce vrem.
Intre timp, de la clasa a V-a am invatat o gramada de limbi web de la HTML la Ruby, la care, zic eu, ma cam pricep, chiar daca nu pot sa creez algoritmi mai complexe - datorita lipsei de ore reale de informatica.
Totusi, considerand ca incepand cu clasa a IX-a primim un profesor nou, care antreneaza si olimpiconi, as vrea sa incep cu C++.. Am incercat C parca in clasa a VI-a, cu cartea Ritchie, si Kernighan (nu mai stiu daca-i "K-e-r-n-i-g-h-a-n"), si ceva-ceva am retinut, totusi acum consider ca era prea avansat atunci pentru mine.
Am rezultate bune la olimpiade de chimie, fizica, mate (si nu numai, dar acestea sunt mai la tema), deci "ar trebui" sa fac ceva si la informatica anul urmator.
Liceul unde am cvalificat are laburi destul de avansate (Pentium D 820-uri cu 512 mb sau 1 gb memorie), dar pentru dezvoltare C++ se foloseste Borland C++ (versiunea ala veche, de la sfarsitul anilor '80, sau inceputul '90) care nu accepta headeri in forma <X>, ci numai <X.h>.

Eu as dori sa folosesc limbajul ales cat se poate corect, deci vreau sa aflu ca la olimpiade ce compilere se folosesc (sau aleg eu?), incepand cu judeteana. Nu stiu daca cu un trecut asemanator am multe sanse, insa sper.. si, in primul rand, vreau..
La 27-29 am o olimpiada nationala de stiinte (fiz-chim-bio), iar dupa aia ma apuc 24/7 de C++.
Niste sfaturi, va rog.


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Andrei Grigorean din Iulie 15, 2007, 21:21:04
Din pacate in majoritatea liceelor din Romania, nu doar in cel in care vei invata tu, se foloseste Borland C++ 3.1. Deasemenea la olimpiada judeteana tot in Borland vei lucra :(. De la nationala incolo, precum si la concursurile organizate pe internet, de obicei poti folosi g++.

Sfatul meu este sa inveti mai intai cum stau lucrurile in Borland, ca sa nu ai surprize neplacute la faza judeteana a olimpiadei. Faptul ca nu poti folosi headere de forma <cX> reprezinta una din micile, neimportantele diferente intre Borland si g++, dupa cum vei vedea mai incolo. Nu e nicio crima daca le scrii <X.h>.


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Cserei Zoltan din Iulie 15, 2007, 21:23:17
Alte diferente exista, de care trebuie sa fiu constient? Adica dupa cum vad in cartea lui Bruce Eckel se foloseste peste tot versiunea standard.

Apropo: de unde pot sa iau Borland C++ 3.1? Am cautat peste tot, insa ori siteuri chinezesti gasesc, ori subiecte de pe forumul softpedia nerezolvate, s.a.m.d. Se pare ca se foloseste numai in liceele romanesti  =D&gt;


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: HighScore din Iulie 15, 2007, 22:07:58
de pe dc++...eu acolo l-am gasit


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Cserei Zoltan din Iulie 15, 2007, 22:09:00
Un hub poti sa-mi zici?


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: HighScore din Iulie 15, 2007, 22:11:23
nu stiu ca e ceva timp de cand nu mai am dc...dar ai acolo o lista de public hubs si iti alege si tu pe alea cu multi utilizatori  :P


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Cserei Zoltan din Iulie 15, 2007, 22:19:04
Apropo.. o carte antica? Care m-a invata C++ a la Borland C++ 3.1. Caci consider ca fiind newb nu prea pot detecta diferentele.. adik.. damn romanian high schools.. adik.. am nevoie de o carte veche, dar buna.


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Valentin Stanciu din Iulie 15, 2007, 23:05:29
Faza e ca in momentul in care au facut standardul C++, au rescris librariile. Totodata C++ aduce namespaceuri si s-au gandit sa inglobeze librariile in namespace-ul std.
Deci, diferenta dintre <ceva.h> si <ceva> este ca varianta .h este C, iar cealalta pentru C++. Diferente efectiv intre ele nu sunt, decat la cod intern si faptul ca cele C++ sunt intr-un namespace.
see: http://www.cplusplus.com/doc/tutorial/namespaces.html

Pana una alta, zic sa te inveti sa scrii cod cat mai pur C. Asa nu o sa ai probleme cu diferentele dintre compilatoare (BorlandC sau G++). In ciuda denumirii BorlandC++ 3.1 NU este C++ standard (am mai tot zis asta pe forum si o sa continui sa zic); nici versiunile ulterioare nu cred ca sunt C++ standard. Abia cand o sa intelegi mai bine cum sta treaba sa te uiti peste STL sau mai stiu eu ce alte lucruri

Si recomand oricum sa folosesti
Cod:
#include<stdio.h>
...
printf/ scanf


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Andrei Homorodean din Iulie 16, 2007, 06:36:39
Cel mai bine ar fi sa lucrezi in borland pana la judet. Cred ca o carte buna e http://www.polirom.ro/titluri.cgi?action=titluri&class=details&id=1792 (http://www.polirom.ro/titluri.cgi?action=titluri&class=details&id=1792) , se foloseste in multe licee ca si manual. Din chestia asta inveti sintaxa si algoritmica cam pana la nivel de clasa a9-a, judet.


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Andrei Grigorean din Iulie 16, 2007, 11:12:00
E ok cartea,  din ea am invatat si eu C :P


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Cserei Zoltan din Iulie 16, 2007, 13:18:22
Astept parintii sa vina acasa si comand toate cele 3 volume.. fortza C++aua  :yahoo: (btw, nus stelist)


Exista diferente de performanta intre cout/cin si printf/scanf? (parca printf/scanf are mai multe optiuni, ii mai customizabil)


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Tataranu Vlad din Iulie 16, 2007, 13:35:07
Cica printf / scanf sunt mai rapide, dar nu ar trebui sa se simta diferenta la cateva mii de numere.


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Savin Tiberiu din Iulie 16, 2007, 13:37:36
Citat
Exista diferente de performanta intre cout/cin si printf/scanf?

Da exista. La printf si scanf programul stie deja formatul datelor, cin//cout nu le stie. In concluzei printf/ scanf e mai bun. (am invatat asta din propie experienta)


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Valentin Stanciu din Iulie 16, 2007, 17:44:12
printf/scanf e mai rapid; testat


Titlul: Răspuns: Header in C++: cu sau fara ".h"
Scris de: Gogu Marian din Iulie 16, 2007, 21:57:48
Citat
Exista diferente de performanta intre cout/cin si printf/scanf?

Da exista. La printf si scanf programul stie deja formatul datelor, cin//cout nu le stie. In concluzei printf/ scanf e mai bun. (am invatat asta din propie experienta)

De fapt cin si cout stiu exact tipul parametrilor pe cand printf si scanf trebuie sa parseze formatul care le este dat la fiecare apel. Citirea cu stream-uri e mult mai inceata in practica, ea avand totusi un potential mai mare decat citirea clasica din C.