Professional Documents
Culture Documents
Massimo Esposito
Programmare
Definire un insieme di attivit che devono essere
Lesecutore di un programma
Soggetto che in grado di
Comprenderlo
Eseguirlo
Istruzioni
Frasi del programma che istruiscono lesecutore sul da farsi
Dati
Oggetti di cui lesecutore si serve per eseguire il programma
Prof. Massimo Esposito Elementi di Informatica
uscita
Y= F (X)
ALGORITMO
DATI DI INPUT
ESECUTORE
DATI DI OUTPUT
Linguaggio
Un programma deve essere espresso in un
Y= F (X)
ALGORITMO
DATI DI INPUT
ESECUTORE
DATI DI OUTPUT
Algoritmo
Sequenza finita di passi da eseguire
Procedimento la cui validit indipendente dal
linguaggio
Y= F (X)
ALGORITMO
DATI DI INPUT
ESECUTORE
DATI DI OUTPUT
Programma
Traduzione dellalgoritmo progettato in un
Programmare
Progettare algoritmi indipendentemente dal
linguaggio dellesecutore
Un po di storia
Fortran
Il primo linguaggio
Sviluppato a partire dal 1954, rilasciato nel 1957
Pensato per facilitare la scrittura di formule matematiche
C
Sviluppato nel 1972 da Dennis Ritchie presso i laboratori della AT&T Bell
Eredita principi e idee dal linguaggio B che a sua volta aveva ereditato da BCPL e CPL
Pensato per operare ad alto livello indipendentemente dalla macchina
Standard completato nel 1989 (ANSI C)
C++
E una estensione del C
Formulato da Bjarne Stroustrup allinizio degli anni '80, sempre presso i laboratori della
AT&T Bell
Supporta la programmazione orientata agli oggetti (OOP)
Componenti fondamentali di un
computer
Unit Centrale di Elaborazione (CPU)
CPU
Memoria centrale
Contiene istruzioni e dati che servono
allesecuzione del programma
Dispositivi di input
Per inserire dati e istruzioni in memoria
INPUT
Memoria
centrale
Dispositivi di output
Per mostrare i risultati
Memorie di massa
Contiene i dati e le istruzioni che vengono
poi inseriti nella memoria centrale durante
lesecuzione del programma
Pu conservare i risultati prodotti
Dispositivi sia di input che di output
Memoria
di massa
OUTPUT
Input e output
Stream di caratteri presa dalla
codifica ASCII
in numero teoricamente infinito se
acquisito da tastiera (input standard)
restituito su terminale (output standard)
in numero finito se
scritto o letto in memorie di massa (file)
binario e viceversa
Conversione
Formato
Memoria
centrale
Conversione
Formato
CPU
bit)
Editor
prog.c
Compilatore
linguaggio macchina
Pensati per aiutare i programmatori
Traduzione
Sorgente: linguaggio da cui parte la traduzione
Oggetto: linguaggio in cui si traduce
Prof. Massimo Esposito Elementi di Informatica
prog.o
Editor
Compilazione
La traduzione avviene una volta sola
Velocit di esecuzione
Il programma dipende strettamente dalla
CPU per la quale stato prodotto
prog.c
Compilatore
prog.o
Interpretazione
La traduzione avviene ogni volta che il
Editor
prog.c
Compilatore
librerie
Interazione con il sistema operativo
Gestione dellI/O
prog.o
lib.a
Linker
funz.o
Linker
Assembla tutti gli oggetti e librerie
prog.out
Editor
Loader o Caricatore
Carica in memoria il programma
Attiva il programma
prog.c
Compilatore
Windows
Sorgente: .c / .cpp
Oggetto: .obj
Libreria: .lib
Eseguibile: .exe
prog.o
lib.a
Linker
funz.o
prog.out
Unix
Sorgente: .c / .cpp
Oggetto: .o
Libreria: .a
Eseguibile: .out
Caricatore
Compilatore
$ gcc programma.c
Produce il file eseguibile a.out
Esecuzione
$ esegui
Prof. Massimo Esposito Elementi di Informatica
Utilizzeremo Dev-C++
IDE che funziona da front-end verso il compilatore gcc pienamente compatibile
con lo standard ANSI C
Versione:
Orwell Dev-C++
Sito web:
http://sourceforge.net/projects/orwelldevcpp
Errori pi frequenti
Nella compilazione
Assenza del ";" per chiudere le istruzioni
Mancanza di parentesi () per una funzione senza parametri
Errori dovuti al Case Sensitive
Nel collegamento
Uso di un elemento in un sorgente diverso dal modo in cui definito in un altro sorgente
Nel caricamento
Un programma necessita di pi memoria di quella esistente
Programmazione strutturata
Insieme di regole da seguire per progettare un programma di qualit e da
Qualit
Un compromesso tra obiettivi diversi:
Correttezza
Efficienza
Robustezza
Affidabilit
Usabilit
Estendibilit
Riusabilit
Strutturazione
Leggibilit
Manutenibilit
Modificabilit
Portabilit
Approccio bottom-up
Da moduli elementari a moduli pi complessi passando per integrazioni
successive
Metodo induttivo
Installazione
Attivazione dellambiente da sistema
operativo
Creazione di un nuovo programma
sorgente
Inizio
Start
Elaborazione
Fine
I/O
Selezione a
due vie
End
Predicato
SI
Prof. Massimo Esposito Elementi di Informatica
NO
24
Start
Lettura
a, b
Calcolo
max(a, b)
Scrittura
max(a,b)
End
Prof. Massimo Esposito Elementi di Informatica
25
Start
Start
Lettura
a, b
Lettura
a, b
a>b?
SI
Calcolo
max(a, b)
NO
max = b
max = a
Scrittura
max(a,b)
End
End
Scrittura
max
26
Start
Start
Lettura
a, b
Calcolo
max(a, b)
Scrittura
max(a,b)
End
Lettura
a, b
max = b
SI
a>b?
NO
max = a
End
Scrittura
max
27
28