Elementi di programmazione

Похожие документы
Linguaggi di programmazione

I Linguaggi di Programmazione

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO

Linguaggi di Programmazione

Linguaggi di Programmazione

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

Linguaggi, Traduttori e le Basi della Programmazione

Il linguaggio di programmazione Python

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Introduzione alla programmazione. Walter Didimo

Unità Didattica 2 I Linguaggi di Programmazione

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Linguaggi di alto livello, compilatori e interpreti

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Algoritmi e Linguaggi

FONDAMENTI DI INFORMATICA

Introduzione alla programmazione strutturata

Unità di apprendimento 6. Dal problema al programma

Introduzione alla programmazione

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

FONDAMENTI DI INFORMATICA

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Programmazione C Massimo Callisto De Donato

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Rappresentazione con i diagrammi di flusso (Flow - chart)

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Fondamenti VBA. Che cos è VBA

CONCETTI FONDAMENTALI

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Linguaggi di programmazione

Linguaggi di programmazione e astrazione

Corso di Informatica di Base

Concetti Introduttivi. Il Computer

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Programmazione Procedurale in Linguaggio C++

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Algoritmi e Programmi

Salvatore Cuomo Prolusione

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Cosa è l Informatica?

Il Software programmabili programma algoritmo

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Introduzione alla programmazione

Lezione 16. Il Software di base

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Informatica Generale Andrea Corradini I linguaggi di programmazione

Linguaggi, compilatori e interpreti

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

ALGORITMI: PROPRIETÀ FONDAMENTALI

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

L ELABORATORE ELETTRONICO

COMPILAZIONE. Tarsformazione di linguaggi

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Problemi, algoritmi, calcolatore

Capitolo 3 L elaborazione e la strutturazione dell informazione

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Транскрипт:

Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.1/20

Macchina virtuale virtuale [vir-tu-à-le] agg. che esiste in potenza ma non si è ancora realizzato; fittizio, non reale. Si usa il termine macchina virtuale per indicare l astrazione della macchina fisica realizzata dal software ai vari livelli. Esempio: periferiche mappate in memoria: si usano delle operazioni che non hanno nulla a che vedere con la realtà fisica, ma facilitano l uso dei dispositivi. Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.2/20

Virtualizzazione A livello di utente sistema operativo interfaccia (tira, schiaccia) A livello di programmatore linguaggi paradigmi di programmazione Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.3/20

Risoluzione automatica di problemi Dato un problema: specifiche descrizione dei requisiti a cui dovrà soddisfare la soluzione per essere considerata corretta progetto procedimento con cui si individua o si inventa una soluzione soluzione tecnica che consente di risolvere il problema Nell informatica, la soluzione è espressa tramite un algoritmo. Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.4/20

Algoritmo Dato un problema e un esecutore, l algoritmo è: una successione finita di passi elementari (direttive) eseguibili senza ambiguità dall esecutore, che risolve il problema dato. Caratteristiche: sequenzialità viene eseguito un passo dopo l altro secondo un ordine specificato (flusso di esecuzione) univocità i passi elementari devono poter essere eseguiti in modo univoco dall esecutore, e quindi devono essere descritti in una forma eseguibile per l esecutore Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.5/20

Algoritmo e programmazione Un buon algoritmo deve prevedere tutti i casi significativi che derivano dall esecuzione di ogni passo elementare. La descrizione di un algoritmo per un esecutore automatico deve avere una formulazione generale: la soluzione individuata non deve dipendere solo da valori predefiniti dei dati. Esempio: programma che calcola l area del cerchio di raggio 3 cm (NO) programma che calcola l area del cerchio di raggio dato dall utente (SÌ) Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.6/20

Elementi di un algoritmo oggetti Entità su cui opera l algoritmo: vengono generalmente chiamate dati, ma, oltre ai dati iniziali del problema, possono anche essere risultati intermedi. operazioni Interventi che si possono effettuare sugli oggetti, cioè sui dati: calcoli, confronti, assegnamenti, operazioni di I/O. flusso di controllo Indica le possibili evoluzioni dell esecuzione delle operazioni, cioè le possibili successioni dei passi dell algoritmo. Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.7/20

Esempi di algoritmi Adatti ad un esecutore umano: ricette di cucina spartiti musicali istruzioni di montaggio di un mobile Generalmente contengono riferimenti a: quantità soggettive descrizioni approssimative informazioni mancanti perché implicite Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.8/20

Descrizione di un algoritmo Un algoritmo adatto per un esecutore automatico deve essere descritto tramite un formalismo (linguaggio) rigoroso e non ambiguo costituito da: vocabolario insieme di elementi per la descrizione di oggetti, operazioni e flusso di controllo sintassi insieme di regole per la composizione degli elementi del linguaggio in frasi eseguibili e costrutti di controllo semantica insieme di regole per l interpretazione degli elementi e delle istruzioni sintatticamente corrette Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.9/20

Linguaggio di programmazione gli oggetti vengono descritti tramite nomi simbolici (detti anche identificatori) le operazioni vengono descritte tramite operatori, funzioni e procedure il flusso di controllo viene descritto tramite opportuni costrutti di controllo Nota: il flusso di controllo è differente dal flusso di esecuzione flusso di controllo descrive tutte le possibili successioni di operazioni che possono essere realizzate dal programma nella sua esecuzione flusso di esecuzione è la sequenza di operazioni percorsa durante una particolare esecuzione del programma Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.10/20

Linguaggi di descrizione Oltre ai linguaggi di programmazione sono stati sviluppati dei linguaggi, detti semiformali, adatti alla fase di sviluppo di algoritmi: essi presentano alcune caratteristiche di formalità tipiche dei linguaggi di programmazione, ma permettono l utilizzo di descrizioni in linguaggio naturale, non rigorose. schemi a blocchi (diagrammi di flusso) blocchi di varie forme geometriche connessi da archi orientati. La direzione degli archi indica il flusso di controllo, mentre la forma dei blocchi indica la natura del blocco stesso (operazione, confronto, operazione di I/O) pseudocodice strutture di controllo di un linguaggio di programmazione e operazioni descritte in linguaggio naturale Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.11/20

Sottoprogrammi Programmi complessi vengono progettati seguendo uno schema gerarchico in cui il problema iniziale viene suddiviso in sottoproblemi e così via. Risolvere ogni sottoproblema con un sottoprogramma comporta: Chiarezza del programma principale i dettagli di basso livello sono descritti a parte nei sottoprogrammi, evidenziando la struttura di controllo generale Sintesi per i sottoproblemi presenti in più parti del problema principale, richiamando il sottoprogramma, si evitano di ripetere le stesse sequenze di operazioni Efficienza sottoproblemi di uso comune sono disponibili, già risolti da esperti programmatori, raccolti nelle cosiddette librerie Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.12/20

Programma eseguibile Perché un algoritmo sia eseguibile da un calcolatore, esso deve essere tradotto in una sequenza di istruzioni codificate nel codice operativo caratteristico della CPU del calcolatore che lo eseguirà. L operazione di traduzione da un linguaggio di programmazione ad un altro è una procedura ripetitiva, che può essere automatizzata. Tale operazione è effettuata da un programma apposito, che può essere di due tipi: interprete traduce solo le istruzioni del flusso di esecuzione la traduzione viene effettuata ad ogni esecuzione compilatore traduce l intero programma la traduzione viene effettuata una sola volta Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.13/20

Catena di programmazione La generazione di un programma eseguibile consiste quindi nella traduzione automatica di un algoritmo espresso il un linguaggio simbolico (programma sorgente) in un algoritmo espresso in codice macchina (programma eseguibile) Le fasi che portano un algoritmo ad essere eseguito sono: editing composizione del programma sorgente compiling traduzione in codice binario linking collegamento con i sottoprogrammi di libreria loading caricamento in memoria esecuzione esecuzione Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.14/20

Editing Generalmente un algoritmo viene codificato in un programma sorgente tramite un apposito programma chiamato editor. Questa fase ha termine con la produzione di un file di testo detto file programma sorgente. Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.15/20

Compiling La fase di traduzione, o compilazione, utilizza un programma (detto compilatore). Esso elabora il file sorgente, riconoscendo i simboli, le parole e i costrutti del linguaggio e producendo: la forma binaria del codice macchina corrispondente (file programma oggetto) oppure, una segnalazione degli errori sintattici Gli errori sintattici, cioè le violazioni delle regole della sintassi del linguaggio, rendono il programma non correttamente associabile ad un significato e quindi ne impediscono la traduzione. Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.16/20

Linking Nella fase di linking (collegamento), un programma (detto linker) collega il file oggetto con le funzioni di libreria. Esso produce: un programma eseguibile oppure, una segnalazione di errore nella citazione delle routine di libreria Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.17/20

Loading Per poter essere eseguito, un file eseguibile deve essere caricato in memoria centrale. Questa funzione viene svolta da un programma chiamato loader (caricatore), che individua una regione di memoria adeguata all esecuzione del programma. Se tale spazio in memoria non esiste, segnala un errore di caricamento per memoria insufficiente. Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.18/20

Esecuzione Il programma in esecuzione elabora i dati in ingresso e produce i risultati in uscita. Possibili errori (non di tipo sintattico!): calcoli scorretti esempio: overflow calcoli impossibili esempio: divisione per zero errori semantici esempio: errore nella scrittura di un operazione Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.19/20

Linguaggi di programmazione I linguaggi di programmazione sono classificabili in almeno quattro grandi categorie, parzialmente sovrapposte: Imperativi le istruzioni descrivono esplicitamente le modifiche del contenuto della memoria (Basic, Pascal, C, Fortran, Cobol) Funzionali il programma è costituito da una funzione che ha per argomenti altre sottofunzioni (Lisp) Dichiarativi (o logici) il sorgente è costituito da una serie di asserzioni e di regole; il programma consiste in una dimostrazione di veridicità di un asserzione, senza indicare il flusso di esecuzione (Prolog) Orientati agli oggetti il programma è costituito da entità (oggetti) che comunicano tra loro scambiandosi messaggi; incapsulamento, ereditarietà e polimorfismo (Ada, Smalltalk, Java) Stefano Ferrari Università degli Studi di Milano Fondamenti di Informatica per la Sicurezza Elementi di programmazione a.a. 2003/04 p.20/20