vuoi
o PayPal
tutte le volte che vuoi
GESTIONE INFORMATICA DEI DATI AZIENDALI
Alberto ZANONI
Centro "Vito Volterra"
Università "Tor Vergata"
Via Columbia 2, 00133 Roma, Italy
zanoni@volterra.uniroma2.it
"Rudimenti di programmazione"
"Programming is an art, not a science"
Donald E. Knuth
Come tutte le arti, la programmazione si basa su solidi concetti e tecniche, che, appropriatamente combinate, permettono l'ideazione e la realizzazione di programmi implementabili usando i vari linguaggi di programmazione disponibili.
Alcuni concetti qua e là...
Costanti: valori che non cambiano durante l'intera esecuzione del programma.
Variabili: (implementate da locazioni di memoria) contengono valori che possono cambiare durante l'esecuzione del programma.
Funzioni: (procedure, sottoprogrammi) sezioni di codice che svolgono un ben specifico compito, usate
come componente da programmi più complessi. Le funzioni sono una delle possibilità di implementazione del principio divide et impera: per risolvere un problema difficile lo si compone in problemi più semplici. Si risolvono prima questi problemi e poi si usano le soluzioni trovate per risolvere il problema originale.
- Dichiarazione di variabili, allocazione
La dichiarazione di variabili serve al compilatore a capire quanto memoria vada riservata (allocata). È possibile avere allocazioni statiche o dinamiche di memoria.
Es. (statica) Un intero (4 byte)
int x;
Un carattere (1 byte)
char c;
Un vettore di interi (10 * 4 = 40 byte)
int vett[10];
Si può accedere all'i-esimo elemento di un vettore indicando l'indice vett[i]
L'indice può iniziare da 0 o da 1, a seconda dei linguaggi.
- Dichiarazione di variabili, allocazione
Quando non è noto a priori il numero di variabili che saranno necessarie nel programma (ad es. perché vengono "passate" da un altro
programma o dall'utente) è possibile allocare memoria dinamicamente.
puntatoreAvariabile = new(T)
Alloca memoria sufficiente per una variabile di tipo T. Tipicamente restituisce un puntatore alla (l'indirizzo della) memoria allocata.
delete(var)
Libera la memoria associata alla variabile allocata var, dinamicamente in precedenza da una chiamata a new.
- Strutture dati
Vi sono tipi di dato più complessi di struttura molto generale:
Pile Strutture LIFO (Last In, First Out): l'inserimento e l'estrazione di oggetti possono avvenire solo da un lato
Code Strutture FIFO (First In, First Out): l'inserimento avviene da un lato, l'estrazione dall'altro
Liste Strutture dinamiche, pensate per inserimento e rimozione dinamica di dati. Possono essere monodirezionali, bidirezionali, ordinate, ...
Alberi, Grafi, ...
Le varie strutture dati si differenziano per la complessità delle operazioni elementari (ricerca di un elemento, inserimento, cancellazione, ordinamento, ...)
- Comando ::= Comando ; Comando
- Assegnamento: ad una variabile viene assegnato un valore. Il valore ivi contenuto precedentemente viene cancellato.
Esempio:x = 0;
var = var + 1;
Nel secondo caso,var
a sinistra del segno di uguaglianza indica la locazione di memoria in cui verrà scritto il risultato, mentre quello a destra il valore in essa attualmente contenuto. L'effetto è di incrementare il valore divar
di 1. - Condizionale:
if (condizione) then (comando1) else (comando2)
A seconda del valore dicondizione
(un'espressione booleana, ad es.x > 3
, oy == z
), vengono effettuate azioni diverse. Secondizione
è True viene eseguitocomando1
. Se il "ramo"else
è presente,comando2
viene eseguito quandocondizione
è False.
In generale, 0 corrisponde a False, qualunque altra cosa a True. - Ciclo: Ripetizione di un comando un certo numero di volte, a seconda della condizione
booleana (guardia).<h1>Comando while</h1>
<while>
(condizione)<do>
(comando)</while>
<h1>Comando do while</h1>
<do>
(comando)<while>
(condizione)</while>
<h1>Comando repeat until</h1>
<repeat>
(comando)<until>
(condizione)</until>
<h1>Comando for</h1>
<for>
(iteratore)<do>
(comando)</for>