


























Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
lezioni informatica per tutti basi
Tipologia: Sintesi del corso
1 / 34
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



























1
2
Sono ammessi a seguire questo corso
Gli studenti iscritti al primo anno delle lauree area Ing.
Dell’Informazione
Gli studenti iscritti al secondo o terzo anno
bacheche elettroniche
NON sono ammessi a seguire questo corso
Tutti gli studenti che non soddisfano i requisiti
precedenti
Chi non possiede ancora un numero di matricola ed
è iscritto a Ing. dell’Inf. e Telecomunicazioni
È provvisoriamente ammesso a seguire questo corso
Confluirà nel corso di appartenenza non appena avrà
un numero di matricola
Chi possiede un numero di matricola la cui
penultima cifra è 0,1,2 ed è iscritto ad Ingegneria
Informatica
Deve seguire il corso del Prof. Dalpasso (canale A, in
teledidattica)
DEI Dip. di Ingegneria dell’Informazione
Via Gradenigo 6/A ( Padova ), edificio principale (DEI/G),
quarto piano, ufficio 405a
Ricevimento studenti
Il metodo più efficace di interazione diretta con il docente
è la posta elettronica
Telefono: 049 827 7942
Attenzione
I recapiti cambieranno presto
Sono in fase di trasloco...
5
Sito Web del Corso
6
Altri Siti
Tutte le informazioni relative alla Aula Didattica
Taliercio si trovano nel sito
http://www.adt.unipd.it/
Informazioni ufficiali da parte del docente (appelli,
iscrizioni, avvisi urgenti, ecc.) si trovano sulle
Bacheche elettroniche
http://sis.dei.unipd.it
Altre informazioni si trovano nel sito della
Facoltà di Ingegneria
http://www.ing.unipd.it/
Frequenza alle lezioni
Lascia però libero ogni docente di decidere
cosa fare con gli studenti che non frequentano
La frequenza alle lezioni e alle esercitazioni in
laboratorio è VIVAMENTE CONSIGLIATA
Da un’analisi statistica, chi non frequenta fa
molta più fatica a superare l’esame
Obiettivi del Corso
Il Corso ha l’obiettivo di
presentare le basi teoriche dell’informatica
proporre un approccio ingegneristico e progettuale
alla programmazione
fornire una visione professionale alla risoluzione dei
problemi
utilizzare concretamente le caratteristiche di
programmazione del linguaggio Java
13
Quanto bisogna studiare?
Un credito = 25 ore di lavoro
totale corso FI1 = 25 × 9 = 225 ore di lavoro
in aula + laboratorio = 12 × 9 = 108 ore
esempio: studio finale prima dell’esame = 27 ore
studio settimanale = 10 ore
Lo studio settimanale comprende anche pratica al
calcolatore (OLTRE al laboratorio)
14
Modalità d’esame
Sono previsti cinque appelli durante l'anno
accademico
Due appelli a dicembre/gennaio
Un appello a luglio
Due appelli a settembre
L’esame consiste in tre prove da sostenere nello
stesso appello
prova scritta, prova pratica, prova orale
Ulteriori dettagli sugli esami e le date delle prove si
possono consultare sul sito del corso
15
Statistiche sugli esami 2005/
Promossi all'esame/iscritti all'esame
Appello 1
Appello 2
Appello 3
Appello 4
Appello 5
Promossi/iscritti al corso
16
Qualche consiglio (1)
A chi non ha mai avuto a che fare con computer,
programmazione, ecc.
Questo corso non ha prerequisiti , chiunque lo può
seguire con profitto
È fondamentale prendere subito confidenza con i ferri
del mestiere
programmazione java
laboratori
17
A chi ha già una solida esperienza di programmazione
Questo corso non ha lo scopo di formare dei
programmatori professionisti
ordinamento, analisi della complessità di un algoritmo, tipi
di dati astratti
Attenzione quindi a non considerarvi promossi in
partenza!
18
A chi non è iscritto al corso di laurea in Ingegneria
Informatica
Non considerate questo corso come estraneo al vostro
indirizzo di studio
... Inoltre chi non supera l'esame di Fondamenti di
Informatica 1 non si laurea!
Il primo laboratorio si terrà martedì 9 ottobre
Lezione a cura del dott. Roberto Valli su concetti
introduttivi. I contenuti della lezione sono disponibili sul
sito web dell’aula Taliercio
http://www.adt.unipd.it
Primi semplici esercizi da svolgere. Il contenuto
dell'esercitazione è disponibile sul sito del corso
http://www.dei.unipd.it/~avanzini/fi
26
Accenni ad argomenti
che verranno
approfonditi in seguito
Regole di sintassi Java
Note di cronaca
Errori frequenti
Consigli per la produttività
Suggerimenti per la qualità
Argomenti avanzati
'600: dispositivi meccanici per effettuare in modo
automatico computazioni (Pascal, Leibniz)
'800: primi dispositivi meccanici “a programma”: telai
Jacquard, pianole, le macchine di Babbage
1896: Hollerith fonda la “Tabulating Machine Company”
(poi IBM) che produce sistemi meccanografici a schede
1930: prime macchine elettromeccaniche di grandi
dimensioni (Zuse in Germania, Mark 1 ad Harvard)
1946: ENIAC, elaboratore a valvole termoioniche e a
programma filato
1950: prime macchine a programma memorizzato (von
Neumann: ENIAC, IAS Princeton)
29
Un po' di storia: le macchine di Babbage
Babbage (1791 1871) crea i primi computer meccanici
Erano dei mostri meccanici
Erano concettualmente molto simili ai computer moderni
La macchina analitica (analytical engine)
È programmabile tramite
schede perforate
Usa un linguaggio di
programmazione
equivalente a quelli attuali
... non è mai stata realizzata
30
Un po' di storia: l'ENIAC
L’ENIAC (Electronic Numerical Integrator And Computer)
fu il primo computer elettronico, realizzato
all’università di Pennsylvania nel 1946
Occupava una grande stanza ed era costituito da
molti armadi con circa 18000 valvole (analoghe
ai transistor), parecchie delle quali si bruciavano
ogni giorno e dovevano essere sostituite
Veniva programmato collegando cavi su
appositi pannelli, simili a quelli dei centralini
telefonici, ed andava nuovamente programmato
in tal modo per ogni specifico problema
Un po' di storia: l'ENIAC Un po' di storia: l'ENIAC
Il progetto fu finanziato dalla Marina statunitense per il
calcolo di tavole balistiche da usare per la stima della
traiettoria di un proiettile in funzione della resistenza del
vento, della velocità iniziale e delle condizioni
atmosferiche
Questo problema richiedeva la soluzione numerica di
equazioni differenziali ( numerical integrator )
Questi calcoli venivano precedentemente svolti da esseri
umani, detti computer , letteralmente “calcolatori”
(manuali...)
Più tardi l’ENIAC venne usato per catalogare i dati del
servizio demografico statunitense
37
Tra le proposizioni decidibili – o funzioni
calcolabili – o problemi risolubili – alcune
sono più “facili” di altre
Esistono diverse classi di complessità,
corrispondenti al tempo necessario per
risolvere i problemi
Alcuni problemi non sono risolubili in pratica,
perchè possono essere risolti solo in tempi
immensi (miliardi di anni)
Alonzo Church
(1903 1995)
38
Nel '900 linguisti e matematici cercano di
formulare un approccio strutturale allo
studio del linguaggio
Linguaggi formali: definiti da insiemi di
produzioni grammaticali che li generano
Noam Chomsky
(1928)
Chomsky identifica quattro tipi di linguaggi formali,
caratterizzati da diverse grammatiche
Universali, sensibili al contesto, liberi da contesto, regolari
Servono a classificare linguaggi informatici e automi
Pone basi teoriche per la progettazione di
circuiti digitali (reti logiche)
Costituiti da bit (binary digit), variabili che
assumono solamente i valori 0 e 1
Fonda la teoria dell'informazione
Problema di ricostruire in maniera
affidabile informazioni trasmesse da un
mittente e affette da rumore
Teoria alla base della costruzione di reti di
calcolatori
Claude Shannon
(1916 2001)
41
Cos’è un computer
Un computer è una macchina che
memorizza dati (numeri, parole, immagini, suoni...)
interagisce con dispositivi (schermo, tastiera, mouse...)
esegue programmi
Ogni programma svolge una diversa funzione,
anche complessa
impaginare testi o giocare a scacchi
I programmi sono sequenze di istruzioni che il
computer esegue e di decisioni che il computer
prende per svolgere una certa attività
42
Cos’è un computer?
L’ elevatissimo numero di tali istruzioni presenti in un
programma e la loro esecuzione ad altissima
velocità garantisce l’illusione di una interazione fluida
che viene percepita dall’utente
Il computer, in conclusione, è una macchina
estremamente versatile e flessibile , caratteristiche
che gli sono conferite dai molteplici programmi che vi
possono essere eseguiti, ciascuno dei quali consente
di svolgere una determinata attività
Cos’è un programma?
Nonostante i programmi siano molto sofisticati e svolgano
funzioni molto complesse, le istruzioni di cui sono
composti sono molto elementari, ad esempio
estrarre un numero da una posizione della memoria
sommare due numeri
inviare la lettera A alla stampante
accendere un punto rosso in una data posizione dello
schermo
se un dato è negativo, proseguire il programma da una certa
istruzione anziché dalla successiva ( decisione )
Cos’è la programmazione?
Un programma descrive al computer, in estremo
dettaglio, la sequenza di passi necessari per svolgere
un particolare compito
In questo corso
imparerete a
programmare un
computer!
49
Cos’è un algoritmo?
Si dice algoritmo la descrizione di un metodo di soluzione di
un problema che
sia eseguibile
sia priva di ambiguità
arrivi ad una conclusione in un tempo finito
Un computer può risolvere soltanto quei problemi
per i quali sia noto un algoritmo
50
Un esempio di algoritmo
Problema : Avendo depositato ventimila euro in un conto bancario
che produce il 5% di interessi all’anno, capitalizzati annualmente,
quanti anni occorrono affinché il saldo del conto arrivi al doppio della
cifra iniziale?
Algoritmo :
1.Anno attuale è 0 e saldo attuale è 20000€
2.Ripetere i successivi passi 3 e 4 finché il saldo
è minore di 40000€, poi passare al punto 5
3.Aggiungere 1 al valore dell’anno attuale
4.Il nuovo saldo attuale è il valore del saldo
attuale moltiplicato per 1.05 (aggiungiamo il 5%)
5.Il risultato è il valore dell’anno attuale
Un esempio di algoritmo
Il metodo di soluzione proposto
è non ambiguo , perché fornisce precise istruzioni
su cosa bisogna fare ad ogni passaggio e su quale
deve essere il passaggio successivo
è eseguibile , perché ciascun passaggio può
essere eseguito concretamente (se, ad esempio, il
metodo di soluzione dicesse che il tasso di
interesse da usare al punto 4 è variabile in
dipendenza da fattori economici futuri, il metodo
non sarebbe eseguibile…)
arriva a conclusione in un tempo finito , perché
ad ogni passo il saldo aumenta di almeno mille
euro, quindi al massimo in 20 passi arriva al
termine
A cosa servono gli algoritmi?
L’identificazione di un algoritmo è un requisito
indispensabile per risolvere un problema con il
computer
La scrittura di un programma per risolvere un
problema con il computer consiste, in genere,
nella traduzione di un algoritmo in un qualche
linguaggio di programmazione
Prima di scrivere un programma,
è necessario individuare un
algoritmo!
54
Per capire i meccanismi di base della programmazione è
necessario conoscere gli elementi hardware che
costituiscono un computer
Prendiamo in esame il
Personal Computer
( PC ), ma anche i
computer più potenti
hanno un’ architettura
molto simile
Primo documento che descrive una
macchina elettronica nella cui memoria
vengono registrati dati e programma:
L’architettura dei moderni processori è
molto simile a quella descritta nel
documento, sono quindi dette Macchine
di von Neumann
John von Neumann
(1903 1957)
Memoria
principale
Memoria
secondaria
Dispositivi
di Input e
di Output
L’architettura di von Neumann è composta da quattro
blocchi comunicanti tra loro per mezzo di un bus , un
canale di scambio di informazioni
61
Ciclo di funzionamento della CPU
Ogni ciclo di funzionamento è composto da tre fasi
accesso : lettura dell’istruzione da eseguire e sua
memorizzazione nel registro istruzione
decodifica : decodifica dell’istruzione da eseguire
esecuzione : esecuzione dell’istruzione
Si parla di ciclo fetch decode execute
La posizione dell’istruzione a cui si accede durante la
fase di fetch è contenuta nel contatore di
programma (program counter, PC)
viene incrementato di un’unità ad ogni ciclo, in modo da
eseguire istruzioni in sequenza
62
La memoria del computer
La memoria serve ad immagazzinare dati e
programmi all’interno del computer
È suddivisa in celle o locazioni di memoria, ognuna
delle quali ha un indirizzo
Ogni cella contiene un numero predefinito di bit
un bit è un dato elementare che può assumere due
valori, convenzionalmente chiamati zero e uno
un insieme di otto bit si chiama byte ed è l’unità di
misura della memoria (es. 512 MByte)
Ci sono due tipi di memoria
primaria e secondaria
La memoria primaria
La memoria primaria è veloce ma costosa
È costituita da chip di memoria realizzati con la
stessa tecnologia (al silicio) utilizzata per la CPU
memoria di sola lettura ( ROM , Read Only Memory)
memoria ad accesso casuale
( RAM , Random Access Memory)
perché in realtà anche la ROM è ad accesso casuale,
mentre ciò che le distingue è la possibilità di scrivervi
ad un dato non dipende dalla sua posizione nella
memoria
La memoria ROM
La memoria di sola lettura, ROM
conserva i dati ed i programmi in essa memorizzati
anche quando il computer viene spento
contiene i programmi necessari all’avvio del computer,
programmi che devono essere sempre disponibili
BIOS ( B asic I nput/ O utput S ystem)
65
La memoria RAM
La memoria ad accesso casuale, RAM
è una memoria che consente la lettura e la scrittura
dei dati e dei programmi in essa contenuti
contiene dati in fase di modifica e programmi che non
devono essere sempre disponibili
66
La memoria secondaria
La memoria secondaria (o di massa) è di
solito un disco rigido (o disco fisso, hard disk) ed è
un supporto non volatile e meno costoso della
memoria primaria (circa cento volte)
programmi e dati risiedono sul disco rigido e vengono
caricati nella RAM quando necessario, per poi tornarvi
aggiornati se e quando necessario
Un disco rigido è formato da piatti rotanti rivestiti di
Processo simile a quello dei nastri audio o video
La memoria secondaria
Sono (erano...) molto diffusi anche altri tipi di memoria
secondaria a tecnologia magnetica
floppy disk ( dischetto flessibile), di capacità limitata
ma con il vantaggio di poter essere agevolmente
rimosso dal sistema e trasferito ad un altro sistema
(dispositivo di memoria esterno )
tape ( nastri per dati), di capacità elevatissima, molto
economici, ma molto lenti, perché l’accesso ai dati è
sequenziale anziché casuale (bisogna avvolgere o
svolgere un nastro invece che spostare la testina di
lettura sulla superficie di un disco)
La memoria secondaria
Sono molto diffusi anche altri tipi di memoria
secondaria a tecnologia ottica
CD ROM (Compact Disc Read Only Memory), viene
letto da un dispositivo laser, esattamente come un
CD audio; ha una elevata capacità ed è molto
economico e affidabile; è un supporto di sola lettura,
utilizzato per distribuire programmi e informazioni
CD R (Compact Disc Recordable), utilizza una
tecnologia simile al CD ROM ma può essere scritto
dall’utente (una sola volta; più volte se CD RW)
DVD , sta rapidamente sostituendo il CD ROM
nell’ambito di memoria a tecnologia ottica, ha
capacità molto più elevata
Le istruzioni elementari eseguite da un computer
(cioè dalla sua CPU) si chiamano
istruzioni macchina
L’insieme di istruzioni macchina ( instruction set )
è specifico di una particolare CPU: quello di un
Pentium™ è diverso da quello di uno SPARC™
Una particolare CPU è la cosiddetta macchina
virtuale Java (JVM, Java Virtual Machine)
Esempio di alcune istruzioni macchina:
carica in un registro il valore contenuto nella
posizione di memoria 40
carica in un altro registro il valore 100
se il primo valore è maggiore del secondo,
prosegui con l’istruzione contenuta nella posizione
di memoria 240, altrimenti con l’istruzione che
segue quella attuale
La codifica delle istruzioni macchina avviene sotto forma
di configurazioni di bit conservate in memoria
(che possono essere interpretate come numeri interi)
Le precedenti istruzioni per la JVM diventano
77
In tutte le CPU, le istruzioni macchina si possono
suddividere nelle seguenti categorie
(i nomi delle istruzioni sono solo degli esempi)
trasferimento dati , tra i registri e la memoria
principale
operazioni aritmetiche e logiche , eseguite dalla
salti , per alterare il flusso di esecuzione sequenziale
(viene modificato il Program Counter)
se è maggiore di zero (JGZ)
78
Per eseguire un programma in un computer è
necessario scrivere all’interno della memoria
primaria le configurazioni di bit
corrispondenti alle istruzioni macchina del
programma
Per fare ciò è necessario conoscere tutti i codici
numerici delle istruzioni macchina
Questa operazione lunga e noiosa (che veniva
eseguita agli albori dell’informatica) è stata presto
automatizzata da un programma in esecuzione
sul computer stesso, detto assemblatore
( assembler )
Utilizzando l’assemblatore, il programmatore scrive il
programma mediante dei nomi abbreviati ( codici
mnemonici ) per le istruzioni macchina, molto più
facili da ricordare
esempio precedente per la JVM
L’uso di nomi abbreviati è assai più agevole, ed il
programma assemblatore si occupa poi di tradurre il
programma in configurazioni di bit
Tali linguaggi con codici mnemonici si dicono
linguaggi assembly (uno diverso per ogni CPU)
iload 40
bipush 100
if_icmpgt 240