Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2003, 19: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, 20: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, 20: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, 20: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, 20: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, 20: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, 20: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, 20: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, 20: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, 03: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, 10: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, 10: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, 10: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, 13: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, 14: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, 14: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, 14: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, 14: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, 14: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, 14: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


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Snap e Perplexity unite: dal prossimo an...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
'Non può essere un robot': l'uman...
Monopattino elettrico Segway Ninebot Max...
Syberia Remastered è disponibile:...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
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: 05:05.


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