Percorso: ilMac.net > Scuola di Mac > Corsi > Il linguaggio C


Il linguaggio C

Migliorare i listati

In questo articolo ho deciso di spiegarvi nessuno dei concetti fondamentali del C, ma alcune di quelle piccole (e a volte importanti) istruzioni che ottimizzeranno i vostri listati e affineranno la vostra tecnica di programmazione.
Tanto per iniziare, i commenti. Immaginate di essere programmatori e di dover passare il vostro listato ad un collega. Il vostro listato verrà si’ capito , ma siccome con il C uno stesso programma puo’ essere strutturato in tantissimi modi differenti, e voi stessi potete usare tantissime variabili differenti, é meglio sempre commentare il listato. E il problema non si pone quando si affrontano listati come quelli che vi ho proposto nei precedenti articoli, ma quando siamo di fronte a listati di centinaia, migliaia, o addirittura milioni (come nel caso del MacOS) di linee di codice.
Ecco quindi il listato del precedente articolo in versione commentata:


#include <stdio.h> /*include la libreria di funzioni input/output*/

main() {
int a,b; /*dichiaro le variabili*/

printf("INSERISCI IL PRIMO NUMERO: "); /*chiedo il primo numero*/

scanf("%d",&a); /*lo memorizzo nella variabile a*/

printf("INSERISCI IL SECONDO NUMERO: "); /*chiedo il secondo numero*/

scanf("%d",&b); /*lo memorizzo nella variabile b*/

if(a > b) printf("nIl primo numero %d è maggiore del secondo numero %d",a,b); /*se a maggiore di b ... */

else /*altrimenti...*/
printf("nIl primo numero %d è minore del secondo numero %d",a,b);

}


Come avrete capito i commenti devono essere racchiusi tra /* e */ . Essi possono apparire in qualsiasi punto del listato, possono estendersi su piu’ linee e, in quanto commenti e non istruzioni verranno ignorati in fase di compilazione. CodeWarrior, in genere li evidenzia in rosso.
Notate come con i commenti l’impatto con il listato C sia tutt’un altra cosa, e anche chi non conosce il C non farà tanta fatica a capire la funzione di questo programmino.

Le costanti

Quando all’interno di un programma un valore viene utilizzato piu’ volte, é comodo rimpiazzarlo con un nome simbolico. Ribadisco che, anche in questo caso la procedura risulta realmente comoda solo se stiamo lavorando su grandi listati.
Per capire meglio il concetto pero’ facciamo un “abuso” di tale comodità e supponiamo di trovarci alle prese con un banale programma che calcola l’area della circonferenza dato il raggio. Al suo interno troveremo un valore che sarà sempre costante: il pi greco.
Vediamo come potrebbe essere strutturato il programma:

1. immissione del raggio del cerchio (Input)
2. memorizzazione all’interno di una variabile (intera o float)
3. operazione 3.1415 (valore di pi greco) * raggio * raggio
4. stampa a video dell’area (obbligatoriamente float)

Ed ecco quindi il listato (senza costanti):


#include <stdio.h>

main() {

float r,area;

printf("raggio: ");
scanf("%f",&r);

area = 3.1415 * r * r;

printf("nArea: %f",area);

}


E rieccolo con la costante PI_GRECO:


#include <stdio.h>
#define PI_GRECO 3.1415

main() {

float r,area;

printf("raggio: ");
scanf("%f",&r);

area = PI_GRECO * r * r;

printf("nArea: %f",area);

}


Qual è la procedura, dunque per dichiarare nel listato un valore costante? E’ presto detto.
Si usa la macroistruzione #define, seguita dal nome (preferibilmente MAIUSCOLO per distinguerlo dalle variabili) con cui vogliamo indicarla ed in fine attribuendole il suo valore (esempio #define PI_GRECO 3.1415).
Concludendo, l’uso delle costanti migliora la flessibilità e dei programmi e li rende molto piu’ maneggevoli. Infatti se immaginiamo di mettere lo stesso numero in molti punti del listato, e poi un giorno dovessimo modificare quel valore, dovremmo ricercarlo e cambiarlo in tutti i punti del listato, mentre se lo definiamo con #define, bastera' cambiare il #define e verrà automaticamente cambiato quel valore in tutto il listato.

Sequenze di escape

E infine concluderei con le sequenze di escape, ovvero sequenze di caratteri con funzioni speciali. Tra queste ne abbiamo già incontrata una, n con la quale indichiamo al Mac di andare a capo.
Inoltre abbiamo:

b il backspace, ritorna di un carattere indietro
t salta di un tabulatore
a suona l’alarm del Mac
” stampa le virgolette

Quest’utimo perché? Perché quando chiudiamo ad esempio l’istruzione printf, utilizziamo i doppi apici che compongono l’istruzione stessa. Se all’interno della nostra stringa di testo vogliamo scrivere anche dei doppi apici, ci verrà segnalato un errore dal compilatore!
L’unico modo per far capire al Mac che vogliamo i doppi apici stampati nella stringa di testo è appunto scrivere ”.

Quasi dimenticavo, se vi serve CodeWarrior Lite per iniziare a lanciarvi nella programmazione potete scaricarlo cliccando qui.



Data di pubblicazione: 20-04-2000
L'intero contenuto di questo sito dal 1998 del Team di ilMac.net, vietata ogni riproduzione senza il consenso scritto da parte degli autori.