Imparare il C

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
andy-x
Linux 1.x
Linux 1.x
Messaggi: 139
Iscritto il: lun 13 lug 2009, 11:19
Slackware: 12.2
Kernel: 2.6.27.7
Desktop: kde

Imparare il C

Messaggio da andy-x »

Salve a tutti.
Cosa mi consigliate per imparare il C?
Da tecnico elettronico analogico rimango sempre stupefatto da quello che fanno i miei colleghi con il C sui microcontrollori....
Esiste qualche buon testo gia' sperimentato da qualcuno con le basi?
Grazie. Ciao.

Avatar utente
Blallo
Packager
Packager
Messaggi: 3302
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: Imparare il C

Messaggio da Blallo »

Per imparare Deitel&Deitel
Per approfondire poi Kernighan&Ritchie

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Imparare il C

Messaggio da robbybby »

Kernighan & Ritchie: The C Programming Language (non ricordo il titolo italiano).
Però devi già saper programmare, non importa in quale linguaggio. Se sei a zero, allora ti serve prima un testo di base per imparare la programmazione. Diciamo che il K&R assume che tu sappia già cosa sono i puntatori, gli array, le liste, ecc.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Imparare il C

Messaggio da Mario Vanoni »

andy-x ha scritto: Da tecnico elettronico analogico rimango sempre stupefatto da quello che fanno i miei colleghi con il C sui microcontrollori....
Se hai usato anche elettronica digitale TTL, CMOS ecc.,
dovresti conoscere AND/OR e co., pure i Flip-Flop e i contatori ...
La logica dietro e` sempre la stessa.

Avatar utente
Vito
Staff
Staff
Messaggi: 4182
Iscritto il: mar 5 dic 2006, 17:28
Nome Cognome: Vito
Desktop: MacOS
Località: Monaco (DE)
Contatta:

Re: Imparare il C

Messaggio da Vito »

robert_plant_89 ha scritto:Per imparare Deitel&Deitel
Per approfondire poi Kernighan&Ritchie
Concordo
"Stat rosa pristina nomina, nomina nuda tenemus." [ Umberto Eco - Il nome della rosa]

"Faber est suae quisque fortunae ." [ Appio Claudio Cieco]

Avatar utente
venerdi_12
Packager
Packager
Messaggi: 258
Iscritto il: sab 9 lug 2005, 0:00
Nome Cognome: Luciano Fattore
Kernel: 3.0
Desktop: kde-4.7.0
Distribuzione: archlinux
Località: Lusciano (Ce)

Re: Imparare il C

Messaggio da venerdi_12 »

OT
a robert_plant_89

Il tuo prossimo nick sara bonzo_89? ;)

Avatar utente
Blallo
Packager
Packager
Messaggi: 3302
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: Imparare il C

Messaggio da Blallo »

Offtopic:
venerdi_12 ha scritto:Offtopic: OT
a robert_plant_89

Il tuo prossimo nick sara bonzo_89? ;)
Offtopic:
è una storia lunga :D

Avatar utente
ulisse89
Packager
Packager
Messaggi: 643
Iscritto il: sab 17 gen 2009, 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

Re: Imparare il C

Messaggio da ulisse89 »

robert_plant_89 ha scritto:Offtopic:
venerdi_12 ha scritto:Offtopic: OT
a robert_plant_89

Il tuo prossimo nick sara bonzo_89? ;)
Offtopic:
è una storia lunga :D
Offtopic: Io proporrei john_paul_jones_89. Ne sapeva in assoluto più di tutti.

Avatar utente
Xunyl
Linux 1.x
Linux 1.x
Messaggi: 170
Iscritto il: gio 28 gen 2010, 15:57
Slackware: current64
Kernel: 5.4.54
Desktop: Sway

Re: Imparare il C

Messaggio da Xunyl »

ulisse89 ha scritto:
robert_plant_89 ha scritto:Offtopic:
venerdi_12 ha scritto:Offtopic: OT
a robert_plant_89

Il tuo prossimo nick sara bonzo_89? ;)
Offtopic:
è una storia lunga :D
Offtopic: Io proporrei john_paul_jones_89. Ne sapeva in assoluto più di tutti.
Offtopic: Noto con immenso piacere che alcuni qui se ne intendono di musica :lol:
Scusate l'OT ma era irresistibile :D

Ivanhoe
Linux 0.x
Linux 0.x
Messaggi: 37
Iscritto il: lun 22 ott 2007, 11:23
Slackware: 12.1
Kernel: 2.6.24.5
Desktop: awesome
Località: Valmontone (RM)

Re: Imparare il C

Messaggio da Ivanhoe »

Fino a qualche tempo fa avrei dato gli stessi consigli (Deitel & Deitel, Kernighan & Ritchie), però
adesso ho scoperto un libro favoloso (sono anni che programmo in C, ho un paio
di progetti su Savannah ma ho cominciato da autodidatta):

Kim N. King - Programmazione in C - Apogeo editore

Si comincia dalle basi (NULLA viene dato per noto), ti spiega anche come usare GCC (il compilatore
standard per GNU/Linux) e si arriva a trattare argomenti
utili pure per un programmatore avanzato (internazionalizzazione e UTF8), TUTTO spiegato da Dio.
Sono in tutto 27 capitoli, ma non ti spaventare: quello che ti serve tutti i giorni
è contenuto nei primi 13-14, cioè nelle stesse dimensioni del Kernighan & Ritchie.
Inoltre, una volta letti i primi capitoli non devi per forza procedere in modo consequenziale.
Tieni presente che:
è pieno di sezioni con domande e risposte,
è pieno di esercizi e esempi svolti di programmazione,
è pieno di progetti di programmi da realizzare.
Ma soprattutto non ti lascia dubbi in testa, perché l'autore sembra conoscere tutte le
potenziali trappole del C, per quel che ne penso io davvero un libro stupendo

Avatar utente
andy-x
Linux 1.x
Linux 1.x
Messaggi: 139
Iscritto il: lun 13 lug 2009, 11:19
Slackware: 12.2
Kernel: 2.6.27.7
Desktop: kde

Re: Imparare il C

Messaggio da andy-x »

Grazie a tutti..... no no non sono a zero di programmazione..... faccio semplici programmi in qbasic :-D e assembler per micro.... ma vorrei imparare qualcosa di piu' performante e indipendente dalla piattaforma....
Grazie, allora cerco i libri indicati... spero ci siano in italiano, mi risparmierei un po' di fatica. :D

Gone Berserk
Linux 0.x
Linux 0.x
Messaggi: 43
Iscritto il: lun 19 giu 2006, 9:48
Kernel: 2.6erotti
Desktop: Xfce
Distribuzione: Xubuntu

Re: Imparare il C

Messaggio da Gone Berserk »

Se vieni dai dialetti Basic, come me, il C ti sembrerà un incubo :)

Tanto per dirne una, non ha il concetto di stringa, e comparare due righe è un'operazione degna della nasa. Per tacere dell'aritmetica dei puntatori, che sta alla base dei migliori drammi informatici dei nostri tempi.

Ti parlo però da fiero programmatore di gestionali... quindi lavorando su dati ad alto livello (indirizzi, numeri di telefono, volumi macroscopici di consumi elettrici, trigonometria). Se devi programmarci circuiti elettronici, le scelte sono Java (che è il linguaggio portabile per antonomasia, per quanto sia peggio di un dito nell'occhio quando porti le stesse lenti da tre giorni) o, effettivamente, C.

C non è un brutto linguaggio quando tutto quello che devi fare è giocare coi numeri e con la memoria. Anzi, potrebbe benissimo essere il linguaggio migliore per questo. Ti consiglierei di NON leggere nessun libro, ma di cominciare a far pratica solitaria davanti a un buon ambiente (il vecchio Turbo C++ della Borland è facilmente emulabile in Dosbox, ha una interfaccia che è ancora oggi un esempio di chiarezza e di efficacia, ed è scaricabile liberamente dal sito). Se un ambiente integrato e già configurato ti fa' schifo, o vuoi effettivamente cominciare a lavorare già in Linux, una scelta comoda e interessante potrebbe essere l'accoppiata Kate+Gcc. Anche in questo caso, eviterei i libri e ci sbatterei il naso di persona. I libri di programmazione sono per lo più noiosi, specie visto che il C non è, a livello di linguaggio, più espressivo del Qbasic. Le strutture di base (selezione, iterazione, ecc) sono identiche. Fossero linguaggi radicalmente diversi (Python, ad esempio, o Ruby), ti servirebbe, ma se sai già programmare, tutto quello che ti serve è tempo per smanettarci su.

Che Legba, dio e patrono di noi programmatori, ti tenga lontano dai memory leaks e dall'aritmetica dei puntatori. Respect.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Imparare il C

Messaggio da robbybby »

Il concetto di stringa in C c'è eccome: mai sentito nominare le stringhe NULL terminated? :)
Il confronto di due stringhe non è affatto complesso, basta un'istruzione:
strcmp(...)
Se vuoi c'è anche il confronto case insensitive:
stricmp(...)

E se questo è nella libreria standard, come fa a non esistere il concetto di stringa? :)

Gone Berserk
Linux 0.x
Linux 0.x
Messaggi: 43
Iscritto il: lun 19 giu 2006, 9:48
Kernel: 2.6erotti
Desktop: Xfce
Distribuzione: Xubuntu

Re: Imparare il C

Messaggio da Gone Berserk »

Non barare :)
Non sono stringhe ma VETTORI di caratteri. Concetti diversi, anche in Java.

E c'è una bella differenza fra

if (strcmp(a,b))...
e
if a = b then

Le stringhe in basic, come in python, come in php, sono davvero tipi elementari ben gestiti :)
Poi non mi fraintendere, mille volte meglio C che Java eh :D O C# o uno qualunque di questi schifi. E' solo che lo C non nacque per gestire le stringhe, e infatti c'è il famoso problema dei bug delle stringhe di formato...

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Imparare il C

Messaggio da robbybby »

Gone Berserk ha scritto:Non barare :)
Allora passiamo al prossimo linguaggio, con l'operatore di post incremento, e otteniamo il C++. E qui le stringhe ci sono belle e pure, senza barare :)

Rispondi