- Scrivere un algoritmo per calcolare l'area di un triangolo
	Variabili: base, altezza, area. Insieme di definizione: numeri reali
	LEGGI base e altezza
	area = base * altezza / 2
	SCRIVI area

- Algoritmo per scambiare 2 variabili a e b
	Variabili: a, b, tmp. Insieme di definizione: ?
	LEGGI a e b
	tmp = a
	a = b
	b = tmp
	SCRIVI a e b

- Algoritmo per verificare se un numero e' pari o dispari
	Variabili: n, r. Insieme di definizione: numeri naturali
	LEGGI n
	r = n % 2	(resto della divisione intera fra n e 2)
	se (r = 0)
	    allora
		SCRIVI "pari"
	    altrimenti
		SCRIVI "dispari"

- Algoritmo per verificare se un numero e' positivo
	Variabili: n. Insieme di definizione: numeri interi
	Leggi n
	se (n > 0)
	    allora
		SCRIVI "Positivo"
	    altrimenti
		SCRIVI "Negativo o nullo"

	Nota: nel costrutto di selezione visto parlando di
	Bohm Jacopini, la clausola "altrimenti" e' obbligatoria!
	E se avessimo voluto un algoritmo che scrive qualcosa
	solo se il numero e' positivo?
	Leggi n
	se (n > 0)
	    allora
		SCRIVI "Positivo"
	    altrimenti
		non fare niente

	Per semplificare un po' la scrittura, clausole del tipo
	"altrimenti non fare niente" vengono normalmente omesse!

- Scrivi i primi 10 numeri naturali
	Variabili: i. Insieme di definizione: numeri naturali
	i = 0
	mentre (i < 10)
	    ripeti
		i = i + 1
		SCRIVI i

	Nota: questo algoritmo scrivi i numeri da 1 a 10...
	Come si modifica per scrivere i numeri da 0 a 9?
	Si poteva scrivere il ciclo in modo diverso?

- Algoritmo per convertire un numero da base 10 a base B
	Variabili: n, cifra. Insieme di definizione: numeri naturali
	LEGGI n
	mentre (n > 0)
	    ripeti
		cifra = n % B	(resto della divisione intera n / B)
		SCRIVI cifra a sinistra delle cifre scritte in precedenza
		n = n / B	(divisione intera)

	Nota: "scrivi a sinistra delle cifra precedenti"... Non troppo formale.

- Algoritmo per calcolare la media di n numeri reali
	Variabili: n, i. Insieme di definizione: numeri naturali
	           somma, numero, media. Insieme di definizione: numeri reali
	LEGGI n
	i = 0
	mentre (i < n)
	    ripeti
		LEGGI numero
		somma = somma + numero
		i = i + 1
	media = somma / n
	SCRIVI media

	Tutto ok? Uhm... Veramente no... L'algoritmo contiene un errore.
	Riuscite a vederlo? (suggerimento: qual'e' il valore iniziale della
	variabile somma?)

	Altro problema... E cosa succede se l'utente immette 0 come valore
	per la variabile n?

- Algoritmo: dati i tre lati di un triangolo, decidere se e' equilatero isoscele o scaleno
	Variabili: lato1, lato2, lato3. Insieme di definizione: numeri reali
	LEGGI lato1, lato2 e lato3
	se ((lato1 = lato2) and (lato1 = lato3))
	    allora
		SCRIVI "Equilatero!"
	    altrimenti
		se ((lato1 = lato2) o (lato2 = lato3) o (lato1 = lato3))
		    allora
			SCRIVI "Isoscele!"
		    altrimenti
			SCRIVI "Scaleno"

- Convertire l'algoritmo per la risoluzione di equazioni di secondo grado in un programma C
	Prima di tutto, proviamo una conversione "brutale" dell'algoritmo,
	parola per parola:
#include <stdio.h>
#include <math.h>

int main()
{
	double a;
	double b;
	double c;
	double delta;

	/* In teoria, LEGGI a,b,c... */
	/* In pratica, non abbiamo ancora visto funzioni di ingresso */
	a = 1;
	b = 5;
	c = 4;

	delta = b * b - 4 * a * c;

	if (delta < 0) {
		printf("Non esistono radici reali\n");

		return 0;
	}

	if (delta == 0) {
		double x;

		x = -b / (2 * a);
		printf("Due soluzioni reali e coincidenti: %f\n", x);
		return 0;
	} else {
		double x1;
		double x2;

		x1 = (-b - sqrt(delta)) / (2 * a);
		x2 = (-b + sqrt(delta)) / (2 * a);
		printf("Due soluzioni reali e distinte: %f %f\n", x1, x2);
	}

	return 0;
}

	Nota: questo programma va compilato aggiungendo l'opzione "-lm"
	alla linea di comando di gcc, perche' usa la funzione "sqrt()"
	(notare "#include <math.h>")

	Notare inoltre che questo programma non e' strutturato: ha un
	solo inizio ma piu' di una fine!!! (piu' di uno statement "return").
	Riscriviamolo come programma strutturato:
#include <stdio.h>
#include <math.h>

int main()
{
	double a;
	double b;
	double c;
	double delta;

	/* In teoria, LEGGI a,b,c... */
	/* In pratica, non abbiamo ancora visto funzioni di ingresso */
	a = 1;
	b = 5;
	c = 4;

	delta = b * b - 4 * a * c;

	if (delta < 0) {
		printf("Non esistono radici reali\n");
	} else {
		if (delta == 0) {
			double x;

			x = -b / (2 * a);
			printf("Due soluzioni reali e coincidenti: %f\n", x);
		} else {
			double x1;
			double x2;

			x1 = (-b - sqrt(delta)) / (2 * a);
			x2 = (-b + sqrt(delta)) / (2 * a);
			printf("Due soluzioni reali e distinte: %f %f\n", x1, x2);
		}
	}

	return 0;
}