Programmazione Procedurale in Linguaggio C++ Concetti Introduttivi Parte 2 Linguaggi di Programmazione versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca – Università della Basilicata – [email protected] Concetti Introduttivi: Linguaggi >> Sommario Sommario Linguaggi di Programmazione Sintassi Semantica Ciclo di Vita del Programma Concetto di Algoritmo Compilazione e Caricamento Metodologia di Programmazione In Pratica G. Mecca - Programmazione Procedurale in Linguaggio C++ 2 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi per impartire istruzioni al processore 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 3 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Evoluzione dei Linguaggi Esistono numerosi linguaggi differenti per funzionalità e tecnologia metà anni ’60 BASIC metà anni ’50 FORTRAN 1974 C 1991 VB 1968 Pascal Linguaggi di Programmazione Procedurale Strutturata 1990 C++ Linguaggi Ibridi G. Mecca - Programmazione Procedurale in Linguaggio C++ 1994 Java 2000 C#, VB.NET Linguaggi Orientati agli Oggetti 4 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggi di Programmazione programmazione procedurale C sostanzialmente equivalente ma più semplice del C “clean C” C++ programmazione orientata agli oggetti G. Mecca - Programmazione Procedurale in Linguaggio C++ Java, C#, VB.NET 5 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggi di Programmazione Attenzione i linguaggi della stessa famiglia sono normalmente basati sugli stessi concetti Differenze alcuni linguaggi forniscono funzionalità che altri non hanno “sintassi” “semantica” G. Mecca - Programmazione Procedurale in Linguaggio C++ 6 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggio di Programmazione Simile al linguaggio naturale sintassi e semantica 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 ;” G. Mecca - Programmazione Procedurale in Linguaggio C++ 7 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggio di Programmazione Processo di compilazione il codice del programma (codice sorgente) viene sottoposto ad analisi sintattica viene trasformato in codice eseguibile dal processore (codice oggetto) Compilatore analisi lessicale: divide il codice in frammenti detti “token” (parole chiave, nomi ecc.) analisi sintattica: verifica la correttezza G. Mecca - Programmazione Procedurale in Linguaggio C++ 8 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggio di Programmazione 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”; Attenzione sintassi e semantica dei linguaggi di programmazione sono rigorose G. Mecca - Programmazione Procedurale in Linguaggio C++ 9 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggio di Programmazione Attenzione ci sono due diverse nozioni di correttezza Correttezza Sintattica assenza di errori sintattici il programma è eseguibile Correttezza Semantica (o Logica) implica la correttezza sintattica il prog. risolve correttamente il problema G. Mecca - Programmazione Procedurale in Linguaggio C++ 10 Concetti Introduttivi: Linguaggi >> Linguaggi di Programmazione Linguaggio di Programmazione Verifica della correttezza sintattica compilazione consente di eliminare gli errori sintattici 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 G. Mecca - Programmazione Procedurale in Linguaggio C++ 11 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Ciclo di Vita di un Programma Programma sequenza di istruzioni che risolve un problema di calcolo Per programmare è necessario conoscere almeno un linguaggio ma questo non basta è necessario conoscere “tecniche”, ovvero “metodologie” di programmazione G. Mecca - Programmazione Procedurale in Linguaggio C++ 12 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Dal Problema al Programma Problema di Calcolo -dati in ingresso -risultati attesi Es: lavare i panni Calcolatore dati in ingresso Algoritmo Es: strategia di lavaggio (colore, delicati) Es: lavatrice G. Mecca - Programmazione Procedurale in Linguaggio C++ Programma dati in uscita Es: programmi di lavaggio 13 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Algoritmo Strategia di soluzione del problema deve essere concretamente eseguibile dal calcolatore; 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” G. Mecca - Programmazione Procedurale in Linguaggio C++ 14 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Programma Scrittura codice sorgente Compilazione verifica della correttezza sintattica codice “oggetto” Collegamento ogni programma richiede codice esterno codice eseguibile Esecuzione verifica degli errori logici G. Mecca - Programmazione Procedurale in Linguaggio C++ 15 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Ciclo di Vita di Un Programma Analisi del Problema Scelta dell’ Algoritmo Scrittura del Programma codice sorgente errori nella strategia Compilazione errori e Collegamento sintattici errori logici codice eseguibile Verifica G. Mecca - Programmazione Procedurale in Linguaggio C++ Uso e Manutenzione 16 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Compilazione e Collegamento codice sorgente es:primo.cpp Compilazione Compilatore librerie esterne precompilate es: iostream codice oggetto (ling. macchina) es: primo.obj Collegamento codice eseguibile es: primo.exe Collegatore (“linker”) G. Mecca - Programmazione Procedurale in Linguaggio C++ 17 Concetti Introduttivi: Linguaggi >> Ciclo di Vita di un Programma Metodologia di Programmazione 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 La metodologia è importante altrettanto che la conoscenza del linguaggio G. Mecca - Programmazione Procedurale in Linguaggio C++ 18 Concetti Introduttivi: Linguaggi >> In Pratica In Pratica E’ necessario disporre di vari strumenti Scrittura del programma editor di testi (es: Blocco Note o TextPad) Compilatore e Collegatore Compilatore Borland BCC 5.5 (>> sito) Compilatore FORTRAN FTN77 (>> sito) si utilizzano dalla finestra del DOS G. Mecca - Programmazione Procedurale in Linguaggio C++ 19 Concetti Introduttivi: Linguaggi >> In Pratica In Pratica Il Primo Passo eseguire le installazioni di tutti gli strumenti configurare il sistema per l’utilizzo degli strumenti Configurazione di Windows abilitare la visualizzazione delle estensioni Risorse del Computer >> Strumenti >> Opzioni Cartella >> Visualizzazione >> Nascondi le estensioni >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 20 Concetti Introduttivi: Linguaggi >> In Pratica Installazioni 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 Nuova classe di documenti: FORTRAN >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 21 Concetti Introduttivi: Linguaggi >> In Pratica Installazioni Installazione del Compilatore Borland scaricare il file dal sito corrispondente eseguire la procedura di installazione 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 >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 22 Concetti Introduttivi: Linguaggi >> In Pratica Installazioni 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” >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 23 Concetti Introduttivi: Linguaggi >> In Pratica Un Semplice Programma // Primo programma #include <iostream.h> void main () { cout << "Primo programma" << endl; } >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 24 Concetti Introduttivi: Linguaggi >> In Pratica Borland BCC 5.5 G. Mecca - Programmazione Procedurale in Linguaggio C++ 25 Concetti Introduttivi: Linguaggi >> In Pratica Installazioni Installazione del Compilatore Salford scaricare il file dal sito corrispondente eseguire la procedura di installazione Post-configurazione configurare la variabile di ambiente PATH su Win2000/XP: Pannello di Controllo >> Sistema >> Variabili di Ambiente aggiungendo c:\win32apps\salford >> G. Mecca - Programmazione Procedurale in Linguaggio C++ 26 Concetti Introduttivi: Linguaggi >> In Pratica Un Semplice Programma in FORTRAN C---- Primo programma program primo write (*,*) 'Primo programma' stop end G. Mecca - Programmazione Procedurale in Linguaggio C++ 27 Concetti Introduttivi: Linguaggi >> In Pratica Salford FTN77 G. Mecca - Programmazione Procedurale in Linguaggio C++ >> 28 Concetti Introduttivi: Linguaggi >> Sommario Riassumendo Varie tecnologie per la programmazione ci concentriamo sulla prog. procedurale sintassi e semantica Ciclo di Vita del Programma Problema-Algoritmo-Programma Compilazione e Collegamento Importanza della Metodologia Utilizzo degli Strumenti (ATTENZIONE) G. Mecca - Programmazione Procedurale in Linguaggio C++ 29 Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons AttributionShareAlike 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. 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. G. Mecca - Programmazione Procedurale in Linguaggio C++ 30