Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2003, 18:29   #1
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Aiuto con primi programmi in c

Studiando dal Kernighan-Ritchie mi sono imbattuto in questo semplice programmino che però presenta un aspetto a me non del tutto chiaro:
il programma serve per il conteggio dei caratteri di un flusso proveniente da tastiera:

#include <stdio.h>
main()
{long nc;
nc=0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);}

Quello che non mi è chiaro è il significato ed il funzionamento dell'EOF (end of file). Infatti scrivendo

while (getchar() != 'a')

non appena inserisco una 'a' da tastiera il programma mi da il conteggio dei caratteri. Usando l'EOF invece come faccio a visualizzare questo risultato? Aiutatemi per favore perchè l'EOF è presente nella maggiorparte dei programmi che il libro presenta (copia tra file, conteggio delle linee ecc...)
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:16   #2
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: Aiuto con primi programmi in c

Quote:
Originally posted by "terrys3"

Studiando dal Kernighan-Ritchie mi sono imbattuto in questo semplice programmino che però presenta un aspetto a me non del tutto chiaro:
il programma serve per il conteggio dei caratteri di un flusso proveniente da tastiera:

#include <stdio.h>
main()
{long nc;
nc=0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);}

Quello che non mi è chiaro è il significato ed il funzionamento dell'EOF (end of file). Infatti scrivendo

while (getchar() != 'a')

non appena inserisco una 'a' da tastiera il programma mi da il conteggio dei caratteri. Usando l'EOF invece come faccio a visualizzare questo risultato? Aiutatemi per favore perchè l'EOF è presente nella maggiorparte dei programmi che il libro presenta (copia tra file, conteggio delle linee ecc...)
FEOF è un indicatore di "fine file", difatti EOF significa End Of File.
Quel libro è vecchissimo, utilizza un "dialetto" di C che va prima della standardizzazione che non usa + nessuno. Non so come intenda l'EOF quel libro, comunque sostituisci '\n' con EOF nel programma e vedi che con un semplice invio ricevi il risultato. Se vuoi imparare il C, compera un libro recente. Va in giro il C99, imparare il C Kernighan e Ritchie nel 2003 non so se mi sembra il caso, visto che molti compilatori stanno eliminando pure il supporto.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:24   #3
sergio83
Senior Member
 
L'Avatar di sergio83
 
Iscritto dal: Mar 2000
Messaggi: 674
Ti conta i caratteri fino a che non scrivi il carattere "eof" (che dovrebbe essere "CTRL+z" in linux, in windows non so) il quale ti fa uscire dal ciclo
A questo punto ti stampa il numero di caratteri premuti. Cmq se hai problemi ascolta i consigli di mjordan: sostituisci EOF con '\n' (che non è altro che l'enter) oppure cambia libro!
Ciao!
sergio83 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:26   #4
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quello che ho io è la seconda ediziona basata sul linguaggio ansi C. Mi consigliate davvero di comprarne un altro? Potrebbe crearmi grossi problemi imparare da questo?
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:28   #5
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "terrys3"

Quello che ho io è la seconda ediziona basata sul linguaggio ansi C. Mi consigliate davvero di comprarne un altro? Potrebbe crearmi grossi problemi imparare da questo?
Appunto è vecchio. L'ultimo standard lo ha fatto l'ISO
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:32   #6
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quote:
Originally posted by "mjordan"



Appunto è vecchio. L'ultimo standard lo ha fatto l'ISO
potresti consigliarmi allora un buon libro che non sia difficile da trovare? Qui dalle mie parti già ho faticato non poco per trovare quello che ho!!!
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:34   #7
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
uno dei + semplici (per iniziare è ovvio ) ritengo sia:

programmare in C di peter Aitken & Bradley L. Jones
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:36   #8
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quote:
Originally posted by "maxithron"

uno dei + semplici (per iniziare è ovvio ) ritengo sia:

programmare in C di peter Aitken & Bradley L. Jones
preferirei un libro che pur partendo dagli elementi basilari (che cmq ho già studiato in passato da altre fonti) giunga fino a cose di una certa complessità!
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2003, 19:47   #9
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Nessuno sa dirmi come si da l'EOF sotto Windows?
Dovrebbe essere ctrl+z (oppure ctrl+d) ma ho provato ed esce scritto ^Z (oppure ^D)... sapete aiutarmi?
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 02:17   #10
skyblaze
Senior Member
 
Iscritto dal: Aug 2002
Messaggi: 356
Quote:
Originally posted by "mjordan"



Appunto è vecchio. L'ultimo standard lo ha fatto l'ISO
si ma ISO ha solamente adottato lo standard ANSI rimarchiandolo iso99...lo standard è sempre ANSI.....almeno cosi ho letto da molte parti....no dico questo perche pure io sto imparando da un libro scritto da 2 italiani che si rifa all'ansi
skyblaze è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 09:08   #11
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "skyblaze"

si ma ISO ha solamente adottato lo standard ANSI rimarchiandolo iso99...lo standard è sempre ANSI.....almeno cosi ho letto da molte parti....no dico questo perche pure io sto imparando da un libro scritto da 2 italiani che si rifa all'ansi
E ovvio che se fai un nuovo standard prendi prima quello che c'era già, o no?
Comunque il C99 aggiunge diverse cose al C.
Innanzitutto potenzia notevolmente la libreria matematica.
Aggiunge il supporto per il numeri complessi e numeri immaginari.
Elimina la regola dell'int implicito (unsigned long non vale più, bisogna scrivere unsigned long int), così come non specificare il tipo di ritorno di una funzione non vale +.
Aggiunge il tipo di dati 'bool' per variabili booleane.
Consente la dichiarazione di variabili in cicli e in mezzo a codice. Per esempio:

Codice:
...
...
for (int i = 0; i < 10; i++) {
        fai_qualcosa();
        ...
}
è perfettamente valido in C99, cosi anche come:
Codice:
int
main(int argc, char ** argv)
{
        int i; /* Variabile */

        printf("Ciao a tutti!\n"); /* Istruzione */

        char ch; /* Altra variabile */

        return 0;
}
Aggiunge i commenti su una sola riga, stile C++
Aggiunge gli array di lunghezza variabile. Per esempio:

Codice:
void 
my_func(int x, int y)
{
        int my_array[x,y];

        ...
}
Aggiunge la nuova parola riservata "restrict", che consente di fare ciò che in C90 bisognava dire a parole (che magari due oggetti puntati non dovevano sovrapporsi).

Aggiunge la parola riservata 'inline' per il function inlining.

Aggiunge un pozzo di altra roba ....

Un bel linguaggio. Il C è sempre + forte.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 09:11   #12
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "terrys3"



preferirei un libro che pur partendo dagli elementi basilari (che cmq ho già studiato in passato da altre fonti) giunga fino a cose di una certa complessità!
Benissimo. Se hai già delle basi il libro che fa al caso tuo è l'Herbert Schildt, Guida completa C, McGrawHill.
Mi pare sia l'unico attualmente a trattare lo standard C99, inoltre presenta gli argomenti in maniera semplice, ma procede fino ad esempi + complessi. Gli ultimi capitoli sono una figata, anche se seguirli attentamente richiede moltissimo tempo.

Ciao.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 09:14   #13
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "maxithron"

uno dei + semplici (per iniziare è ovvio ) ritengo sia:

programmare in C di peter Aitken & Bradley L. Jones
L'ho letto anch'io. Per cominciare è un libro fantastico. Confermo anch'io questo libro per chi è alle prime armi.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 12:34   #14
skyblaze
Senior Member
 
Iscritto dal: Aug 2002
Messaggi: 356
Quote:
Originally posted by "mjordan"



E ovvio che se fai un nuovo standard prendi prima quello che c'era già, o no?
Comunque il C99 aggiunge diverse cose al C.
Innanzitutto potenzia notevolmente la libreria matematica.
Aggiunge il supporto per il numeri complessi e numeri immaginari.
Elimina la regola dell'int implicito (unsigned long non vale più, bisogna scrivere unsigned long int), così come non specificare il tipo di ritorno di una funzione non vale +.
Aggiunge il tipo di dati 'bool' per variabili booleane.
Consente la dichiarazione di variabili in cicli e in mezzo a codice. Per esempio:

Codice:
...
...
for (int i = 0; i < 10; i++) {
        fai_qualcosa();
        ...
}
è perfettamente valido in C99, cosi anche come:
Codice:
int
main(int argc, char ** argv)
{
        int i; /* Variabile */

        printf("Ciao a tutti!\n"); /* Istruzione */

        char ch; /* Altra variabile */

        return 0;
}
Aggiunge i commenti su una sola riga, stile C++
Aggiunge gli array di lunghezza variabile. Per esempio:

Codice:
void 
my_func(int x, int y)
{
        int my_array[x,y];

        ...
}
Aggiunge la nuova parola riservata "restrict", che consente di fare ciò che in C90 bisognava dire a parole (che magari due oggetti puntati non dovevano sovrapporsi).

Aggiunge la parola riservata 'inline' per il function inlining.

Aggiunge un pozzo di altra roba ....

Un bel linguaggio. Il C è sempre + forte.
Lo so che un nuovo standard si rifa a quello vecchio ma quello che volevo dire è che in questo caso ha solo adotatto lo standard ansi senza aggiungere niente e lo ha rinominato iso infatti si chiama anche ansi/iso...ma a quanto hai detto non è cosi......ma...PORC
E io che sto studiando su un libro ansi c che faccio ora?
skyblaze è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:00   #15
terrys3
Senior Member
 
L'Avatar di terrys3
 
Iscritto dal: Jan 2001
Messaggi: 8826
Quote:
Originally posted by "skyblaze"

Lo so che un nuovo standard si rifa a quello vecchio ma quello che volevo dire è che in questo caso ha solo adotatto lo standard ansi senza aggiungere niente e lo ha rinominato iso infatti si chiama anche ansi/iso...ma a quanto hai detto non è cosi......ma...PORC
E io che sto studiando su un libro ansi c che faccio ora?
siamo nella stessa situazione per fortuna ho iniziato da poco a studiare, anche se acquistare un nuovo libro e buttare (in senso metaforico) quello che ho non è una bella cosa!!! Mi ero fidato di un amico che studia programmazione da un sacco di anni... ma a quanto pare non era aggiornato!!!
__________________
"In Italia vige la mentalità imperante secondo la quale chi più riesce a fregare il sistema è furbo mentre chi paga è fesso"
terrys3 è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:06   #16
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "skyblaze"

Lo so che un nuovo standard si rifa a quello vecchio ma quello che volevo dire è che in questo caso ha solo adotatto lo standard ansi senza aggiungere niente e lo ha rinominato iso infatti si chiama anche ansi/iso...ma a quanto hai detto non è cosi......ma...PORC
E io che sto studiando su un libro ansi c che faccio ora?
Le aggiunte sono tante ma non preoccuparti. Non è stato aggiunto nulla che rompa la compatibilità con lo standard ANSI, a parte le nuove funzionalità particolari.
Il qualificatore restrict non cambia la semantica dei programmi.
Certo, se vuoi conoscere le nuove funzionalità devi comperare un libro che le descriva, come quello che ho consigliato prima, ma, in sostanza, il linguaggio non è stato cambiato.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:07   #17
skyblaze
Senior Member
 
Iscritto dal: Aug 2002
Messaggi: 356
Quote:
Originally posted by "terrys3"



siamo nella stessa situazione per fortuna ho iniziato da poco a studiare, anche se acquistare un nuovo libro e buttare (in senso metaforico) quello che ho non è una bella cosa!!! Mi ero fidato di un amico che studia programmazione da un sacco di anni... ma a quanto pare non era aggiornato!!!
Anche io sono all'inizio.....oddio ho fatto 2 capitoli che non sono proprio pochini
Il libro me lo ha dato mio cugino che lo aveva usato per l'universita di informatica
A sto punto cosa mi consigliate?Devo veramente cambiare libro e prendere uno ultimo che parla di iso c?Mi pare che le differenze siano abbastanza sostanziali a partire dalle variabili logiche(o booleane)....pensate che nel mio libro a un certo punto dice:"In c non esistono variabili logiche come nel basic"
skyblaze è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:21   #18
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Calmi calmi, state attenti tutti.
Il tipo bool è soltanto un typedef ad un intero, quindi in realtà non è strettamente necessario.
Le regole abolite, come quelle dell'int implicito, sono state eliminate, ma sono differenze veramente marginali. In sostanza, a parte chi usa il Kernighan e Ritchie non deve "buttare" nulla. Tutto è applicabile e funzionante.
Inoltre bisogna considerare che la totalità dei compilatori di default accetta la versione ANSI C 89 e successiva revisione C90 e quindi, per compilare programmi "strict C99" bisogna passare dei flag particolari.

Per esempio, il seguente programma in ISO C 99:
Codice:
#include <stdio.h>
#include <stdbool.h> // Il nuovo header per i tipi booleani.

int
main(void)
{
        bool b[10]; // Array booleano. Questo è un commento su una sola riga.

        for (int i = 0; i < 10; i++) // Dichiarazione di variabil ein un ciclo.
                b[i] = false;

        return 0;
}
sotto GCC per essere compilato correttamente necessita del flag `-std=c99' , questo fino a quando il C99 non diverrà "widely adopted", dopo il quale sarà lo standard accettato di default.

Chi usa invece il C traditional (pre-ANSI K&R) dovrebbe aggiornarsi. Molti compilatori stanno eliminando i supporti. Per esempio gcc 3.4 eliminerà gran parte del supporto per il C traditional e molti costrutti non compileranno +, come ad esempio i prototipi del tipo:

Codice:
void my_func(int, int);
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:29   #19
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "skyblaze"

Anche io sono all'inizio.....oddio ho fatto 2 capitoli che non sono proprio pochini
Se vuoi davvero imparare a programmare altro che 2 capitoli
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 29-05-2003, 13:32   #20
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originally posted by "mjordan"

Calmi calmi, state attenti tutti.
Il tipo bool è soltanto un typedef ad un intero, quindi in realtà non è strettamente necessario.
Anzi per essere precisi bool è una macro che utilizza il tipo _Bool che è un typedef ad un int.
Anche se il tipo quindi è _Bool, nei nuovi programmi dev'essere usato bool.
Il fatto è che al momento dello standard si era visto che già diversi compilatori avevano già implementato il proprio tipo di dati booleano, quindi è stato scelto il nome _Bool per non rompere la compatibilità con le caratteristiche già esistenti. Per il resto, per il nuovo codice, basta usare bool.
mjordan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v