Le basi della programmazione - "E. Mattei"

Le basi della programmazione
La programmazione
Problemi algoritmi programma
I problemi

Il problema è un quesito che deve avere una risposta
(prepara il caffè, scrivere un tema, calcolare l’equazione,
ec..)
Processo risolutivo
È un insieme di passi da svolgere per giungere alla soluzione del
problema
Figure del processo risolutivo


Risolutore : chi
definisce il
processo
risolutivo
Esecutore : colui che
esegue il
processo risolutivo
descritto dal
risolutore
Il computer

Esegue i passi definiti e
studiati dall’uomo
L’uomo rimane l’elemento
Centrale di tutte le attività
Formalizzazione del problema
È un processo essenziale per raggiungere in ultimo stadio alla soluzione
Del problema
Fasi della formalizzazione del problema :
1.
rigorosa lettura del testo e rielaborazione in caso di ambiguità
2.
Analisi
3.
Obiettivo da raggiungere o soluzione
4.
Evidenziare dati :
1.
espliciti
informazioni da assumere per giungere
alla soluzione
2.
Impliciti
dati disponibili all’inizio del
procedimento
Per risolvere un problema



Individuare le informazioni di partenza
Individuare l’obiettivo da raggiungere
Individuare il processo risolutivo :
Trasformare i dati a disposizione
 Sottoporli a un processo di elaborazione (logico
matematico, ect.)
 Ottenere i dati finali


Verificare la soluzione trovata
Ricerca della soluzione



Conoscere la realtà di interesse, la realtà
che il problema prende in esame
Utilizzare metodi risolutivi già sperimentati
Scomporre il problema in sottoproblemi di
complessità più limitata
Dal problema al programma

Il computer diviene lo strumento per
l’elaborazione dei dati

Fasi di un processo :
1. Immissione dati (input)
2. Trattamento (elaborazione)
3. Emissione (output)
La risoluzione del problema :

Si scompone in passi o azioni

L’azione per essere tale deve avere :



Esecutore
Oggetti sui cui opera l’esecutore
La trasformazione sugli oggetti
 In un ben definito tempo
processo

Le azioni sono :


sequenziali
Elementari cioè non scomponibili
L’insieme delle azioni elementari che si svolgono in modo
Sequenziale prende il nome di
PROCESSO
Storia algoritmo



Proviene dalla matematica
Indica regole o operazioni da compiere
per fare calcoli o risolvere problemi
Deriva dal nome di un algebrista arabo del
IX secolo Al-khuwarizmi
ALGORITMO
Si intende una sequenza finita e ordinata di azioni, univocamente
Interpretabili, ciascuna delle quali deve essere precisamente Definita.
L’ esecuzione fornisce dei risultati di classi di problemi per ogni Valore
di dati forniti in ingresso
Altra definizione
Per algoritmo si intende la descrizione di un insieme finito di istruzioni ,
che devono essere eseguite per portare a termine un dato compito e
per raggiungere un risultato definito in precedenza
Caratteristiche fondamentali
dell’algoritimo







Preciso e non ambiguo
Finito
Generale
Dettagliato (ogni passo corrisponde azioni elementari)
Deterministico
Completo ed esaustivo
Osservabile nei risultati
L’uomo per
comunicare
usa il linguaggio
naturale
Un algoritmo scritto in linguaggio
Comprensibile al computer
Prende il nome di
programma sorgente
L’attività di traduzione
Dell’algoritmo prende il
nome di codice
Lavoro di programmazione

I programmi comprensibili alla macchina


Devono essere scritti in un linguaggio di
programmazione (pascal, vb, c++, java)
la persona in grado di scrivere programmi
comprensibili per la macchina è il
programmatore
Linguaggio di programmazione


È quel linguaggio che viene usato per
tradurre l’algoritmo in una forma
comprensibile all’elaboratore
Il risultato di questa traduzione si chiama
programma
Fase iniziale di programmazione
inizio
Fase di
analisi
Fase di progetto
Fase di realizzazione o
implementazione
Fase di verifica
Problema
analisi
algoritmo
Traduzione linguaggio
(Programma sorgente)
Correzione errori (debugging)
Collaudo (testing)
fine
Il programma

Composto da istruzioni e dati
Le istruzioni rappresentano le azioni
da svolgere sui dati
DATI
PROGRAMMA
ISTRUZIONI
I linguaggi simbolici
o di programmazione

Nel linguaggio dovremo rispettare :

Regole sintattiche = modalità per scrivere le frasi o
istruzioni in modo corretto

Il lessico =

Gli identificatori =
le parole riconosciute dal linguaggio
il nome che il programmatore
assegna ai dati (variabili,
costanti, numeriche alfanumeriche e
logiche)
Rappresentazione degli algoritmi

Grafici

informali
Metodi grafici

I passi dell’algoritmo sono rappresentati
mediante simboli, associati a regole di
interpretazione, rappresentano :
Le istruzioni
 Il flusso dell’elaborazione seguito durante lo
svolgimento

Il metodo grafico più diffuso, è denominato diagramma a blocchi
o di flusso dall’inglese FLOWCHART
Metodi informali

Consiste nel rappresentare i passi risolutivi
del processo di un problema per mezzo di
un linguaggio informale, simile a quello
naturale, detto pseudolinguaggio o
linguaggio per la progettazione di
programmi
Si dice psedocodice l’insieme di frasi scritte nel linguaggio di
Progetto che rappresentano (codificano) le operazioni da compiere
Per la risoluzione del problema
Tipi di dati
Variabili e costanti
variabili


Le variabili sono dei contenitori di dati, che
possono cambiare durante l’ esecuzione
dell’algoritmo
Il valore di una variabile deve :



essere memorizzato in una cella (contenitore) di
memoria
Individuarla attraverso un nome che la identifichi
Definire il suo tipo, ciò permette di stabilire l’insieme
di valori che può assumere e le operazioni che
possono essere effettuate.
Schema di
Nome
variabile
variabile
Contenuto della
variabile
INDIRIZZO
8
Cella di
memoria
costante

Rappresenta un dato fisso che non può
cambiare durante lo sviluppo
dell’algoritmo. Il valore è :


Memorizzato in una cella di memoria
Identificata da un nome simbolico
Nome
costante
Contenuto della
costante
INDIRIZZO
20
Cella di
memoria
Nome
variabile
Aliquota_iva
Contenuto
variabile
20
Cella di
memoria
dati

Possono essere di tipo diverso :




Numerici
Alfanumerici
Logici
Per lavorare correttamente è necessario
dichiarare il loro
tipo
Tipi di dati in Visual basic
Tipo dato
Dimen Descrizione Intervallo
sione
valori
Operazioni
ammesse
Boolean
2 byte
True /false
0/1
Not/ or /and/xor
Byte
1 byte
Numeri positivi
da 0 a 255
0 – 255
+ - * / MOD
Currency
8
Intero con 4
cifre decimali
utile nei calcoli
finanziari
-922337203685477,5808 + - * / MOD ^
+922337203685477,5807
Date
8 byte
Data espressa
con 8 caratteri
e valori ora
1 gen 100 al
31 dic 9999
Double
8 byte
Numeri in
virgola mobile
+ -
* /
MOD
integer
2 byte
Numeri interi
- 32.768 + 32767
+ -
* /
MOD
long
4 byte
Numeri interi
-2.147.483.648
+2.147.483.647
+ -
* /
MOD
single
4 byte
Numeri in
virgola mobile
- + 3,402823E38
+ -
* /
MOD
string
10+2
byte
Valori
alfanumerici
-2.147.483.648
+2.147.483.647
& concatenamento
variant
16 byte
Converte un tipo in
un altro in base
alle necessità
object
4 byte
oggetto
tutte
Riferimento ad un
oggetto
variabili
Ciclo di vita e visibilità
Ciclo di vita delle variabili o lifetime

Ciclo di vita delle variabili è il periodo per il
quale tale variabile resta attiva e utilizza
memoria centrale


Alcune hanno una durata pari all’intera
applicazione
Altre vengono create e distrutte diverse volte
nel ciclo dell’applicazione
Visibilità delle variabili

L’area di visibilità o scope rules è:

È la porzione di codice da cui si può accedere
a tale variabile
Alcune sono private e di solo a una porzione di
codice in cui sono state dichiarate
 Altre sono public ossia visibili a tutto il codice

Programmazione strutturata
Strutture di controllo
algoritmo


La stesura dell’algoritmo risolutivo di un problema è una
fase molto delicata della programmazione
Pertanto :


È necessario stabilire un’insieme di regole necessarie alla
corretta organizzazione del lavoro
Le regole trasformano la programmazione da attività disordinata
e laboriosa in attività sistematica e orientata al raggiungimento
di un buon livello di qualità

Costituisce il metodo di lavoro che va sotto il nome :
Programmazione strutturata
Programmazione struttura

Metodo di strutturazione degli algoritmi,
conforme ad un insieme di regole, che
rendono più facile :



la costruzione
la lettura
La manutenzione
Strutture di controllo

Sono
Sequenziale
 Condizionale o di selezione
 Iterativa o ciclica


La teoria della programmazione strutturata
enuncia il seguente dettato :
Qualsiasi algoritmo può essere scritto utilizzando
Soltanto le tre Strutture di base o fondamentali :
1. Sequenziale
2. Condizionale
3. iterativa
Teorema di Bohm-Jacopini (1966)
Questi 3 modelli organizzativi sono
detti : strutture di controllo

Sequenza
Istruzione
Istruzione
Istruzione
…..
…..
Istruzione

1
2
3
Condizionale o
alternativa
Se condizione
Allora
Istruzione 1
Altrimenti
N
Istruzione 2
Fine se

Ciclica o
ripetizione
Ripeti
istruzione / i
Finchè condizione
Rappresentazione grafica
Strutture di controllo
Struttura sequenziale
Istruzione 1
Istruzione 2
Istruzione 3
Istruzione N
Le istruzioni vengono eseguite
Una di seguito all’altra,
Secondo l’ordine del flow chart
Struttura condizionale/
alternativa
condizione
Istruzione 1
Istruzione 2
Se la condizione è vera viene
Eseguita istruzione 1
Se la condizione è falsa
Viene eseguita istruzione 2
Struttura ciclica / iterativa
Esegue istruzione/i finchè la
Condizione rimane falsa, per
Condizione vera esce dal ciclo
Istruzione/i
F
condizione
V
I linguaggi di programmazione


È il linguaggio che viene utilizzato per
tradurre l’algoritmo in una forma
comprensibile all’elaboratore
Il risultato della traduzione è detta
programma

I moderni linguaggi di programmazione
sono :

Tipo evoluto o ad alto livello
• Utilizzano termini del linguaggio naturale
• Sono più vicini al problema
• Facilitano il lavoro del programmatore
Traduzione dei programmi

Il testo di un programma scritto usando il
linguaggio di programmazione e detto
Sorgente (deve essere tradotto nel linguaggio
macchina)
 La fase di traduzione viene fatta dal programma
traduttore che genera una sequenza di istruzioni
eseguibili

Tipi di traduzione

Interpretazione

compilazione
inteprete

Si dice che un programma sorgente viene
interpretato, quando :


Il programma che prende il nome di
INTERPRETE considera il testo sorgente
istruzione per istruzione, le traduce mentre le
esegue
È consigliato usarlo solo in fase di
progettazione
compilazione



Il programma traduttore è detto compilatore e
trasforma l’intero programma sorgente in
linguaggio macchina, memorizzando in un file i
risultati.
un programma compilato una sola volta può
essere eseguito, senza bisogno di altri interventi
Il risultato della compilazione si chiama
programma oggetto
Fase di link



Alla compilazione deve far seguito la fase
di link = collegamento
Viene svolta da un programma apposito
detto LINKER
Aggiunge al programma compilato i
moduli del compilatore, che realizzano la
le funzioni richieste dai vari comandi, e
collega i dati presenti in M.C.
Programma sorgente
Testo del programma
Controllo della
correttezza Dei termini
Analisi lessicale
Controllo della corretta
Dei costrutti dei
termini
Analisi sintattica
Programma oggetto
Programma
Tradotto in
Linguaggio
Machina
Programma
oggetto
Linking
LINKING
collegatore
Programma
Eseguibile
Programma
eseguibile