Title: Parte 2
1Parte 2
- Laboratorio di Informatica
- Dott.ssa Elisa Tiezzi
- Dott.ssa Elisa Mori
2Definizione intuitiva di algoritmo
- Elenco finito di istruzioni che specificano una
serie di operazioni, eseguendo le quali e
possibile risolvere ogni istanza di un problema
di un dato tipo
3Proprietà degli algoritmi
- FINITI
- NON AMBIGUI
- GENERALI
4Soluzione di ax2bxc0
1. inizio dellalgoritmo 2. acquisire
dallesterno i valori dei coefficienti a, b e
c 3. calcolare il valore ??b2-4ac 4. se ???,
allora non esistono radici reali eseguire 8 5.
se ???, allora x1x2-b/2a eseguire 7 6. se
???, allora x1(-b??)/2a e x2(-b-??)/2a 7.
comunicare allesterno i valori di x1 ed x2 8.
fine dellalgoritmo.
5Descrizione degli algoritmi
Diagramma a blocchi (flow chart)
rappresentazione grafica di un algoritmo che
indica il flusso delle trasformazioni descritte
dallalgoritmo che devono essere eseguite a
partire dai dati iniziali per ottenere i
risultati finali.
6Blocchi elementari
7Esempio su ax2bxc0
8Il gioco dei quindici
Quindici oggetti, ad esempio fiammiferi, sono
su una tavola. Il primo giocatore ne raccoglie 1,
2 o 3. Il secondo giocatore ne raccoglie a sua
volta 1, 2 o 3. Quindi è ancora il primo
giocatore a raccogliere 1, 2 o 3 fiammiferi. I
giocatori alternano le loro mosse finchè sul
tavolo non esistono più fiammiferi. Il giocatore
che è costretto a raccogliere lultimo fiammifero
è il perdente. Descrivere una strategia vincente
per il primo giocatore
9Problema delle dodici monete
Tra 12 monete di identico aspetto potrebbe
nascondersene una falsa e pertanto di peso
diverso. Disponendo di una bilancia a 2 piatti
per confrontare gruppi di monete, si vuole
individuare la moneta falsa e stabilire se essa
pesi più o meno delle altre, mediante non più di
3 pesate.
10Soluzione del gioco dei quindici
Siano A il primo giocatore e B il secondo 1.
Prima mossa A raccoglie 2 fiammiferi 2. Mosse
successive se B raccoglie k fiammiferi (klt3),
allora A raccoglie 4-k fiammiferi
11Soluzione del gioco delle monete
12Breve storia dei calcolatori
- Primi strumenti di calcolo meccanici
- Abaco
- 1600
- Pascal (somma e sottrazione)
- Leibniz (moltiplicazione e divisione)
- 1800
- Babbage (quadrato e stampa)
- Babbage (macchina analitica)
- Ada Augusta Lovelace (prima programmatrice)
- Schede perforate utilizzate nel 1890 (inizio di
IBM)
13- 1944
- Mark I (primo calcolatore elettromeccanico)
- 1946
- ENIAC
- 1949
- EDSAC (macchina di tipo Von Neumann)
- Anni successivi
- Stessa architettura ma tecnologia più avanzata
- 1960
- Internet (fine anni sessanta per esigenze
militari, si chiamava Arpanet) - 1989
- www (word wide web enorme enciclopedia)
14Hardware Pezzi fisici tangibili che supportano
lelaborazione (chip di silicio, fili elettrici,
tastiera, dischi, stampanti.) Software I
componenti hardware sono inutili se non ricevono
precise istruzioni. Un programma è una serie di
istruzioni che lhardware esegue in sequenza.
15Componenti hardware principali
- Dispositivi di input
- Ad es. mouse, tastiera
- Dispositivi di output
- Ad es. monitor, stampante
- Insieme in uno stesso contenitore
- Processore (CPU)
- Central Processing Unit
- Interpreta e esegue le istruzioni
- Memoria
- Organizzazione hardware standard
Memoria
Processore (CPU)
Dispositivi di input
Dispositivi di output
16Due Tipi di Memoria
- Principale
- area di lavoro
- mantiene temporaneamente programmi e dati (mentre
il programma è in esecuzione) - Ausiliaria
- permanente
- salva programmi e risultati
- Esempi floppy hard disk, CD, nastri
17Organizzazione della Memoria Principale
- Bit una cifra binaria
- valori 0 o 1
- Byte 8 bit
- La memoria principale è una lista di locazioni
numerate ciascuna di un byte - Il numero di byte utilizzato per memorizzare un
dato varia con il tipo di dato
18Organizzazione della Memoria Ausiliaria
19Programma
- Insieme di istruzioni che il calcolatore deve
eseguire
Calcolatore
20Tipi di Programmi
- Sistema Operativo
- Programma supervisore
- DOS, Windows, MacOS, UNIX, Linux
- Applicazioni esistenti
- word-processor/editor
- web browser
- compilatori o assembler
- Applicazioni create dallutente
21Informazione
Esistono due formati per memorizzare
linformazione ANALOGICO
DIGITALE Linformazione analogica è continua
La
tecnologia digitale spezza e cresce
proporzionalmente alla
linformazione in tanti
pezzi sorgente di informazione
che
rappresenta come numeri Es termometro di
mercurio, segnali
Es compact disc elettrici
22I computer moderni sono digitali Ogni tipo di
informazione è spezzato in blocchi. Ogni blocco è
rappresentato da un numero e linformazione è
memorizzata sotto forma di sequenza di numeri.
Il computer digitale memorizza linformazione
sotto forma di numeri binari (base 2). La singola
cifra binaria si chiama bit (binary digit). La
base del sistema indica quante cifre si hanno a
disposizione e il valore posizionale di ogni
cifra in un numero.
23Sistemi posizionali
Il sistema di numerazione decimale è basato
sullalfabeto decimale 0,1,2,3,4,5,6,7,8,9 ed
ogni numero è rappresentato come sequenza di
simboli di tale alfabeto. Ad ogni simbolo è
associato un peso a seconda della
posizione. Es 28632 x 103 8 x 102 6 x 101
3 x 100
24In generale i sistemi numerici posizionali in
base b?2 rappresentano ogni numero con m cifre in
base b Ncm-1.c0 Dove i ci denotano elementi
di un insieme di b simboli che corrispondono ai
primi b numeri naturali 0..b-1. Vale
N?cibi Es110021 x 231 x 220 x 210 x 20
25Come comunicare
- Linguaggio macchina
- sequenze di 0 ed 1
- rigoroso
- essenziale
- Linguaggio assembler
- simbolico
- semplice traduzione aggiuntiva
- Linguaggio naturale
- linguaggio preferito dallessere umano
- ambiguo, ridondante, non preciso
- Linguaggio di programmazione ad alto livello
26Storia Moderna
- PASCAL (1970)
- Programming in Logic (1971)
- C (1974)
- ADA(1980)
27Storia Contemporanea
28Tipi di programmazione
- Funzionale
- Logica
- Procedurale
- Orientata agli oggetti
29Traduttori
30Compilatori ed interpreti
- Compilatore
- programma che traduce un programma in linguaggio
ad alto livello in un programma in linguaggio più
semplice che il calcolatore può eseguire (più o
meno) direttamente. - Interprete
- programma che traduce ed esegue una dopo laltra
le istruzioni che compongono il programma sorgente
31Lapproccio di Java
- Sia compilato che interpretato
- Codice intermedio Byte Code
- codice a basso livello portabile
- simile al codice assembler ma indipendente
dallhardware - invisibile ai programmatori Java
- Linterprete traduce dal byte code in un
programma nel linguaggio macchina della macchina
specifica
32Lambiente Java
Programma Java