Fondamenti di Informatica 1 Ingegneria Gestionale obiettivo

Università di Roma “Tor Vergata”
Fondamenti di Informatica 1
Ingegneria Gestionale
FOI1BIS_GES
CORSO COORDINATO CON FOI1_GES PROF. V.GRASSI
obiettivo:
introduzione
a
dell’informatica
conoscenze
di
base
informatica come metodologia di risoluzione di
problemi con l’ausilio di una “macchina”
definire un metodo
istruire una
risolutivo
macchina
____________________________________
Docente: Sandro Moriggi
mio orario ricevimento:
martedì ore 14:50 - 15:50 aula T7 (forse...)
e-mail: [email protected]
N.B.: nell'OGGETTO della e-mail specificare
1
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
"studente:NOME_COGNOME"
2
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
• materiale didattico:
1) A. Domenici, G. Frosini: Introduzione alla
programmazione ed elementi di strutture dati
con il linguaggio C++ - FRANCO ANGELI
2) V. Grassi - Note per il corso di Fondamenti
di Informatica 1 (a.a. 2000/2001) - dispensa
(disponibile sul sito del corso)
è possibile consultare anche
3) Deitel & Deitel - C++ Fondamenti di programmazione
- APOGEO
è possibile consultare anche
4) Derek M. Capper - Introduzione a C++ per le scienze
e l'ingegneria - McGraw-Hill
• ambiente di programmazione:
DevC++
in distribuzione libera su:
http://www.bloodshed.net/devcpp.html
3
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
(per scaricare il software è consigliabile usare il
Download from Simtel.net (ultima riga della pag.)
e poi riferimento "italy")
oppure
il link diretto
http://www.simtel.net/autodownload.html?mirror=47
&product=17456&key=00ceeaf13c425823e3eb
• per programma del corso, lucidi delle lezioni,
dispensa, esercizi, comunicazioni:
consultare:
Pagina Didattica S.Moriggi
http://www.uniroma2.it/didattica/foi1bis_ges
(in corso di aggiornamento)
i lucidi delle lezioni (sostanzialmente identici) sono
attualmente(12/12/01) disponibili sulla pag. didattica
del prof. V. Grassi
http://www.uniroma2.it/didattica/foi1_no
modalità d’esame (provvisorie, da precisare in
seguito):
• una prova scritta di metà corso
4
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
• una prova scritta finale
[probabilmente
5
L1
preceduta da una prova pratica su PC]
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
applicazioni informatiche:
• animazione
• elaborazione di suoni
• reti di ipertesti (WWW)
• calcolo scientifico (sintesi molecolare,
fluidodinamica, …)
•…
cosa c’è dietro?
rappresentare informazione
capacità di
manipolare rappresentazioni
6
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
PREMESSA
--------
Informatica
presente in tutti i settori dell'industria, dei servizi e della
vita privata
grande diffusione di
dispositivi elettronici
che effettuano
l'elaborazione automatica di informazioni
§ personal computer
§ office automation (aspetti amministrativi di
un'azienda)
§ scrittura di documenti, fogli elettronici, posta
elettronica
§ CAD, CAM (progettazione)
§ sistemi di controllo di processi industriali
§ basi di dati (gestione e manipolazione di archivi di
dati)
§ sistemi di supporto alle decisioni
§ sistemi integrati nei dispositivi di uso comuni
[sistemi embedded: televisori, VCR, cellulari,
lavatrici, automobili, ...]
7
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
Ogni sistema informatico e` costituito da
- una parte HARDWARE (dispositivi elettronici)
- una parte SOFTWARE (programmi)
Dal momento che e` il SOFTWARE che
determina caratteristiche e funzionalita`
specifiche di un sistema informatico, ci
concentreremo prevalentemente sugli aspetti
legati allo sviluppo di programmi
(programmazione) per risolvere determinati
problemi
8
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
PROBLEMA
Un PROBLEMA nasce
• se un SOGGETTO intende raggiungere una META e
• se è fallito un primo tentativo per raggiungerla
risolvere un problema significa:
potere identificare
§ STATO INIZIALE
§ PROCEDIMENTO DI ESECUZIONE
§ STATO FINALE
possedere un criterio di verifica del risultato
ottenuto
dati
iniziali
9
L1
 PROCEDIMENTO→
← verifica 
dati finali
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
per attuare il procedimento di soluzione sono
necessari:
1.RISOLUTORE: chi si occupa di risolvere
teoricamente il problema;
impartisce le istruzioni
2.ESECUTORE: qualcuno o qualche cosa che
possiede tutte le capacità per risolvere
operativamente il problema, seguendo le
istruzioni fornite dal risolutore
Il risolutore nel formulare le istruzioni relative alla
soluzione del problema deve tenere conto dei seguenti
elementi:
§ REPERTORIO dell’esecutore: quali sono le azioni
che l’esecutore è capace di svolgere effettivamente
§ FINITEZZA delle azioni da svolgere: il procedimento
deve cominciare e finire dopo l’esecuzione di un certo
numero (piccolo o grande) di azioni
§ DETERMINISMO delle azioni: ogni azione svolta
dall’esecutore determina, cioè stabilisce senza
ambiguità, quale sarà l’azione successiva
10
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
ESEMPIO: ricerca di un numero telefonico
fonti di informazione:
(A)
rubrica telefonica
(B) elenco telefonico
INFORMAZIONI ORGANIZZATE DIVERSAMENTE:
(A) rubrica:
§ cognomi e numeri telefonici divisi per gruppi di
lettere (A-B, C-D, ...)
§ all'interno di un gruppo cognomi in ordine casuale
(B) elenco:
§ informazioni ordinate per cognome e poi per nome
§ intestazione associata ad ogni pagina
ricerca di un cognome:
dipende da come sono organizzate le informazioni:
(A) rubrica:
1. cerchiamo la pagina con la lettera giusta
2. all'interno della pagina ricerca sequenziale
(B) elenco:
1. apriamo l'elenco in un punto opportuno
2. avanti o indietro per gruppi di pagine fino a quella
giusta
3. nella pagina avanti o indietro per gruppi di nomi
11
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
Per risolvere problemi che richiedono ricerca e/o
manipolazione di informazione e` necessario individuare un
METODO RISOLUTIVO,
ovvero
una sequenza di operazioni che ci permette
• a partire dalle informazioni a disponibili
(dati di ingresso)
• di ricavare i risultati (dati di uscita)
ALGORITMO
la struttura del metodo risolutivo e` legata al modo in cui le
informazioni sono organizzate
per automatizzare la soluzione del problema dobbiamo
RAPPRESENTARE
le informazioni ed
il metodo risolutivo
in un linguaggio eseguibile dal calcolatore
(LINGUAGGIO DI PROGRAMMAZIONE)
PROGRAMMA
12
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
ALGORITMI E PROGRAMMI
Problemi da risolvere usando elaboratori possono essere di
natura molto varia.
ESEMPI
1) Dati due numeri, trovare il maggiore
2) Dato un elenco di nomi e numeri di telefono (rubrica o
elenco telefonico) e un nome, trovare il numero di
telefono corrispondente
3) Data la struttura di una rete stradale e le informazioni sui
flussi dei veicoli, determinare il percorso più veloce da
AaB
4) Scrivere tutti i numeri pari che non sono la somma di
due numeri primi (Congettura di Goldbach)
5) Decidere per ogni programma C++ e per ogni dato in
ingresso, se il programma termina quando viene eseguito
su quel dato
13
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
CARATTERISTICA COMUNE AI PROBLEMI
Informazioni
in ingresso
Informazioni
in uscita
 trasformate →
OSSERVAZIONE SULLA FORMULAZIONE DEI
PROBLEMI
§ descrizione non fornisce un metodo risolutivo (si pensi
all'es. 3)
§ descrizione del problema è talvolta AMBIGUA o
IMPRECISA (ad es., 2 con Mario Rossi che compare più
volte)
§ per alcuni problemi non è noto un metodo risolutivo (ad es.
4)
§ esistono problemi per i quali è stato dimostrato che non può
esistere un metodo risolutivo (ad es. 5)
Noi consideriamo solo problemi per i quali è noto esistere un
metodo risolutivo.
14
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
PER DELEGARE AD UN CALCOLATORE LA
SOLUZIONE DI UN PROBLEMA E` NECESSARIO
1) individuare un ALGORITMO che risolve il problema,
ovvero
un insieme di passi che, eseguiti in ordine,
permettono a partire dalle informazioni a disposizione
di calcolare i risultati
PROPRIETA` DI UN ALGORITMO:
• NON-AMBIGUITA’: le istruzioni devono essere
univocamente interpretabili dall'esecutore
• ESEGUIBILITA’: ogni istruzione deve poter essere
eseguita (in tempo finito) con le risorse a disposizione
• FINITEZZA: l'esecuzione dell'algoritmo deve terminare in
tempo finito per ogni insieme di dati in ingresso
15
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
2) rappresentare in un linguaggio di programmazione
(LDP)
a)
l'algoritmo
a)
b) le informazioni a
disposizione
c)
le informazioni
utilizzate
dall'algoritmo
d) le informazioni
fornite al termine
programma
(codifica di un algoritmo
in un LDP)
b) dati in ingresso
c)
dati ausiliari
d)
dati in uscita
RIASSUMENDO:
PROBLEMA
16
L1
ALGORITMO
PROGRAMMA
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
§ soluzione di un problema
=
RAPPRESENTAZIONE + ALGORITMO
?
rappresentazione (
rappresentazione (
) = [alt, largh, prof]
) = [ p_alt, p_largh]
algoritmo:
(alt < p_alt) e (largh < p_largh)? si ⇒ OK
no
⇓
(alt < p_largh) e (largh < p_alt)? si ⇒ OK
no
⇓
…
(quanti tentativi ancora?)
17
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
rappresentazione: uso di strumenti formali
per rappresentare in modo simbolico
un “frammento” di realtà
algoritmo: sequenza finita di operazioni
elementari che manipolano simboli per
costruire una soluzione del problema
nota: finito può anche essere molto grande
⇓
macchine per eseguire algoritmi
informatica = punto di confluenza di:
• metodi di soluzione (Euclide ~300 a.C., …,
al-Kuwarizmi ~1000 d.C., …Hilbert ~1800 d.C.,
Gödel, Turing, ~1900 d.C., …)
• macchine per manipolare simboli secondo
regole date (abaco ?a.C., …, macchina di
Babbage ~1800 d.C., … ENIAC ~1940 d.C.,
…)
18
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
le macchine sono “stupide”
⇓
manipolazione “sintattica”, siamo noi a dare un
significato ai simboli
Esempio: determinare z = MCD(n,m) n,m∈N
D(n) def
= insieme dei divisori di n
D(n) = { k | n = k·q, k∈N+, q∈N }
{0}
z = MCD(m,n) = max{D(m)∩D(n)}
m,n
19
L1
MCD
z
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
N+=N-
Università di Roma “Tor Vergata”
algoritmo:
1. prendi due numeri n e m
2. scrivi m in una casella di nome x
scrivi n in una casella di nome y
3. se x=0 oppure y=0
allora: termina rispondendo: « problema
banale o irrisolvibile »
altrimenti: calcola il resto r di x diviso y
se r=0
allora: termina rispondendo
« il risultato è il valore
scritto in y »
altrimenti: sovrascrivi in x il
valore scritto in y, sovrascrivi
in y il valore di r
4. ritorna ad eseguire 3
(l’algoritmo dato è noto come algoritmo di Euclide
per il calcolo di MCD)
20
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
quali “abilità” (capacità di eseguire operazioni)
sono necessarie per eseguire l’algoritmo?
a) leggere e scrivere numeri
b) eseguire operazioni aritmetiche
c) seguire un flusso di operazioni
utilizzando tre regole base: i. sequenza
ii. scelta
iii. iterazione
“chiunque” sappia fare a, b e c può eseguire
l’algoritmo, anche se ignora cosa è MCD
le macchine reali (calcolatori) sanno fare solo
operazioni di tipo a, b e c
come fanno macchine così “primitive” ad
eseguire applicazioni complesse?
tutto è rappresentabile tramite numeri
(“digitalizzazione”)
21
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
Esempio 1: elaborazione testi
testo
⇓
sequenza di caratteri
⇓
sequenza di numeri
si usa una tabella analoga a questa:
a↔1
b↔2
c↔3
d↔4
e↔5
•
•
•
z ↔ 26
A ↔ 27
B ↔ 28
C ↔ 29
D ↔ 30
E ↔ 31
. ↔ 53
: ↔ 54
; ↔ 55
, ↔ 56
(spazio) ↔ 57
•
•
•
Z ↔ 52
•
•
•
…
Ada cade ⇔ 27 4 1 57 3 1 4 5
22
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
Esempio 2: elaborazione suoni
onda sonora
⇓
“discretizzazione”
⇓
sequenza di numeri
1
2
3
4
5
• •
•
• • •
•
•
•
•
⇓
4 5 4 4 4 2 2 5 3 4
23
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
Esempio 3: elaborazione immagini
immagine
⇓
“discretizzazione”
⇓
sequenza di triple di numeri
1
2
3
1
2
3
codifica: casella bianca → 0
casella non bianca → 1
decodifica:
24
L1
0 → casella bianca
1 → casella grigia
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
1
2
3
1
2
3
codifica
(1,1,1) (1,2,0) (1,3,0) (2,1,1) (2,2,1) (2,2,0) (3,1,1) (3,2,1) (3,3,1)
decodifica
approssimazione della rappresentazione
25
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi
Università di Roma “Tor Vergata”
come si comunica con una macchina che
rappresenta tutto tramite numeri?
si usa un linguaggio fatto di numeri !!!
linguaggio macchina:
0001 1100 1000 0110
1101 1101 0000 0010
problemi: • difficile (per essere umani)
da scrivere, leggere, correggere
• legato ad una particolare macchina
linguaggi
Java,…):
di
alto
livello
(C++,
Pascal,
if (5>0) somma = 5 + 6;
• istruzioni “vicine” al linguaggio umano
• istruzioni indipendenti da una particolare
macchina
⇓
necessità di tradurre nel linguaggio macchina
26
L1
Fondamenti di Informatica 1 - Vincenzo Grassi – FOI1BIS_GES Sandro Moriggi