APPLEZ 1.0 - DIARIO DI BORDO

Transcript

APPLEZ 1.0 - DIARIO DI BORDO
CLASSE: 3-A
MATERIA: INFORMATICA
APPLEZ 1.0 - DIARIO DI BORDO
(al 5/11/2014)
BOZZA
( in revisione continua )
LEZIONE DEL 19/09 (DALLE 09.30 ALLE 10.30): Perché fare un corso di informatica che dura tre anni?
Resterà deluso chi si aspetta di smanettare. La domanda di rigore: Perché si studia? Alcuni alunni
intervengono fornendo risposte piuttosto diverse. Interno VS. esterno: cosa è più importante?
Rappresentazione insiemistica: U(Universo del discorso), I (Individuo) E (Esterno).
LEZIONE DEL 22/09 (DALLE 08.30 ALLE 10.30): Appello. Si chiude l’intervista.
Sul metodo: Perché manca la volontà? A che serve fare un qualsiasi corso se manca la voglia? E’ tempo
perso: Meglio dedicarsi a qualche attività che potrà riempire il cuore o le tasche forse non lo spirito. Molto
spesso si passano ore davanti al computer lunghe veglie notturne a far che? A studiare? Forse i genitori
pensano che sia così ma NOI SAPPIAMO CHE COSI’ NON E’. “La vostra stanza è un’area off-limits”.
Come e quanto si può perdere tempo al computer. Se siete ignoranti rischiate di non essere liberi. Rischiate
di essere asserviti a qualche forma di potere. “Alzate il livello di guardia quando andate nella piazza virtuale”
Importanza dell’attività di laboratorio. La materia che avete scelto è l’unica a permettervi di avere un intero
laboratorio a casa vostra.
La parola d’ordine dello studente di informatica è: “Proff FUNZIONA!” e invece non funziona mai.
NON C’E’ SALVEZZA AL DI FUORI DI NOI STESSI. Non pensate di affidare a delle macchine la
soluzione dei vostri “reali” problemi. Le macchine NON SONO LIBERE.
[Come e perché si studia: si dovrebbe studiare per se stessi; gli orizzonti professionali e tecnici della
disciplina sempre più orientati alla collaborazione in Rete; il rapporto tra l’uomo e la macchina: l’uomo
decide la macchina esegue; l’uomo pensa la macchina esegue la codifica del pensiero; ]
DOMANDA (DI UN ALUNNO [Loddo]): QUANTI di TERZA ARRIVANO A DIPLOMARSI?
L’ingegnere deve progettare non può improvvisare; anche l’informatico lo fa; l’attività di laboratorio non si
improvvisa richiede applicazione a casa; gli appunti devono essere rivisti in continuazione.
Ripetere un anno non è un disonore anzi può essere un bene ma di certo è uno spreco: di intelligenza, di
soldi, di tasse, di tempo. Il mercato del lavoro oggi è molto difficile molto di più di qianto non lo sia stato per
i vostri genitori.
Alle porte dell’Occidente stanno premendo altre civiltà, altre culture, altre genti… Indiani (non gli indiani
d’America ma indiani dell’India), Arabi, Cinesi… il grado di cultura di queste persone soprattutto in certi
settori si accresce di giorno in giorno… la tendenza è sempre più quella di aprire le frontiere del lavoro
prelevando o risorse [umane] dall’estero oppure usando all’estero lì dove sono le risorse [umane] è possibile
con gli strumenti che si hanno oggi creare delle parterniship con aziende all’estero stando seduti, lavorando
al computer, esclusivamente attraverso i media è possibile creare collaborazioni con programmatori indiani,
cinesi, è possibile farlo, ci sono aziende che lo fanno, e che stanno prosperando.
Le vostre competenze la vostra sete, il vostro desiderio di conoscenza di competenza dovrebbe misurarsi con
queste sfide, è inutile nasconderlo… se non volete accettare la sfida siete finiti… potrete rivolgervi al
sindacato andrete ad occupare le liste di disoccupazione, sarete, come dire, vittime del ricatto politico perché
anche di questo si parla da noi, non del merito ma del ricatto politico se mi dai un voto se…
Siamo allo schifo e lo schifo ci sta salendo sino alla bocca.
Ragazzi siate uomini e contate sulle vostre forze avete le capacità per rifiutare i ricatti politici ma lo dovete
fare sin da subito
Io non ho chiesto niente a nessuno e vorrei che fosse la stessa cosa per voi (…) UOMINI, UOMINI riflettete
su questo. C’è in generale tutto quello che vo potrà servire non solo in informatica.
DECALOGO
1) Lo studio dell’informatica prescinde in larga misura dall’uso del computer che dovrà essere visto
come un mezzo di approfondimento per ricerche in Rete
2) L’attività di programmazione a parte la fase di testing non richiede l’uso del computer al punto che
paradossalmente potremmo dire che:
3) Si programma senza computer (!) [il computer non è un DEUS EX MACHINA, la programmazione
che è fondamentalmente attività di progettazione deve essere fatta con il computer spento) la
programmazione solo in parte è ripetitiva è una disciplina che richiede ragionamento]
Preferiamo sempre il sentiero alla giungla
L’algoritmo prescinde completamente dal linguaggio di programmazione mentre dipende
dall’esecutore (eventualmente umano)
4) Strumenti fondamentali dell’informatico: carta+gomma+matita [+ righello/normografo]
Carta= quaderno bella + quaderno brutta
Gomma = per l’attività critica, la revisione
Matita = perché in genere gli algoritmi e i codici sono prodotti rivedibili e manutenibili cioè
modificabili
Importanza degli appunti e della loro rielaborazione: il corso di informatica sarà “liscio” con
passaggi facili, graduali e regolari; senza rielaborazione la comprensione degli argomenti sarà
superficiale e temporanea e si sarà costretti a rincorrere
Il profitto che è cosa diversa dall’intelligenza perché dipende molto dallo studio sarà misurato su
scritto orale e pratico.
Nessuno di noi è un genio siamo solo delle persone che si sforzano di far bene: se ci riconosciamo in
questo quadretto avrete più di sei in questa materia altrimenti nel ritratto non vedrete nulla.
Suggerimento: quaderno ad anelli anche per mettere nelle buste i programmi che scriverete e le
relazioni che svolgerete : in questo raccoglitore potrete mettere tutto.
LEZIONE DEL 24/09 (DALLE 10.30 ALLE 12.30): (1H) Definizione di RAM: numerosi gli interventi e le
approssimazioni.
(2H) Storia del calcolo automatico: Pascal, Leibniz, Babbage, Ada, Turing
LEZIONE DEL 29/10 (DALLE 10.30 ALLE 12.30): Storia dell’informatica: dalle prime macchine
calcolatrici alla macchina analitica di Charles Babbage e ai primi programmi della storia del calcolo scritti da
Ada contessa di Lovelace; Turing padre dell’intelligenza artificiale e primo decrittatore in senso moderno.
LEZIONE DEL 01/10 (DALLE 11.30 ALLE 12.30): Alcuni allievi vengono chiamati ad esporre
sinteticamente i principali contenuti della lezione precedente alla luce dei risultati delle ricerche in Rete. La
storia del calcolo è trattata da due di essi soltanto e limitatamente alle conquiste dall’ottocento in poi.
Informatica: dalla parola agli automi al golem a Frankestein sino ad HAL9000 tra storia letteratura e
leggenda.
LEZIONE DEL 02/10
[LABORATORIO] Completamento della scheda tecnica (1h); Poligoni regolari di N lati: calcolo del
perimetro e determinazione approssimata del numero trascendente PI GRECO. Uso del foglio di calcolo e
ricerca sulla Rete.
[COMPITI ASSEGNATI]
Miglioramento della presentazione dei risultati. Ricerche ed approfondimenti sulla Rete.
LEZIONE DEL 06/10
[ARGOMENI DELLA LEZIONE]
Problemi, algoritmi e programmi: presentazione e discussione di alcuni concetti chiave del corso di
informatica. Il problema come punto di partenza e punto di arrivo, come domanda che merita una risposta
che coinvolge integralmente le capacità del risolutore (obbligo, impegno, responsabilità, creatività,
conoscenza). L’algoritmo come rappresentazione grafico-concettuale della strategia risolutiva di un
problema. Il programma come traduzione "meccanica" (nel senso della necessità e dell’adeguata
corrispondenza) di un algoritmo (mediante le regole , il lessico ed i meccanismi di un linguaggio di
programmazione) destinata ad un esecutore automatico.
[COMPITI ASSEGNATI]
Ricerche ed approfondimenti sulla Rete dei concetti e delle parole chiave evidenziati nel corso della lezione.
[RIFLESSIONI]
Un ALGORITMO è la descrizione “precisa” (sufficientemente dettagliata) delle AZIONI (PASSI) di un
PROCESSO RISOLUTIVO (la strategia, la risoluzione del PROBLEMA) destinata ad un ESECUTORE
dotato di certe CAPACITÀ.
Un ALGORITMO è una descrizione linguistica della RISOLUZIONE di un PROBLEMA fatta attraverso un
LINGUAGGIO : tale descrizione deve essere comprensibile da parte di un ESECUTORE.
Il LINGUAGGIO usato per questa descrizione è di natura qualsiasi: può essere un LINGUAGGIO
NATURALE (quello parlato da una comunità umana, ad esempio l’ITALIANO, il CINESE, l’ARABO), può
essere un linguaggio comprensibile da una MACCHINA (un LINGUAGGIO DI PROGRAMMAZIONE)
oppure un qualsiasi altro sistema di comunicazione tra uomini, tra macchine, tra uomini e macchine. Ad
esempio un ALGORITMO può essere descritto attraverso un DIAGRAMMA DI FLUSSO (Strutturato o
NON) che evidentemente non è né un linguaggio naturale né un linguaggio di programmazione. Un
DIAGRAMMA di FLUSSO esprime la risoluzione di un PROBLEMA attraverso una modalità GRAFICOCONCETTUALE servendosi di particolari di “forme grafiche” che servono a veicolare
IDEE/CONCETTI/ATTIVITÀ/FLUSSI/CAMBIAMENTI.
Il DIAGRAMMA di FLUSSO codifica una strategia risolutiva in modo indipendente dal LINGUAGGIO
DI PROGRAMMAZIONE; codifica in modo indipendente tutti gli aspetti legati al CALCOLO (e più in
generale alla ELABORAZIONE delle INFORMAZIONI), per questa sua indipendenza da uno specifico
linguaggio di programmazione si considera l’algoritmo dato attraverso un DIAGRAMMA di FLUSSO come
un METALINGUAGGIO ovvero un linguaggio che serve a descriverne un altro. Una importantissima
conseguenza di ciò è data dal fatto che:
Un diagramma di flusso può essere sempre tradotto in un qualsiasi CODICE di PROGRAMMA.
Il fatto che i diagrammi di flusso servano a fornire la risoluzione generale di un problema servano cioè a
descrivere ALGORITMI e NON PROGRAMMI è stato più volte sottolineato evidenziando la differenza tra i
simboli che compaiono nei BLOCCHI di un FLOWCHART e quelli che compaiono nelle ISTRUZIONI di
un codice di programma:
ESEMPIO: L’operatore relazione di confronto è rappresentato dal simbolo ‘=’ lo stesso che può comparire
in un BLOCCO DI DECISIONE (“ROMBO/LOSANGA”); mentre l’operatore di confronto del
LINGUAGGIO C è rappresentato come “= =”: l’operazione è la stessa ma una è quella più ASTRATTA
possibile (la relazione matematica di UGUAGLIANZA), l’altra è una operazione CONCRETA una
operazione, cioè che richiede una MACCHINA FISICA (leggi CALCOLATORE /COMPUTER /
ELABORATORE).
REGOLA: un DIAGRAMMA di FLUSSO NON DEVE mai contenere i SIMBOLI OPERATORI propri di
uno specifico LINGUAGGIO di PROGRAMMAZIONE.
Ogni violazione di questa regola implica sempre una perdita di generalità e la generalità è una delle
caratteristiche degli algoritmi.
LEZIONE DEL 07/10
[ARGOMENI DELLA LEZIONE]
Dalla "macchina nuda" sino al SW applicativo attraverso la catena di livelli di astrazione crescente delle
risorse del sistema. Gli ambienti di sviluppo integrato del software (IDE): funzionalità di base.
Dal problema al programma: la risoluzione algoritmica del problema (Flow Chart), la generazione del
Codice Sorgente (Text-Editor), la traduzione del codice (Interprete o Compilatore), l’esecuzione del file
binario, la verifica dei risultati ottenuti.
[RIFLESSIONI]
La “macchina nuda” (“bare machine”) è il computer fisicamente dato, il computer come MACCHINA
CONCRETA, come solo HARDWARE (HW): metallo, plastica, LED, silicio, rame, transistor, porte
logiche, registri di memoria, piste, scheda madre, processori, banche di memoria centrale, apparati di
dissipazione termica, unità di memorie esterne, … Questa macchina, per quanto NATIVAMENTE
PROGRAMMABILE sarebbe tuttavia praticamente inutilizzabile da parte di un UTENTE FINALE perché la
sua effettiva PROGRAMMAZIONE comporterebbe problemi e difficoltà PRATICAMENTE
INSORMONTABILI: ricordiamo che
Le macchine (tutte le macchine) nascono per risolvere problemi, non per crearne.
La “macchina nuda” dunque rappresenta la base, il sostrato fisico al di sopra del quale viene realizzata una
macchina realmente orientata ai BISOGNI (come pure ai PIACERI) dell’UOMO, una macchina (computer)
cioè in grado di essere usata con “relativa” facilità, in modo “sicuro” ed anche efficace. Per conseguire questi
obiettivi (e si noti che ci si lavora di continuo nel tentativo di migliorarli costantemente) è necessario dotare
la macchina della LOGICA necessaria a favorire l’INTERAZIONE con l’UOMO (INTERAZIONE UOMO-
MACCHINA): questa logica prende il nome di SOFTWARE (SW) che si combina con l’HARDWARE per
dare origine a quella macchina molto speciale che chiamiamo ELABORATORE o CALCOLATORE o
COMPUTER.
Come tutti gli abiti, anche il SW è fatto di STRATI (LAYERS) sovrapposti, cioè non si presenta come una
struttura monolitica ma come un sistema di parti organizzate secondo una precisa GERARCHIA in modo che
ciascuna di esse per poter svolgere la propria FUNZIONE abbia bisogno di appoggiarsi sulla parte
sottostante immediatamente adiacente. Un esempio “superficiale” di ciò è costituito dalla struttura di un
edificio a più piani: ogni piano richiede la presenza del piano sottostante (questo in un certo senso vale anche
per il piano terra che a ben guardare richiede la presenza di un “livello base” (un vero e proprio “ground
zero”) senza il quale non potrebbe esistere: questo livello base nel caso dell’elaboratore è costituito dalla
“macchina nuda”.
Tecnicamente si dice che ogni strato implementa una diversa MACCHINA VIRTUALE (“virtual machine”)
cioè una differente MACCHINA ASTRATTA le cui CAPACITÀ sono definite nei termini delle capacità
della MACCHINA VIRTUALE sottostante.
Un modello grafico del sistema di macchine virtuali (o alternativamente degli strati funzionali di un
elaboratore) fa riferimento alla struttura interna di una pianta molto “profumata”: la cipolla: provatene a
tagliare una a metà e capirete perché. Per questo motivo si parla di “struttura/organizzazione/architettura a
buccia di cipolla” ( “onion-skin architecture”)
LEZIONE DEL 08/10
[ARGOMENI DELLA LEZIONE]
Diagrammi A Blocchi (DAB/DABS): generalità;blocchi di Inizio/Fine; blocchi di Input/Output; blocco di
azione; freccia di connessione interblocco (trasferimento del controllo).
[COMPITI ASSEGNATI]
Ricerca e approfondimenti sulla Rete
[RIFLESSIONI]
I diagrammi di flusso che useremo per descrivere algoritmi (e gli algoritmi stessi, quando non vi sia
possibilità di confusione) li chiameremo con gli acronimi DAB o DABS che significano rispettivamente:
Diagrammi A Blocchi e Diagrammi A Blocchi Strutturati. DAB è sinonimo di Diagramma di Flusso
(Flowchart). La parola “Strutturato” in DABS serve ad aggiungere delle ulteriori regole di “struttura” ai
DAB semplici: l’assenza di queste regole ha dato origine ad un tipo di programmazione che è nota come
“spaghetti programming”: alla lettera “programmazione a spaghetti”.
LEZIONE DEL 09/10
[LABORATORIO] Esercitazione alle macchine in linguaggio C sui poligoni regolari di N lati:
determinazione del perimetro come misura approssimata della costante numerica PI GRECO.
LEZIONE DEL 13/10
[ARGOMENI DELLA LEZIONE]
Operazioni di Input/Output
Valorizzazione di variabili di programma mediante operazioni di lettura (INPUT) di valori esterni.
Produzione di messaggi (stringhe di testo) costanti e valori di variabili diretti all’utente mediante operazioni
di scrittura (OUTPUT).
Operazioni di I/O in C: puts() vs. printf().
Le stringhe in C: generalità.
LEZIONE DEL 14/10
[ARGOMENI DELLA LEZIONE]
DAB e DABS: il blocco condizionale. Algoritmi strettamente sequenziali vs. algoritmi con diramazioni e
flussi alternativi del controllo. Il blocco condizionale e la logica booleana. Le espressioni condizionali come
espressioni di tipo speciale. Definizione di espressione. Definizione di espressione logica. Regola del
trasferimento del flusso del controllo per i blocchi condizionali. Rappresentazione grafica del flusso del
controllo in DAB con condizioni. Presenza di percorsi alternativi sullo stesso DAB per esecuzioni con input
diversi. Numeri e numeri di macchina: i limiti della rappresentazione dell’informazione nel calcolatore.
[COMPITI ASSEGNATI]
Prendere in considerazione il test di parità/disparità per numeri interi, discutere il problema, definire un
DAB/DABS e provarne il comportamento con valori di input diversi tracciando con colori diversi tutti i
possibili percorsi del flusso del controllo.
LEZIONE DEL 15/10
[ARGOMENI DELLA LEZIONE]
Riepilogo della lezione precedente.
Presentazione del problema: Test di Parità/Disparità.
[COMPITI ASSEGNATI]
Produzione del flowchart relativo alla risoluzione del problema: "Test di Parità/Disparità"
LEZIONE DEL 16/10
[LABORATORIO]
Esercitazione alle macchine: programmazione in C.
Traduzione del DABS relativo all’algoritmo di PARITA’/DISPARITA’ attraverso l’istruzione di selezione
if-else.
Osservazioni sulle convenzioni di codifica in C e sulla documentazione del codice : caratteri di spaziatura,
commenti (/**/), indentazione (allineamento rientrato del testo).
Osservazioni e miglioramento delle interfacce utente usate per l’immissione di valori e la produzione di
messaggi.
Il file di intestazione <limits.h> ed i limiti (inferiore e superiore) di rappresentazione dei numeri interi di
macchina: le costanti INTMIN e INTMAX.
Uso delle costanti INTMIN e INTMAX per migliorare l’interfaccia del programma.
[COMPITI ASSEGNATI]
1) Riformulare l’algoritmo di PARITA’/DISPARITA’ ricorrendo all’operazione Modulo (resto della
divisione intera) e al corrispondente operatore del C;
2) Riformulare lo stesso algoritmo prevedendo un intervallo di valori di ammissibilità cioè un intervallo di
interi del tipo [minimo, massimo] in cui "minimo" e "massimo" sono 2 numeri scelti e prefissati dal
risolutore del problema che serviranno a stabilire l’insieme dei valori da usare per il Test di
PARITA’/DISPARITA’: l’algoritmo questa volta dovrà decidere come prima cosa se il valore immesso è un
valore idoneo oppure no: nel primo caso si effettuerà il test di PARITA’ nel secondo no e si produrrà un
adeguato messaggio di output.
LEZIONE DEL 21/10
[ARGOMENI DELLA LEZIONE]
Dai DAB ai DABS: caratteristiche generali dei DAB Strutturati. Unicità dei punti di ingresso e di uscita.
Accoppiamento sequenziale di due DABS; DABS per la Selezione a 1 via; DABS per la Selezione a 2 vie.
Costrutti di programmazione C per la traduzione dei DABS di selezione: "if" e "if-else". Esempi di
traduzione: da DABS a C. Blocco di Azione condizionato: elementare oppure composto
(Macrozazione).Traduzione del Blocco di Azione condizionato. Trasformazione di un DABS di "Selezione a
1 via" non standard. Un esempio d’uso della macroazione: lo SWAP tra variabili. DABS per lo swap con
variabile ausiliaria. Lo swap come macroazione condizionata nel problema dell’inversione degli estremi di
un intervallo numerico. Discussione completa del DABS. Traduzione del DABS in codice C.
Discussione del problema dell’appartenenza di un numero N arbitrario ad un intervallo numerico. Dati di
input campione e risultati correlati. Formulazione del DABS di massima. Traduzione "parziale" del DABS.
[COMPITI ASSEGNATI]
PROBLEMA: Dato un intervallo di numeri interi di estremi P1 e P2, dato un numero intero arbitrario N,
decidere se N è interno o esterno all’intervallo assegnato.
- Discussione della traccia
- Individuazione delle variabili
- Scelta dei campioni di dati di input e determinazione degli output associati
- Realizzazione di un Algoritmo risolvente attraverso la stesura di un DABS
- Traduzione del DABS in codice sorgente C;
- Compilazione
- Prove di Esecuzione
- Documentazione
LEZIONE DEL 22/10
[ARGOMENI DELLA LEZIONE]
Verifica dello stato delle consegne.
Il concetto di variabile di programma: nome+valore+tipo. Variabili Primitive e NON Primitive.
Variabili di tipo primitivo in C. Le operazioni sulle variabili (Lettura/Scrittura) e le loro proprietà.
Le operazioni di scrittura: interna (assegnamento) esterna (attraverso un dispositivo di input, ad esempio la
tastiera). L’operazione di assegnamento interno ed il suo significato.
[COMPITI ASSEGNATI]
Fare da zero oppure completare oppure integrare oppure perfezionare la risoluzione dei problemi già
assegnati. Sistemare gli appunti delle lezioni.
LEZIONE DEL 23/10
[LABORATORIO]
Esercitazione alle macchine in C: implementazione, verifica e miglioramento del programma sul "Test di
Appartenenza".
I SOLUZIONE (proposta):
II SOLUZIONE (con macroazioe di SWAP):
Introduzione di messaggi di testo più precisi nelle stringhe di output. Introduzione di commenti nel codice
sorgente. Incolonnamento differenziato del codice sorgente (la cosiddetta “indentazione del testo”): questa
operazione si rivela di estrema importanza per le attività di comprensione “ a posteriori” del programma: è
uno dei requisiti fondamentali della scrittura di un codice di programma quallo di poterlo scrivere in modo
strutturato cioè in modo da dare al codice di programma una “struttura” una “forma” che permetta di
comprendere le dipendenze tra le istruzioni e più in generale consenta di seguire agevolmente il flusso del
controllo. Impensabile scrivere un programma utilizzando un linguaggio di alto livello come se si trattasse di
un linguaggio di basso livello (ad esempio Assembly).
Successivamente si chiede di poter dotare il programma di una sorta di "disclaimer" che ne condizioni l’uso
in base ad una decisione dell’utente finale.
[COMPITI ASSEGNATI]
Progettare e programmare la risoluzione dei seguenti problemi:
1) min(/max) tra due variabili;
2) max(/min) fra tre variabili;
3) Test di Appartenenza di un punto di coordinate (X,Y) ad un quadrato di cui è noto il vertice alto sinistro e
la misura del lato
4) Acquisizione mediante input dei valori di età dei membri della famiglia e generazione di una tabella
costituita da coppie del tipo < n° membro, età> da produrre su righe distinte in una cornice di caratteri scelti
a piacere.
LEZIONE DEL 27/10
Elezioni del Consiglio di Classe, del Consiglio di Istituto e della Consulta provinciale.
LEZIONE DEL 28/10
[LABORATORIO] Esercitazione in C sui problemi assegnati. In particolare, con riferimento al problema n°
3 si discute la NON RISOLVIBILITA’ del Test di appartenenza di un punto ad un rettangolo - per
l’insufficienza dei dati noti. Nel caso di rettangoli il problema quindi viene riformulato fornendo
alternativamente: a) Un vertice e le misure dei lati che originano nel vertice stessoi; b) Le coordinate di due
vertici opposti (ovvero le coordinate dei vertici di una diagonale).
Vengono presentate le funzionalità di base di un semplice editor di flowchart.
[COMPITI ASSEGNATI]
Affrontare e/o completare e/o migliorare l’esecuzione delle consegne non ancora sviluppate. Affrontare ex
novo il problema del "Test di appartenenza di un punto ad un rettangolo".
Utilizzando un editor di flowchart definire il DABS relativo al problema n°2 (min/max fra 3 (tre) numeri)
LEZIONE DEL 29/10
Numeri interi come sequenze di cifre; Numeri interi in base dieci: nozione di base, cifra, significatività
(esponente della potenza intera in base B); cifra più significativa (MSD), cifra meno significativa (LSD);
numero e valore del numero; valore numerico come somma di prodotti; metodo divisivo per la
determinazione delle cifre di un numero in ordine di significatività crescente (da destra verso sinistra, nella
serie delle cifre del numero); la divisione ela divisone intera; i termini della divisione intera: dividendo (D),
divisore (d), quoziente (q), resto(r); la "formula" della divisione intera: D = d x q + r; la determinazione di
ciascuna cifra col metodo divisivo; una nuova operazione aritmetica: il modulo tra due numeri interi X ed Y
(X MODULO Y); l’operazione modulo nei flowchart; l’operazione modulo in C: l’"operatore percentuale"
(%); impostazioni di progetto preliminari per il problema della "Determinazione delle cifre di un numero
intero di 4 cifre".
[COMPITI ASSEGNATI]
Discutere, progettare (formulare l’algoritmo con un DABS), programmare in C e validare con dati di prova,
una soluzione per il problema della separazione delle cifre di un numero di 4 cifre.
LEZIONE DEL 30/10
Riepilogo dei principali contenuti della lezione precedente. Generalizzazione della formula per il calcolo del
valore di un numero in base B: l’operatore "sommatoria" e le cifre di ordine ’i’ (in simboli: "c con i " dove ’i’
è pedice generico della cifra). Proposta di risoluzione algoritmica mediante DABS per il problema assegnato
nella lezione precedente. Il DABS proposto integra un test di ammissibilità per il numero a 4 cifre (test di
appartenenza all’intervallo [1000,9999]; il DABS usa una "Legenda" per definire il simbolo ’A’ usato nelle
due ellissi (quella di "Inizio" e quella di "Fine"), un commento (elemento grafico: parentesi quadra chiusa
con arco di connessione al blocco) per descrivere la condizione di appartenenza, ed un punto di prosecuzione
(elemento grafico: circoletto). Il test di appartenenza è espresso attraverso due costrutti di selezione a due vie
nidificati; le variabili utilizzate sono tutte di tipo intero: 4 variabili per le cifre, 1 per il numero, 1, per il
dividendo, 1 per il quoziente ed 1 per il resto. Per ogni cifra si richiede il calcolo del resto; per ogni cifra,
esclusa la cifra LSD si richiede la determinazione del nuovo dividendo. Un unico blocco di output per la
visualizzazione delle cifre in ordine inverso.
[COMPITI ASSEGNATI]
Traduzione del DABS proposto in linguaggio C; scelta di un campione significativo di dati di Input e
validazione del codice di programma; documentazione del codice di programma. Proposta di una soluzione
alternativa nella quale si utilizza una sola variabile per tutte e quattro le cifre, e si produce in Output il suo
valore prima che esso cambi (1 variabile + 4 Output al posto di 4 variabili + 1 Ouput): anche per questa
soluzione si chiede DABS + Programma.