Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini
Sommario Il Linguaggio I Linguaggi di Linguaggi a Basso Livello Linguaggi ad Alto Livello Linguaggi Imperativi Sintassi e Semantica Esecuzione di un Programma Traduttori Interpreti e Compilatori Il Programma Dati Variabili, Tipi di Dato, Costanti Istruzioni Esercizio Inversione delle Cifre di un Intero 2/24
Il Linguaggio Insieme di sequenze di simboli appartenenti ad un definito lessico, giustapposti in sequenza secondo una opportuna grammatica (o sintassi) Messaggio sequenza di frasi espresse in un linguaggio, analizzabile dal punto di vista Sintattico: si verifica la forma linguistica in cui è codificato (Sintassi) Semantico: si individua il significato associato alla forma linguistica (semantica) 3/24
I Linguaggi di Un linguaggio di programmazione è una notazione formale per descrivere algoritmi Un programma è la descrizione di un algoritmo in un particolare linguaggio di programmazione Possono essere A basso livello Più vicini alla struttura reale della macchina ed al suo linguaggio Ad alto livello Più vicini al linguaggio dei problemi Più facili da comprendere per l uomo Portabili, utilizzabili senza modifiche, su diversi tipi di macchine 4/24
I Linguaggi di linguaggi a basso livello Tutti i linguaggi di programmazione sono basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina I linguaggi macchina forniscono solo le operazioni che l'elaboratore può eseguire: Operazioni molto elementari. Diverse per ogni processore. Scritte in linguaggio binario Sono più orientati alla macchina che ai problemi da trattare. 5/24
I Linguaggi di linguaggi a basso livello Una prima evoluzione sono i linguaggi assemblativi che sostituiscono i codici binari con codici simbolici. ancora orientati alla macchina e non ai problemi più immediati da utilizzare definiscono variabili, simboli linguaggi macchina e i linguaggi assemblativi sono detti linguaggi a basso livello. 6/24
I Linguaggi di linguaggi ad alto livello I linguaggi ad alto livello permettono: La descrizione del problema in modo intuitivo, dimenticandosi che verranno eseguiti da un calcolatore. Una astrazione rispetto al calcolatore su cui verrà eseguito il programma. Ma devono essere tradotti in linguaggio macchina Esistono diversi tipi di linguaggi ad alto livello: Linguaggi imperativi Il C, Fortran, Pascal, Cobol e Basic Linguaggi logici Linguaggi funzionali Linguaggi orientati agli oggetti Paradigma di differente 7/24
Sintassi e Semantica Sintassi L insieme delle regole che indicano quali sono le istruzioni formali permesse Poche, semplici, rigide Il programma va accuratamente controllato dal punto di vista formale per garantire la correttezza sintattica Semantica Riguarda il contenuto informativo ed il significato di una frase Il lavoro più grosso è verificare e controllare il programma sul fronte logico per garantire la correttezza a livello semantico Connessa all analisi del problema e l algoritmo 8/24
Esecuzione di un Programma L'esecuzione di un programma scritto con un linguaggio ad alto livello è preceduta dalla sua traduzione in linguaggio macchina Occorre un traduttore programma che traduce in linguaggio macchina programmi in un linguaggio di livello superiore Analizza i comandi e verifica che siano scritti (codificati) in un linguaggio a lui noto Correttezza sintattica Attribuisce alle sequenze di simboli l opportuno significato in modo da eseguire le giuste azioni 9/24
Esecuzione di un Programma Interpreti e Compilatori Interpreti Traducono ed eseguono immediatamente ogni singola istruzione del programma sorgente Dopo l analisi sintattica, la traduzione procede passo passo con l esecuzione Traduzione ed esecuzione istruzione per istruzione Ogni istruzione tradotta tante volte quante viene eseguita Compilatori Traducono l intero programma (senza eseguirlo) e producono in uscita il programma in linguaggio macchina Ogni istruzione è tradotta una sola volta 10/24
Il Programma Traduzione, in un linguaggio comprensibile alla macchina, della procedura di soluzione, con indicazioni sui dati di ingresso e di uscita Comunica al calcolatore istruzioni operative Quali dati di ingresso deve trattare Come deve operare su questi dati Quali dati deve dare come risultato 11/24
Dati Entità su cui lavora il problema Costanti Variabili Nei linguaggi ad alto livello il programmatore può ignorare i dettagli della rappresentazione 12/24
Le Variabili Nome simbolico per denotare un area di memoria e, tramite essa, il valore contenuto Caratterizzate da Un nome Identificatore Un valore Un tipo Attributo che specifica l insieme di valori che la variabile può assumere Rappresenta una locazione di memoria del computer, contraddistinta da uno specifico indirizzo, che contiene il valore su cui applicare le istruzioni del programma Un identificatore denota una coppia Posizione di memoria Quantità in essa contenuta Una limitazione nel rappresentare dati di tipo numerico o alfanumerico viene dalle dimensioni limitate della memoria 13/24
I Tipi di Dato Attributo di una variabile, che ne specifica ed individua: L insieme dei valori che può assumere L insieme di operazioni effettuabili su di essa Il modo con cui ci si può riferire ad essa I moderni linguaggi di programmazione mettono a disposizione Un insieme di tipi di uso più comune Tipi predefiniti: interi, Reali, Logici, Caratteri Gli strumenti per poter costruire altri tipo di dati 14/24
Le Costanti Dati il cui valore viene definito inizialmente e non varia per tutta l esecuzione del programma Accessibili solo in lettura Garanzia nell uso Impossibile eseguire assegnazioni sugli identificatori corrispondenti 15/24
Istruzioni Un linguaggio di programmazione deve poter disporre di: Istruzioni dichiarative Consentono di definire le entità del problema in termini di variabili nel programma Istruzioni di ingresso Permettono all esecutore di conoscere informazioni fornite dall esterno Istruzioni di uscita Permettono all esecutore di notificare all utente i risultati ottenuti dall elaborazione Istruzioni operative Permettono di effettuare assegnazioni, calcoli o, comunque, operazioni sulle entità astratte rappresentanti gli elementi del problema Strutture di controllo 16/24
Istruzioni Operative Assegnazioni di valori alle Variabili Avviene in 2 stadi Produzione di un nuovo valore Assegnamento di quel valore alla variabile L operazione di assegnazione viene indicata in diversi modi a seconda dei linguaggi con := = Per produrre il valore si possono usare espressioni (aritmetiche o logiche) il cui risultato è un singolo valore Il valore prodotto dall espressione a destra viene memorizzato nella locazione di memoria riservata alla variabile a sinistra La memorizzazione del valore nella variabile cancella qualunque valore contenuto in precedenza 17/24
Istruzioni Operative Assegnazioni di valori alle Variabili Legami degli Identificatori Identificatore Posizione di memoria (Legame Statico) Identificatore Valore (Legame Dinamico) La dinamicità del legame identificatore-valore consente di scrivere senza contraddizioni assegnazioni del tipo x x + 1 18/24
Istruzioni Operative Calcolo dei Valori 19/24
Le Strutture di Controllo Sequenza Selezione Semplice Binaria Multipla Iterazione Controllo in testa Controllo in coda Predeterminata 20/24
Esercizio Inversione delle cifre di un Intero Progettare un algoritmo che accetta un intero positivo e ne inverte l ordine delle cifre Esempio 27953 35972 21/24
Esercizio Inversione delle cifre di un Intero Operatori DIV e MOD calcolano, rispettivamente, Il quoziente intero Il resto di una divisione fra interi Occorre Accedere alle singole cifre del numero Non è nota a priori la lunghezza del numero Iniziare dalla cifra meno significativa Eliminare progressivamente le cifre dal numero originario Procedere da destra verso sinistra Accodarle progressivamente al numero invertito Far scalare le precedenti verso sinistra 22/24
Esercizio Inversione delle cifre di un Intero Individuazione della cifra meno significativa C = N MOD 10 Rimozione della cifra meno significativa Q = N DIV 10 Scalare verso sinistra l inversione parziale per aggiungere la nuova cifra Sia M un intero con un numero X di cifre, per aggiungere una nuova cifra C, M = M * 10 + c Ripetere fino a quando non ci sono più cifre Quoziente della divisione pari a 0 23/24
Esercizio Inversione delle cifre di un Intero 24/24