G. Mecca – Università della Basilicata – mecca@unibas.it
Programmazione Procedurale in Linguaggio C++
Concetti Introduttivi Parte 2
Linguaggi di Programmazione
versione 2.2
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
2
Sommario
m
Linguaggi di Programmazione
ðSintassi e Semanticam
Ciclo di Vita del Programma
ðConcetto di AlgoritmoðCompilazione e Caricamento ðMetodologia di Programmazione
m
Utilizzo degli Strumenti
m
Appendice: Strumenti per il FORTRAN
Concetti Introduttivi: Linguaggi >> Sommario
G. Mecca - Programmazione Procedurale in Linguaggio C++ 3
Linguaggi di Programmazione
m
Linguaggi per impartire istruzioni al processore
m
Programma
ðsequenza di istruzioni
ðnormalmente pensato per risolvere un problema di calcolo
ðal programma vengono forniti dei dati
ðil programma calcola eseguendo le istruzioni ðil programma restituisce i risultati
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
Linguaggi Orientati agli Oggetti Linguaggi
Ibridi Linguaggi di
Programmazione Procedurale
Evoluzione dei Linguaggi
m
Esistono numerosi linguaggi
ðdifferenti per funzionalità e tecnologia
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
metà anni ’50 FORTRAN
metà anni ’60 BASIC
1968 Pascal
1974 C
1990 C++
1994 Java
2000 C#, VB.NET 1991
VB anni ‘60
COBOL
G. Mecca - Programmazione Procedurale in Linguaggio C++ 5
Linguaggi di Programmazione
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
C
C++
Java, C#
“clean C”
programmazione procedurale
programmazione orientata agli oggetti
linguaggio di questo corso - sostanzialmente equivalente ma più semplice del C
ATTENZIONE al linguaggio di riferimento
6
Linguaggi di Programmazione
m
Attenzione
ði linguaggi della stessa famiglia sono normalmente basati sugli stessi concetti
m
Differenze
ðalcuni linguaggi forniscono funzionalità che altri non hanno
ð“sintassi”
ð“semantica”
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 7
Sintassi e Semantica
m
Simile al linguaggio naturale
ðsintassi e semanticam
Sintassi
ð“grammatica” del linguaggio
ðinsieme delle regole che stabiliscono quali frasi (programmi) sono corretti
ðin Italiano: “maiuscola dopo il punto”
ðin C++: “le istruzioni si concludono con ;”
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
Sintassi e Semantica
m
Semantica
ð“significato” del linguaggio
ðinsieme delle regole che stabiliscono come il calcolatore esegue i programmi corretti
ðin italiano: “andrò è un’azione nel futuro”
ðin C++: cout << “Ciao”;
m
Attenzione
ðsintassi e semantica dei linguaggi di programmazione sono rigorose
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 9
Sintassi e Semantica
m
Attenzione
ðci sono due diverse nozioni di correttezza
m
Correttezza Sintattica
ðassenza di errori sintattici ðil programma è eseguibilem
Correttezza Semantica (o Logica)
ðimplica la correttezza sintatticaðil prog. risolve correttamente il problema
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
ATTENZIONE al concetto di
correttezza
10
Sintassi e Semantica
m
Verifica della correttezza sintattica
ðviene verificata dal compilatoreðconsente di eliminare gli errori sintattici
m
Verifica della correttezza semantica
ðesecuzione e “test” del programmaðprove di funzionamento per controllare che il programma si comporti correttamente
ðprocesso più complesso e delicato
Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 11
Ciclo di Vita di un Programma
m
Per programmare
ðè necessario conoscere almeno un linguaggio (sintassi e semantica)
m
Ma questo non basta
ðil processo di sviluppo del software è complesso
ðè necessario un metodo (ovvero una
“metodologia”) per affrontare questa complessità
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
Ciclo di Vita di un Programma
m
Il punto di partenza
ðla descrizione del problema, normalmente fornita in linguaggio naturale
ðè opportuno analizzarla accuratamente
m
Il punto di arrivo
ðl’applicazione correttamente funzionante
m
Un passo intermedio fondamentale
ðconcepire una strategia per la soluzione del problema
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
G. Mecca - Programmazione Procedurale in Linguaggio C++ 13
Il Concetto di Algoritmo
m
Algoritmo
ðstrategia per la soluzione del problema
m
Il problema centrale
ðcapito il problema, decidere attraverso quale sequenza di passi costruire la soluzione ðè un problema ricorrente, che capita in molti
altri contesti
m
Esempio: lavare i panni
Concetti Introduttivi: Linguaggi >> Il Concetto di Algoritmo
14
Il Concetto di Algoritmo
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
Problema di Calcolo
-dati in ingresso -risultati attesi Es: lavare i panni
Tecnologia
Algoritmo Programma
dati in ingresso
dati in uscita
Es: lavatrice
Es: strategia di lavaggio (colore, delicati)
Es: programmi di lavaggio
G. Mecca - Programmazione Procedurale in Linguaggio C++ 15
Il Concetto di Algoritmo
m
Strategia di soluzione del problema
ðdeve essere concretamente eseguibileusando la tecnologia disponibile;
es: “separa i bianchi dai colorati”
ðdeve essere corretta
es: “lava bianchi e colorati a 60 gradi”
ðdeve essere efficiente, ovvero produrre la soluzione utilizzando le minori risorse possibili (es: tempo, memoria)
es: “lava ciascun capo separatamente”
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
Ciclo di Vita di un Programma
m
Avendo concepito l’algoritmo
ðè possibile procedere alla scrittura del codice
m
Codice sorgente
ðistruzioni del linguaggio di programmazione ðnon è direttamente eseguibile dal processore
m
Linguaggio macchina
ðlinguaggio di comandi eseguibili dal processore (molto semplici)
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
G. Mecca - Programmazione Procedurale in Linguaggio C++ 17
Ciclo di Vita di un Programma
m
Processo di compilazione
ðverifica della correttezza sintattica ðtrasforma il codice sorgente in codice
“oggetto”
m
Processo di collegamento
ðcollega il codice oggetto a quello delle
“librerie” esterne (es: op. matematiche) ðproduce il codice eseguibile completo
dell’applicazione
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
18
Ciclo di Vita di un Programma
m
A questo punto
ðl’applicazione è eseguibile
ðè necessario verificarne la correttezza logica
m
Fase di test
ðesecuzione ripetuta dell’applicazione su dati di test
ðper verificarne il funzionamento
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
G. Mecca - Programmazione Procedurale in Linguaggio C++ 19
Ciclo di Vita di Un Programma
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
Analisi del Problema
Scelta dell’
Algoritmo
Scrittura del Programma
Compilazione e Collegamento
Verifica Uso e
Manutenzione errori
sintattici
errori logici errori
nella strategia
codice sorgente
codice eseguibile ATTENZIONE
queste fasi non si svolgono “in cascata”
Compilazione e Collegamento
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
Compilazione codice
sorgente es:primo.cpp
Collegamento codice oggetto (ling. macchina) es: primo.obj librerie
esterne precompilate es: iostream
Compilatore
Collegatore (“linker”)
codice eseguibile es: primo.exe
G. Mecca - Programmazione Procedurale in Linguaggio C++ 21
Metodologia di Programmazione
m
Metodo per affrontare il ciclo di vita
ðpassi e tecniche per analizzare il problema ðpassi e tecniche per scegliere l’algoritmo ðpassi e tecniche per scrivere il codice ðpassi e tecniche per verificare il codice ðpassi e tecniche per manutenere il codice
m
La metodologia è importante
ðaltrettanto che la conoscenza del linguaggio
Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma
22
Utilizzo degli Strumenti
m
E’ necessario disporre di vari strumenti
m
Scrittura del programma
ðeditor di testi (es: Blocco Note o TextPad)
m
Compilatore e Collegatore
ðCompilatore Borland BCC 5.5 – e relativo collegatore
ðcollegamenti sul sito del corso (>>) ðsi utilizzano dalla finestra del DOS
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
G. Mecca - Programmazione Procedurale in Linguaggio C++ 23
Utilizzo degli Strumenti
m
Il Primo Passo
ðeseguire le installazioni di tutti gli strumenti ðconfigurare il sistema per l’utilizzo degli
strumenti
m
Configurazione di Windows
ðabilitare la visualizzazione delle estensioni ðRisorse del Computer >> Strumenti >>
Opzioni Cartella >> Visualizzazione >>
Nascondi le estensioni
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
>>
Installazioni
m
Installazione di TextPad
ðscaricare il file dal sito corrispondente ðeseguire la procedura di installazione ðconfigurare le opzioni di visualizzazione
Configura >> Preferenze
ðFile: estensione predefinita vuota ðVisualizza: numero righe
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
G. Mecca - Programmazione Procedurale in Linguaggio C++ 25
Installazioni
m
Installazione del Compilatore Borland
ðscaricare il file dal sito corrispondente ðeseguire la procedura di installazionem
Post-configurazione
ðconfigurare la variabile di ambiente PATH per rendere localizzabile il compilatore ðsu Win2000/XP: Pannello di Controllo >>
Sistema >> Variabili di Ambiente
aggiungendo il valore c:\Borland\bcc55\bin
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
>>
26
Installazioni
m
Post-configurazione (continua)
ðconfigurare i parametri per eseguire il compilatore ed il collegatore
ðcartella delle librerie di sistema e dei file di inclusione
ðfile di configurazione bcc32.cfg nella cartella bin (vedi il file README.txt)
ð-I”c:\borland\bcc55\Include”
-L”c:\borland\bcc55\Lib”
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
>>
G. Mecca - Programmazione Procedurale in Linguaggio C++ 27
Un Semplice Programma
// Primo programma
#include <iostream.h>
void main () {
cout << "Primo programma" << endl;
}
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
>>
Borland BCC 5.5
Concetti Introduttivi: Linguaggi >> Utilizzo degli Strumenti
G. Mecca - Programmazione Procedurale in Linguaggio C++ 29
Riassumendo
m
Varie tecnologie per la programmazione
ðci concentriamo sulla prog. procedurale ðsintassi e semanticam
Ciclo di Vita del Programma
ðProblema-Algoritmo-Programma ðCompilazione e Collegamento ðImportanza della Metodologiam
Utilizzo degli Strumenti (ATTENZIONE)
Concetti Introduttivi: Linguaggi >> Sommario
30
Appendice: Strumenti per il FORTRAN
m
FORTRAN
ðlinguaggio di programmazione procedurale ðsimile al “clean C” nell’impostazione
m
Compilatore e Collegatore
ðCompilatore FORTRAN FTN77 (>> sito) ðanche questo si utilizza dalla finestra del
DOS
Concetti Introduttivi: Linguaggi >> Appendice: Strumenti per il FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 31
Appendice: Strumenti per il FORTRAN
m
Installazione del Compilatore Salford
ðscaricare il file dal sito corrispondente ðeseguire la procedura di installazionem
Post-configurazione
ðconfigurare la variabile di ambiente PATH su Win2000/XP: Pannello di Controllo >>
Sistema >> Variabili di Ambiente ðaggiungendo c:\win32app\salford
Concetti Introduttivi: Linguaggi >> Appendice: Strumenti per il FORTRAN
>>
Un Semplice Programma in FORTRAN
C---- Primo programma
program primo
write (*,*) 'Primo programma'
stop end
Concetti Introduttivi: Linguaggi >> Appendice: Strumenti per il FORTRAN
G. Mecca - Programmazione Procedurale in Linguaggio C++ 33
Salford FTN77
Concetti Introduttivi: Linguaggi >> Appendice: Strumenti per il FORTRAN
>>
34
Appendice: Strumenti per il FORTRAN
m
Nota
ðnella configurazione di TextPad può essere utile definire una nuova classe di documenti ðper l’evidenziazione della sintassi
m
Nuova classe FORTRAN
ðestensione dei file *.FORðfile di evidenziazione della sintassi f.syn
Concetti Introduttivi: Linguaggi >> Appendice: Strumenti per il FORTRAN
>>
G. Mecca - Programmazione Procedurale in Linguaggio C++ 35
Termini della Licenza
m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Termini della Licenza
m Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.