Parte 1 - Dipartimento di Ingegneria dell`informazione e scienze

Parte 1
Fondamenti di Programmazione
Fondamenti di Informatica
Prof.ssa Elisa Tiezzi
Dove mi trovate
•  Ricevimento: Lunedì dalle 11 alle 12,30
• 
• 
• 
• 
Martedì dalle 11 alle 12,30 o su appuntamento
Studio: Piano 2 Stanza 231 Dipartimento di
Ingegneria dell'Informazione e Scienze
Matematiche- Via Roma, 56"
(+39) 0577 234850 - Int. 1156
Cel.3356592114
E-mail: [email protected]
Programma
Introduzione all’informatica
• 
• 
• 
• 
• 
• 
• 
• 
• 
Cos’è l’informatica
Introduzione al concetto di algoritmo
Struttura dell’elaboratore
Introduzione al concetto di programma
Esecuzione delle istruzioni
L’organizzazione dell’unità centrale di elaborazione (CPU)
La memoria centrale
La memoria secondaria
Dispositivi di input/output
Linguaggi di programmazione
Introduzione ai linguaggi di programmazione
Elementi del Linguaggio Java
Ambiente di lavoro
  Struttura di un programma
  Tipi di dati fondamentali
  Istruzioni di input/output
  Costrutto decisionale if-then-else
  I cicli con contatore for
  Cicli condizionali while
  Dati strutturati: stringhe e vettori
  Cicli for annidiati
  Classi e oggetti
  Implementazioni di algoritmi
 
Introduzione alla Complessità
 
 
 
Complessità di problemi
Analisi del caso medio e caso pessimo
Valutazione della complessità: relazioni di ricorrenza
Progetto e analisi di alcuni algoritmi di Ordinamento
 
 
 
 
Ricorsività
Divide et impera
Mergesort
Quicksort
Sistemi operativi
 
Windows
Materiale di studio
•  Gocce di Java
“Un’introduzione alla programmazione procedurale ed orientata
agli oggetti”
Pierluigi Crescenzi
Ed. Franco Angeli
•  http://javamm.sourceforge.net
•  I lucidi e altro materiale utile lo trovate in rete all’indirizzo:
http://www.diism.unisi.it
Corso di studio/matematica/Fondamenti di Programmazione
INFORMATICA
Dal vocabolario scientifico….
INFORMATICA = insieme degli strumenti teorici e pratici
che hanno lo scopo di elaborare l’informazione.
Il termine corrisponde al francese INFORMATIQUE
(contrazione di INFORMATION AUTOMATIQUE).
In realtà l’informatica si occupa non solo dell’elaborazione dei
dati ma anche della scienza e dell’ingegneria dei calcolatori.
Gli anglosassoni usano il termine COMPUTER SCIENCE per
sottolineare questa seconda accezione.
L’informatica ha quindi due significati:
•  Insiste sull’oggetto = PROCEDURA EFFETTIVA O
ALGORITMO
•  Insiste sullo strumento = CALCOLATORE
ELETTRONICO
Cosa è quindi l’informatica?
Piu` facile dire cosa non è:
•  Poco a vedere con “alfabetizzazione informatica” (saper usare un computer
per scrivere un testo o navigare in Internet)
•  Non consiste semplicemente nello scrivere programmi
Denning et al (1989)
•  L’informatica `e lo studio sistematico dei processi algoritmici che descrivono
e trasformano l’informazione: la loro teoria, analisi, progettazione,
efficienza, implementazione e applicazione
Metodo algoritmico
•  Formulare algoritmi che risolvano un problema
•  Trasformare questi algoritmi in programmi
•  Verificare la correttezza e l’efficacia di tali programmi
•  analizzandoli ed eseguendoli
8
ALGORITMO
Le radici dell’algoritmica sono antiche. Anche se il
suo assetto teorico definitivo è stato raggiunto
nella prima metà di questo secolo e le tecniche di
progetto ed analisi di algoritmi hanno segnato
progressi enormi con la recente diffusione di
calcolatori elettronici, i primi esempi di algoritmi
risalgono alle origini della storia dell’uomo e sono
registrati in documenti di matematica antica. La
parola ALGORITMO fu creata nel latino medievale
per assonanza con il nome del matematico
persiano Al-Khuwarizmi.
Informalmente la parola algoritmo indica la specificazione dei
passi elementari che un esecutore deve compiere per giungere
alla soluzione di un problema.
ALGORITMO = complesso di istruzioni….
•  precisamente determinato in maniera da non consentire
situazioni di dubbio
•  universalmente comprensibile nel senso che chiunque possa
applicarle
•  abbastanza generali da potersi applicare ad ogni problema di
una data classe
•  tali che applicate ai dati forniscano criteri per determinare
quando la soluzione è raggiunta e questo avvenga in un
numero finito di passi
Alcuni algoritmi
I più antichi algoritmi non banali conosciuti oggi furono
registrati dallo scriba egizio Ahmes (1650 a.c.)
Algoritmo moltiplicazione (dati A E B risultato P)
-poni P=0
assegnazione
-finché A≠0 ripeti la sequenza
iterazione
se A è dispari allora addiziona B a P
esecuzione
dimezza A trascurando il resto
condizionata
raddoppia B
P
0
3
9
21
A
7
3
1
0
B
3
6
12
24
P
0
0
0
12
36
A
12
6
3
1
0
B
3
6
12
24
48