Sei sulla pagina 1di 3

Appunti redatti dal Prof.

Tombolini Gino
ALGORITMO DI CONVERSIONE DA DECIMALE AD ALTRO SISTEMA CON BASE DI NUMERAZIONE
FINOA 10
PROGRAM CONVERSIONE
VAR:
NUM:
INTEGER;
BASE:
INTEGER;
POT:
INTEGER;
NCIFRE:
INTEGER;
CONTA:
INTEGER;
C:
INTEGER;
R:
INTEGER;

//Numero DECIMALE da convertire


// BASE DI NUMERAZIONE A CUI CONVERTIRE
//POTENZA DELLA BASE USATA NELLA CONVERSIONE
//NUMERO DI CIFRE OTTENUTE NELLA CONVERSIONE
//CONTATORE USATO NEI CICLI ITERATIVI
//CONTIENE LE SINGOLE CIFRE CALCOLATE
//CONTIENE I RESTI USATI NELLA CONVERSIONE

BEGIN:
INPUT (NUM)
INPUT(BASE)
R  NUM
POT  1
NCIFRE  0
WHILE( POT <= NUM) DO
// CERCA LA POTENZA DELLA BASE SUBITO SUPERIORE A NUM
POT  POT * BASE
NCIFRE  NCIFRE + 1
ENDWHILE
POT  POT / BASE
// SCALA DI UNA UNITA LA POTENZA
// ----------------- CONVERSIONE DI BASE ---------------------------CONTA  0
WHILE (CONTA < NCIFRE) DO
C  DIVISIONE_INTERA( R / POT)
// ISOLO LA CIFRA (INTERA) PIU SIGNIFICATIVA
OUTPUT ( C )
R  RESTO_DELLA_DIVISIONE(R , POT) // R  R MOD POT
POT  POT / BASE
CONTA  CONTA + 1
ENDWHILE
END.

Questo algoritmo stato sviluppato in aula partendo da versioni molto pi elementari:


1. la prima versione con BASE fissata e uguale a 10 permette di isolare le singole cifre decimali di un numero
decimale, senza uso di cicli iterativi e con numero di dimensione prefissata;
2. seconda versione : viene introdotta la variabile POT (fissata in base alle cifre del numero inserito) e vengono
identificate delle operazioni iterabili (sempre identiche ma con valori variabili ad ogni ciclo)
3. terza versione: si inserisce in input il numero di cifre del numero e si ricalcola POT
4. quarta versione: si calcola POT e NCIFRE in base al numero inserito, trovando la potenza subito superiore al
numero e poi scalando una unit (esempio: se NUM=376, POT calcolato in base 10 vale 1000, ma il primo
divisore che si usa per isolare le centinaia - 3 nellesempio - 100).
5. quinta versione: invece di usare la base fissa 10, si usa la variabile BASE che viene presa in input
6. si fa il TRACING per verificare il corretto funzionamento
7. si provano anche basi diverse da 10 (la logica identica), esempio 2 (binario: valori di output 0 e 1) o 8 (ottale:
valori di output 0,1,2,3,4,5,6,7)
8. PROPOSTA: MODIFICARE LALGORITMO PER POTER UTILIZZARE LA BASE 16 (esadecimale:
valori di output 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Appunti redatti dal Prof. Tombolini Gino


Foto della lavagna
della lezione del 4
dicembre 2013

Flow-chart dello stesso


algoritmo senza avere a
disposizione la funzione
MOD per il calcolo del
resto della divisione, ed
utilizzante la funzione Fix
per troncare la parte
decimale della divisione.
Non usa NCIFRE

Stesso algoritmo in
Scratch

Appunti redatti dal Prof. Tombolini Gino