Informatica e Telematica

Stefano Petrarca
Conservatorio S. Cecilia - Roma

Algoritmi

Ricordare che...

Esercizi (Algoritmi)

Descrivere le seguenti azioni in maniera algoritmica:

  1. La preparazione di un piatto di spaghetti
  2. La salita al terzo piano di uno stabile tramite ascensore
  3. Accensione e partenza di un veicolo a motore
  4. Dal letto al posto di lavoro (o a scuola)
  5. La risoluzione di un'equazione di primo grado
  6. La scrittura di uno score o un instrument per il sistema Csound
  7. La stesura manuale di un documento

Rappresentazione di algoritmi e strutture fondamentali

Ricordare che...

____________________________

___

Esercizi (Algoritmi)

- Provare a descrivere tramite il flow-chart i semplici algoritmi del 21/2

- Realizzare e descrivere con flow-chart gli algoritmi relativi ai seguenti problemi:

  1. Moltiplicazione con somme iterate (completo della trattazione del caso che almeno uno dei due operandi sia nullo)
  2. Elevazione a potenza tramite moltiplicazioni iterate (completo dei casi particolari)
  3. Scambio dei valori contenuti in due variabili x e y
  4. Media di due numeri
  5. Introduzione di 20 numeri dall'esterno (input) e calcolo, man mano che si introducono, del totale
  6. Introduzione di 15 numeri positivi e ricerca del più piccolo fra essi

Prima della fine di ognuno degli algoritmi inserire l'istruzione di visualizzazione del risultato.


Numerazione e aritmetica binaria. Logica booleana

Chiarimenti sugli esercizi (Algoritmi) della precedente lezione

- (Realizzare e descrivere con flow-chart gli algoritmi relativi ai seguenti problemi):

  1. Moltiplicazione con somme iterate (completo della trattazione del caso che almeno uno dei due operandi sia nullo)
  2. Elevazione a potenza tramite moltiplicazioni iterate (completo dei casi particolari)
  3. Scambio dei valori contenuti in due variabili x e y: ad esempio la variabile x contiene 5 e la y contiene 7; scambiare i loro valori significa che, alla fine del procedimento, x deve contenere 7 e y deve contenere 5. Occorre una variabile di appoggio che serve a memorizzare il contenuto di una delle 2 variabili prima di copiare in questa il valore dell'altra.
  4. Media di due numeri: bisogna introdurre dall'esterno 2 valori in altrettante variabili (ad es. x e y), sommare i loro valori e dividere il risultato per 2. Si può realizzare l'algoritmo anche usando una sola variabile.
  5. Introduzione di 20 numeri dall'esterno (input) e calcolo, man mano che si introducono, del totale: occorrono 3 variabili: una, che chiameremo acc, per il calcolo del totale progressivo, l'altra, che chiameremo x, per l'ingresso dei valori dall'esterno e, infine, un contatore, cont, che parte da 0 e arriva a 20; ad ogni iterazione introduciamo dall'esterno un valore in x, accumuliamo x in acc, incrementiamo cont e verifichiamo se quest'ultimo è arrivato a 20 nel qual caso terminiamo l'iterazione e visualizziamo il risultato.
  6. Introduzione di 15 numeri positivi e ricerca del più piccolo fra essi: per questo algoritmo occorrono 3 variabili: una, x, per l'ingresso dei valori, un contatore, cont, che assumerà valori da da 0 a 15, una variabile d'appoggio, min, per memorizzare il valore minimo che troviamo man mano che procede l'elaborazione; prima della partenza dell'iterazione si inizializza la variabile min a 0 (il più piccolo valore positivo); a ogni iterazione si introduce un valore positivo in x e se questo è minore di quello contenuto in min si effettua lo scambio fra min e x, in ogni caso si incrementa cont e se questo è arrivato a 15 termina l'iterazione dopodiché si visualizzerà il risultato.

 

Numeri binari

 

Esercizi (Rappresentazione dei dati) (provare a svolgerli anche se non trattati)

- Esercizi sui numeri binari ed esadecimali

  1. Qual'è il campo numerico rappresentabile con 12, 16 e 32 bit?
  2. Dati i seguenti numeri binari, trasformarli in numeri decimali: 10011100, 1111001111, 10100101, 10001001, 11110110
  3. Dati i seguenti numeri decimali, trasformarli in binario: 123, 511, 760, 381, 587, 1015
  4. Sommare le seguenti coppie di numeri binari:
    011111111010 + 010100001011 ; 111110100000 + 000110101000 ; 10101011110011010000 + 11001010111111111110
  5. Trasformare in decimale relativo i seguenti numeri negativi espressi in notazione complemento a 2:
    10001111, 11111111, 10000000, 11100001, 10100101, 10110110
  6. Date le seguenti coppie di numeri binari relativi (in notazione complemento a 2 a 8 bit), eseguire la loro somma commentando brevemente ogni risultato (che dovrà essere sempre a 8 bit) :
    01010010 + 00111011 ; 01110110 + 01101111 ; 10001111 + 11000101 ; 10100101 + 01011010
  7. Sommare le seguenti coppie di numeri espressi in notazione esadecimale e trasformare in binario il risultato: 7FA + 50B ; FA0 + 1A8 ; BABA + CAFFE
  8. Eseguire le seguenti operazioni floating-point:
    (11001010; 0011) + (01000110; 0101)
    (11000000; 0111) + (01011010; 0010)
    (01100011; 0011) * (01001111; 0100)
  9. Eseguire le seguenti operazioni logiche:
    10110011 AND 00001111; 00001001 OR 01100000; 11010111 XOR 00010000.

- Descrivere in forma algoritmica i metodi di passaggio da numeri in base 10 a base 2 e viceversa


Tabelle di traccia

Uso delle tabelle di traccia: prendiamo in esame il flow-chart relativo all'esercizio n.3 del 28/2 (scambio dei valori contenuti in due variabili)

La tabella di traccia si costruisce ponendo sulle colonne le variabili di cui si vuole studiare il comportamento e sulle righe i valori che assumono tali variabili ogni volta che avanza il processo. Ad esempio abbiamo supposto che alla partenza x contenga il valore 5 e y il valore 7; la tabella di traccia sarà

Variabile

a x y
- 5 7
5 5 7
5 7 7
5 7 5
_____
_____

Inizializzazione
dopo la 1. istruzione
dopo la 2. istruzione

dopo la 3. istruzione

Conviene sempre compilare una tabella di traccia per ogni algoritmo sviluppato (quando ciò è possibile) in modo da verificare la correttezza della soluzione trovata.


Pagina iniziale ________________ Matematica ________________ Programma ________________ Bibliografia