PDA

Visualizza la versione completa : chiarimenti sul primo programma in C


dario2588
03-11-2011, 12:49
ho letto da poco un manuale di c++...
adesso st leggendo un manuale del c(ansi),
e spiega come fare il primo programma: il solito ciao mondo...
e dice di fare cos:
#include <stdio.h>
main()
{printf("ciao mondo\n");}

dice che si fa cos...lo metto su codeblocks e non solo mi d errore ma mi fa delle correzioni senza che io gli dicessi niente:
mi aggiunge la libreria <stdlib> e mi mette return 0 sotto il comando printf, mi cambia la scritta "ciao mondo" in "hello world" e non so perch mi continua a dare errore sull'apertura della parentesi graffa sotto al main...
in c++ si scrive invece in maniera diversa,
dopo il comando di output (cout<<"ciao mondo") si scrive system("pause")per non arrestare immediatamente il programma e poi return 0 per poi chiudere il main...
dopo questo allora mi sorgono delle domande...sbaglia il libro oppure sbaglia codeblocks a correggermi quelle cose da solo??
prima del main non ci va "int"? il comando system("pause") lo stesso nel c?(anche se non lo scrive nel libro)
return 0 ci va lo stesso nel c?(anche se manco questo scritto nel libro)
mi consigliate un'altro compilatore?(si pu implementare il c in visualstudio?)
non mi dite il dev come compilatore perch ormai essendo un progetto abbandonato molto indietro...
grazie a tutti :ciauz:

philbert
03-11-2011, 13:05
Cioa,

Printf("ciao mondo\n");
tipicamente ANSI C

cout<<"ciao mondo";
tipicamente C++

codeblocks non l'ho mai usato e non saprei dirti come si fa ma probabilmente devi solo dirgli che vuoi compilare ANSI C e non C++, cos lui lo sa e non ti corregge

jimmikid
03-11-2011, 13:06
Ciao!!!
Innanzitutto ottimo scelta l'approccio al c++.
Riguardo la scelta del compilatore e dell'ide secondo me codeblocks con il mingw perfetto,
e riguardo al frammento di codice che hai postato. Un programma "Hello World" o "Ciao mondo"
in c++ su pu scrivere in questa maniera


#include <iostream>

using namespace std;

int main (){

cout << "Hello World" << endl;

system("PAUSE");

return 0;

}


Io come esperienza personale posso dirti che codebloks+mingw (scaricato da http://www.codeblocks.org/downloads/26#windows versione da 74 mb) perfetto (addirittura le ultime due istruzioni del codice che ti ho postato non sono necessarie, ferma l'output in automatico). In pi come manuale da seguire ti consiglio qualcosa della mcGraw oppure c++ for dummies che sono i migliori secondo me. Se hai quei problemi prova a disinstallare tutto il pacchetto che hai installato e reinstallarlo con il pacchetto che ti ho detto io. Vedi se in quel modo va.
Un saluto :ciauz:

dario2588
03-11-2011, 13:37
mi sa che non avete capito :D
in c++ lo so fare il programma... ansi... ho fatto un sacco di cose... i vettori, le matrici, for, if e via dicendo...
io volevo chiarimenti sul c(ansi)
nonostante su codeblocks creo un progetto per il c e metto il codice per il programma in c, che ho citato prima...
mi d quegli errori l...
volevo sapere perch mi da quegli errori l (se sbaglia codeblocks), e poi volevo chiedere se i comandi system ("pause") e return 0 (che fanno parte del c++ valgono anche per il c)

oregon
03-11-2011, 13:49
Non si pu dire che

return 0

faccia "parte" del C++ ...

E' l'istruzione classica del C per restituire un valore da una funzione.
Anche dal main (che una funzione) e che dovrebbe essere

int main

e quindi restituire un valore.

Anche

system("PAUSE")

non c'entra direttamente con il C++ (n con il C) ma serve solo (tramite una istruzione di DOS, quindi solo nell'ambito di Windows) a garantire una pausa prima della chiusura della finestra in cui viene visualizzato l'output di un programma. Ma non affatto necessaria dato che il programma stesso lo puoi direttamente eseguire in finestra.

E' singolare che tu abbia affrontato il C++ e dopo il C, ma non dovresti avere tutti questi dubbi ...

Il fatto che il codeblocks ti presenti del codice d'esempio (di default) non ti impedisce di ignorarlo, eliminarlo e scriverci il tuo.

dario2588
03-11-2011, 14:59
i programmi che creo sono da console e se non metto system("pause") esce subito senza neanche farmi vedere che ho fatto quindi indispensabile...visto che ci siamo... system("pause") e return 0 visto che sono funzioni legate a windows... come faccio a metterle su linux...
comunque codeblocks (quello con mingw da 74mb) quando lo faccio partire la prima volta mi chiede il compilatore ma non c' mingw...

oregon
03-11-2011, 15:26
Originariamente inviato da dario2588
i programmi che creo sono da console e se non metto system("pause") esce subito senza neanche farmi vedere che ho fatto quindi indispensabile...visto che ci siamo...

Non indispensabile se, come ti ho detto, provi i programmi da console ...

Cio, apri una console o finestra DOS, come preferisci (comando cmd), vai nella cartella dell'eseguibile e lo lanci.


return 0

Mai detto che sia legata a Windows ... fai un po' di confusione ... necessaria perch la funzione main di tipo int.


come faccio a metterle su linux...

La system("PAUSE") non la devi inserire su Linux ... ripeto, solamente utile quando la utilizzi nell'IDE da Windows ...

dario2588
03-11-2011, 15:59
quindi per non mettere return 0 come lo dichiaro il main?
(comunque io gli exe non li faccio mai partire dal dos ma li compilo e li eseguo dal compilatore, ecco perch per me essenziale)
comunque secondo te codeblocks va bene per il c?? a me da un sacco di errori...bho... e usare mingw con codeblocks non si pu perch se scarico la versione di codeblock con mingw, quando lo faccio partire all'inizio mi dice di scegliere il compilatore... e mingw non c' tra i presenti...

oregon
03-11-2011, 16:12
Originariamente inviato da dario2588
quindi per non mettere return 0 come lo dichiaro il main?

Se una funzione restituisce un intero allora devi scriverlo ...

int main()

Ma in C++ la stessa cosa e dici di averlo studiato ...



(comunque io gli exe non li faccio mai partire dal dos ma li compilo e li eseguo dal compilatore, ecco perch per me essenziale)

Non si eseguono dal "compilatore" ma dall'IDE ... adesso non sono sicurissimo sul tasto perch non l'ho installato, ma se utilizzi F9 pensa l'IDE a mantenere la console aperta e quindi non hai bisogno della system ...


comunque secondo te codeblocks va bene per il c?? a me da un sacco di errori...bho...

Certo che va bene, come altri ambienti e compilatori ... basta saperlo installare ed utilizzare ... ma vale per tutti gli ambienti ...

sebaldar
03-11-2011, 18:08
Originariamente inviato da dario2588
...
prima del main non ci va "int"?
...


in C, se non indichi esplicitamente il tipo, la funzione supposta ritornare un int

ciao
sergio

Loading