You are on page 1of 34

Sommario

PARTE I ALGORITMI
Premessa ...................................................................................................................................................... 3
Indicazioni sul testo .................................................................................................................................................. 3
Convenzioni usate..................................................................................................................................................... 3

CAPITOLO 1 CONCETTI GENERALI..............................................................................4


1.1 Introduzione.......................................................................................................................................... 5
1.2 Problemi e Soluzioni di problemi ................................................................................................ 6
1.2.1 Una prima definizione di problema.................................................................................................................. 6
1.2.2 Soluzione di un problema ................................................................................................................................ 7

1.3 Algoritmi ............................................................................................................................................... 8


1.3.1 Soggetto ideatore e Soggetto esecutore dellalgoritmo ............................................................................ 8
1.3.2 Requisiti di un algoritmo ................................................................................................................................. 9

1.4 Schema di riepilogo dei concetti principali ...................................................................................... 12


Esercizi....................................................................................................................................................... 13
Autoverifica............................................................................................................................................... 14
Rispondi alle domande............................................................................................................................................ 14

CAPITOLO 2 ALGORITMI CHE ELABORANO DATI ...................................................16


2.1 Introduzione........................................................................................................................................ 17
2.2 Rappresentare le informazioni .......................................................................................................... 19
2.2.1 Introduzione ai tipi di dati gestiti dagli esecutori automatici ..................................................................... 19

2.3 Rappresentare e manipolare i valori dei dati: variabili, costanti, espressioni .............................. 20
2.3.1 Variabili ......................................................................................................................................................... 20
2.3.2 Costanti .......................................................................................................................................................... 20
2.3.3 Espressioni ..................................................................................................................................................... 21

2.4 Descrizione formale degli algoritmi .................................................................................................. 22


2.5 Schema di riepilogo dei concetti principali ...................................................................................... 24
Esercizi....................................................................................................................................................... 25
Autoverifica............................................................................................................................................... 26
Rispondi alle domande............................................................................................................................................ 26

CAPITOLO 3 SCHEMI DI COMPOSIZIONE DELLE ISTRUZIONI ................................28


3.1 Introduzione........................................................................................................................................ 29
3.2 Schema sequenziale, o sequenza................................................................................................ 30
3.3 Problemi che prevedono alternative ................................................................................................. 31
3.3.1 Schema di selezione, o selezione ........................................................................................................... 32
3.3.2 Variante dello schema di selezione ............................................................................................................ 33

3.4 Problemi che richiedono lesecuzione ripetuta di una o pi istruzioni .......................................... 35


3.4.2 Schema di iterazione, o iterazione ......................................................................................................... 35
3.4.2 Schema di iterazione con controllo in coda ............................................................................................... 37

3.5 Combinazione degli schemi di composizione delle istruzioni ......................................................... 38


3.5.1 Regola per la combinazione degli schemi...................................................................................................... 38
3.5.2 Conclusioni .................................................................................................................................................... 39
I

PARTE I ALGORITMI

3.6 Schema di riepilogo dei concetti principali....................................................................................... 41


Esercizi....................................................................................................................................................... 42
Autoverifica ............................................................................................................................................... 43
Rispondi alle domande............................................................................................................................................ 43

CAPITOLO 4 APPLICAZIONE DEI CONCETTI APPRESI ........................................... 44


4.1 Introduzione ........................................................................................................................................ 45
4.2 Paridispari 1 .................................................................................................................................. 46
4.3 Paridispari 2 .................................................................................................................................. 47
4.4 Intervallo 1> .................................................................................................................................... 49
4.4.1 Espressioni condizionali composte ................................................................................................................ 50

4.5 Intervallo 2....................................................................................................................................... 52


4.6 Media aritmetica ............................................................................................................................. 54
4.7 Intervallo-stringhe .......................................................................................................................... 56

APPROFONDIMENTI ....................................................................................................... 58
A 1.1 Scenario iniziale e scenario finale .......................................................................................... 59
A 1.2 Classe di problemi....................................................................................................................... 59
A 1.3 Soggetto esecutore ....................................................................................................................... 60
A 2.1 Tipo delle informazioni............................................................................................................. 61
A 2.2 Costanti ........................................................................................................................................ 61
A 2.3 Espressioni ................................................................................................................................... 62
A 2.4 Asserzioni..................................................................................................................................... 62
A 3.1 Condizioni.................................................................................................................................... 64
A 3.2 Divisione intera............................................................................................................................ 64
A 3.3 Assegnazione nella forma: X = X + 1 ........................................................................................ 65
A 3.4 Cicli iterativi ................................................................................................................................ 65

NOTE ................................................................................................................................ 68
N 2.1 Problemi che trattano di oggetti fisici ........................................................................................... 69
N 2.2 Operatore di assegnazione.......................................................................................................... 69
N 2.3 Linguaggio a blocchi ................................................................................................................... 70
N 3.1 Calcolo della radice quadrata ........................................................................................................ 71
N 3.2 Scenari finali di un problema..................................................................................................... 71
N 3.3 Tipo di dato intero ...................................................................................................................... 72
N 3.4 Validit formale di un algoritmo ............................................................................................... 73

II

PARTE II LINGUAGGIO C#
Premessa ................................................................................................ Errore. Il segnalibro non definito.
Breve accenno a .NET .......................................................................... Errore. Il segnalibro non definito.
Indicazioni sul testo .............................................................................. Errore. Il segnalibro non definito.
Convenzioni usate........................................................................................... Errore. Il segnalibro non definito.

Un po di terminologia per cominciare............................................... Errore. Il segnalibro non definito.


Codice sorgente........................................................................................... Errore. Il segnalibro non definito.
Compilazione e programma eseguibile................................................... Errore. Il segnalibro non definito.
Errori di compilazione, o errori formali.................................................. Errore. Il segnalibro non definito.
Errori di esecuzione .................................................................................... Errore. Il segnalibro non definito.

CAPITOLO 1 INTRODUZIONE AI PROGRAMMI C#ERRORE. IL SEGNALIBRO NON DEFINIT


1.1 Salve, Mondo............................................................................... Errore. Il segnalibro non definito.
1.2 Calcolo dellarea e del perimetro di un rettangolo ...................... Errore. Il segnalibro non definito.
1.3 Area e perimetro del rettangolo: seconda versione ................. Errore. Il segnalibro non definito.

CAPITOLO 2 COSTRUTTI DI BASE ..... ERRORE. IL SEGNALIBRO NON DEFINITO.


2.1 Selezione ...................................................................................... Errore. Il segnalibro non definito.
2.1.1 Costrutto if() else ..................................................................... Errore. Il segnalibro non definito.
2.1.2 Costrutto if() ................................................................................. Errore. Il segnalibro non definito.

2.2 Sequenza: Blocco ........................................................................ Errore. Il segnalibro non definito.


2.3 Iterazione, o ciclo iterativo..................................................... Errore. Il segnalibro non definito.
2.3.1 Costrutto while() .......................................................................... Errore. Il segnalibro non definito.
2.3.2 Costrutto for()............................................................................... Errore. Il segnalibro non definito.
2.3.3 Condizione di controllo dei cicli iterativi............................................... Errore. Il segnalibro non definito.
2.3.4 Costrutti e punto-e-virgola di fine istruzione ......................................... Errore. Il segnalibro non definito.

CAPITOLO 3 TIPI, VARIABILI ED ESPRESSIONIERRORE. IL SEGNALIBRO NON DEFINITO


3.1 Concetto di Tipo.......................................................................... Errore. Il segnalibro non definito.
3.2 Tipi di dati numerici: int e double ................................... Errore. Il segnalibro non definito.
3.2.1 Il tipo double.................................................................................. Errore. Il segnalibro non definito.
3.2.2 Il tipo int......................................................................................... Errore. Il segnalibro non definito.
3.2.3 Costanti letterali numeriche ................................................................... Errore. Il segnalibro non definito.

3.3 Tipi di operatori e conversioni numeriche ................................... Errore. Il segnalibro non definito.
3.3.1 Conversioni tra tipi numerici ................................................................. Errore. Il segnalibro non definito.
3.3.2 Compatibilit tra i tipi int e double .................................... Errore. Il segnalibro non definito.

3.4 Tipo string .............................................................................. Errore. Il segnalibro non definito.


3.4.1 Costanti letterali stringa ......................................................................... Errore. Il segnalibro non definito.
3.4.2 Funzioni delle stringhe nella programmazione ...................................... Errore. Il segnalibro non definito.
3.4.3 Stringhe come supporto generale alla programmazione ........................ Errore. Il segnalibro non definito.
3.4.4 Stringhe per la rappresentazione ed elaborazione di informazioni di carattere alfanumericoErrore. Il segnalibro non

3.5 Tipo bool................................................................................... Errore. Il segnalibro non definito.


3.5.1 Costanti letterali booleane...................................................................... Errore. Il segnalibro non definito.
3.5.2 Funzione del tipo bool nella programmazione................................ Errore. Il segnalibro non definito.

3.6 Variabili........................................................................................... Errore. Il segnalibro non definito.


3.6.1 Dichiarazione di una variabile ............................................................... Errore. Il segnalibro non definito.
3.6.2 Assegnazione di una variabile................................................................ Errore. Il segnalibro non definito.
3.6.3 Valore iniziale di una variabile .............................................................. Errore. Il segnalibro non definito.
III

3.6.4 Inizializzazione di una variabile............................................................. Errore. Il segnalibro non definito.

3.7 Costanti simboliche.........................................................................Errore. Il segnalibro non definito.


3.7.1 Uso delle costanti simboliche................................................................. Errore. Il segnalibro non definito.

3.8 Espressioni.......................................................................................Errore. Il segnalibro non definito.


3.8.1 Tipo di unespressione ........................................................................... Errore. Il segnalibro non definito.
3.8.2 Operatori ................................................................................................ Errore. Il segnalibro non definito.
3.8.3 Precedenza, associativit e arit degli operatori ................................. Errore. Il segnalibro non definito.
3.8.4 Uso delle espressioni.............................................................................. Errore. Il segnalibro non definito.

3.9 Espressioni booleane o codizionali ................................................Errore. Il segnalibro non definito.


3.9.1 Espressioni booleane semplici e composte............................................. Errore. Il segnalibro non definito.
3.9.2 Valutazione delle espressioni booleane composte.................................. Errore. Il segnalibro non definito.
3.9.3 Assegnazione di espressioni booleane ................................................... Errore. Il segnalibro non definito.

3.10 Espressioni di tipo string.....................................................Errore. Il segnalibro non definito.


3.11 Conversioni da tipi numerici a tipo string.........................Errore. Il segnalibro non definito.

CAPITOLO 4 ARRAY ............................. ERRORE. IL SEGNALIBRO NON DEFINITO.


4.1 Collezioni di dati .............................................................................Errore. Il segnalibro non definito.
4.1.1 Il tipo array......................................................................................... Errore. Il segnalibro non definito.

4.2 Array unidimensionali: vettori ..................................................Errore. Il segnalibro non definito.


4.2.1 Accesso agli elementi di un vettore........................................................ Errore. Il segnalibro non definito.
4.2.2 Dichiarazione e creazione di un vettore ................................................. Errore. Il segnalibro non definito.
4.2.3 Esempi duso di vettori .......................................................................... Errore. Il segnalibro non definito.
4.2.4 Creare un vettore durante la dichiarazione............................................. Errore. Il segnalibro non definito.
4.2.5 Inizializzare gli elementi di un vettore ................................................... Errore. Il segnalibro non definito.

4.3 Array bidimensionali: matrici ...................................................Errore. Il segnalibro non definito.


4.3.1 Accesso agli elementi di una matrice ..................................................... Errore. Il segnalibro non definito.
4.3.2 Dichiarazione e creazione di una matrice............................................... Errore. Il segnalibro non definito.
4.3.3 Inizializzare gli elementi di una matrice ................................................ Errore. Il segnalibro non definito.
4.3.4 Esempi duso di matrici.......................................................................... Errore. Il segnalibro non definito.

4.4 Operazioni permesse sugli array ...................................................Errore. Il segnalibro non definito.


4.4.1 Operazione di assegnazione tra array..................................................... Errore. Il segnalibro non definito.
4.4.2 Confronto tra variabili array................................................................... Errore. Il segnalibro non definito.

CAPITOLO 5 APPROFONDIMENTO SUI COSTRUTTIERRORE. IL SEGNALIBRO NON DEFINITO


5.1 Variabili dichiarate allinterno dei costrutti ................................Errore. Il segnalibro non definito.
5.1.1 Variabile locale a un blocco ................................................................... Errore. Il segnalibro non definito.
5.1.2 Conflitto di nomi .................................................................................... Errore. Il segnalibro non definito.
5.1.3 Contatore locale al ciclo for() ....................................................... Errore. Il segnalibro non definito.

5.2 Ottimizzazione dei cicli: uso degli operatori di incremento/decrementoErrore. Il segnalibro non definito.
5.2.1 Operatore di incremento......................................................................... Errore. Il segnalibro non definito.
5.2.2 Operatore di decremento ........................................................................ Errore. Il segnalibro non definito.

5.3 Ciclo iterativo do while() .....................................................Errore. Il segnalibro non definito.


5.3.1 Uso del ciclo do while() ............................................................. Errore. Il segnalibro non definito.
5.3.2 Costrutto do while() e punto-e-virgola di fine istruzione........... Errore. Il segnalibro non definito.

5.4 Ciclo iterativo foreach()........................................................Errore. Il segnalibro non definito.


5.4.1 Uso del ciclo foreach() ............................................................... Errore. Il segnalibro non definito.

5.5 Schema di selezione multipla .....................................................Errore. Il segnalibro non definito.


5.5.1 Costrutto switch() ........................................................................ Errore. Il segnalibro non definito.
5.5.2 Uso del costrutto switch()............................................................ Errore. Il segnalibro non definito.
IV

CAPITOLO 6 INTRODUZIONE AI METODIERRORE. IL SEGNALIBRO NON DEFINITO.


6.1 Premessa .......................................................................................... Errore. Il segnalibro non definito.
6.1.1 Convenzioni usate nel presentare gli esempi ......................................... Errore. Il segnalibro non definito.

6.2 Salve, Mondo!, Arrivederci mondo!...................................... Errore. Il segnalibro non definito.


6.3 Definizione di un metodo ............................................................... Errore. Il segnalibro non definito.
6.3.1 Prototipo di un metodo..................................................................... Errore. Il segnalibro non definito.
6.3.2 Corpo di un metodo ............................................................................... Errore. Il segnalibro non definito.
6.3.3 Ordine di definizione dei metodi ........................................................... Errore. Il segnalibro non definito.

6.4 Invocazione di un metodo .............................................................. Errore. Il segnalibro non definito.


6.4.1 Alterazione del flusso di esecuzione provocato dallinvocazione di un metodoErrore. Il segnalibro non definito.

6.5 Uso dei metodi................................................................................. Errore. Il segnalibro non definito.


6.6 Variabili campi di classe ............................................................ Errore. Il segnalibro non definito.
6.6.1 Valori iniziali dei campi di classe .......................................................... Errore. Il segnalibro non definito.

6.7 Campi di classe contro variabili locali ...................................... Errore. Il segnalibro non definito.
6.7.1 Sovrapposizione dei contesti di validit................................................. Errore. Il segnalibro non definito.

6.8 Terminazione anticipata del metodo............................................. Errore. Il segnalibro non definito.


6.8.1 Istruzione return ........................................................................... Errore. Il segnalibro non definito.
6.8.2 Uso dellistruzione return ............................................................. Errore. Il segnalibro non definito.
6.8.3 Terminazioni multiple............................................................................ Errore. Il segnalibro non definito.

CAPITOLO 7 METODI: PARAMETRI E VALORI DI RITORNOERRORE. IL SEGNALIBRO NON


7.1 Premessa .......................................................................................... Errore. Il segnalibro non definito.
7.2 Problema della comunicazione tra metodi ................................... Errore. Il segnalibro non definito.
7.3 Parametri e argomenti di ingresso ................................................ Errore. Il segnalibro non definito.
7.3.1 Compatibilit tra argomenti e parametri ................................................ Errore. Il segnalibro non definito.
7.3.2 Parametri di ingresso e variabili locali................................................... Errore. Il segnalibro non definito.
7.3.3 Modifica del valore di parametri di ingresso ......................................... Errore. Il segnalibro non definito.

7.4 Espressione di ritorno di un metodo ............................................. Errore. Il segnalibro non definito.


7.4.1 Ignorare il valore di ritorno di un metodo.............................................. Errore. Il segnalibro non definito.

7.5 Passaggio per riferimento degli argomenti: parametri out e refErrore. Il segnalibro non definito.
7.5.1 Parametri e argomenti out ............................................................... Errore. Il segnalibro non definito.
7.5.2 Requisiti nelluso di parametri e argomenti out .............................. Errore. Il segnalibro non definito.
7.5.3 Metodi che definiscono parametri out e valore di ritorno ............... Errore. Il segnalibro non definito.
7.5.4 Parametri e argomenti ref ............................................................... Errore. Il segnalibro non definito.
7.5.5 Uso di argomenti e parametri ref.................................................... Errore. Il segnalibro non definito.
7.5.6 Confronto tra parametri ref e parametri out............................. Errore. Il segnalibro non definito.

7.6 Array come argomenti di un metodo ............................................ Errore. Il segnalibro non definito.
7.6.1 Dichiarazione di un parametro array...................................................... Errore. Il segnalibro non definito.
7.6.2 Uso dei parametri array.......................................................................... Errore. Il segnalibro non definito.
7.6.3 Argomenti e parametri array .................................................................. Errore. Il segnalibro non definito.

CAPITOLO 8 APPROFONDIMENTO SUI TIPI DI DATIERRORE. IL SEGNALIBRO NON DEFI


8.1 Premessa .......................................................................................... Errore. Il segnalibro non definito.
8.2 Metodi dei tipi predefiniti .............................................................. Errore. Il segnalibro non definito.
8.2.1 Metodi statici e metodi di istanza................................................... Errore. Il segnalibro non definito.
8.2.2 Il metodo statico Parse ................................................................... Errore. Il segnalibro non definito.
8.2.3 Metodo di istanza ToString() ..................................................... Errore. Il segnalibro non definito.
8.2.4 Costanti simboliche definite dai tipi int e double................... Errore. Il segnalibro non definito.
8.2.5 Costanti definite dal tipo int ........................................................... Errore. Il segnalibro non definito.
V

8.2.6 Costanti definite dal tipo double .................................................... Errore. Il segnalibro non definito.

8.3 Il tipo array......................................................................................Errore. Il segnalibro non definito.


8.3.1 Stato iniziale e inizializzazione di una variabile array ........................... Errore. Il segnalibro non definito.
8.3.2 Lunghezza di un array: propriet Length........................................ Errore. Il segnalibro non definito.
8.3.3 Uso della propriet Length ............................................................. Errore. Il segnalibro non definito.
8.3.4 Array multidimensionali: lunghezza delle singole dimensioni .............. Errore. Il segnalibro non definito.
8.3.5 Copia profonda di un array: metodo statico Copy() ....................... Errore. Il segnalibro non definito.
8.3.6 Cancellare gli elementi di un array: metodo Clear() .................... Errore. Il segnalibro non definito.

8.4 Tipo string ..............................................................................Errore. Il segnalibro non definito.


8.4.1 Stringhe come collezioni di caratteri...................................................... Errore. Il segnalibro non definito.
8.4.2 Lunghezza di una stringa: propriet Length ................................... Errore. Il segnalibro non definito.
8.4.3 Inizializzazione di una stringa................................................................ Errore. Il segnalibro non definito.

8.5 Il tipo char.................................................................................Errore. Il segnalibro non definito.


8.5.1 Costanti letterali char ...................................................................... Errore. Il segnalibro non definito.
8.5.2 Valore iniziale di una variabile carattere................................................ Errore. Il segnalibro non definito.
8.5.3 Compatibilit tra il tipo char e gli altri tipi di dati .......................... Errore. Il segnalibro non definito.
8.5.4 Operazioni con i caratteri ....................................................................... Errore. Il segnalibro non definito.
8.5.5 Costanti stringa verbatim ................................................................... Errore. Il segnalibro non definito.

8.6 Tipi valore e tipi riferimento..................................................Errore. Il segnalibro non definito.


8.6.1 Tipi valore .......................................................................................... Errore. Il segnalibro non definito.
8.6.2 Tipi riferimento ...................................................................................... Errore. Il segnalibro non definito.
8.6.3 Conclusioni sui due modelli di memorizzazione.................................... Errore. Il segnalibro non definito.

8.7 Conversioni esplicite: operatore di cast ....................................Errore. Il segnalibro non definito.


8.7.1 Conversioni non ammissibili.................................................................. Errore. Il segnalibro non definito.
8.7.2 Uso delle conversioni esplicite............................................................... Errore. Il segnalibro non definito.

8.8 Il tipo object.............................................................................Errore. Il segnalibro non definito.


8.8.1 Relazione tra il tipo object e i tipi valore: operazioni di boxing e unboxingErrore. Il segnalibro non definito.
8.8.2 Implementazione del tipo object e delloperazione di boxing ...... Errore. Il segnalibro non definito.
8.8.3 Relazione tra il tipo object e i tipi riferimento .............................. Errore. Il segnalibro non definito.
8.8.4 Uso del tipo object nella programmazione.................................... Errore. Il segnalibro non definito.

APPENDICE A...........................................ERRORE. IL SEGNALIBRO NON DEFINITO.


A.1 Approfondimento sui metodi WriteLine() e Write().Errore. Il segnalibro non definito.
A.1.1 Caratteri speciali: sequenze di escape ............................................... Errore. Il segnalibro non definito.

A.2 Stringhe formato e specificatori di formato.................................Errore. Il segnalibro non definito.


A.3 Sotto insieme ASCII del codice Unicode ......................................Errore. Il segnalibro non definito.

APPENDICE B...........................................ERRORE. IL SEGNALIBRO NON DEFINITO.


B.1 Elenco degli operatori ....................................................................Errore. Il segnalibro non definito.

LINGUAGGIO C# - VERIFICA................... ERRORE. IL SEGNALIBRO NON DEFINITO.


Capitolo 1 Introduzione ai programmi C# ......................................Errore. Il segnalibro non definito.
Capitolo 2 Costrutti di base ..............................................................Errore. Il segnalibro non definito.
Capitolo 3 Tipi, variabili ed espressioni...........................................Errore. Il segnalibro non definito.
Capitolo 4 Array ................................................................................Errore. Il segnalibro non definito.
Capitolo 5 Approfondimento sui costrutti .......................................Errore. Il segnalibro non definito.
Capitolo 6 Introduzione ai metodi....................................................Errore. Il segnalibro non definito.
VI

Capitolo 7 Metodi: parametri e valori di ritorno ........................... Errore. Il segnalibro non definito.
Capitolo 8 Approfondimento sui tipi di dati ................................... Errore. Il segnalibro non definito.

LINGUAGGIO C# - APPROFONDIMENTI ERRORE. IL SEGNALIBRO NON DEFINITO.

CAPITOLO 1 INTRODUZIONE AI PROGRAMMI C#ERRORE. IL SEGNALIBRO NON DEFINIT


A 1.1 Uso dei metodi Write() e WriteLine() per informare lutenteErrore. Il segnalibro non definito.
A 1.1.1 Uso del metodo Write() nella richiesta dei dati ........................ Errore. Il segnalibro non definito.

CAPITOLO 2 COSTRUTTI DI BASE ..... ERRORE. IL SEGNALIBRO NON DEFINITO.


A 2.1 Condizioni di controllo dei cicli iterativi................................... Errore. Il segnalibro non definito.
A 2.1.1 Errori comuni nellimpostazione delle condizioni di controllo dei cicliErrore. Il segnalibro non definito.

A 2.2 costrutti e punto-e-virgola...................................................... Errore. Il segnalibro non definito.


A 2.2.1 Sommario........................................................................................... Errore. Il segnalibro non definito.

CAPITOLO 4 ARRAY............................. ERRORE. IL SEGNALIBRO NON DEFINITO.


A 4.1 Array e condizioni di controllo dei cicli iterativi ..................... Errore. Il segnalibro non definito.
A 4.1.1 Uso di una diversa regola di impostazione della condizione di controlloErrore. Il segnalibro non definito.

CAPITOLO 6 INTRODUZIONE AI METODIERRORE. IL SEGNALIBRO NON DEFINITO.


A 6.1 Campi di classe e variabili locali ............................................... Errore. Il segnalibro non definito.

CAPITOLO 8 APPROFONDIMENTO SUI TIPI DI DATIERRORE. IL SEGNALIBRO NON DEFI


A 8.1 Metodi del tipo string ........................................................ Errore. Il segnalibro non definito.
A 8.1.1 Metodi di inserimento/modifica/cancellazione .................................. Errore. Il segnalibro non definito.
A 8.1.2 Metodi di modifica del case dei caratteri ....................................... Errore. Il segnalibro non definito.
A 8.1.3 Metodi di formattazione..................................................................... Errore. Il segnalibro non definito.
A 8.1.4 Metodi di ricerca ................................................................................ Errore. Il segnalibro non definito.
A 8.1.5 Metodi vari......................................................................................... Errore. Il segnalibro non definito.

A 8.2 Metodi del tipo double ....................................................... Errore. Il segnalibro non definito.

VII

PREMESSA
Il testo introduce i fondamenti che stanno alla base di qualsiasi attivit di programmazione. Esso
rappresenta dunque una premessa fondamentale alla programmazione in generale e in particolare
allo studio del testo Linguaggio C#.
Il testo inizia con lintrodurre i due concetti fondamentali, quello di problema e quello di
algoritmo. Quindi li caratterizza in maggior dettaglio, introducendo contestualmente un
linguaggio grafico per la descrizione degli algoritmi il linguaggio a blocchi mettendolo alla
prova in alcuni semplici problemi di programmazione.
Poich il testo di carattere introduttivo, sia nella forma che nei contenuti affrontati, i problemi
proposti, nonch gli algoritmi che li risolvono, hanno il solo scopo di introdurre i concetti da
apprendere e dunque non rappresentano esempi realistici di programmazione.
Lo scopo dello studente non quindi quello di comprendere il perch un determinato
problema debba essere affrontato, ma perch funziona e come lalgoritmo che lo risolve.
Indicazioni sul testo
Per ogni capitolo:
1) una pagina introduttiva elenca i concetti principali;
2) alcuni argomenti presentano dei riferimenti a note e approfondimenti, collocati in una
sezione specifica al termine del testo;
3) dedicata una sezione esercizi e una sezione autovalutazione;
Inoltre, i primi tre capitoli sono terminati da un schema di riepilogo dei concetti principali.
Convenzioni usate
Nel testo vengono usate particolari notazioni e stili per:
a)

la descrizione della sintassi delle istruzioni;

b)

il riferimento, nel testo, agli elementi contenuti negli algoritmi presentati.

c)

riferimenti ad approfondimenti e note;

Nei primi due casi viene usato il carattere Curier new, 10pt (Questo testo scritto con
Curier new, 10pt). Nel terzo, viene usato il carattere Verdana 10pt (Questo testo scritto con
Verdana 10 pt.)
I riferimenti ad approfondimenti e note sono collocati ai margini sinistro o destro della pagina, e
sono identificati dal numero del riferimento e da unicona che ne caratterizza il tipo:
[A X.X]

Riferimento ad un approfondimento sullargomento

[N X.X]

Riferimento ad una nota

Capitolo 1 Concetti generali

Problema
Scenario iniziale
Scenario finale
Algoritmo
Requisiti di un algoritmo

Concetti generali

1.1 INTRODUZIONE
Il termine algoritmo deriva dal nome del matematico arabo AlKhuwarizmi ed stato assunto in
passato come sinonimo di procedimento o metodo di calcolo usato nella risoluzione di
problemi matematici. Laccezione moderna del termine rimanda a un significato pi ampio, che lo
pone in relazione a problemi non solo di carattere matematico, ma il senso fondamentale resta
comunque il medesimo, che, nella sua forma pi generica, pu essere cos tradotto:
un algoritmo descrive una serie di azioni che risolve un certo problema.

Il termine algoritmo non da mettere in relazione con il solo termine problema (termine che sar
chiarito nel prossimo paragrafo), vi sono infatti altri concetti ad esso collegati:
1) il soggetto che idea e quindi produce lalgoritmo: soggetto ideatore;
2) il soggetto che lo mette in atto, cio che esegue le azioni prescritte dallalgoritmo: soggetto
esecutore;
3) la forma che assume lalgoritmo, e cio il modo in cui le azioni sono descritte e organizzate;
Nei paragrafi che seguono verranno chiariti tali termini, i quali ci forniranno il quadro concettuale
di base per apprendere gli elementi teorici fondamentali che definiscono lattivit e i risultati della
programmazione.

Capitolo 1

1.2 PROBLEMI E SOLUZIONI DI PROBLEMI


1.2.1 Una prima definizione di problema
Noi tutti abbiamo una vaga nozione del termine problema: un quesito al quale si deve dare una
risposta, detta soluzione del problema.
In tale definizione rientrano i problemi di carattere matematico che siamo abituati ad affrontare:
esiste una domanda o dei dati sconosciuti da trovare; il problema viene considerato risolto
rispondendo alla domanda o trovando il valore dei dati sconosciuti.
Ma esistono anche problemi di natura diversa. Ad esempio:
sintonizzare il canale del televisore su una certa frequenza;
mettere in moto unautomobile;
programmare il videoregistratore per la registrazione di un programma televisivo;
In questi esempi non viene richiesto di trovare la risposta a un quesito, ma di agire su determinati
oggetti per raggiungere uno determinato obiettivo.
Per comprendere anche problemi cos formulati, sostituiamo la precedente definizione,
adottandone una pi generale. Si definisce problema una situazione caratterizzata da:
1) uno scenario iniziale;
2) uno scenario finale, che si vuole raggiungere;
3) una serie di azioni da compiere per passare dallo scenario iniziale allo scenario finale;
Esempio 1.1
Testo del problema: Mettere in moto un'automobile.
Scenario iniziale: automobile ferma e spenta
Scenario finale: (risultato desiderato): automobile in moto
Azioni da compiere:
1) inserisci la chiave di accensione
2) premi il piede sinistro sulla frizione
3) gira in senso orario la chiave di accensione
4) premi il piede destro sull'acceleratore

Esempio 1.2
Testo del problema: Calcolare larea di un triangolo rettangolo dati i due
cateti.
Scenario iniziale: lunghezza dei cateti
Scenario finale (risultato desiderato): valore dell'area del triangolo
rettangolo

Concetti generali

Azioni da compiere:
1) moltiplica i due cateti tra loro e dividi il risultato per due

Esempio 1.3
Testo del problema: Copiare un file dal disco fisso al dischetto.
Scenario iniziale: Computer acceso, dischetto inserito, sul desktop le icone del
disco fisso e del dischetto
Scenario finale: file copiato nel dischetto
Azioni da compiere:
1) fai doppioclic sull'icona del disco fisso
2) fai doppioclic sulla cartella che contiene il file
3) clicca sul file e, tenendo premuto il pulsante, trascina il mouse fino
all'icona del dischetto
4) lascia il pulsante del mouse

Un problema, nella definizione data in precedenza, dunque caratterizzato da uno scenario iniziale,
uno scenario finale da raggiungere e dallimplicita assunzione che esistano delle azioni che,
partendo dallo scenario iniziale, consentano di arrivare allo scenario finale.
[A 1.1]

1.2.2 Soluzione di un problema


Data la precedente definizione, ci si pu chiedere cosa significhi risolvere un problema, e da cosa
rappresentata la soluzione di un problema.
Nelluso comune ci si riferisce ad essa come al risultato che si vuole raggiungere, e dunque allo
scenario finale. In questa accezione, ad esempio, il problema dellarea del triangolo rettangolo ha
come soluzione il valore dellarea.
Nellambito che stiamo considerando, e cio quello della programmazione, la soluzione non
affatto rappresentata dallo scenario finale, cio dal risultato, ma dalle azioni da compiere per
raggiungere tale risultato.
Possiamo dunque dire che:
la soluzione di un problema rappresentata da un algoritmo che descrive le azioni
necessarie per raggiungere lo scenario finale (risultato del problema) a partire dallo
scenario iniziale.

Pi esattamente, un algoritmo descrive la soluzione di una classe di problemi e non di un


problema specifico. Ad esempio, lalgoritmo che risolve il problema di calcolo dellarea del
triangolo rettangolo deve funzionare per qualsiasi triangolo rettangolo e non solo per un triangolo
dai cateti ben precisi.
[A 1.2]

Capitolo 1

1.3 ALGORITMI
La precedente definizione del termine algoritmo ne chiarisce lo scopo: esso rappresenta la soluzione
di un problema generale.
Occorre ora caratterizzarlo con maggior precisione, nonch definire i concetti ad esso collegati.
1.3.1 Soggetto ideatore e Soggetto esecutore dellalgoritmo
Quando viene preso in considerazione un problema e la sua soluzione un algoritmo
fondamentale comprendere che chi risolve il problema, cio chi produce lalgoritmo, devessere
considerato un soggetto distinto da chi esegue lalgoritmo, cio da chi applica le azioni in esso
descritte.
Ad esempio, consideriamo il famoso problema del lupo, della capra e del cavolo.
Esempio 1.4
Testo del problema:
Un contadino deve attraversare un fiume portando con s un lupo, una capra e un
cavolo. Egli dispone per di una barca che pu portare solo uno dei tre suddetti
"passeggeri" oltre a s stesso. Inoltre occorre considerare che, in assenza del
contadino, il lupo mangerebbe senz'altro la capra, mentre la capra mangerebbe
senz'altro il cavolo.
In che modo il contadino pu attraversare il fiume senza che ci accada?
Scenario iniziale: contadino, lupo, capra e cavolo su una sponda del fiume
Scenario finale: contadino, lupo, capra e cavolo sullaltra sponda del fiume
Algoritmo che risolve il problema:
1) porta la capra sull'altra sponda
2) torna indietro
3) porta il cavolo sull'altra sponda
4) porta indietro la capra
5) porta il lupo sull'altra sponda
6) torna indietro
7) porta la capra sull'altra sponda

Un contadino che dovesse affrontare un problema analogo potrebbe egli stesso formulare il
precedente algoritmo, per metterlo successivamente in pratica. Il fatto che, in questo caso, il
contadino rappresenterebbe sia lideatore dellalgoritmo che il suo esecutore irrilevante. Nel
momento in cui il contadino formula lalgoritmo, indossa i panni del soggetto ideatore. Nel
momento in cui lo esegue, indossa i panni del soggetto esecutore. I due restano concettualmente
soggetti distinti.
Tale distinzione fondamentale, infatti il soggetto esecutore non ha alcuna necessit di
conoscere la natura del problema, addirittura nemmeno lo scopo della sua soluzione. Egli, infatti, si
limita ad eseguire fedelmente le azioni descritte nellalgoritmo.
[A 1.3]

Concetti generali

Dato un problema, esistono dunque due processi distinti, prodotti da due soggetti distinti:
1) il processo di risoluzione del problema, attraverso il quale il soggetto ideatore produce
lalgoritmo che ne rappresenta la soluzione;
2) il processo di esecuzione dellalgoritmo, attraverso il quale il soggetto esecutore applica
lalgoritmo, eseguendo meccanicamente le azioni in esso descritte.
Per un dato problema, sar necessario effettuare il processo di risoluzione una volta soltanto.
Mentre il processo di esecuzione, cio lapplicazione dellalgoritmo, potr essere effettuato ogni
qualvolta sia necessario da chiunque sia in grado di comprendere ed eseguire le azioni descritte
nellalgoritmo.

SCENARIO
INIZIALE

STATO DEGLI OGGETTI


PRIMA DEL PROCESSO DI
ESECUZIONE

gli oggetti vengono


manipolati durante il

SOGGETTO
ESECUTORE

SCENARIO
FINALE

APPLICA IL

Figura 1-1. Rappresentazione schematica del processo di esecuzione di un algoritmo.

STATO DEGLI OGGETTI


DOPO IL PROCESSO DI

PROCESSO DI
ESECUZIONE

ESECUZIONE

il risultato di tale processo


rappresentato da

VENGONO ESEGUITE
LE AZIONI DESCRITTE
NELL'ALGORITMO

1.3.2 Requisiti di un algoritmo


Un algoritmo rappresenta dunque la soluzione di un problema e descrive un processo (una serie di
azioni) attraverso il quale un esecutore, partendo da uno scenario iniziale raggiunge uno scenario
finale, considerato il risultato desiderato in relazione al problema.
Questa definizione, ancorch corretta, per approssimativa, in quanto non introduce alcun
limite o regola nelle modalit di descrizione delle azioni. Di fatto, invece, un algoritmo deve
soddisfare alcuni requisiti.

10

Capitolo 1

Essi dipendono principalmente dal concetto di esecutore meccanico (in un certo senso
stupido) introdotto nel paragrafo precedente, la cui sola capacit richiesta quella di eseguire
fedelmente le azioni e non di comprenderne o intuirne lo scopo, o addirittura di comprendere lo
scopo dellintero algoritmo. Ma per garantire che un simile esecutore possa eseguire correttamente
lalgoritmo, questo deve necessariamente rispettare alcune regole:
1) le azioni devono essere descritte nei termini di un ordine rivolto allesecutore. (moltiplica,
premi, porta, torna, etc). Tale forma di descrizione di unazione si chiama: istruzione;
2) posto dunque che unistruzione equivale alla descrizione di unazione, un algoritmo
devessere rappresentato da un elenco ordinato di istruzioni. Ci significa che lesecutore
dovr essere sempre in grado di:
sapere qual la prima istruzione dellalgoritmo;
distinguere unistruzione dalla precedente e dalla successiva (sapere dove termina
unistruzione);
sapere qual la prossima istruzione da eseguire;
riconoscere la fine dellalgoritmo;
3) le istruzioni devono essere non ambigue. Lesecutore deve cio essere in grado di
interpretarle senza alcun margine di errore, riconoscendo:
il tipo di azione da svolgere (cosa deve fare);
gli oggetti ai quali lazione rivolta;
4) le istruzioni devono essere eseguibili. Lesecutore deve cio essere in grado di metterle in
pratica;
Se consideriamo i primi tre esempi del capitolo, si vede che fatte le dovute assunzioni sulle
capacit dellesecutore rispettano le regole sopra esposte. Un presunto algoritmo che invece non
rispetta tali regole il seguente:
Esempio 1.5
Testo del problema: Preparare un piatto di spaghetti al burro.
Scenario iniziale: confezione di spaghetti, pentola piena d'acqua sul fornello,
confezione di burro, piatto
Scenario finale: piatto di spaghetti conditi con il burro
Algoritmo soluzione del problema:
Accendi il fornello sotto la pentola e quando l'acqua bolle aggiungi sale quanto
basta. Poi metti quanti spaghetti desideri nella pentola e aspetta finch gli
spaghetti non sono cotti al punto giusto. Infine servi gli spaghetti sul piatto
e mettici sopra un po' di burro.

Concetti generali

11

Vediamo perch, esaminando la forma e il contenuto dellalgoritmo:


Accendi il fornello sotto la pentola e quando lacqua bolle aggiungi sale
quanto basta. Poi metti quanti spaghetti desideri nella pentola e aspetta finch
gli spaghetti non sono cotti al punto giusto. Infine servi gli spaghetti sul
piatto e mettici sopra un po di burro.

Innanzitutto, non descritto attraverso un elenco di istruzioni. Ci significa che al di l di una


analisi del testo secondo le regole della sintassi della lingua italiana non chiaro quante e quali
siano effettivamente le istruzioni e in che ordine debbano essere eseguite.
Inoltre, alcune di esse (evidenziate in corsivo) sono chiaramente ambigue, indicando s
allesecutore cosa devessere fatto ma senza precisare i termini delle entit coinvolte nelle azioni.
Ad esempio: sale quanto basta non indica una quantit di sale; oppure: cotti al punto giusto,
non indica un preciso livello di cottura; eccetera.

12

Capitolo 1

1.4 SCHEMA DI RIEPILOGO DEI CONCETTI PRINCIPALI

SCENARIO
INIZIALE

definito
da

PROBLEMA

SCENARIO
FINALE

definito
da

la sua soluzione
rappresentata da

ALGORITMO
prodotto da

SOGGETTO
IDEATORE

attraverso il

eseguito da

composto da

ELENCO DI
ISTRUZIONI

SOGGETTO
ESECUTORE

attraverso il

PROCESSO DI

PROCESSO DI

RISOLUZIONE

ESECUZIONE

ORDINATO

ISTRUZIONI NON
AMBIGUE

ESISTE UNA
PRIMA
ISTRUZIONE

SEMPRE POSSIBILE
STABILIRE QUAL LA
PROSSIMA ISTRUZIONE

ISTRUZIONI
EFFETTIVAMENTE
ESEGUIBILI

Concetti generali

13

Esercizi
1) Proponi due esempi di problemi specifici e due esempi di problemi generali.

2) Realizza gli algoritmi che risolvono i seguenti problemi:


(Definisci il problema prima di produrre lalgoritmo.)
Cambiare la ruota a una macchina.
Calcolare larea di un trapezio.

3) In relazione ai primi tre esempi proposti nel testo, individua (proponi) le caratteristiche di
soggetti esecutori che non sarebbero in grado di eseguire le azioni descritte nei
corrispondenti algoritmi.

14

Capitolo 1

Autoverifica
Rispondi alle domande
SI

1 Colui che applica le istruzioni dellalgoritmo denominato soggetto


esecutore.
2 Un algoritmo rappresenta un elenco di istruzioni.

3 Un algoritmo rappresenta la soluzione di un problema

4 La frase: premi piano il bottone possiede i requisiti necessari per essere


considerata listruzione di un algoritmo.
5 Le istruzioni dellalgoritmo possono essere descritte in qualsiasi ordine.

6 Un soggetto esecutore, per poter applicare correttamente lalgoritmo,


deve conoscere la natura del problema
7 Il risultato di un problema rappresentato da un algoritmo

8 Il problema calcolare larea del quadrato di lato 10 cm un problema


specifico
9 Unistruzione risulta ambigua quando pu essere interpretata in vari modi
dallesecutore.
10 Il problema calcolare il perimetro di un rettangolo dati la base e laltezza
un problema generale
11 Il soggetto ideatore dellalgoritmo deve conoscere la natura del problema

NO

Capitolo 2 Algoritmi che elaborano dati

Dati iniziali e Dati finali


Rappresentare i dati: i tipi
Variabili, costanti ed espressioni
Istruzione di assegnazione
Diagramma a blocchi: linguaggio per descrivere
gli algoritmi

Algoritmi che elaborano dati

17

2.1 INTRODUZIONE
Nel capitolo precedente sono stati introdotti, anche se in modo incompleto, due concetti
fondamentali, quello di problema e quello di algoritmo, che rappresenta appunto la soluzione di un
problema descritta in una forma eseguibile da un soggetto esecutore.
Entrambi i concetti sono validi a prescindere dal contesto (natura del problema e caratteristiche
dellesecutore) nel quale vengono considerati; di fatto, per, la loro applicazione risulta utile e
formalmente valida solo nella elaborazione di informazioni di natura simbolica, laddove, cio,
mediante simboli si possono rappresentare numeri, date, testi, immagini, etc.
Ci per i seguenti motivi:
i problemi di natura simbolica, e dunque i corrispondenti algoritmi risolutori, possono essere
definiti nella forma appropriata per essere trattati da esecutori automatici, cio da
computer. Ed ovviamente in questo ambito che lo studio e la realizzazione di algoritmi
mostra tutta le propria utilit;
molti problemi che trattano oggetti fisici possono essere ricondotti a problemi di natura
simbolica, laddove i simboli le informazioni corrispondenti rappresentano gli oggetti
fisici del problema originale;
attualmente non esistono esecutori automatici (e dunque nemmeno linguaggi formali) capaci
di eseguire algoritmi che rappresentano direttamente la soluzione di problemi che trattano
oggetti fisici.
[N 2.1]

Dora in avanti, quindi, prenderemo in considerazione soltanto problemi e algoritmi che trattano
dati; algoritmi, dunque, che possono essere definiti mediante linguaggi formali ed eseguiti da
esecutori automatici.
Figura 2-1. Rappresentazione schematica delle relazioni tra scenari e dati del problema.
VALORE INIZIALE
DEI DATI

VALORE FINALE
DEI DATI

(dati in ingresso)

(dati in uscita)

STATO INIZIALE
DEGLI OGGETTI
(SCENARIO INIZIALE)

PROBLEMA

STATO FINALE
DEGLI OGGETTI
(SCENARIO FINALE)

18

Capitolo 2

Ci non modifica comunque la definizione di problema cos come stata data nel capitolo
precedente, con la differenza che adesso gli oggetti del problema rappresentano informazioni dati
e non entit fisiche.
In questa accezione, i dati che rappresentano lo scenario iniziale sono chiamati dati iniziali o
dati in ingresso (al processo di esecuzione), mentre quelli che definiscono lo scenario finale, o
risultato, sono chiamati dati finali o dati in uscita (del processo di esecuzione).

Algoritmi che elaborano dati

19

2.2 RAPPRESENTARE LE INFORMAZIONI


Le informazioni, in estrema sintesi, sono le conoscenze che abbiamo sul mondo. Noi tutti abbiamo
unidea approssimativa di questo concetto, e ce ne serviamo in continuazione. Noi stessi possiamo
essere scomposti in informazioni, che in qualche modo ci rappresentano: nome e cognome, peso,
altezza, colore degli occhi, titolo di studio, etc.
Se dovessimo caratterizzare le informazioni in genere, in modo da precisarne la natura,
individueremmo due caratteristiche :
le informazioni appartengono a svariate categorie, possono essere cio di svariati tipi.
le informazioni si distinguono per il loro valore;
Il tipo di una informazione sintetizza:
linsieme dei valori rappresentabili;
le operazioni che possono essere effettuate con tali valori;
[A 2.1]

2.2.1 Introduzione ai tipi di dati gestiti dagli esecutori automatici


I dati sono dunque classificabili in tipi in base alla loro natura, e cio in base ai valori che
rappresentano e alle operazioni che possibile compiere su tali valori.
Con un po di immaginazione possiamo individuare molti tipi di dati; ecco alcuni esempi:
giorni della settimana, mesi dellanno, anni, date nella forma GG/MM/AA, et, nomi
di persona, sesso, codici fiscali, partite iva, numeri di telefono, pesi, altezze,
distanze, volumi, eccetera.

Una tale ricchezza di tipi di dati non per rappresentabile da alcun linguaggio formale, e ci non
nemmeno necessario. Considerando gli esempi proposti, si intuisce infatti come sia sufficiente
avere a disposizione pochi tipi di dati base, con i quali rappresentare tutti gli altri.
Ad esempio, nomi, cognomi, codici fiscali, colori degli occhi, sono tutti tipi di dati che possono
essere rappresentati mediante sequenze di caratteri (lettere, cifre e altri simboli). Mentre pesi,
altezze, volumi, et, sono tutti tipi di dati che possono essere rappresentati mediante numeri.
Questi due tipi di dati base, mediante i quali rappresentare gli altri, si chiamano rispettivamente:
tipo stringa: qualsiasi sequenza (anche vuota) di caratteri;
tipo numero: qualsiasi valore numerico.
Nei successivi paragrafi faremo riferimento a tali tipi di dati, sorvolando per il momento sul fatto
che i linguaggi di programmazioni ne mettono a disposizione degli altri, nonch tipi analoghi ma
con nomi e caratteristiche leggermente diverse.

20

Capitolo 2

2.3 RAPPRESENTARE E MANIPOLARE I VALORI DEI DATI: VARIABILI, COSTANTI,


ESPRESSIONI

Anche negli algoritmi che elaborano dati, le istruzioni descrivono azioni che manipolano oggetti, i
quali in questo caso non rappresentano entit fisiche ma appunto i dati stessi.
Vi sono due classi di oggetti che consentono di fare riferimento ai dati da elaborare, le
variabili e le costanti.

2.3.1 Variabili
Una variabile pu essere immaginata come una scatola identificata da un nome, chiamato
identificatore della variabile. Il contenuto della scatola rappresenta il valore del dato
rappresentato
A

100

In questo esempio, A rappresenta il nome della variabile, mentre 100 rappresenta il suo
contenuto, e quindi il valore del dato.
Una variabile cos chiamata perch mentre il suo nome non cambia, il suo contenuto pu essere
modificato mediante unistruzione di assegnazione.
La maggior parte delle istruzioni di un algoritmo sono istruzioni di assegnazione, istruzioni, cio,
che modificano il contenuto di una variabile. Esse assumono la forma:
nome-variabile

nuovo-contenuto

Ad esempio:
A

200 + 200

La cui esecuzione determina le seguenti azioni:


1) lesecutore calcola il nuovo contenuto della variabile, in questo caso ottenendo 400;
2) lesecutore assegna il valore cos calcolato ad A, sostituendo il valore che essa aveva in
precedenza.
Dopo lesecuzione di questa istruzione, il nuovo contenuto di A dunque 200.
[N 2.2]

2.3.2 Costanti
Negli esempi precedenti stato fatto uso dei valori 100 e 200, i quali identificano ovviamente dei
valori numerici. Ebbene, 100 e 200 e qualsiasi altro numero sono oggetti denominati costanti
letterali.

Algoritmi che elaborano dati

21

Essi sono detti costanti poich, come si intuisce, il valore che rappresentano non varia mai. Sono
inoltre definiti letterali perch il valore rappresentato espresso automaticamente dalla notazione
usata per riferirsi ad essi1 .
[A 2.2]

2.3.3 Espressioni
Unespressione una formula che combina uno o pi oggetti (costanti o variabili) con zero o pi
operazioni che operano su di essi.
Unespressione, nel momento in cui viene valutata dallesecutore, produce un valore, il cui tipo
dipende dal tipo degli oggetti e dalle operazioni in essa contenute.
Esempi di espressioni sono:
A + 100

100

A+A

A*B/2
[A 2.3]

Il concetto di espressione appena introdotto modifica il precedente modo di definire listruzione di


assegnazione (senza comunque modificarne il significato), che diventa:
nome-variabile

espressione

Lassegnazione viene dunque cos eseguita dallesecutore:


1) lesecutore calcola il valore dellespressione;
2) lesecutore assegna il valore cos calcolato alla variabile, sostituendo quello che essa aveva in
precedenza.

Una tale precisazione pu apparire assolutamente ovvia, e quindi superflua. In realt necessaria poich esiste una
seconda classe di costanti, chiamate costanti simboliche, le quali si differenziano dalle costanti letterali per il fatto di
possedere un nome.

22

Capitolo 2

2.4 DESCRIZIONE FORMALE DEGLI ALGORITMI


Introduciamo ora un linguaggio di descrizione formale degli algoritmi. Lo facciamo affrontando un
semplicissimo problema matematico.
Esempio 2.1
Testo del problema: Calcolare l'area e il perimetro di un rettangolo, dati la
base e l'altezza.
Scenario iniziale:

B (base); H (altezza)

Scenario finale:

A (area); P (perimetro)

Lalgoritmo risolutore il seguente:


Algoritmo 2.1
numero B, H, A, P
indica l'inizio
dell'algoritmo

dichiarazione delle
variabili usate
nell'algoritmo

INIZIO
<B, H sono forniti>

asserzione

A=B*H

istruzione

P = (B+H) * 2

istruzione

<A, P sono calcolati>


indica la fine
dell'algoritmo

asserzione

FINE

Vi sono alcune osservazioni da fare.


1) Innanzitutto, gi allatto della definizione del problema (scenari iniziale e finale) si
introducono gli oggetti le variabili che saranno utilizzati per la rappresentazione dei dati,
indicando per ogni variabile il dato che rappresenta.
2) La descrizione dellalgoritmo preceduta dalla dichiarazione formale delle variabili
utilizzate. Una dichiarazione assume la forma:
tipovariabile

nomevariabile

Se ci sono pi variabili dello stesso tipo, queste possono essere dichiarate allinterno della
stessa dichiarazione.(In questo caso le variabili sono tutte numeriche.)
1) Lalgoritmo comincia con la parola INIZIO e termina con la parola FINE.
2) Le istruzioni due in questo caso sono racchiuse in rettangoli, o blocchi.

Algoritmi che elaborano dati

23

3) Lordine di esecuzione il flusso di esecuzione delle istruzioni indicato dalle frecce.


4) Esistono delle asserzioni (affermazioni) due in questo caso che hanno lo scopo di
puntualizzare lo stato di alcuni oggetti (nellesempio, lo stato delle variabili che contengono i
dati iniziali e i risultati finali) o lo stato del processo di esecuzione in generale.
[A 2.4]

Un simile linguaggio di descrizione degli algoritmi si chiama linguaggio a blocchi, e il prodotto


finale, lalgoritmo rappresentato, denominato diagramma di flusso o diagramma a blocchi.
[N 2.3]
Il termine flusso di esecuzione fa riferimento allordine con il quale le istruzioni
vengono eseguite e indica genericamente listruzione o le istruzioni che lesecutore sta
eseguendo in un certo momento. Tale termine, che relativamente ai programmi possiede un
analogo in controllo del programma, viene spesso usato in frasi del tipo:
il flusso di esecuzione passa allistruzione successiva
il flusso di esecuzione si trova allinterno del ciclo
lesecuzione prosegue nel ramo NO dellistruzione
con lo scopo di indicare quale parte dellalgoritmo in fase di esecuzione in un certo
momento.

24

Capitolo 2

2.5 SCHEMA DI RIEPILOGO DEI CONCETTI PRINCIPALI


DIAGRAMMI A
BLOCCHI

pu essere descritto
mediante

SCENARIO
FINALE

ALGORITMO

INSIEME DEI
VALORI

definiscono
elabora

caratterizzati da
DATI IN USCITA

TIPI

caratterizzati da

OPERAZIONI
ESEGUIBILI SUI

appartengono
a
determinati

possono
essere

DATI

possono
essere
DATI IN
INGRESSO

appartengono
a
rappresentati
mediante

definiscono

rappresentati
mediante

VALORI

SCENARIO
INIZIALE

COSTANTI

si combinano in

VARIABILI

caratterizzate caratterizzate
da
da

NOME

CONTENUTO

ESPRESSIONI

modificato da

ISTRUZIONE DI
ASSEGNAZIONE

Algoritmi che elaborano dati

25

Esercizi
1) Con quali tipi di dati base rappresenteresti i seguenti tipi di informazione?
a) Giorni della settimana

numero

stringa

b) Mesi dellanno

numero

stringa

c) Anni

numero

stringa

d) Date nella forma GG/MM/AA

numero

stringa

e) Volumi

numero

stringa

f) Altezze

numero

stringa

g) Distanze

numero

stringa

h) Codici fiscali

numero

stringa

i)

Partite iva

numero

stringa

j)

Sesso

numero

stringa

2) Risolvi i seguenti problemi (definisci il problema prima di realizzare lalgoritmo):


1) Dato il lato di un quadrato, calcolare larea e il perimetro.
2) Trovare laltezza di un triangolo isoscele dati larea e la base.
3) Calcolare larea di un cilindro dato il raggio di base e laltezza.

26

Capitolo 2

Autoverifica
Rispondi alle domande

SI

1 I dati vengono rappresentati mediante variabili.

2 Le costanti letterali sono cos chiamate perch definite attraverso le lettere


dellalfabeto.
3 Il tipo di un dato identifica le operazioni che si possono effettuare con quel
dato.
4 Nomi di persona e indirizzi non possono essere rappresentati entrambi con
lo stesso tipo di dato base.
5 Lo scenario iniziale che caratterizza un problema definito dai dati in
ingresso.
6 Le costanti 234.4 e 234.4 hanno lo stesso valore.

7 Unasserzione equivalente a unistruzione.

8 Listruzione di assegnazione aggiunge un valore a quello gi presente nella


variabile.
9 Le costanti 10 e 10 sono dello stesso tipo.

10 Il nome di una variabile si chiama identificatore.

11 A+100 una espressione costante, in quanto in essa figura una costante


numerica.
12 Il tipo del valore prodotto da unespressione dipende dal valore contenuto
nelle variabili che compaiono in essa.
13 I dati in uscita definiscono lo scenario finale di un problema.

NO

You might also like