[Risolto] [C] Problemi "Hello world"

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
xenical
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 13 agosto 2014, 11:14
Desktop: Ubuntu Unity
Distribuzione: MATE 16.04.1 LTS for Raspberry
Sesso: Maschile
Località: Stuttgart

[Risolto] [C] Problemi "Hello world"

Messaggio da xenical »

Come tutti voi, credo, ho iniziato pure io con il classico "Hello world".
Ho quindi preso i codice del programma che ho reperito in rete e l'ho inserito in eclipse.

Poi ho voluto apportare una modifica per renderlo uguale al codice riportato sul testo che sto leggendo, cioè aggiungendo il comando

Codice: Seleziona tutto

system("PAUSE");


Codice integrale

Codice: Seleziona tutto

// hello.c il mio primo programma in C>
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char ** argv ) {
	printf("Hello, World!\n");
	system("PAUSE");
	return 0;
}
fatto il debug (ammesso che ve ne fosse il bisogno) e ovviamente non presenta alcun errore.

Giusto per provare ho lanciato il programma nella console e...mi restituisce quanto segue

Codice: Seleziona tutto

sh: 1: PAUSE: not found
Hello, World!
Ora mi chiedo cosa ci sia di sbagliato..ho controllato sintassi, maiuscole, punteggiatura e tutto risulta corretto .

MI sapete dare una spiegazione?

Grazie
Ultima modifica di xenical il domenica 31 agosto 2014, 15:45, modificato 1 volta in totale.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] "Hello world" domanda da principiante

Messaggio da gila75 »

Ciao Xenical
Giusto per provare ho lanciato il programma nella console e...mi restituisce quanto segue

Codice: Seleziona tutto
sh: 1: PAUSE: not found
Hello, World!
Se si con il terminale di Ubuntu, non serve, si usa in Windows:

Codice: Seleziona tutto

// hello.c il mio primo programma in C>
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char ** argv ) {
   printf("Hello, World!\n");
  
   return 0;
}
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: venerdì 15 febbraio 2013, 3:57
Desktop: KDE
Distribuzione: SuSE
Sesso: Maschile
Località: Un luogo geometrico
Contatti:

Re: [C] "Hello world" domanda da principiante

Messaggio da M_A_W_ 1968 »

In primo luogo, quell'idioma non va assolutamente usato. E' l'equivalente informatico dell'uso di un cannone navale da 155mm per eliminare delle zanzare tigre. E' una totale assurdità, legata all'uso di IDE minoritarie, bacate e progettate da incompetenti, che viola i principi più fondamentali alla base della mentalità di un informatico. Invoca infatti addirittura una sessione dell'interprete dei comandi, quasi sempre caricandolo da disco e comunque con una penalità prestazionale enorme, per eseguire un'operazione banalissima come la cancellazione dello schermo.

Secondariamente, tale idioma non è portabile e funziona unicamente sotto DOS e Windows.

Terzo, ma non ultimo: l'uso di un simile idioma, già da solo, pone una pesantissima ipoteca sulla credibilità e affidabilità dell'intero testo. Di chi si tratta stavolta? Deitel? Malik? Schildt? Altro?
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] "Hello world" domanda da principiante

Messaggio da gila75 »

M_A_W lo spaventi così.... :lol:
io ci sono abituato ormai.... :D
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: venerdì 15 febbraio 2013, 3:57
Desktop: KDE
Distribuzione: SuSE
Sesso: Maschile
Località: Un luogo geometrico
Contatti:

Re: [C] "Hello world" domanda da principiante

Messaggio da M_A_W_ 1968 »

Vista la pervasività di codesti idiomi nefandi e demenziali, s'impone l'uso della forza argomentativa e anche di metodi "scare tactics". Altrimenti continueremo a trovarci tra i piedi queste bestialità... perfino nei colloqui di lavoro con laureati e addottorati. :cry: :muro:
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] "Hello world" domanda da principiante

Messaggio da gila75 »

M_A_W_ 1968 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4640207#p4640207][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Vista la pervasività di codesti idiomi nefandi e demenziali, s'impone l'uso della forza argomentativa e anche di metodi "scare tactics". Altrimenti continueremo a trovarci tra i piedi queste bestialità... perfino nei colloqui di lavoro con laureati e addottorati. :cry: :muro:
Il difficile del neofita, (e io appartengo alla categoria), è proprio questo: non si ha modo di capire se una cosa è giusto o sbagliata.
Si presuppone che sui libri o in università ti dicano le cose corrette.
Prima di passare a gcc, usavo dev c++, ignaro del fatto che fosse una "ciofeca" piena di bugs, e anche io usavo system ("pause"), o al limite getchar();
solo col tempo ho capito.
La programmazione è talmente vasta, che è veramente dura iniziare e districarsi, soprattutto agli inizi.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [C] "Hello world" domanda da principiante

Messaggio da vaeVictis »

gila75 ha scritto:Il difficile del neofita, (e io appartengo alla categoria), è proprio questo: non si ha modo di capire se una cosa è giusto o sbagliata.
Assolutamente in disaccordo. In difficoltà è chi sbaglia approccio, e, continuando a sbagliare approccio, rimane in difficoltà anche in altri campi di studio.
Si presuppone che sui libri o in università ti dicano le cose corrette.
Mai supposto.
Da non supporre mai.
Un libro di testo (soprattutto scientifico) non è un testo sacro.
Prima di passare a gcc, usavo dev c++, ignaro del fatto che fosse una "ciofeca" piena di bugs, e anche io usavo system ("pause"), o al limite getchar();
Sempre perché, vedi sopra, si sbaglia approccio.
Anche se poi, ogni volta che suggerisco di non utilizzare una IDE quando si impara a programmare, vengo messo a un angolino con un cestino di pop corn.
E, per la cronaca, le ide ciofeca le pizzichi con una ricerca su google, come pure ci pizzichi i suggerimenti sul fatto che system("pause") sia "sconsigliato", come lo è a "priori" una chiamata di sistema (soprattutto per fare quanto fa questa chiamata di sistema).
La programmazione è talmente vasta, che è veramente dura iniziare e districarsi, soprattutto agli inizi.
Vero, ma funziona un po' così per tutto.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
xenical
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 13 agosto 2014, 11:14
Desktop: Ubuntu Unity
Distribuzione: MATE 16.04.1 LTS for Raspberry
Sesso: Maschile
Località: Stuttgart

Re: [C] "Hello world" domanda da principiante

Messaggio da xenical »

Azzarola ho scatenato un vespaio.

da quanto letto sopra devo dire che l'errore a questo punto non è del libro ma mio, in quanto l'esempio riportato nel testo era su win e non su linux. (è stata una mia idea inserire quel comando).
Ora ho capito che su linux quel comando non serve.
Inoltre lo stesso codice, letto su altro testo, spiegava l'inserimento di tale chiamata come modo per evitare la chiusura della finestra terminata l'esecuzione del programma.
Per contro devo ammettere d non aver colto e associato il fatto che in entrambi ii casi il SO usato sui testi in questione era win e non linux/unix, però in entrambi i casi dagli autori non è stata data spiegazione che tale comando fosse solo relativo ad ambiente DOS/Windows . (mentre il sorgente da cui ho preso il codice su internet era realizzato su linux e tale codice non presentava la chiamata a "System"
Avatar utente
xenical
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 13 agosto 2014, 11:14
Desktop: Ubuntu Unity
Distribuzione: MATE 16.04.1 LTS for Raspberry
Sesso: Maschile
Località: Stuttgart

Re: [C] "Hello world" domanda da principiante

Messaggio da xenical »

Approfitto per continuare con le domande da principiante

Ho ampliato quanto sopra cosi (ovvio è una cosa senza senso ma giusto per provare):

Codice: Seleziona tutto

#include <stdio.h>  
#include <stdlib.h> 

int main( int argc, char ** argv ) 
{
	int x;                        
	for(x=1;x<=5; x++)            
	printf("Hello, World!\n");    
	scanf("%d",&x);               
	printf("Per X = %d \n",x);    
	return 0;
}
Io mi apsettva che con

Codice: Seleziona tutto

printf("Per X = %d \n",x);    
mi mandasse a video il valore della variabile e poi inserisse "Hello world!"
invece mi manda solamente:

Codice: Seleziona tutto

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
questione di posizione del comando o manca qualcosa?
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] "Hello world" domanda da principiante

Messaggio da gila75 »

Ciao Xenical, l'inghippo da quanto ho capito è che ti sfugge che il costrutto for, esegue x volte la riga successiva se non si usano le graffe:
esempio:

Codice: Seleziona tutto

#include<stdlib.h>
#include<stdio.h>

int main() {
    int i;
    for (i=0; i<5; i++)
    {
        printf ("ciao ");
        printf ("Forum\n"); 
    }
  return 0;
}
output:

Codice: Seleziona tutto

ciao Forum
ciao Forum
ciao Forum
ciao Forum
ciao Forum
mentre se faccio:

Codice: Seleziona tutto

#include<stdlib.h>
#include<stdio.h>

int main() {
    int i;
    for (i=0; i<5; i++)
    printf ("ciao\n");
    printf ("Forum\n"); 
    
  return 0;
}
ottengo:

Codice: Seleziona tutto

ciao
ciao
ciao
ciao
ciao
Forum
in poche parole con le graffe dopo il for, crei un blocco che sarà eseguito x volte, mentre senza farà x volte solo la riga dopo.
Idem con il costrutto if quando ci arriverai :)
Avatar utente
xenical
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 13 agosto 2014, 11:14
Desktop: Ubuntu Unity
Distribuzione: MATE 16.04.1 LTS for Raspberry
Sesso: Maschile
Località: Stuttgart

Re: [C] Problemi "Hello world"

Messaggio da xenical »

Ecco dove casca l'asino :lol:

Grazie mille
Avatar utente
jackynet92
Moderatore Globale
Moderatore Globale
Messaggi: 13413
Iscrizione: sabato 3 settembre 2011, 1:41
Desktop: Mate
Distribuzione: Ubuntu 16.04 64bit
Sesso: Maschile
Località: Torino

Re: [C] Problemi "Hello world"

Messaggio da jackynet92 »

Se hai risolto metti [Risolto] al titolo del primo post.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] Problemi "Hello world"

Messaggio da gila75 »


Di nulla :) nessun asino...ci siamo cascati tutti all'inizio. Sono principiante anche io..ok, l'era del hello world l'ho passata, ma non molto più in la.
Ti consiglio però almeno le cose fondamentali, ciclo for, while, if e compagnia bella di studiarli per bene e non andare a tentoni.
faveroandrea
Prode Principiante
Messaggi: 17
Iscrizione: lunedì 29 ottobre 2012, 16:38
Desktop: gnome-fallback
Distribuzione: Ubuntu 12.10
Località: Treviso

Re: [C] "Hello world" domanda da principiante

Messaggio da faveroandrea »

M_A_W_ 1968 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4640202#p4640202] ha scritto:
CUT

Di chi si tratta stavolta? Deitel?
Scusa ma perchè Deitel? Cosa non dovrebbe andare in questo libro? Io oltre al mitico K&R posseggo anche questo e devo dire che dal mio punto di vista è fatto molto bene! Sostanziali errori, esclusi 2 di TRADUZIONE non ne ho visti :)
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: [C] Problemi "Hello world"

Messaggio da gila75 »

Scusa ma perchè Deitel? Cosa non dovrebbe andare in questo libro? Io oltre al mitico K&R posseggo anche questo e devo dire che dal mio punto di vista è fatto molto bene! Sostanziali errori, esclusi 2 di TRADUZIONE non ne ho visti :)
Auguri :D e chi lo tiene più M_A_W ora ??? :)
faveroandrea
Prode Principiante
Messaggi: 17
Iscrizione: lunedì 29 ottobre 2012, 16:38
Desktop: gnome-fallback
Distribuzione: Ubuntu 12.10
Località: Treviso

Re: [C] Problemi "Hello world"

Messaggio da faveroandrea »

:D
Chiedo scusa per l'off topic ma devo dire che sono curioso.
Ho sentito solo e sempre parlare bene di questo libro, basta vedere le recensioni su amazon italia per averne conferma.
Solo con il C++ i fatti cambiano visto che le recensioni dell' ACCU sono discordanti ma, quelle negative si riferiscono ai testi vecchi! Io per il C++ ho lo Stroustrup.
Il libro "C corso completo di programmazione" o, se ci vogliamo riferire alla versione inglese: "C How to program" è un libro abbastanza completo e fatto bene!

Castronerie come il "system("PAUSE")" ecc... sul libro non sono minimamente presenti e ci sono molto spesso riquadri evidenziati che dopo aver trattato ogni argomento danno nozioni sulla portabilità e sulla sicurezza del software.
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: venerdì 15 febbraio 2013, 3:57
Desktop: KDE
Distribuzione: SuSE
Sesso: Maschile
Località: Un luogo geometrico
Contatti:

Re: [C] Problemi "Hello world"

Messaggio da M_A_W_ 1968 »

Quando i miei studenti mi chiedono perché il Deitel è un pessimo libro, di solito rispondo con una domanda: "Quanti altri libri sul linguaggio C hai letto, oltre a quello?". La risposta, in genere, varia tra uno e due. Al che faccio presente che io, invece, li ho letti tutti, incluse alcune bozze che non sono mai andate in stampa. Il che chiude la discussione, poiché i miei allievi (laureati e addottorati neoassunti in una multinazionale) sono già stati ampiamente resi edotti delle mie credenziali: programmo in C ininterrottamente dal 1984, usando tale linguaggio ho progettato e scritto (tra l'altro) cross compiler, parser, librerie, driver e RTOS, eccetera. Dunque, senza ombra di dubbio, so di cosa sto parlando. :D Tuttavia, nonostante l'argomento sia già stato approfonditamente affrontato più e più volte in numerosi forum, non mi limiterò a liquidare la questione con una battuta ovvero facendo appello al principio di autorità "ad verecundiam".

Testi come il Deitel risultano fuorvianti e farraginosi: al di là degli errori (comunque presenti, e spesso non corretti nel tempo nonostante si tratti dell'unico manuale sul linguaggio C giunto addirittura alla settima edizione), il problema enorme sono le omissioni, le semplificazioni indebite, le misconcenzioni ed il pessimo stile di codifica, contrario alle principali norme di stile, anche elementari (es. MISRA/C 2012). Anche le varie nozioni "di approfondimento" sono spesso incomplete, discutibili, mal formulate o semplicemente errate nella generalità dei casi.

In molti paragrafi tale testo ricorda da vicino lo stile delle peggiori voci di wikipedia, quelle nelle quali ad esempio gli estensori (in genere qualche fanatico esuberante e turibolante) riescono mirabilmente a girare a vuoto per decine e decine di righe parlando di vita e carriera di una tale attrice o presentatrice lesbica e notissima attivista per i diritti omosessuali, che di tali battaglie ha fatto il perno centrale della sua presenza pubblica e della sua carriera, senza fare neppure la minima menzione di questi fatti (che in qualunque altra esposizione fatta da esseri senzienti troviamo squadernati non oltre la seconda riga)... ovvero, i fatti fondamentali ridotti a note a piè di pagina, o affogati in un contesto inutilmente verboso e farraginoso.
Allo stesso modo, il Deitel non coglie quasi mai nel segno nella esposizione dei concetti fondamentali del linguaggio e dei compilatori, in nome di una malintesa "chiarezza" che lascia il lettore pericolosamente illuso di aver compreso e crea un sostrato di misconcezioni perfino difficile in seguito da rimuovere, in aula, quando si trattano applicazioni di grandissima delicatezza come l'uso del inguaggio C in sistemi critici e in tempo reale (che è appunto l'oggetto dei miei insegnamenti). Confrontato con i testi di questa bibliografia, il Deitel rivela immancabilmente le sue magagne e la sua inefficacia nella profonda comprensione del linguaggio nella sua unicità.
Nella mia lunga esperienza, chi ha studiato il linguaggio prevalentemente o solo sul Deitel manifesta invariabilmente problemi in aula e a livello applicativo, in quasi ogni contesto non banale di uso del linguaggio.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
Avatar utente
xenical
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 13 agosto 2014, 11:14
Desktop: Ubuntu Unity
Distribuzione: MATE 16.04.1 LTS for Raspberry
Sesso: Maschile
Località: Stuttgart

Re: [C] Problemi "Hello world"

Messaggio da xenical »

Purtroppo anche con l'inserimento delle graffe il risultato non cambia...propone solo "Hello world"

Riporto il codice modificato:

Codice: Seleziona tutto

#include <stdio.h>    
#include <stdlib.h>  

int main( int argc, char ** argv )
{
	int x;                        
	for(x=1;x<=5; x++)
	{
	printf("Hello, World!\n");   
	scanf("%d", &x);               
	printf("Per X = %d \n", x);     
	}
	return 0;                    
}
Avatar utente
M_A_W_ 1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 856
Iscrizione: venerdì 15 febbraio 2013, 3:57
Desktop: KDE
Distribuzione: SuSE
Sesso: Maschile
Località: Un luogo geometrico
Contatti:

Re: [C] Problemi "Hello world"

Messaggio da M_A_W_ 1968 »

xenical [url=http://forum.ubuntu-it.org/viewtopic.php?p=4641311#p4641311][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Purtroppo anche con l'inserimento delle graffe il risultato non cambia...propone solo "Hello world"
Sarebbe sorprendente se funzionasse... stai usando la medesima variabile "x" sia come variabile di induzione che come variabile di input... ovviamente è una recipe for disaster. Occorre usare due variabili distinte, una destinata alla for() e l'altra unicamente per l'input.

Inoltre in matematica discreta, in computer science e nel linguaggio C si conta partendo da zero e la mera presenza di un segno <= o >= implica quasi sempre un errore (quantomeno progettuale), salvo casi rarissimi.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...

"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
Avatar utente
xenical
Prode Principiante
Messaggi: 50
Iscrizione: mercoledì 13 agosto 2014, 11:14
Desktop: Ubuntu Unity
Distribuzione: MATE 16.04.1 LTS for Raspberry
Sesso: Maschile
Località: Stuttgart

Re: [C] Problemi "Hello world"

Messaggio da xenical »

Grazie della spiegazione..vedo "se" :lol: :cry: riesco a modificarlo e farlo funzionare
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti