Linguaggi
di programmazione
Problema
Algoritmo
Programma
Progettista
Progetto
Esecutore
Comittente
Programmatore
Programma
Computer
Utente
Dal problema
all’algoritmo
•
•
•
•
•
•
•
•
•
Problema
Risolutore ed esecutore
Algoritmo
Flusso di esecuzione
Memoria
Automi
Calcolo automatico
Macchine di Turing
Proprietà degli algoritmi
Problema
(Teorema di Pitagora)
• Stato iniziale
– Ciò che è rilevabile prima di iniziare
(i due cateti)
• Stati intermedi
– (i quadrati dei due cateti)
• Stato finale
– (l’ipotenusa)
Problema
Fasi
analisi
progettazione
verifica
della soluzione
specifica attraverso
istruzioni le azioni da
svolgere per passare
dallo stato iniziale agli
stati intermedi ed ai
risultati finali
Risolutore ed esecutore_1
• Risolutore:
– ricerca e definisce le istruzioni che,
inteprerate da un esecutore, partendo dai dati
iniziali conducono ai dati finali
• Esecutore:
– interperta le istruzioni ed eseguendole
definisce le azioni da compiere per giungere
al risultato finale
Risolutore ed esecutore_2
Risolutore
Istruzioni
Linguaggio
Esecutore
azioni
Dati iniziali
Dati finali
dati intermedi
Algoritmo
Insieme delle regole che consentono la risoluzione di un
determinato problema
Procedura effettiva composta da istruzioni che, a partire
da dati conosciuti, ottengano i risultati desiderati
• Sequenza di istruzioni
• Tipi di istruzioni:
– operative
– di controllo decisionale o di selezione
Flusso di esecuzione
istruzione1
passo1
Flusso
istruzione1
istruzione2
passo2
istruzione2
…………..
Memoria
dati iniziali
dati intermedi
dati finali
istruzioni
Memoria
Automa
Esegue in modo automatico una sequenza di azioni predefinite
ingressi
automa
uscite
stati interni dell’automa
4
2
ingressi
uscite
1
3
Calcolo automatico
Macchina di Turing - MdT
Meccanismo di
controllo
Testina di lettura/scritura
nastro
Proprietà degli algoritmi
Algoritmo
Esecutore
- il numero di istruzioni è finito
- le istruzioni che è in grado
- le istruzioni devono poter
essere eseguibili dall’esecutore
- ogni istruzione deve poter
essere eseguita in un tempo finito
di eseguire sono in nunero finito
- ha memoria
- il calcolo avviene in passi discreti
- la memoria non è limitata a priori
- il numero di passi di esecuzione
non è limitato a priori
- il calcolo non può essere
probabilistico
- sono ammesse esecuzioni
Dati iniziali
- il numero non è limitato a priori
con un numero di passi finito
Dati finali
Linguaggi algoritmici
•
•
•
•
•
Caratteristiche del linguaggio algoritmico
Variabili. Tipo di dato
Diagramma a blocchi. Tipi di blocchi
Programazione strutturata
Pseudolinguaggio
Caratteristiche del linguaggio
algoritmico
•
•
non ambigui
capacità di esplicitare il flusso di esecuzione delle istruzioni
Categorie delle istruzioni:
- operative
- input/output
- decisionali
Variabili
•
•
•
•
•
•
Variabile == una zona di memoria atta a contenere un dato
Identificatore == nome della zona di memoria
Memoria dei dati == insieme delle variabili
Assegnamento == associare a una variabile un valore
Tipo di dato: definisce l’insieme dei valori che la variabile può assumere
e l’insieme delle operazioni ammesse sui dati
Diagramma a blocchi
Tipi di blocco
inizio
input / output
operativi
decisionali
fine
Programmazione strutturata
Struttura
Fondamentali strutture di controllo del flusso
• sequenza
• selezione
• ripetizione
Pseudolinguaggio
Un pseudolinguaggio o linguaggio di progetto consente la
rappresentazione o pseudocodifica degli algoritmi utilizzando un
numero ristretto di termini a cui sono attribuiti un significato univoco
e precise regole di composizione
Parole chiave:
INIZIO, FINE, A, ALLORA, ALTRIMENTI, CASO, DA, DI, ESEGUI,
FINCHE’, FINE, INIZIO, MENTRE, PASSO, PER, RIPETI, SE
Esempio:
INIZIO
chiedi (base, altezza)
leggi (base, altezza)
area
scrivi (area)
FINE
base * altezza
Dall’algoritmo
al programma
Evoluzione dei linguaggi
•
•
•
•
•
•
Linguaggi di programmazione
Linguaggio macchina
Linguaggi assembler
Linguaggi ad alto livello
Linguaggi orientati ad oggetti
Traduttori, compilatori, interpreti
Linguaggi di programmazione
Uomo
Linguaggi ad alto livello
C++, Visual Basic
Linguaggi a basso livello
Assembler, linguaggi macchina
Microlinguaggi
Hardware
Linguaggi macchina
Programma (codice oggetto):
sequenza di cifre binarie che codificano le istruzioni e i dati
Le istruzioni sono strettamente legate all’architettura dell’elaboratore
Codice operativo
operando
0000010011011011
0000000001101010
Esempio di programma:
0000000000010101
0000000000010101 preleva il contenuto
della cella di memoria di indirizzo 84
0000000000011111
0000000001011110 sommalo al valore 639
Linguaggi assembler
Programma (codice mnemonico)
Esempio:
CARICA
84
preleva il contenuto della cella di memoria
di indirizzo 84
SOMMA
639
sommalo al valore 639
traduttore
Assembler
Linguaggio macchina
Linguaggi ad alto livello
Programma: le istruzioni utilizzano simboli matematici e
seguono il modo di ragionare dell’uomo
traduttore
Linguaggi ad alto livello
Linguaggio macchina
I più noti:
COBOL
COmmon Business Oriented Language
per applicazioni di tipo gestionale
FORTAN
FORmula TRANslator
per applicazioni di tipo scientifico
PASCAL
orientato a scopi didattici
C
utilizzato da progettatori di programmi per la gestione dell’elaboratore
Linguaggi orientati ad oggetti
OOP Object Oriented Programmimng
Consentono di modellare, in modo più naturale per l’uomo, gli elementi della realtà che deve
essere rappresentata nella soluzione del problema
Un oggetto è un elemento concreto definito dalle sue caratteristiche e dai suoi
comportamenti.
Esempio:
Il cittadino Paolo Rossi che vive a Roma è definito
in base alle caratteristiche di:
essere nato a Roma nel 1990, di risiedere in Via Nomentana al n. 34
e alle scelte di:
trasferisci in Via Milano al n. 50,
sposarsi con Maria Bianchi e avere un figlio
I piu famosi:
C++ estensione del linguaggio C
Java
Traduttori, compilatori, interpreti
Linguaggio Assembler
Codice mnemonico
Codice eseguibile
Assemblatore
Codice oggetto
Linguaggio ad alto livello
Codice sorgente
Codice eseguibile
Compilatore
Codice oggetto
Fase di
Codice sorgente
Fase di
compilazione
Codice oggetto
Interprete
Codice sorgente
Compilazione + esecuzione
esecuzione
Il Visual Basic
Ha origine dal linguaggio BASIC (Beginners Allpurpose Symbolic Instruction Code) ovvero
linguaggio adatto ai principianti e a tutti gli scopi.
Il termine Visual indica che il programma si
sviluppa in un ambiente grafico dove utilizza i
classici elementi quali le finestre, i pulsanti,
caselle, ecc.
Ambiente di programmazione
•
•
Le applicazioni software create con VB sono realizzate con un progetto
Tipi di progetto:
–
–
–
–
–
–
–
•
•
•
•
Form
Controlli
Moduli
Finestre
–
–
–
–
–
•
Standard.exe
Active.exe
ActiveX.DLL
ActiveX Controls
ActiveX Document
Add-in files
VB Application Wizard
del Progetto
delle Proprietà
di Disposione form
Esecuzione immediata
del Codice
Casella degli strumenti
Oggetti dell’interfaccia grafica
Form
Casella di testo
bottone
Codice
icona
etichetta
(Procedure
o
Form
Funzioni)
modulo
Procedura
Dichiarazione delle variabili
Progetto (.VBP): insieme di form (.FRM) e di moduli (.BAS)
Il codice
• Insieme di istruzioni del linguaggio
• Istruzioni organizzate come unità logiche in
routine:
– Sub (Private/Public)
– Function
• Finestra del codice
– lista degli oggetti
– lista delle Routine
• Formattazione automatica
Caratteristiche del linguaggio_1
•
•
•
•
•
•
•
istruzione ‘commento
istruzione : istruzione (sulla stessa riga)
istruzione_continua (anche su più righe)
argomenti (di Sub e Function) separati da ,
aiuto F1
assegnazione ‘nome_variabile = valore’
nome variabile: max 40 caratteri (iniziano
con una lettera)
Caratteristiche del linguaggio_2
Tipo di dato
Dimensione
Intervallo
Byte
1 byte
da 0 a 255
Boolean
2 byte
True e False
Integer
2 byte
da -32766 a 32767
Long
4 byte
da -2147483648 a 2147483647
Single
4 byte
virgola mobile a precisione semplice
Double
8 byte
virgola mobile a precisione doppia
Date
8 byte
Da 1 gennaio 1000 a 31 dicembre 9999
String
lunghezza stringa
Da 1 a circa 65400
Carattere
Tipo di dato
%
Integer
&
Long
!
Single
#
Double
$
String
suffissi tipo di variabile