introduzione alla programmazione a. ferrari. il linguaggio c nel 1972 dennis ritchie nei bell...

27
Introduzione alla Introduzione alla programmazione programmazione A. Ferrari A. Ferrari

Upload: giustino-carli

Post on 01-May-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Introduzione alla Introduzione alla programmazioneprogrammazione

A. FerrariA. Ferrari

Page 2: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Il linguaggio CIl linguaggio CNel 1972 Dennis Ritchie nei Bell Laboratories Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio Cprogettò il linguaggio C

Il linguaggio possiede tutti i costrutti di controllo Il linguaggio possiede tutti i costrutti di controllo dei linguaggi ad alto livello, ma consente anche dei linguaggi ad alto livello, ma consente anche operazioni tipiche dei linguaggi macchina.operazioni tipiche dei linguaggi macchina.

Il codice è efficiente (ottime prestazioni in Il codice è efficiente (ottime prestazioni in termini di velocità di esecuzione)termini di velocità di esecuzione)

È un linguaggio essenziale, che può essere È un linguaggio essenziale, che può essere facilmente esteso senza limiti grazie a librerie facilmente esteso senza limiti grazie a librerie esterne. esterne.

È probabilmente il linguaggio più diffuso al È probabilmente il linguaggio più diffuso al mondo per quantità di codice scritto.mondo per quantità di codice scritto.

Page 3: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Il linguaggio C++Il linguaggio C++Nel 1979 nei Bell Laboratories Bjarne Stroustrup Nel 1979 nei Bell Laboratories Bjarne Stroustrup progettò un’estensione del linguaggio, che venne progettò un’estensione del linguaggio, che venne chiamato “C con Classi” e che nel 1983 fu ribattezzato chiamato “C con Classi” e che nel 1983 fu ribattezzato C++ (C plus plus). C++ (C plus plus).

Mantiene intatte tutte le caratteristiche del C: Mantiene intatte tutte le caratteristiche del C: i compilatori C++ accettano correttamente tutti i i compilatori C++ accettano correttamente tutti i programmi Cprogrammi C

C++ estende il linguaggio C introducendo strumenti C++ estende il linguaggio C introducendo strumenti per la programmazione orientata agli oggetti.per la programmazione orientata agli oggetti.

Il C/C++ è un linguaggio standard definito ANSI/ISO Il C/C++ è un linguaggio standard definito ANSI/ISO (l’ANSI è l’Istituto nazionale americano per gli standard (l’ANSI è l’Istituto nazionale americano per gli standard mentre l’ISO è l’Organizzazione per gli standard mentre l’ISO è l’Organizzazione per gli standard internazionali) e la sua ultima revisione risale al 1999.internazionali) e la sua ultima revisione risale al 1999.

Page 4: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Un esempioUn esempio

Page 5: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

I commentiI commentiAll’inizio del programma abbiamo un commento All’inizio del programma abbiamo un commento che ne indica lo scopo:che ne indica lo scopo:

/* Calcolo dell’ipotenusa *//* Calcolo dell’ipotenusa */

I commenti possono essere inseriti in qualsiasi I commenti possono essere inseriti in qualsiasi punto del programma, iniziano con punto del programma, iniziano con /*/* e e terminano con terminano con */*/. Tutto ciò che sta tra questi . Tutto ciò che sta tra questi estremi, anche se occupa più linee, è ignorato dal estremi, anche se occupa più linee, è ignorato dal compilatore. compilatore.

In alternativa il commento può essere preceduto In alternativa il commento può essere preceduto da da ////

// Calcolo dell’ipotenusa// Calcolo dell’ipotenusa

e terminare a fine rigae terminare a fine riga

Page 6: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Il programmaIl programmaL’esecuzione di ogni programma parte sempre da L’esecuzione di ogni programma parte sempre da main()main()seguito seguito da una parentesi graffa aperta, da una parentesi graffa aperta, {{, che definisce l’inizio delle , che definisce l’inizio delle istruzioni del programma istruzioni del programma

Una parentesi graffa chiusa, Una parentesi graffa chiusa, }}, definisce la fine del programma, definisce la fine del programma

All’interno delle parentesi graffe troviamo una serie di istruzioni All’interno delle parentesi graffe troviamo una serie di istruzioni che verranno eseguite in sequenzache verranno eseguite in sequenza

Ogni istruzione termina sempre con un punto e virgolaOgni istruzione termina sempre con un punto e virgola

main()main()

{{

<Corpo del programma><Corpo del programma>

}}

Page 7: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Variabili Variabili (dichiarazione)(dichiarazione)

Una variabile è un nome che rappresenta una Una variabile è un nome che rappresenta una locazione di memoria, mentre il dato locazione di memoria, mentre il dato memorizzato in quella locazione è il valore della memorizzato in quella locazione è il valore della variabile.variabile.

Prima di utilizzare una variabile è necessaria Prima di utilizzare una variabile è necessaria una dichiarazione in cui viene associato al nome una dichiarazione in cui viene associato al nome il tipo dei valori che la variabile può contenere.il tipo dei valori che la variabile può contenere.

Sintassi della dichiarazione in C:Sintassi della dichiarazione in C:

<tipo> <nome_variabile>;<tipo> <nome_variabile>;

EsempioEsempio

float cateto1;float cateto1;

Page 8: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Case sensitiveCase sensitiveIl linguaggio C è case-sensitive: le Il linguaggio C è case-sensitive: le lettere maiuscole sono diverse da lettere maiuscole sono diverse da quelle minuscole. quelle minuscole.

La variabile identificata da cateto1 non La variabile identificata da cateto1 non ha niente a che vedere con Cateto1 o ha niente a che vedere con Cateto1 o CATETO1, così come main è diverso da CATETO1, così come main è diverso da Main.Main.

Page 9: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Variabili Variabili (definizione)(definizione)

Le dichiarazioni provocano la Le dichiarazioni provocano la definizione delle variabili: la creazione definizione delle variabili: la creazione di uno spazio di memoria centrale a loro di uno spazio di memoria centrale a loro riservatoriservato

Il tipo di una variabile determina lo Il tipo di una variabile determina lo spazio di memoria che viene riservato spazio di memoria che viene riservato (la dimensione dipende (la dimensione dipende dall’implementazione del linguaggio)dall’implementazione del linguaggio)

Page 10: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Tipi di dato Tipi di dato numericinumerici

Page 11: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Dichiarazione di Dichiarazione di più variabilipiù variabili

Le variabili dello stesso tipo possono Le variabili dello stesso tipo possono essere dichiarate facendo seguire essere dichiarate facendo seguire all’indicatore del tipo i loro nomi all’indicatore del tipo i loro nomi separati da una virgola.separati da una virgola.

float cateto1, cateto2;float cateto1, cateto2;

Page 12: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

I nomi delle I nomi delle variabili variabili

(identificatori)(identificatori)I nomi o identificatori non possono essere parole I nomi o identificatori non possono essere parole chiave del linguaggio, per esempio non chiave del linguaggio, per esempio non possiamo definire una variabile int, float, possiamo definire una variabile int, float, double. double.

Iniziano sempre con una lettera o con un Iniziano sempre con una lettera o con un carattere di sottolineatura _ e sono composti da carattere di sottolineatura _ e sono composti da lettere, cifre e _. lettere, cifre e _.

Il numero dei caratteri non è limitato ma solo i Il numero dei caratteri non è limitato ma solo i primi n caratteri del nome sono significativi, primi n caratteri del nome sono significativi, dove n dipende dall’implementazione:dove n dipende dall’implementazione:

almeno 247 caratteri devono essere significativi almeno 247 caratteri devono essere significativi secondo lo standard. secondo lo standard.

Page 13: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

AssegnamentoAssegnamentoLa sintassi dell’assegnamento è:La sintassi dell’assegnamento è:

<variabile> = <espressione>;<variabile> = <espressione>;

Un’espressione può essere costituita da Un’espressione può essere costituita da un valore costanteun valore costante

cateto1 = 3;cateto1 = 3;valori costanti e operatori matematicivalori costanti e operatori matematici

ipotenusa = 3*3+4*4;ipotenusa = 3*3+4*4;una variabileuna variabile

cateto1 = cateto2;cateto1 = cateto2;più variabilipiù variabili

ipotenusa = cateto1*cateto1+cateto2*cateto2;ipotenusa = cateto1*cateto1+cateto2*cateto2;funzionifunzioni

ipotenusa = sqrt(cateto1*cateto1+cateto2*cateto2);ipotenusa = sqrt(cateto1*cateto1+cateto2*cateto2);

Page 14: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Funzioni Funzioni predefinitepredefinite

Una funzione è costituita da un insieme di istruzioni che svolgono un Una funzione è costituita da un insieme di istruzioni che svolgono un determinato compito. determinato compito.

Possiamo pensarla come un programma che riceve valori in entrata, Possiamo pensarla come un programma che riceve valori in entrata, effettua elaborazioni e restituisce un valore in uscita.effettua elaborazioni e restituisce un valore in uscita.

Il linguaggio C affida a funzioni predefinite molti compiti operativi.Il linguaggio C affida a funzioni predefinite molti compiti operativi.

Per esempio la funzione Per esempio la funzione sqrt(valore) sqrt(valore) restituisce la radice quadrata del restituisce la radice quadrata del valore presente tra le parentesi tonde. valore presente tra le parentesi tonde.

ipotenusa = sqrt(cateto1*cateto1+cateto2*cateto2);ipotenusa = sqrt(cateto1*cateto1+cateto2*cateto2);

La libreria del linguaggio che contiene la funzione predefinita sqrt(), come La libreria del linguaggio che contiene la funzione predefinita sqrt(), come molte altre funzioni matematiche, è la libreria standard math.h. molte altre funzioni matematiche, è la libreria standard math.h.

Per poter utilizzare le funzioni definite al suo interno, il programma deve Per poter utilizzare le funzioni definite al suo interno, il programma deve essere preceduto dall’inclusione del file d’intestazione math.h:essere preceduto dall’inclusione del file d’intestazione math.h:

#include <math.h>#include <math.h>

Page 15: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Libreria mathLibreria math

Page 16: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

OutputOutputPer fornire all’utente informazioni il Per fornire all’utente informazioni il programma normalmente le visualizza programma normalmente le visualizza sullo schermosullo schermo

L’istruzione di visualizzazione è L’istruzione di visualizzazione è printf(<formato>,<valore>);printf(<formato>,<valore>);

Nell’esempio viene visualizzato il valore Nell’esempio viene visualizzato il valore della variabile di tipo float della variabile di tipo float ipotenusaipotenusa: : printf(“%f”,ipotenusa);printf(“%f”,ipotenusa);

Page 17: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Un esempio di Un esempio di programmaprogramma

Page 18: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

CostantiCostantiLe costantti si Le costantti si definiscono mediante definiscono mediante la direttiva del la direttiva del compilatore compilatore #define #define seguita dal nome della seguita dal nome della costante e dal suo costante e dal suo valore.valore.

#define CATETO1 3#define CATETO1 3

Sulle costanti non Sulle costanti non potrà essere potrà essere effettuata l’operazione effettuata l’operazione di assegnamento.di assegnamento.

Page 19: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Convenzioni sui Convenzioni sui nomi nomi

(identificatori)(identificatori)Il nome di una costante segue le stesse Il nome di una costante segue le stesse regole degli altri identificatoriregole degli altri identificatori

Per distinguere nel programma le costanti Per distinguere nel programma le costanti dalle variabili, spesso si preferisce utilizzare dalle variabili, spesso si preferisce utilizzare solo i caratteri maiuscoli per le costanti e i solo i caratteri maiuscoli per le costanti e i caratteri minuscoli, se necessario intercalati caratteri minuscoli, se necessario intercalati da caratteri maiuscoli, per le variabilida caratteri maiuscoli, per le variabili

In base a questa convenzioneIn base a questa convenzioneLUNGHEZZALUNGHEZZA e e PARTENZAPARTENZA sono costanti sono costanti

temperaturatemperatura e e votoStudentevotoStudente sono variabili sono variabili

Page 20: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

InputInputIl modo standard per fornire Il modo standard per fornire informazioni al programma è l’utilizzo informazioni al programma è l’utilizzo della tastiera.della tastiera.

La funzione scanf permette di La funzione scanf permette di assegnare il valore inserito a una assegnare il valore inserito a una variabilevariabile

Page 21: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Il programma Il programma completocompleto

Page 22: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

SequenzaSequenzaTutti i semplici Tutti i semplici programmi che programmi che abbiamo visto fino ad abbiamo visto fino ad ora sono composti da ora sono composti da una sequenza di una sequenza di istruzioni che si istruzioni che si susseguono a partire susseguono a partire dall’istruzione iniziale dall’istruzione iniziale fino a quella finalefino a quella finale

In nessun modo è In nessun modo è possibile alterare il possibile alterare il flusso di esecuzione.flusso di esecuzione.

Definiamo questa Definiamo questa struttura sequenza.struttura sequenza.

Page 23: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Sequenza in CSequenza in CNel linguaggio C sono le parentesi Nel linguaggio C sono le parentesi graffe che delimitano una sequenza di graffe che delimitano una sequenza di istruzioniistruzioni

Le parentesi graffe stabiliscono anche Le parentesi graffe stabiliscono anche l’inizio e la fine del programma.l’inizio e la fine del programma.

Page 24: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Fasi della Fasi della programmazioneprogrammazione

Page 25: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Analisi, Analisi, progettazione, progettazione, codifica e testcodifica e testProblema: determinare la circonferenza e l’area di un Problema: determinare la circonferenza e l’area di un

cerchio conoscendo il suo raggio.cerchio conoscendo il suo raggio.

AnalisiAnalisiLe formule risolutive sono: Le formule risolutive sono: Circonferenza = 2*r * πCirconferenza = 2*r * πArea = r2 * πArea = r2 * πdove r è il raggio del cerchio e π è la costante 3,14dove r è il raggio del cerchio e π è la costante 3,14

L’analisi ci porta a definire l’input e l’output del L’analisi ci porta a definire l’input e l’output del programma.programma.

Problema: calcolo circonferenza e area di un cerchio.Problema: calcolo circonferenza e area di un cerchio.

Input: valore del raggio.Input: valore del raggio.

Ouput: valori della circonferenza e dell’area.Ouput: valori della circonferenza e dell’area.

Page 26: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Il programma in CIl programma in C

Page 27: Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede

Test del Test del programmaprogramma

Compiliamo e correggiamo eventuali errori Compiliamo e correggiamo eventuali errori sintattici indicati dal compilatore.sintattici indicati dal compilatore.

Eseguiamo il programma con diversi valori Eseguiamo il programma con diversi valori in ingresso e verifichiamone il corretto in ingresso e verifichiamone il corretto funzionamentofunzionamento

Confrontiamo i risultati con quelli ottenuti Confrontiamo i risultati con quelli ottenuti con la nostra calcolatrice.con la nostra calcolatrice.

Se l’output restituito a video non è di nostro Se l’output restituito a video non è di nostro gradimento, miglioriamo la formattazione.gradimento, miglioriamo la formattazione.