Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fondamenti di Programmazione
Corso di Studio: Ingegneria Informatica e dell'Informazione
Università di Siena, A.A. 2020-2021
Lezione 1
Sara Brunetti (Matricole A-L)
sara.brunetti@unisi.it
0577 2345886, Ufficio 236
Informazioni generali
Introduzione al corso
Motivazioni e Obiettivi
Algoritmi per la risoluzione di problemi
Programmi
Il calcolatore
• Hardware e software
Linguaggi di programmazione
Informazioni generali
Regolamento Covid-19 accesso aule e lezioni:
https://www.unisi.it/unisilife/notizie/coronavirus-2019-ncov-cosa-ce-da-sapere
Rilevamento presenze
Tracciamento
Informazioni generali
Matricole A-L
Lunedì: 10:15-11:45 – aula 149
Martedì: 14:30-17:45 – Lab. 124(+143)
Eccezione: Martedì 29 Settembre la lezione
si terrà in aula 149
Informazioni generali
Matricole M-Z
Lunedì: 10:15-11:45 – aula 8
Venerdì: 10:15-13:30 – Lab. 124(+143)
Eccezione: Venerdì 2 Ottobre la lezione si
terrà in aula A (padiglione esterno)
Informazioni generali
Webpage: http://elearning.unisi.it/
Ricerca del corso per titolo: FONDAMENTI DI PROGRAMMAZIONE
2020/2021
Qui troverete materiale didattico, informazioni sul corso, link al webex
meeting, link alle lezioni registrate,...
ATTENZIONE: attualmente l'accesso è pubblico, ma successivamente
richiederà l'iscrizione
Informazioni generali
Testi consigliati:
J.R.Hanly, E.B.Koffman: Problem solving e
programmazione in C, APOGEO
P.Deitel, H.Deitel. Il Linguaggio C-Fondamenti e tecniche
di programmazione, PEARSON
Informazioni generali
Modalità d’esame:
A) Prova pratica (al calcolatore) di programmazione (linguaggio C)
Esercizi da svolgere in 3 ore
E' ammessa la consultazione di materiale didattico
B) Successivamente (alcuni giorni dopo e solo in caso di superamento
della prova pratica), orale con discussione della prova e domande sul
linguaggio C
Esercitazione:
Durante il corso (circa a metà e a fine corso), due prove scritte con
domande di teoria
Breve durata (1 ora)
Non è ammessa la consultazione di materiale didattico
Messaggio chiave
11
Sommario
Informazioni generali
Introduzione al corso
Motivazioni e Obiettivi
Algoritmi per la risoluzione di problemi
Programmi
Il calcolatore
• Hardware e software
Linguaggi di programmazione
Motivazioni
Cos'è l'ingegneria?
“Engineering is the creative application of
scientific principles used to plan,
build,direct,guide,manage,or work on
systems to maintain and improve our daily
lives.”
National society of Professional Engineers
https://www.nspe.org/
Alcuni esempi
Scientifico:
Tipo di problemi
Approccio
Obiettivi
Imparare le tecniche alla base della
programmazione (teoriche e pratiche) al fine
di risolvere problemi di ambito scientifico
Scientifico:
Tipo di problemi
Approccio
Programmazione:
Attività che consente di scrivere programmi
Sequenze di istruzioni “comprensibili al calcolatore”
Basi teoriche
Paradigmi
Obiettivi
Linguaggi e grammatiche
Compilatori
Problem solving
Scientifico:
Analisi del problema
Metodo risolutivo
Tipo di problemi
Complessità
Approccio
Programmazione:
Attività che consente di scrivere programmi
Sequenze di istruzioni “comprensibili al calcolatore”
Sommario
Informazioni generali
Introduzione al corso
Motivazioni e Obiettivi
Algoritmi per la risoluzione di problemi
Programmi
Il calcolatore
• Hardware e software
Linguaggi di programmazione
Problem solving
(informalmente)
Descrizione di un procedimento o di un metodo
per la soluzione di un problema
In modo non ambiguo
Da un esecutore
Algoritmo (un esempio)
1. inizio dell’algoritmo;
2. acquisire dall’esterno 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 x1=x2=-b/2a: eseguire 7;
6. se , allora x1=(-b+)/2a e x2=(-b-)/2a;
7. comunicare all’esterno i valori di x1 ed x2;
8. fine dell’algoritmo.
Algoritmo (un esempio)
1. inizio dell’algoritmo;
2. acquisire dall’esterno 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 x1=x2=-b/2a: eseguire 7;
6. se , allora x1=(-b+)/2a e x2=(-b-)/2a;
7. comunicare all’esterno i valori di x1 ed x2;
8. fine dell’algoritmo.
Es. a =1, b =5, c =2
Soluzione di ax2+bx+c=0
x1=(-5+)/2 ,x2=(-5-)/2
Algoritmo
●
Sequenza finita di istruzioni elementari
●
Eseguibili
●
Non ambigue
Esecutori e algoritmi
Un esecutore è definito in base a tre elementi:
L'insieme delle istruzioni che capisce (sintassi)
L'insieme delle operazioni che è capace di compiere;
Quali operazioni associa ad ogni istruzione che riconosce
(semantica)
Sommario
Informazioni generali
Introduzione al corso
Motivazioni e Obiettivi
Algoritmi per la risoluzione di problemi
Programmi
Il calcolatore
• Hardware e software
Linguaggi di programmazione
Programmi
●
Se l'esecutore è un calcolatore, l'algoritmo è detto
programma
●
Il linguaggio utilizzato per implementare l'algoritmo è detto linguaggio
di programmazione
●
L'unico linguaggio di programmazione che un calcolatore capisce è il
linguaggio macchina
Programmatore: figura professionale che si occupa di
scrive programmi
Programmi
Sistema Operativo
Programma “supervisore”
Windows, MacOS, UNIX, Linux, iOS, Android, ...
Applicazioni esistenti
word-processor/editor
web browser
compilatori o assembler
Applicazioni create dall’utente
Il sistema operativo
Il sistema operativo è l’insieme di programmi che
gestisce il computer:
permette l’interazione con il mondo esterno
(Input/Output)
permette di eseguire programmi dell’utente
bilancia le risorse del sistema
Sullo stesso PC possono convivere o alternarsi
diversi sistemi (es.Linux e Microsoft Windows o
MacOS)
32
Microsoft Windows
Prodotto da Microsoft
Gestisce architetture hardware basate su CPU Intel x86 (da
80386)
Informazioni generali
Introduzione al corso
Motivazioni e Obiettivi
Algoritmi per la risoluzione di problemi
Programmi
Il calcolatore
• Hardware e software
Linguaggi di programmazione
Software e hardware
Software: Istruzioni per far eseguire ai computer delle
azioni e prendere decisioni
Hardware: Computer
Il software controlla l'hardware
Per risolvere problemi complessi abbiamo bisogno di
avvalerci della velocità di calcolo di un computer
Pc possono eseguire miliardi di calcoli in un secondo
Più di quanto un essere umano possa eseguire in tutta la
sua vita!!!
Il supercomputer Summit è in grado di eseguire oltre
200000 miliardi di miliardi di “calcoli” al secondo
(sviluppato da IBM)
Il calcolatore “in astratto”
Macchina
Programma
elettronica
programmabile
Compiti:
Eseguire operazioni logiche e/o numeriche
Operazioni complesse “spezzate” in operazioni elementari
Componenti hardware principali
Dispositivi di input
Organizzazione hardware Ad es.: mouse, tastiera,
touch screen,dispositivi
standard audio...
Dispositivi di output
Memoria Ad es.: monitor,
stampante
Insieme in uno stesso
Dispositivi Dispositivi contenitore
Processore Processore (CPU)
di input (CPU) di output
Central Processing Unit
Interpreta e esegue le
Motherboard istruzioni
Memoria
CPU
Due Tipi di Memoria
ottiche
permanente
salva programmi e risultati
Capacità (2-6TB), accesso lento (ordine di ms)
Esempi: hard disk, CD, DVD, memorie flash
Organizzazione della
Memoria Principale
Byte = 8 bit
La memoria principale è
una lista di locazioni (o
celle) numerate
ciascuna di un byte
Il dato memorizzato in una
cella è il suo contenuto
Il numero di byte utilizzato
per memorizzare un
dato varia con il tipo di
dato...
Organizzazione della
Memoria Principale
Byte = 8 bit
La memoria principale è
una lista di locazioni (o
celle) numerate
ciascuna di un byte
Il dato memorizzato in una
cella è il suo contenuto
Il numero di byte utilizzato
per memorizzare un
dato varia con il tipo di
dato.. Una locazione di memoria
Accesso tramite indirizzo contiene sempre qualcosa!
Organizzazione della
Memoria Ausiliaria
Radice
File Directory
File
Organizzazione della
Memoria Ausiliaria
Organizzazione ad albero
Ogni nodo dell'albero è un file
Una directory indicizza più file
Un file è identificato da un path name assoluto
(dalla radice della gerarchia), o relativo (dalla
posizione dell'utente nel file system)
c:\Users\Mario\Documents\Mario\Didattica\Fondamenti di Programmazione\Lezione1.pdf
.\Didattica\Fondamenti di Programmazione\Lezione1.pdf
Central Processing Unit (CPU)
Dispositivo realizzato da uno o più chip (multiprocessori)
capace di eseguire istruzioni
Gli elementi della CPU:
Unità di controllo:
Coordina e supervisiona le operazioni delle altre unità
Unità aritmetico-logica:
Esegue operazioni necessarie per eseguire le istruzioni
(somme,sottrazione,moltiplicazione,divisione,meccanismi di
decisione)
Registri: locazioni di memoria interna usata per i risultati
intermedi e info di controllo (decine di byte)
Il processore
La CPU può svolgere un insieme limitato di
operazioni:
Spostamento di dati
(accesso,lettura,scrittura,copia)
– Leggi un byte da una locazione di memoria
Calcolo
– Somma tra loro il contenuto di due registri
Controllo di flusso
– Salta ad una locazione di memoria
49
Il processore
Ad ogni istruzione è associato un codice di N bit
– (codice operazione, parametro)
La CPU inizia caricando il byte presente nella
locazione 0 e lo interpreta come istruzione
Segnale di clock
– Utilizzato per sincronizzare il funzionamento dei dispositivi elettronici
digitali all’interno della CPU
– Frequenze di clock nei personal computer moderni: 2-3GHz
• Ad ogni ciclo di clock, sequenzialmente, a seconda
dell’istruzione si interpretano i byte successivi
50
Esempio
Supponiamo che i seguenti codici binari
corrispondano alle seguenti istruzioni
51
Esempio
52
Esempio
53
Esempio
54
Esempio
55
Esempio
56
Esempio
57
Esempio
58
Chi coordina CPU e memorie?
Gli O.S. sono costituiti da un insieme di moduli,
ciascuno dedicato a svolgere una determinata funzione
L’insieme dei moduli per la gestione della CPU e della
memoria centrale è il kernel
Interfaccia utente
Gestore del
Gestore dell’I/O
File System
Gestore della
Gestore dei Processi
Memoria Centrale
KERNEL
59
Sommario
Informazioni generali
Introduzione al corso
Motivazioni e Obiettivi
Algoritmi per la risoluzione di problemi
Programmi
Il calcolatore
• Hardware e software
Linguaggi di programmazione
Il linguaggio macchina
Il linguaggio macchina è il linguaggio della
CPU
Un programma in linguaggio macchina è una
sequenza di bit che indica alla CPU le azioni
da compiere sui dati (codificati in bit)
Linguaggio di programmazione (LP):
Informalmente: modo di esprimere le
sequenze di operazioni da far svolgere a
un computer mediante istruzioni