View Full Version : aiuto ragazzi sono alle prime
fabry085
09-03-2005, 11:04
ciao ragazzi sono nuovo...e vorrei imparare a programmare con c
io mi sono scaricato dev c++ per compilare il programma ma nn riesco
a fare niente cioè mi spiego allora per prima cosa io apro un progetto e gia
li mi vieni scritto :"di scelgliere se WINDOWS APPLICATIOO oppure CONSOLE APPLICATION
oppure STATIC LIBRARY oppure DLL e infine EMTY PROJECT
Mi sapete dire quale devo scegliere?...io ho un manuale dove mi fa un esempio stupido di programma
es:
#include <stidio.h>
main()
{
printf("ciao") ;
printf("a") ;
printf("tutti") ;
}
Questo è un esempio io lo scrivo nel mio programmino dev c++ lo compilo mi dice che nn ci sono errori lo salvo nel
desktop ma nn mi visualizza niente oppure a volte lo apro e mi si apre il promp di ms-dos ma mi dura una frazione
di secondo e si spegne subito...come mai chen devo fare ragazzi...grazie mille...mi piacerebbe impararlo. scusate se sono
stato lungo e noioso.
:cry: :cry:
Ziosilvio
09-03-2005, 11:13
Hai avuto un problema comune a chiunque sviluppi con gli IDE, e che non manca di gettare nel panico chi li usa per avvicinarsi alla programmazione.
Semplicemente, quando esegui il programma da Dev-C++, lui apre una finestra DOS per il tempo sufficiente all'esecuzione dello stesso: quindi la finestra si apre, il programma scrive "ciaoatutti" e termina, e la finestra si chiude. Dato che a fare quelle tre chiamate a printf il computer ci mette veramente un attimo, tu semplicemente non fai in tempo ad accorgerti che il programma e' stato eseguito!
Una soluzione e' aprire tu un Prompt dei comandi e lanciare il programma compilato da li'.
Un'altra e' aggiungere dopo le printf:
while (getchar() != '\n')
;
che sospende l'esecuzione finche' non viene premuto Invio.
P.S.: Per essere un programma introduttivo, contiene due errori concettuali gravi. Dove l'hai trovato?
fabry085
09-03-2005, 11:17
Lho trovato su un libro oltre tutto l'ho pagato anche un bel po'!! adesso provo a fare come hai detto te...cmq come faccio ad aprirlo dal prompt...io in ms dos nn so fare assolutissimamente niente...che frana che sono..
sai aprire almeno il prompt dei comandi? Una volta aperto ti posizioni nella cartella in cui si trova il tuo programma utilizzando il comando
cd A
per spostarti nella sottocartella A di quella corrente o cd.. per spostarti nella cartella padre di quella corrente. A quel punto ti basta digitare il nome del programma per farlo partire.
Oppure usa un altro ide, come MinGWDeveloperStudio che ferma la finestra una volta che il programma è finito.
Ziosilvio
09-03-2005, 12:31
Originariamente inviato da fabry085
Lho trovato su un libro oltre tutto l'ho pagato anche un bel po'!!
Puoi dirmi il titolo, per favore?
come faccio ad aprirlo dal prompt...io in ms dos nn so fare assolutissimamente niente
Imparerai ;)
Senza dilungarci troppo sulla sintassi:
- apri il Prompt dei comandi (Start-->Programmi-->Accessori-->Prompt dei comandi)
- usa il comando "cd" per posizionarti sulla cartella in cui si trova il file compilato
- da li', scrivi il nome del programma.
Esempio: programma ciao.c, nella cartella C:\Documents and Settings\fabry085\Programmi, compilato come ciao.exe. Allora dal Prompt dei comandi scrivi nell'ordine:
> cd c:\documents and settings\fabry085\programmi
> ciao
Buon lavoro!
fabry085
10-03-2005, 10:16
il libro si chiama "linguaggio c" di Alessandro Bellini e Andrea Guidi
edizione McGraw-Hill
Originariamente inviato da Ziosilvio
P.S.: Per essere un programma introduttivo, contiene due errori concettuali gravi. Dove l'hai trovato?
non esagerare, ne contiene solo uno! ;)
a proposito, fabry085, un modo più semplice per non far chiudere il prompt è chiamare la system("pause"); cmq ti riscrivo il programma a modo mio:
#include <stdlib.h>
#include <stdio.h>
void main() {
printf("ciao\n");
printf("a\n");
printf("tutti!\n");
system("pause");
}
Il main deve ritornare int :O
Ziosilvio
10-03-2005, 13:27
Originariamente inviato da 71104
non esagerare, ne contiene solo uno! ;)
Ti riferisci alla mancata restituzione di un valore da parte di main?
Quello era uno.
L'altro: non ha senso fare tre chiamate a printf quando ne basta una (printf è una funzione generica, grossa e pesante; e ogni chiamata mangia un sacco di tempo); rileggendo però riconosco che, forse, parlare di errore concettuale è un po' esagerato.
un modo più semplice per non far chiudere il prompt è chiamare la system("pause")
Questo metodo funziona a patto di sapere qual'è la funzione di shell equivalente a pause nel sistema operativo in uso: pause è un comando DOS, di cui non conosco l'equivalente (per esempio) Linux.
Il ciclo con getchar, invece, funziona su qualunque sistema.
void main()
AAAAAAAAARRRRRRRRGGGHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:muro::muro::muro:
Ho già spiegato ennemila volte solo su questo forum che dichiarare main come void non è né standard né portabile; e anche il motivo per cui i modi previsti dallo standard (int main(void) o int main(int argc, char *argv[])) siano gli unici che abbiano senso.
Devo ripetermi?
Originariamente inviato da Ziosilvio
AAAAAAAAARRRRRRRRGGGHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
:muro::muro::muro:
Ho già spiegato ennemila volte solo su questo forum che dichiarare main come void non è né standard né portabile; e anche il motivo per cui i modi previsti dallo standard (int main(void) o int main(int argc, char *argv[])) siano gli unici che abbiano senso.
Devo ripetermi?
ZioSilvio, perdonalo: è l'influsso di Java... :D
Scherzi a parte, leggendo quello che ha scritto 71104 mi sono reso conto di aver dimenticato un bel po' di C: nemmeno mi ricordavo che si poteva dichiarare un void! :D
O_o' io ho seguito un corso universitario di ANSI C, e sta cosa non l'hanno MAI detta... oltrettutto il gcc compila anche se scrivo "void main() {..."
cmq l'errore (concettuale, non sintattico!) era che le printf non avevano i newlines al termine; inutile usare tre chiamate diverse, a meno che non si desideri scrivere il testo su + linee, no? e anche in quel caso in realtà si potrebbe usare una chiamata sola:
printf("ciao\ncome\nstai?");
per quanto riguarda la restituzione del risultato, è una mancanza accettabile: un buon compilatore ANSI C in un caso simile deve dare un warning, ma non un errore; il codice generato sarà semplicemente inaffidabile nei casi in cui il risultato non viene restituito (solitamente il contenuto di EAX sarà indefinito).
PS: mai usato il Java...
Originariamente inviato da 71104
PS: mai usato il Java...
Era una boutade... :D
Comunque lì si può (e si DEVE, in quel caso) usare void.
beppegrillo
12-03-2005, 16:57
Originariamente inviato da 71104
O_o' io ho seguito un corso universitario di ANSI C, e sta cosa non l'hanno MAI detta... oltrettutto il gcc compila anche se scrivo "void main() {..."
cmq l'errore (concettuale, non sintattico!)
Beh direi allora che stì professori stanno inguaiati, se non hanno detto che main deve ritornare sempre un valore intero.
Se proprio vuoi completare il quadro, mettici i parametri argc ed argv.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.