Entra

View Full Version : [C] conteggio dei caratteri


mattoDNA
02-09-2011, 18:30
mi sto avvicinando per la prima volta alla programmazione, ho iniziato con python, ma sono passato al C. Ho comprato il libro "il linguaggio C. principi di programmazione e manuale di riferimento. brian w. kernighan, dennis m. ritchie" e sto studiando da la! sono fermo al paragrafo 1.5.2 capitolo 1.. il programma per il conteggio dei caratteri, non funziona.. non apisco dove sbaglio. ho visto che c'e un'altra discussione sul forum, ma non mi e stata d'aiuto. il codice è:

#include <stdio.h>
main()
{
long nc;

nc = 0;
while (getchar()!= EOF)
++ nc;
printf("%1d\n", nc);
}

AnonimoVeneziano
02-09-2011, 18:57
mi sto avvicinando per la prima volta alla programmazione, ho iniziato con python, ma sono passato al C. Ho comprato il libro "il linguaggio C. principi di programmazione e manuale di riferimento. brian w. kernighan, dennis m. ritchie" e sto studiando da la! sono fermo al paragrafo 1.5.2 capitolo 1.. il programma per il conteggio dei caratteri, non funziona.. non apisco dove sbaglio. ho visto che c'e un'altra discussione sul forum, ma non mi e stata d'aiuto. il codice è:

#include <stdio.h>
main()
{
long nc;

nc = 0;
while (getchar()!= EOF)
++ nc;
printf("%1d\n", nc);
}


Mmm, non so se il libro di K&R sia ancora il migliore per imparare il C visto che non credo descriva neanche l'ANSI C ... comunque a parte questo in che cosa non funziona? Non compila ? O il programma non fa quello che ti aspetti?

Comunque se stai imparando a programmare adesso e hai già iniziato con python potresti continuare con quello che ti permette di espanderti anche ad altri concetti, come l'OOP o la programmazione con le lambda functions senza imparare nessun nuovo linguaggio e poi se ti serve imparare il C o il C++ . Questo sempre che tu non lo stia imparando per qualche ragione specifica ( Scuola, università , necessità perchè vuoi lavorare su un programma scritto in C).

Ciao

PS= A me compila e funziona

mattoDNA
02-09-2011, 19:04
Io iniziai con python perchè lessi che era uno dei più semplici, poi però ho visto che la maggior parte dei programmi è scritta in C e quindi mi sono spostato su quello.. lo faccio per conto mio, ho 17 anni e vado in 4 superiore alla scuola agraria.. non mi interessa niente di quella scuola, infatti l ho scelta per pigrizia! Cmq.. il linguaggio di programmazione mi affascina, come il pc in generale.. cmq.. questo programma, in poche parole non fa niente.. una volta compilato in .exe (uso dev c++) lo apre con il prompt di windows, ma quando immetto un carattere, e premo invio, non succede proprio niente.. cmq sulla copertina del libro c'e scritto "ANSI C".. IL LIBERO è SECONDA EDIZIONE

Freaxxx
02-09-2011, 19:06
mi sto avvicinando per la prima volta alla programmazione, ho iniziato con python, ma sono passato al C. Ho comprato il libro "il linguaggio C. principi di programmazione e manuale di riferimento. brian w. kernighan, dennis m. ritchie" e sto studiando da la! sono fermo al paragrafo 1.5.2 capitolo 1.. il programma per il conteggio dei caratteri, non funziona.. non apisco dove sbaglio. ho visto che c'e un'altra discussione sul forum, ma non mi e stata d'aiuto. il codice è:

#include <stdio.h>
main()
{
long nc;

nc = 0;
while (getchar()!= EOF)
++ nc;
printf("%1d\n", nc);
}

A) un manuale di un linguaggio non è un libro di programmazione, per leggere un manuale devi già conoscere le basi della programmazione e il linguaggio
B) il K&R non è la fonte più aggiornata, anche se comunque anche alcuni IDE non hanno il supporto all'ANSI C e imparare anche le prime versioni del linguaggi può aiutare
C) EOF significa "fine del file" ed è l'identificativo che si trova appunto alla fine del file, adesso tu cosa stai contando? da dove? Così com'è il programma ha errori logici molto gravi.

mattoDNA
02-09-2011, 19:09
Io che parto da zero, da dove potrei iniziare? Conta che devo imparare tutto da solo..
cmq..il codice, è preso così com'è dal libro! dovrebbe contare i caratteri in ingresso

Freaxxx
02-09-2011, 19:15
Io che parto da zero, da dove potrei iniziare? Conta che devo imparare tutto da solo..
cmq..il codice, è preso così com'è dal libro! dovrebbe contare i caratteri in ingresso

i Deitel sono piuttosto noti, se cerchi "programmazione c" in google books trovi qualcosa di buono

http://books.google.it/books?id=Z-RfSQAACAAJ&dq=9788850329540&hl=it&ei=Qx1hTvbyCoTKtAbEou3aDQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCsQ6AEwAA

AnonimoVeneziano
02-09-2011, 19:19
Per far fare al programma il suo lavoro devi passare il carattere speciale end-of-file (EOF) al terminale una volta che hai scritto i caratteri. Per farlo su Linux devi premere la combinazione "Ctrl+D", su Windows "Ctrl+Z".

Non so se già lo sai, ma ti sconsiglio di far partire il programma direttamente da DEV-C++ , perchè sennò appena premi "Ctrl+Z" e il programma termina il terminale si chiude e non riesci a vedere il risultato .
Apri un terminale tu , muoviti fino alla directory dove è contenuto l'eseguibile ".exe" generato da Dev-C++ ed esegui il programma manualmente dal terminale, così questo non si chiuderà dopo .

Per quanto riguarda il libro ti consiglio di cercartene un'altro ... sinceramente quel libro che hai tu aiuta poco i nuovi arrivati perchè è più un manuale che un libro. E' adatto ai "già programmatori" e poco ai novellini. Ti consiglio di cercarti un libro più per principianti, come quelli ad esempio di Deitel & Deitel o simili.

Per quanto riguarda l'imparare a programmare e il C sappi che se parti dal C prima di iniziare a fare qualcosa di pratico passerà un bel po' di tempo, perchè è un linguaggio decisamente complesso per un principiante e anche per fare le cose più semplici potrebbe risultare frustrante col rischio di farti perdere interesse. Partendo da un linguaggio più di alto livello come python o java potresti iniziare ad essere produttivo in meno tempo e iniziare già a fare qualche programmino semi serio con una interfaccia grafica molto prima rispetto al C il che potrebbe stimolarti nell'apprendere di più.
In base a questo valuta tu cosa è meglio fare.

Ciao

Freaxxx
02-09-2011, 19:25
Per far fare al programma il suo lavoro devi passare il carattere speciale end-of-file (EOF) al terminale una volta che hai scritto i caratteri. Per farlo su Linux devi premere la combinazione "Ctrl+D", su Windows "Ctrl+Z".

Non so se già lo sai, ma ti sconsiglio di far partire il programma direttamente da DEV-C++ , perchè sennò appena premi "Ctrl+Z" e il programma termina il terminale si chiude e non riesci a vedere il risultato .
Apri un terminale tu , muoviti fino alla directory dove è contenuto l'eseguibile ".exe" generato da Dev-C++ ed esegui il programma manualmente dal terminale, così questo non si chiuderà dopo .

Per quanto riguarda il libro ti consiglio di cercartene un'altro ... sinceramente quel libro che hai tu aiuta poco i nuovi arrivati perchè è più un manuale che un libro. E' adatto ai "già programmatori" e poco ai novellini. Ti consiglio di cercarti un libro più per principianti, come quelli ad esempio di Deitel & Deitel o simili.

Per quanto riguarda l'imparare a programmare e il C sappi che se parti dal C prima di iniziare a fare qualcosa di pratico passerà un bel po' di tempo, perchè è un linguaggio decisamente complesso per un principiante e anche per fare le cose più semplici potrebbe risultare frustrante col rischio di farti perdere interesse. Partendo da un linguaggio più di alto livello come python o java potresti iniziare ad essere produttivo in meno tempo e iniziare già a fare qualche programmino semi serio con una interfaccia grafica molto prima rispetto al C il che potrebbe stimolarti nell'apprendere di più.
In base a questo valuta tu cosa è meglio fare.

Ciao

meglio consigliare codeblocks ;) http://www.codeblocks.org/

il ragionamento su cosa faccia questo software è molto dipendente dal terminale e dalla shell in cui viene eseguito, lascerei stare per adesso, anche perché i manuali di programmazione tendono sempre ad essere molto rigidi nell'esposizione e a non considerare i dettagli implementativi e le 1000 variabili date dall'ambiente di esecuzione.

mattoDNA
02-09-2011, 19:33
Per far fare al programma il suo lavoro devi passare il carattere speciale end-of-file (EOF) al terminale una volta che hai scritto i caratteri. Per farlo su Linux devi premere la combinazione "Ctrl+D", su Windows "Ctrl+Z".

Non so se già lo sai, ma ti sconsiglio di far partire il programma direttamente da DEV-C++ , perchè sennò appena premi "Ctrl+Z" e il programma termina il terminale si chiude e non riesci a vedere il risultato .
Apri un terminale tu , muoviti fino alla directory dove è contenuto l'eseguibile ".exe" generato da Dev-C++ ed esegui il programma manualmente dal terminale, così questo non si chiuderà dopo .




ah ecco, adesso funziona, grazie! cmq.. Allora ricapitoliamo:
1) Che libro potrei prendere su Python? Qualcosa di aggiornato.. ricordandoci sempre che parto da 0, e devo imparare tutto da solo!
2) Che libro prendere su C? ..ricordandoci sempre che parto da 0, e devo imparare tutto da solo!
3) Freaxxx, sii + chiaro! xD spiegami cosa vuoi dire..
Grazie a tutti comunque (:

Freaxxx
02-09-2011, 19:34
ah ecco, adesso funziona, grazie! cmq.. Allora ricapitoliamo:
1) Che libro potrei prendere su Python? Qualcosa di aggiornato.. ricordandoci sempre che parto da 0, e devo imparare tutto da solo!
2) Che libro prendere su C? ..ricordandoci sempre che parto da 0, e devo imparare tutto da solo!
3) Freaxxx, sii + chiaro! xD spiegami cosa vuoi dire..
Grazie a tutti comunque (:

a proposito di cosa?

AnonimoVeneziano
02-09-2011, 19:49
ah ecco, adesso funziona, grazie! cmq.. Allora ricapitoliamo:
1) Che libro potrei prendere su Python? Qualcosa di aggiornato.. ricordandoci sempre che parto da 0, e devo imparare tutto da solo!
2) Che libro prendere su C? ..ricordandoci sempre che parto da 0, e devo imparare tutto da solo!
3) Freaxxx, sii + chiaro! xD spiegami cosa vuoi dire..
Grazie a tutti comunque (:

Per il Python so che sul forum consigliavano questo : http://web.econ.unito.it/terna/infsimeco/howtothink_ita.pdf

E' un po' vecchio e per python 2 (che comunque è ancora il più diffuso e passare al 3 non è per niente difficile) , ma è molto dettagliato e spiega le basi della programmazione come un principiante dovrebbe impararle.

Per il C come ti ho detto (e anche Freaxxx) cerca un libro di Deitel & Deitel. Su Google cerca "Deitel & Deitel C programming" e qualcosa trovi :)

Purtroppo è una vita che non cerco libri sul C perchè ormai lo so a memoria :asd:

mattoDNA
02-09-2011, 19:55
a proposito di cosa?

a proposito del software che mi hai linkato, e quello che hai detto dopo.. mi sono perso.
cmq.
quel libro su python che consgliano sul forum, ho letto che è abbastanza vecchio e non continene gli aggiornamenti al linguaggio python.. una cosa simile.. dici ke è rilevante? inizio a studiarmelo?

AnonimoVeneziano
02-09-2011, 19:58
a proposito del software che mi hai linkato, e quello che hai detto dopo.. mi sono perso.
cmq.
quel libro su python che consgliano sul forum, ho letto che è abbastanza vecchio e non continene gli aggiornamenti al linguaggio python.. una cosa simile.. dici ke è rilevante? inizio a studiarmelo?

Se vuoi qualcosa di più recente prova qui:
http://wiki.python.org/moin/BeginnersGuide/NonProgrammers

Sono le risorse di python ufficiali e non per i non-programmatori.

Vedi se trovi qualcosa di buono qua :)

mattoDNA
02-09-2011, 21:05
grande problema.. è tutto in inglese

AnonimoVeneziano
03-09-2011, 00:47
grande problema.. è tutto in inglese

Se non sai bene l'inglese potrebbe essere un problema . Praticamente tutto il materiale di un certo livello è in lingua inglese. Se vuoi avere un futuro in questo campo (ad esempio perchè vuoi continuarne lo studio all'università) ti consiglio di concentrarti sul miglioramento della conoscenza di questa lingua . Potresti cogliere proprio l'occasione di leggere un po' di materiale in inglese per migliorarlo. Con le guide/libri in italiano in genere si arriva solo fino a un certo punto (base) e poi non si trova più niente o poco.

Ciao

mattoDNA
03-09-2011, 02:18
eh si lo so.. l'inglese mi piace, e non sono neanche tanto scarso.. ma leggere un testo sulla programmazione in inglese neh.. impossible per adesso :S
cmq.. con python da dove inizio? :S