Sei sulla pagina 1di 6

2

Algoritmo
Procedimento di risoluzione di un problema
Permette di ottenere un risultato eseguendo
La programmazione una sequenza finita di operazioni elementari
Esempi:
Una ricetta di cucina
Il metodo per calcolare le radici di unequazione di
Ver. 2.4

secondo grado
Le istruzioni per utilizzare il microonde
Ci possono essere pi algoritmi in grado di
risolvere lo stesso problema

2010 - Claudio Fornaro - Corso di programmazione in C

3 4

Algoritmo Programmare
Propriet fondamentali dell'algoritmo: Se esiste un procedimento che:
la sequenza di istruzioni deve essere finita pu essere descritto in modo non ambiguo fino ai
(finitezza); dettagli
la sequenza di istruzioni deve portare ad un conduce sempre all'obiettivo desiderato in un
risultato (efficacia); tempo finito
le istruzioni devono essere eseguibili allora esistono le condizioni per affidare
materialmente (realizzabilit); questo compito a un calcolatore
le istruzioni devono essere espresse in modo non
Si descrive l'algoritmo in questione in un


ambiguo (non ambiguit).
programma scritto in un opportuno linguaggio
importante valutare le risorse utilizzate
comprensibile alla macchina.
(tempo, memoria, ) perch un consumo
eccessivo delle stesse pu pregiudicare la
possibilit stessa di utilizzo di un algoritmo
5 6

Programmare Linguaggi
Il calcolatore sa eseguire molte operazioni di Perch il programmatore possa istruire il
base: somma, sottrazione, AND, ecc. calcolatore sulle operazioni da fare, serve un
Per risolvere un determinato problema si linguaggio noto ad entrambi
combinano queste operazioni in modo Problema:
opportuno Il calcolatore comprende solo sequenze di zeri e
Programmare significa determinare quali uno (ad es. la sequenza 1001001 potrebbe
significare, per un ipotetico calcolatore, fai la
operazioni eseguire e in quale sequenza per somma): linguaggio macchina
raggiungere la soluzione
Il programmatore comprende le parole fai la
somma (mentre 1001001 non significa nulla per
lui): linguaggio umano

7 8

Linguaggio di programmazione Linguaggio di programmazione


Soluzione 1 Soluzione 2
Il programmatore impara il linguaggio Il programmatore impara un linguaggio simile
macchina, ma questo: al linguaggio macchina detto assembly
ha un basso livello di astrazione (scende molto nei Ogni istruzione del linguaggio assembly
dettagli realizzativi e perde la visione di insieme del corrisponde ad unistruzione in linguaggio
problema da risolvere) macchina, ma ha il vantaggio di essere
difficile da ricordare (le istruzioni possono essere mnemonico (es. ADD listruzione per
diverse centinaia)
calcolare una somma)
diverso per ogni piattaforma hardware (ogni tipo
di microprocessore ha il suo set di istruzioni)
9 10

Linguaggio di programmazione Linguaggio di programmazione


Soluzione 2 (Continuazione) Soluzione 3
Il linguaggio assembly: Il programmatore impara un linguaggio di
ha un basso livello di astrazione
programmazione ad alto livello (HLL)
un traduttore complesso ed efficiente lo traduce in
pi facile da ricordare (ad es. per avere una
linguaggio macchina o in assembly
somma invece di scrivere 1001001 si scrive ADD)
ha un alto livello di astrazione (esprime le
viene tradotto in linguaggio macchina da un
operazioni da svolgere senza entrare nei dettagli,
programma relativamente semplice (assembler ) es. A+B calcola la somma di due valori)
che, in linea di massima, sostituisce le istruzioni
pi simile al linguaggio umano e quindi pi facile
assembly con le corrispondenti istruzioni macchina
da ricordare (es. print X potrebbe essere
diverso per ogni piattaforma hardware (sebbene listruzione per visualizzare il valore di X)
possano essere simili)
(quasi) indipendente da piattaforma hardware e
sistema operativo (PC, Mac, Windows, Linux, ecc.),
il traduttore che lo converte per il sistema in uso

11 12

Programma sorgente Traduttore di tipo interprete


Il programmatore sviluppa un programma Le istruzioni del codice sorgente vengono ad
scrivendo in un linguaggio di programmazione una ad una tradotte in linguaggio macchina e
(di alto o basso livello) le operazioni da far subito eseguite dalla CPU
eseguire al calcolatore e le memorizza in un
file detto:
programma Sorgente
programma sorgente somma
somma
codice sorgente stampa
stampa
sorgente
leggi
leggi
calcola
calcola
...
...
13 14

Traduttore di tipo compilatore Differenze


Tutto il codice sorgente viene tradotto in Velocit di esecuzione
linguaggio macchina e memorizzato in un file Ogni volta che linterprete esegue un
detto programma (o file o codice) eseguibile programma, deve attuare la traduzione delle
istruzioni in linguaggio macchina: lento
Il programma compilato gi tradotto e ha
Sorgente Eseguibile quindi una velocit di esecuzione molto
somma 1001001010101
somma 1001001010101 superiore
0010100101010
0010100101010
Il compilatore in genere in grado di produrre
stampa
stampa 1001001010010
1001001010010
leggi
leggi 1010010100101
1010010100101 una traduzione pi efficiente dal punto di vista
calcola
calcola
0101010101011
0101010101011 della velocit di esecuzione del codice
0101001010100
0101001010100 prodotto (oppure della dimensione del codice)
...
... 1001001010010
1001001010010

15 16

Differenze Differenze
Competenze per luso Copyright e gestione della complessit
Eseguire un programma interpretato richiede Linterprete richiede il codice sorgente che
lacquisto e del programma interprete da quindi risulta visibile a chiunque
parte dellutente finale e lacquisizione dello Il programma eseguibile non necessita del
stesso delle competenze necessarie al suo uso sorgente: protezione del copyright
Eseguire un programma compilato non La procedura di compilazione permette di
richiede che un (doppio) click suddividere un programma complesso in pi
Il compilatore viene acquistato solo dal parti, ma pi complessa da gestire
programmatore e solo questi ha la necessit
di avere la competenza necessaria per
utilizzarlo
17 18

Librerie Creazione di un eseguibile


In un HLL il programmatore non ha necessit Il processo di creazione di un eseguibile a
di programmare le operazioni di base (ad es. partire dai sorgenti (build) composto da 2
leggere un numero dalla tastiera, calcolare la fasi:
radice quadrata, visualizzare una parola, ecc.) compilazione: il sorgente viene compilato, ma
Queste operazioni sono state programmate e alcune parti (le operazioni di base) sono ancora
mancanti; viene generato un file intermedio detto
compilate dal produttore del traduttore e sono file oggetto
a disposizione del programmatore sotto forma
linking: il file oggetto e le librerie vengono unite
di funzioni (collegate link) cos da aggiungere al file oggetto
I codici eseguibili (quindi gi tradotti in le parti mancanti e costituire un unico
linguaggio macchina) che realizzano queste file eseguibile
operazioni vengono raggruppati in file detti La fase di link pu creare un eseguibile collegando
librerie (collezioni di funzioni di base) pi file oggetto e pi librerie

19 20

Librerie statiche Librerie statiche


Nella compilazione il codice delle funzioni di Spesso le stesse librerie sono usate da pi
libreria viene inserito nel file eseguibile programmi (es. le operazioni di input/output):
spreco di memoria

File eseguibile
Eseguibile A Eseguibile B Eseguibile C
File oggetto
Oggetto A Oggetto B Oggetto C

File libreria Libreria Libreria Libreria

RAM
RAM
21 22

Librerie dinamiche Librerie dinamiche


Dynamic Link Libraries (DLL) Quando viene eseguito un programma che
Shared Libraries, Shared Objects usa quella libreria, questa viene caricata in
Nella compilazione il codice delle funzioni di memoria, ma utilizzabile anche dagli altri
libreria NON inserito nel file eseguibile, programmi
viene invece indicato il nome del file che lo
contiene Eseguibile A Eseguibile B Eseguibile C
Oggetto A Oggetto B Oggetto C
File eseguibile

File oggetto File libreria


Libreria
RAM
RAM

23 24

Librerie dinamiche Interfacce utente


Quando viene eseguito un altro programma Linterazione tra utente e programma pu
che necessita di quella libreria, questa gi avvenire tramite:
caricata in memoria e pronta alluso: il Interfacce a carattere (console mode): vengono
programma impiega meno tempo a partire visualizzate e immesse solo righe di testo
Se una delle funzioni della libreria deve essere Interfacce grafiche (GUI Graphic User Interface):
vengono visualizzati pannelli, bottoni, caselle di
aggiornata (es. nuova versione), sufficiente
testo, immagini, ecc.
sostituire la DLL mentre il programma in s
non viene modificato Molti linguaggi dispongono di entrambe le
interfacce
Se la DLL viene sostituita da unaltra con
codice contenente ad esempio un virus, il
lancio del programma esegue il virus!