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

Похожие документы
Il linguaggio di programmazione Python

Linguaggi di Programmazione

Linguaggi di alto livello, compilatori e interpreti

LINGUAGGI DI ALTO LIVELLO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Introduzione alla programmazione. Walter Didimo

Il Software programmabili programma algoritmo

I Linguaggi di Programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

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

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

Il calcolatore. Architettura di un calcolatore (Hardware)

Linguaggi di programmazione

Introduzione alla Programmazione. Giselda De Vita

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

Linguaggi, compilatori e interpreti

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

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

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

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

Elementi di programmazione

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

Linguaggi di Programmazione

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

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Fondamenti VBA. Che cos è VBA

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

Programmazione I. Linguaggi di programmazione. Traduzione. Fabrizio Messina

Linguaggi, Traduttori e le Basi della Programmazione

Sistemi di Elaborazione delle Informazioni

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

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Linguaggi di programmazione

INFORMATICA. L informatica comprende:

Linguaggi di programmazione

Introduzione alla programmazione

Programmazione C Massimo Callisto De Donato

Linguaggi di Programmazione

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Sistema Operativo. (hardware e software) della della macchina

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Introduzione alla programmazione strutturata

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

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

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

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

STORIA E CARATTERISTICHE

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Informatica. Come si risolve un problema?

Unità Didattica 2 I Linguaggi di Programmazione

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

Algoritmi e Linguaggi

Introduzione alla programmazione

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Rappresentazione con i diagrammi di flusso (Flow - chart)

Teoria dell Informazione

Concetti Introduttivi. Il Computer

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Fondamenti di Informatica T. Il Software

Транскрипт:

Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer dei passi dell algoritmo Deve essere scritto tramite un linguaggio che il computer capisca (linguaggio macchina); Il programmatore utilizza un linguaggio di programmazione che poi viene tradotto (da qualcosa) in linguaggio macchina; 18

Dall uomo al calcolatore uomo algoritmo programma pseudo codice diagramma di flusso linguaggio di programmazione ad alto livello traduttore linguaggio macchina esecuzione del processore input calcolatore output 19

Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 20

Le fasi Analisi del problema computazionale (individuare input ed output, etc.) Progettazione di una soluzione proponendo una suddivisione del problema in sottoproblemi più semplici; alla fine di questa fase, per ogni sottoproblema si deve scrivere l algoritmo utilizzando pseudo-codici e diagrammi di flusso; Stesura del programma a partire dall algoritmo: implementazione vera e propria Test del programma: alfa testing, beta testing, debugging Produzione documentazione e distribuzione 21

Un altro esempio di algoritmo Preparazione del Risotto alla Zucca da parte di un esecutore in grado di aggiungere, tagliare, mescolare, tostare, mantecare, 1. Preparare il soffritto ed il brodo; 2. Aggiungere la zucca a pezzettini al soffritto; 3. Mescolare fino a quando la zucca non è un purè; 4. Aggiungere il riso al soffritto; 5. Fare tostare il riso; poi bagnarlo con il vino; 6. Aggiungere brodo fino a quando il riso è cotto; 7. Aggiungere prezzemolo, pepe e burro; 8. Se preferisci salato, allora aggiungi sale; 22

Sottoproblemi L algoritmo precedente è un altro esempio di cosa significa scomporre un problema in sottoproblemi; Come si prepara un soffritto? Come si prepara un brodo? Ogni sottoproblema può essere scomposto in problemi via via più elementari; Per ogni problema elementare deve esistere un istruzione nel linguaggio adottato la cui esecuzione lo risolve. 23

Alto e basso livello Man mano che si suddivide il problema in sottoproblemi, si scende di livello; Se ci si avvicina al linguaggio umano, si parla di linguaggi di Alto livello; Se ci si avvicina al linguaggio macchina, si parla di linguaggi di Basso livello; 24

Linguaggi Linguaggio umano (es. Italiano) Descrizione di un algoritmo (es. diagrammi di flusso, pseudo codice, etc ) Linguaggi di Programmazione (es. C, VBasic, Java, Logo, etc ) Alto livello Linguaggio Macchina Basso livello 25

Linguaggi di programmazione Linguaggio macchina Codifica binaria delle istruzioni Diverso per ogni architettura Istruzioni e operazioni elementari coincidono Linguaggio Assembler Sempre a livello macchina, ma codifica simbolica delle istruzioni Es: ADD R1, R6 STORE R1, RAM[255] MOV R1, #4 26

Linguaggi di programmazione Linguaggio ad alto livello (HLL - High-Level Languages Elaboratore virtuale Operazioni molto più astratte delle operazioni HW Es: x = y+2 z = cos(x) Linguaggio indipendente dalla piattaforma! Possibile mediante l esistenza di traduttori 27

Linguaggi di programmazione Programma sorgente (HLL) Traduttore Programma eseguibile (bit) 28

Traduttori somma due interi stampa un messaggio... Uomo Traduttore 010101010111 010101111111 101010101010 101010101011 Macchina 29

Traduttori Due schemi Compilatori Interpreti 30

Compilatori Traduzione avviene in due passi: Compilazione vera e propria Collegamento (link) Dopo la fase di link, il programma può essere eseguito direttamente Ogni fase produce un file corrispondente all aggiunta di informazioni di vario tipo Formato oggetto Formato eseguibile 31

Compilatori sorgente COMPILATORE oggetto LINKER Libreria eseguibile 01011010 01010100 11111111... 32

Linker Risolve i riferimenti ad indirizzi di memoria Indirizzi logici => indirizzi fisici Aggiunge al codice le librerie: Funzioni pre-compilate e riutilizzabili (es. funzioni matematiche) e distribuite con il compilatore Codice scritto in precedenza Due schemi: Librerie statiche Librerie dinamiche 33

Interpreti Il formato interno viene generato interpretando e traducendo il formato sorgente Il programma viene interpretato ed immediatamente eseguito istruzione per istruzione. Non viene generato né formato intermedio (oggetto) né eseguibile. 34

Compilatori vs. interpreti Linguaggi compilati: Vantaggi: Formato del programma eseguibile più efficiente esecuzione più veloce Migliore supporto per istruzioni complesse e programmi di grandi dimensioni Svantaggi: Rallentamento tempo di sviluppo dei programmi Maggiori requisiti di spazio di memoria (il compilatore è un programma sofisticato) Linguaggi interpretati: Ideali in ambiente didattico per lo sviluppo rapido di programmi. 35

Portabilità del software Possibilità per un programma di poter essere eseguito su piattaforme HW e SW diverse da quelle su cui è stato sviluppato compilatore Windows codice eseguibile Windows codice sorgente compilatore Linux codice eseguibile Linux compilatore MacOS codice eseguibile MacOS 36

Linguaggi di programmazione FORTRAN FORmula TRANslation (1956) calcoli tecnico-scientifici (ambiente fisico/matematico) svariate librerie compilato COBOL COmmerce and Business Oriented Language (1960) elaborazione di archivi, tabulati applicazioni contabili 37

Linguaggi di programmazione BASIC Beginner s All-purpose Symbolic Instruction Code (1962) relativamente semplice capacità grafiche interpretato versioni evolute (VisualBasic) PASCAL (1972) Linguaggio molto formale (progetto accademico) Programmazione strutturata Utile per la didattica Compilato 38

Linguaggi di programmazione C C++ Bell Labs (1972) Evoluzione più efficiente del PASCAL Istruzioni per ottimizzazione del codice efficiente Molto usato nella programmazione di sistema compilato Bell Labs ( 80) Evoluzione del C ad oggetti Diverso paradigma di programmazione Include il C compilato 39

Linguaggi di programmazione Java Perl Sun MicroSystems ( 90) Evoluzione del C++ Schema misto compilato+interpretato Portabilità universale tramite formato intermedio (bytecode) Vasta gamma di librerie Supporto alla programmazione web GNU project ( 90) interpretato complesso, ma molto potente molto utilizzato nella programmazione web programmi=>script 40