Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare...

20
Appunti di informatica Lezione 5 anno accademico 2015-2016 Mario Verdicchio

Transcript of Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare...

Page 1: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Appunti di informatica

Lezione 5anno accademico 2015-2016

Mario Verdicchio

Page 2: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

L’algoritmo di Euclide per l’MCD•  Dati due numeri A e B, per trovare il loro

MCD procedere nel seguente modo:1.  dividere il maggiore per il minore2.  se il resto è 0, il divisore è l’MCD3.  altrimenti fare un’altra divisione: il vecchio

divisore diventa il nuovo dividendo e il vecchio resto diventa il nuovo divisore, ripetere dal punto 2

Page 3: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Esempio con 150 e 70dividendo   divisore   quoziente   resto  

150   70   2   10  

70   10   7   0  

Da5  150  e  70  in  input,  alla  prima  divisione  non  o:eniamo  resto  pari  a  0,  quindi  ne  eseguiamo  un’altra  con  il  divisore  che  diventa  dividendo  e  resto  che  diventa  divisore.  Alla  seconda  divisione  il  resto  è  0,  quindi  il  divisore  è  il  MCD  dei  due  numeri  iniziali.  InfaF  il  MCD  di  150  e  70  è  10.  

Page 4: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Diagramma di flusso dell’algoritmo

Page 5: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Considerazioni•  L’algoritmo di Euclide e l’algoritmo per trovare l’MCD

di due numeri visto nella lezione precedente sono la dimostrazione del fatto che, se esiste un algoritmo per risolvere un problema, è possibile che ve ne siano altri

•  In realtà, ne esistono infiniti altri: basti pensare a modificare quello di Euclide aggiungendo istruzioni come r = r + n; r = r – n in un qualunque punto del diagramma (n può essere qualunque numero)

•  Ovviamente alcune alternative presentano differenze significative (come quelle tra i due algoritmi proposti per l’MCD), mentre altre no (l’aggiunta di istruzioni inutili non modifica la soluzione in maniera sostanziale)

Page 6: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Un dubbio•  Abbiamo visto che per 150 e 70 l’algoritmo di

Euclide funziona•  Chi ci garantisce che l’algoritmo funzioni per

qualunque coppia di numeri in input?•  Definizione: un algoritmo si dice corretto

quando risolve il problema per il quale è stato concepito

•  Riformuliamo la domanda: chi ci garantisce che l’algoritmo di Euclide sia corretto?

Page 7: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Dimostrazione•  Innanzitutto una definizione•  Dimostrazione: sequenza finita di

affermazioni tale che ogni affermazione è un’ipotesi presa per vera oppure deriva dalle affermazioni precedenti per mezzo di ragionamenti logicamente ineccepibili; l’ultima affermazione della sequenza si chiama tesi

Page 8: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Dimostrazione di correttezza•  Dimostriamo che l’algoritmo di Euclide è corretto•  Nel caso in cui il resto della divisione tra A e B sia

0, è ovvio che il divisore B sia l’MCD, quindi in questo caso la correttezza è subito dimostrata

•  Nel caso in cui il resto non sia 0, allora si passa a una nuova divisione: quella tra B e R

•  Questa nuova divisione aiuta a risolvere il problema di trovare l’MCD tra A e B perché i divisori di A e B e i divisori di B e R sono in realtà lo stesso insieme

Page 9: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Dimostrazione di correttezza•  Per dimostrare che due insiemi sono uguali

dobbiamo:1.  dimostrare che un qualsiasi elemento del primo

insieme appartiene al secondo insieme (cioè il primo insieme è un sottoinsieme del secondo)

2.  dimostrare che un qualsiasi elemento del secondo insieme appartiene al primo insieme (cioè il secondo insieme è un sottoinsieme del primo)

3.  l’unica possibilità per due insiemi che sono uno un sottoinsieme dell’altro è di essere coincidenti

Page 10: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

I divisori di A e B sono divisori di B e R

•  A:B = Q con resto di R•  ossia A = BQ + R, o anche R = A – BQ•  sia k un divisore di A e di B, ovvero esistono

un m e un n tale che mk = A e nk = B•  questo vuol dire che R = mk – nkQ•  raccogliendo k, abbiamo che R = k(m – nQ)•  k, quindi, è divisore di B per ipotesi e, per

quanto mostrato, è divisore anche di R•  perciò k è divisore di B e di R

Page 11: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

I divisori di B e R sono divisori di A e B

•  Sappiamo già che A = BQ + R•  sia h un divisore di B e di R, ovvero esistono

un s e un t tale che sh = B e th = R•  questo vuol dire che A = shQ + th•  raccogliendo h, abbiamo che A = h(sQ + t)•  h, quindi, è divisore di B per ipotesi e, per

quanto mostrato, è divisore anche di A•  perciò k è divisore di A e di B

Page 12: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Dimostrazione di correttezza•  Il fatto che i due insiemi coincidano vuol dire

che la soluzione del problema MCD per A e B è la stessa del problema MCD per B e R

•  Applicando lo stesso ragionamento, sappiamo che la soluzione non cambia nemmeno per le divisione successive

•  Non appena troviamo che il resto di una divisione è 0, sappiamo che il divisore è l’MCD della coppia dividendo-divisore

•  Per quanto detto prima, questo sarà l’MCD della coppia iniziale di numeri A e B

Page 13: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Avvertenze•  Si è riuscito a dimostrare la correttezza

dell’algoritmo di Euclide grazie alle proprietà matematiche del problema affrontato

•  Non è scontato che si riesca a dimostrare sempre così facilmente la correttezza di un algoritmo

•  Inoltre, anche se si ha un algoritmo di correttezza dimostrata, trasformandolo in programma (cioè riscrivendolo in un linguaggio di programmazione), il programmatore umano potrebbe inserire numerosi errori

Page 14: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Architettura dei calcolatori

Page 15: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

La maggior parte degli strumenti informatici oggi in uso si basano sull’architettura di Von Neumann

E’ un modello astratto che include tutti i componenti funzionali (ossia distinti dagli altri per la funzione che svolgono) di un computer

Page 16: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

CPU  

CPU:  Central  Processing  Unit,  processore  

Read  Only  Memory  

ROM  

RAM  

RAM:  Random  Access    Memory,  Memoria  Centrale  

memoria  ele)ronica,  vola.le,  veloce,  costosa  

unità  controllo    ALU  

HD:  Hard  Disk,  Hard  Drive,  disco  rigido,  disco  fisso  

memoria  magne.ca,    non  vola.le,  lenta,  economica*    

*adesso  ci  sono  anche  i  dischi  SSD  (solid  state  disk):  memoria  ele)ronica,  non  vola.le,  più  veloce  dell’HD  ma  meno  della  RAM,  ancora  molto  costosa  

output   input   periferiche  alcune,  come  il  touch-­‐screen  sono  sia  di  input  sia  di  output  

bus  

Page 17: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

L’architettura del calcolatore•  Per descrivere le diverse parti di un

calcolatore e le loro connessioni, si fa tuttora riferimento all’architettura di Von Neumann, proposta per la prima volta in un rapporto tecnico del 1945 (John von Neumann, Budapest 1903 – Wahington D.C. 1957)

•  Su tale architettura si basa la maggior parte dei calcolatori odierni

Page 18: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Architettura di von Neumann•  I componenti dell’architettura sono:

–  la CPU (Central Processing Unit), che esegue le istruzioni dei programmi

–  la RAM (Random Access Memory), la memoria principale di tipo elettronico dove sono scritte le istruzioni da eseguire e i dati da elaborare mentre il calcolatore è acceso

–  il disco fisso, la memoria secondaria di tipo magnetico dove sono conservate le istruzioni e i dati anche quando il calcolatore è spento

–  le periferiche, componenti addizionali che permettono all’utente di trasferire informazione verso il calcolatore (input) o di ottenere informazione dal calcolatore (output)

–  il bus, il canale di comunicazione che connette tutti i componenti di cui sopra

Page 19: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

Il funzionamento della CPU•  La CPU funziona a ciclo continuo,

dall’accensione del calcolatore fino allo spegnimento, eseguendo le seguenti azioni a ripetizione:–  fetch, prelevamento dell’istruzione da

eseguire– decode, decodifica del codice dell’istruzione

prelevata– execute, esecuzione dell’istruzione

decodificata

Page 20: Appunti di informatica - cs.unibg.it lezione 5 2015.pdf · • Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. ... significative (come quelle tra i

CPU ↔ RAM•  La CPU preleva le istruzioni da eseguire sempre dalla

RAM•  Per questo motivo, ogni programma in esecuzione

deve essere presente nella RAM•  Le istruzioni (e anche i dati su cui eseguire le

istruzioni) sono trasferire dalla RAM verso dispositivi di memoria presenti nella CPU, chiamati registri

•  L’unità di controllo della CPU supervisiona il trasferimento e la decodifica dell’istruzione, e ordina alla ALU (unità aritmetico logica) l’operazione da eseguire

•  I risultati sono salvati sui registri, e da lì trasferiti alla RAM