Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Salvatore Cuomo » 6.Il linguaggio C – parte prima


Il Linguaggio C

Il linguaggio C nasce nel 1972 nei laboratori Bell Laboratories AT&T americani, dagli autori Dennis e Ritchie. Come visto nelle scorse lezioni gli autori citati sono quelli che erano coinvolti nella implementazione sistema operativo UNIX.

Importante inoltre ricordare due date legate a tale linguaggio:

1986: Nascita del C++ sviluppato da Stroustrup.

1999: Standardizzazione del linguaggio C con la diffusione dell’ANSI C.

Introduzione al linguaggio

Problema: La somma di 2 numeri

Si vuole introdurre all’utilizzo alla programmazione il confronto di due linguaggi di programmazione il Pascal, generalmente utilizzato per le sue doti di “linguaggio didattico”, ed il Linguaggio C, uno dei principali linguaggi di sviluppo.
Il confronto è fatto al fine di mettere in luce similarità e differenze.

Somma di due numeri in Pascal.

Somma di due numeri in Pascal.

Somma di due numeri in C.

Somma di due numeri in C.


Il Linguaggio C vs Pascal

In Pascal un programma ha inizio con:

Begin Somma

End Somma

In C:
un programma è un insieme di funzioni. La funzione main( ) è quella che presente il programma e l’inizio/fine, ovvero il corpo del programma è identificato da apertura e chiusura di parentesi graffe:

{ /* INIZIO */
...
} /* FINE */

Il Linguaggio C vs Pascal

In Pascal i commenti sono racchiusi tra parentesi graffe:

{ dichiarazione delle variabili }

Mentre la dichiarazione delle variabili avvine con istanze del tipo:

var: a,b,c: reali

In C i commenti sono racchiusi da i delimitatori /* … */ e possono occupare anche più linee:

/* DICHIARAZIONE DELLE VARIABILI */

La dichiarazione delle variabili avviene con una istanza del tipo:

float a, b, A;

I tipi di dati base sono:

  • Carattere a 8 bit: char;
  • Intero a 16 bit: int;
  • Reale singola precisione a 32 bit: float;
  • Reale a doppia precisione a 64 bit: double.

Il Linguaggio C

In C:

La fine di una istruzione è segnalata con il simbolo ‘;’

L’assegnazione si denota con il simbolo ‘=’

Due o più istruzioni possono trovarsi sulla stessa linea
a=5.; b=7.;

La variabile A è diversa da a. Ovvero c’è differenza tra lettere maiuscole e lettere minuscole, il linguaggio è case sensitive.

Il Linguaggio C: output

printf:
Le operazioni di output possono essere eseguite mediante l’utilizzo della funzione printf

printf ("SOMMA = %f \n ", A);

il primo argomento delle funzione printf è dato dalla stringa racchiusa tra ” ”

“SOMMA = %f \n”

Dove sono presenti:

  • eventuali caratteri da stampare SOMMA =;
  • sequenze di controllo \n che significa andata a capo;
  • specifiche di output %f che definiscono il formato con il quale sono stampati i successivi argomenti. In questo caso si tratta di un dato reale.

Il secondo argomento della funzione è dato da:

“A” che indica la variabile o l’espressione da stampare.

Printf

Printf formati di conversione:

specifica – argomento

%d – intero

%f - reale

%e - esponenziale (mantissa + esponente)

%c – carattere

%s - stringa di caratteri

Caratteri particolari (validi anche per altre funzioni):

New line (lf) ‘\n’
Carriage return (cr) ‘\r’
Backspace (bs) ‘\b’
Horizontal tab (tab) ‘\t’
Backslash (\) ‘\\

Il Linguaggio C: headre file

In C prima di richiamare un programma:

è necessario fornire una direttiva al preprocessore, nell’esempio, le operazioni di output possono

#include <stdio.h>

che ha come scopo quello di inserire delle funzioni di libreria per I/O. Nel nostro primo programma abbiamo visto printf

In generale l’istruzione (prima della funzione main()):
#include "nomefile.h"
è una direttiva al preprocessore e consente di “inserire” in quel punto il contenuto del file nomefile.h
Questo dipo di file prende il nome di header file e può contenere:

  • definizioni di costanti simboliche (es. float.h);
  • definizioni di funzioni di tipo matematico (es. math.h);
  • definizioni di funzioni per la gestione della memoria (es. stdlib.h);
  • definizioni di strutture dati;
  • . . .

Nota

Il preprocessore C è un programma che viene invocato dal compilatore ed effettua una elaborazione preliminare del codice sorgente.

Il preprocessore modifica il codice sorgente seguendone le specifiche direttive

# include
# DEFINE

# ….

Dopo questa prima elaborazione, il sorgente modificato viene successivamente passato al compilatore vero e proprio per la fase di traduzione in linguaggio oggetto ( .o ) e successivamente in linguaggio macchina (linking e generazione dell’eseguibile .exe, .bin, …).

Esempi di programmi in C

Problema: Conversione da gradi Fharanait a Celsius
Si vuole sviluppare in programma per la conversione della scala di misura di due diversi standard di rilevazione della temperatura (Celsius/Fahrenheit).
L’obiettivo è quello di introdurre alle prime strutture di controllo. Nelle esempio mostreremo una struttura di iterazione, ovvero il ciclo for.

Conversione Fahr / Celsius.

Conversione Fahr / Celsius.


Costrutti iterativi

Il costrutto for.

Le istruzioni che fanno parte del ciclo for sono racchiuse tra parentesi {…} (inizio e fine del for)

for(fahr=0; fahr<=300; fahr=fahr+20)
{
istruzioni
}

In particolare:

  • fahr=0 inizializzazione del for;
  • fahr<=300 condizione di controllo del for. (se è vera le istruzioni del ciclo sono eseguite, altrimenti termina);
  • fahr=fahr+ 20 incremento (è eseguito dopo l’esecuzione delle istruzioni del ciclo).

Le condizioni devono essere separate da ‘;’ e racchiuse in parentesi tonde.

Esempi di programmi in C

Problema: Conversione da gradi Fharanait a Celsius

Si vuole sviluppare in programma per la conversione tra due diverse scale di misura della temperatura.
L’obiettivo è quello di intridurre alle prime strutture di controllo. Nelle esempio mostreremo una struttura di iterazione, ovvero il ciclo while.

Conversione Fahr / Celsius.

Conversione Fahr / Celsius.


Costrutti iterativi

Il costrutto while

Le istruzioni che fanno parte del ciclo while sono racchiuse tra parentesi {…}

(inizio e fine del while)

while (fahr <= 300)
{
istruzioni
}

fahr<=300 condizione di controllo del while

(se è vera le istruzioni del ciclo sono eseguite, altrimenti il ciclo termina).

Deve essere sempre racchiusa in parentesi tonde.

Esempi di programmi in C

Problema: Conversione da gradi Fahrenheit a Celsius
Mostreremo un codice che risulta essere un variante di quelli già proposti.

Nota:
Le istruzioni
# define LOWER 0
# define UPPER 300
# define STEP 20

sono direttive al preprocessore e consentono di “definire” costanti simboliche (nomi simbolici). Bisogna osservare che le costanti simboliche non sono variabili.

Conversione Fahr / Celsius versione 3.

Conversione Fahr / Celsius versione 3.


Esempi di programmi in C

Problema: Trovare il massimo tra due numeri
Si vuole sviluppare in programma per il confronto tra due numeri reali. Nelle esempio mostreremo l’utilizzo delle funzione scanf per leggere un dato dallo standard input

Massimo tra due numeri.

Massimo tra due numeri.


Costrutti condizionali

Nell’esempio abbiamo riportato il costrutto condizionale:

if (a > b )
{ istruzioni }
else
{ istruzioni }

Le istruzioni che fanno parte del costrutto if-else sono racchiuse tra parentesi {…}

a > b è la condizione di controllo dell’ if-else.

Se essa è vera, sono eseguite le istruzioni della parte if, altrimenti quelle della parte else, inoltre deve essere sempre racchiusa in parentesi tonde.

Operatori logici: 0peratori relazionali e logici in C


Variabili strutturate

Array.
In C è possibile fare uso di variabili strutturate, ovvero di collezioni di variabili di un certo tipo di base. Tale collezione viene detta array. L’array monodimensionale o bidimensionale è in analogia al concetto matematico di vettore o di matrice.

Una dichiarazione del tipo:

float b[8];

rappresenta un array monodimensionale (vettore) che contiene 8 elementi di tipo reale.

Mentre:

float a[8][8];

Rappresenta un array bidimensionale (matrice) di 8 x 8 elementi di tipo reale.

N.B. In C gli indici di un array partono per default da 0.


Esempi di programmi in C

Problema: Somma di due vettori
Si vuole sviluppare in programma per il confronto la somma di due vettore. Nel programma si utilizza il concetto di array monodimensionale.

Somma di due vettori.

Somma di due vettori.


Esempi di programmi in C (segue)

Problema: Somma di matrici
Si vuole sviluppare in programma per la somma di due matrici. Nel programma si utilizza il concetto di array bidimensionale.

Somma di due matrici.

Somma di due matrici.


  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion