Introduzione alla Programmazione



Похожие документы
Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

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

Corso di Informatica

Linguaggi e Paradigmi di Programmazione

Linguaggi di programmazione

Dispensa di Informatica I.1

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

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

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

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Linguaggi di programmazione

Introduzione. Informatica B. Daniele Loiacono

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Metodologie di programmazione in Fortran 90

Fasi di creazione di un programma

Lezione 8. La macchina universale

Introduzione a Dev-C++

Nozione di algoritmo. Gabriella Trucco

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Programmi. Algoritmi scritti in un linguaggio di programmazione

Concetti di base della Tecnologia dell Informazione

Introduzione al MATLAB c Parte 2

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

FONDAMENTI di INFORMATICA L. Mezzalira

Gestione del workflow

Esempi di algoritmi. Lezione III

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Esame di INFORMATICA

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

La Macchina Virtuale

Appunti di Sistemi Elettronici

Corso di INFORMATICA 2 (Matematica e Applicazioni)

C. P. U. MEMORIA CENTRALE

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

INFORMATICA 1 L. Mezzalira

Software. Definizione, tipologie, progettazione

Il Software e Il Sistema Operativo. Prof. Francesco Accarino IIS Altiero Spinelli A.S. 09/10

Corso di Informatica

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Come ragiona il computer. Problemi e algoritmi

Introduzione ai linguaggi di programmazione

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Architettura hardware

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

4 3 4 = 4 x x x 10 0 aaa

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Architettura del calcolatore

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

IL SOFTWARE SECONDO LA NORMA UNI EN ISO :2008 (IIA PARTE) 1

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Introduzione alla programmazione in C

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Laboratorio Matematico Informatico 2

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Uff. I. - OLIMPIADI DI PROBLEM SOLVING - Informatica e pensiero algoritmico nella scuola dell'obbligo

Ing. Paolo Domenici PREFAZIONE

Funzioni in C. Violetta Lonati

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Il database management system Access

NozionidiBase di Informatica

Il computer: primi elementi

Interesse, sconto, ratei e risconti

Informazione e dato. Gabriella Trucco

CPU. Maurizio Palesi

Informazione analogica e digitale

Approccio stratificato

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Richiami di informatica e programmazione

Appunti sulla Macchina di Turing. Macchina di Turing

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

ESEMPIO 1: eseguire il complemento a 10 di 765

Sistema operativo: Gestione della memoria

Arduino: Programmazione

I PROBLEMI ALGEBRICI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Esercizi su. Funzioni

Progettaz. e sviluppo Data Base

Codifica: dal diagramma a blocchi al linguaggio C++

Транскрипт:

Programmazione 1: Introduzione alla Programmazione Michele Nappi, Ph.D Dipartimento di Matematica e Informatica Università degli Studi di Salerno mnappi@unisa.it www.dmi.unisa.it/people/nappi it/people/nappi 089-963334

Algoritmi e Programmi Problema Algoritmo Programma Definizione del problema Dati iniziali (input) Dati intermedi (se necessari) Dati finali (output) algoritmo deriva dalla nisba al-khuwarizmi del matematico Muhammad ibn Musa del 9 sec. Definizione di un insieme di passi logici che trasformano i dati iniziali in dati finali Il risultato è un algoritmo, un insieme finito di istruzioni che, se eseguite ordinatamente, sono in grado di risolvere il problema di partenza. 9/22/2010 Michele Nappi 2

Algoritmi e Programmi Proprietà dell algoritmo Non Ambiguità (delle istruzioni) Eseguibilità (delle istruzioni) i i) Finitezza (deve terminare) 9/22/2010 Michele Nappi 3

Algoritmo del Caffé Dati Iniziali: Acqua, Caffé, Fornello,Gas,, Macchinetta Procedura: 1. Riempire la caldaia della Macchinetta con l Acqua; 2. Riempire il filtro della Macchinetta con il Caffé; 3. Montare i dispositivi della Macchinetta del Caffé; 4. Posizionare la Macchinetta sul Fornello e accendere il Gas; 5. Attendere l ebollizione dell Acqua; 6. Spegnere il Gas quando il Caffè è disponibile in forma liquida nella Macchinetta 9/22/2010 Michele Nappi 4

Esempio (1) [(1.5+2.5)x[(-4)x(-2)]]:2 1. Tipi di Dati Reali: 1.5, 2.5 2. Tipi di Dati Relativi: (-)4, (-)2 3. Tipi di Dati Relativi: (+)2 Sviluppo: [4x8]:2 Tipi di dati Relativi: 4,8,2 Sviluppo: 32:2 Tipi di dati Relativi: 32,2 Sviluppo: 16 Tipi di dati Relativi:16 9/22/2010 Michele Nappi 5

[(1.5+2.5)x[(-4)x(-2)]]:2 1. Memorizza i Dati Reali: 1.5, 2.5 2. Memorizza i Dati Relativi: -4, -2 3. Memorizza il Dato Relativo: (+)2 Esempio (1.2) Somma 1.5 con 2.5 e memorizza il risultato in un Dato Reale Moltiplica -4 e -2 e memorizza il risultato in un Dato Relativo [4x8]:2 Moltiplica 4 e 8 e memorizza il risultato in un Dato Relativo 32:2 Dividi 32 per due e memorizza il risultato in un Dato Relativo 16 9/22/2010 Michele Nappi 6

Esempio (2) Problema Un college ha una lista di risultati di test (1 = promosso, 2 = bocciato) per 10 studenti. Scrivere un programma che analizza i risultati. Se più di 8 studenti sono stati promossi, visualizzare Aumentare le tasse Nota che Il programma deve elaborare 10 risultati di test Sarà usato un ciclo controllato da contatore Due contatori possono essere usati Uno per il numeno di promossi, uno per il numero di bocciati Ogni risultato di test è un numero (1 o 2) Se il numero non è un 1, assumiamo che è un 2 9/22/2010 Michele Nappi 7

Esempio (2) Descrizione ad alto livello Analizzare i risultati ti dell esame e decidere se debbano essere aumentate le tasse scolastiche Primo raffinamento Inizializzare le variabili Prendere in input 10 valutazioni della prova e contare le promozioni e le bocciature Visualizzare un sommario dei risultati dell esame e decidere se le tasse scolastiche debbano essere aumentate Secondo raffinamento: Inizializzare i le variabili Inizializzare le promozioni a zero Inizializzare le bocciature a zero Inizializzare gli studenti a uno 9/22/2010 Michele Nappi 8

Esempio (2) Terzo raffinamento : Prendere in input 10 valutazioni della prova e contare le promozioni e le bocciature Finchè il contatore degli studenti è inferiore o uguale a dieci prendere in input il prossimo risultato d esame Se lo studente è stato promosso Aggiungere uno ai promossi altrimenti Aggiungere g uno ai bocciati Aggiungere uno al contatore degli studenti Quarto raffinamento : Visualizzare un sommario dei risultati dell esame e decidere se le tasse scolastiche debbano essere aumentate Visualizzare il numero delle promozioni Visualizzare il numero delle bocciature Se più di otto studenti sono stati promossi Visualizzare il messaggio aumentare le tasse 9/22/2010 Michele Nappi 9

Esempio (3) Il Fattoriale di n: n!=n*(n-1)*(n-2)*..*3*2*1 Prendere in input il numero n e considerare una variabile fact inizializzata i i ad 1 Se n=0 or n=1 allora il risultato è fact Finchè n non risulta uguale ad 1effettuare le seguenti operazioni: Moltiplicare n e fact e memorizzare il risultato in fact (fact=n*fact) Decrementare n di un unità (n=n-1) Quando n risulta uguale ad 1 il risultato è fact 9/22/2010 Michele Nappi 10

Algoritmi e Programmi L'algoritmo dovrà essere specificato in un linguaggio che l'elaboratore è in grado di interpretare in modo corretto e contenere istruzioni che possono essere eseguite dal computer stesso. Un programma può quindi essere definito come un insieme di istruzioni espresse in un linguaggio formale (sintassi e semantica) chiamato linguaggio di programmazione. I computer però non sono in grado di capire nemmeno il linguaggio programmazione in quanto il microprocessore sa elaborare solo in linguaggio binario: ecco pertanto che i programmi dovranno essere ulteriormente tradotti da appositi applicazioni i i quali interpreti ti o compilatori. i 9/22/2010 Michele Nappi 11

Algoritmi e Programmi 9/22/2010 Michele Nappi 12

Algoritmi e Programmi 9/22/2010 Michele Nappi 13

Algoritmi e Programmi 9/22/2010 Michele Nappi 14

Algoritmi e Programmi 9/22/2010 Michele Nappi 15

Sintassi e Semantica di un LP Sintassi Specifica come costruire un programma nel linguaggio di programmazione Grammatiche context-free (notazione BNF Backus Naur Form) Semantica Specifica il significato del linguaggio 9/22/2010 Michele Nappi 16

Sintassi e Semantica di un LP Esempio: Sintassi: data =CC / CC / CCCC C è un abbreviazione per cifra Semantica: 01/02/2003 In Italia 1 Febbraio 2003 Negli USA 2 Gennaio 2003 9/22/2010 Michele Nappi 17

Linguaggi di Programmazione Ad oggi (2008) esistono circa 2500 Linguaggi gg di Programmazione (LP) più o meno noti e diffusi I LP sono normalmente classificati in tre grandi famiglie basate sul concetto di istruzione, i linguaggi imperativi, quelli funzionali e quelli logici; 9/22/2010 Michele Nappi 18

Linguaggi di Programmazione Nei linguaggi imperativi l'istruzione è un comando esplicito, che opera su una o più variabili oppure sullo stato interno della macchina, e le istruzioni vengono eseguite in un ordine prestabilito. Scrivere un programma in un linguaggio imperativo significa essenzialmente occuparsi di cosa la macchina deve fare per ottenere il risultato che si vuole, e il programmatore è impegnato nel mettere a punto gli algoritmi necessari a manipolare i dati. Esempio: Ada C Modula-2 Oberon Pascal 9/22/2010 Michele Nappi 19

Linguaggi di Programmazione I linguaggi funzionali sono basati sul concetto matematico di funzione. In un linguaggio funzionale puro l'assegnazione esplicita risulta addirittura completamente assente (si utilizza soltanto il passaggio dei parametri). In tale modello rivestono particolare importanza la ricorsione, e, come struttura dati, la lista (sequenza ordinata di elementi). Esempio: Lisp Logo Scheme Standard ML Caml OCaml 9/22/2010 Michele Nappi 20

Linguaggi di Programmazione Nei linguaggi logici l'istruzione è una clausola che descrive una relazione fra i dati: programmare in un linguaggio logico significa descrivere l'insieme delle relazioni i esistenti ti fra i dati e il risultato t voluto, e il programmatore è impegnato nello stabilire in che modo i dati devono evolvere durante il calcolo. Non c'è un ordine prestabilito di esecuzione delle varie clausole, ma è compito dell'interprete trovare l'ordine lordine giusto. Esempio: Mercury Prolog 9/22/2010 Michele Nappi 21

Paradigmi di Programmazione Paradigma funzionale Programma = (insieme di) funzioni Funzione: dati Scheme, Lisp, ML risultato Paradigma imperativo Programma = sequenza di istruzioni Pascal, C, Java 9/22/2010 Michele Nappi 22

Linguaggi di Programmazione Tre tipi i di linguaggi i di programmazione 1. Linguaggi Macchina Stringhe di numeri che danno istruzioni i i specifiche della macchina Esempio : +1300042774 +1400593419 +1200274027 2. Linguaggi Assembly Abbreviazioni che rappresentano operazioni di calcolo elementari (tradotte via assemblatori) Esempio: LOAD BASEPAY» ADD OVERPAY STORE GROSSPAY 9/22/2010 Michele Nappi 23

Linguaggi di Programmazione 3.Linguaggi ad alto livello Simili all Inglese e usano notazioni matematiche (tradotti via compilatori) Esempio: grosspay = basepay + overtimepay; 9/22/2010 Michele Nappi 24

Linguaggi di Programmazione 9/22/2010 Michele Nappi 25

Algoritmi e Programmi: Interpreti ti e Compilatori i L interprete è un programma che traduce, istruzione per istruzione, il programma sorgente. Ogni istruzione è sottomessa alla CPU appena è stata tradotta. Anche se una se istruzione è contenuta 10 volte in un programma verrà tradotta ogni volta che si presenterà al traduttore. Il compilatore, invece, traduce tutto il programma in una sola volta e poi lo sottomette alla CPU. Se una stessa istruzione compare 10 volte, viene tradotta solo la prima volta e poi memorizzata in maniera tale che possa essere ripresa dal compilatore e inserita nelle restanti nove righe di programma 9/22/2010 Michele Nappi 26

Algoritmi e Programmi E' possibile così riassumere le diverse fasi che portano dall'analisianalisi del problema all'ottenimento di una soluzione: 1. Analisi 2. Formalizzazione 3. Programmazione 4. Traduzione 5. Esecuzione 6. Verifica 9/22/2010 Michele Nappi 27

Analisi Algoritmi e Programmi Viene analizzato il problema in tutti i suoi aspetti e si cercano i fattori sui quali fare leva per risolverlo. Il risultato è una soluzione informale Formalizzazione La soluzione trovata nel passo precedente è riformulata in maniera da utilizzare una sintassi e una semantica corrette, per produrre un algoritmo di risoluzione (Le relazioni tra costrutti dei linguaggio ed azioni sono o univocamente definite). Il linguaggio utilizzato sarà di tipo formale, ma necessiterà di ulteriori passi per essere reso utilizzabile dalla macchina Programmazione Il risultato di questa fase è un programma di alto livello che utilizza un linguaggio di programmazione costituito da segni matematici e parole chiave e non da una successione indecifrabile di 0 e 1. Questa fase però non produce ancora un programma che possa essere compreso dalla macchina: si necessita della fase seguente 9/22/2010 Michele Nappi 28

Algoritmi e Programmi Traduzione In questa fase il programma di alto livello viene tradotto da appositi software in linguaggio macchina Esecuzione Il programma viene sottoposto al microprocessore che lo esegue e fornisce la soluzione al problema Verifica Tramite un test pratico di funzionamento ed un analisi teorica del programma dovrebbe si verifica che il software realizzato corrisponda alle sue aspettative e svolga le funzioni per cui è stato elaborato 9/22/2010 Michele Nappi 29

Algoritmi e Programmi A questo punto è necessaria la formazione degli utenti, per impartire loro le istruzioni che occorrono per servirsi dei nuovo software: essa può avvenire secondo diverse modalità. Nella fase di implementazione, infine, tutti gli utenti interessati possono servirsi dei programma elaborato (versione beta del programma). Gli aggiornamenti successivi sono detti "versioni", o release, e sono identificati ifi i da un numero progressivo. 9/22/2010 Michele Nappi 30

Il Software Software di Base (Sistema Operativo) Software Applicativo (Office Automation) Software di Sviluppo (Ambiente di Programmazione) 9/22/2010 Michele Nappi 31

Il Software Il software di base: racchiude in sé sia il software di sistema, necessario a far funzionare l'elaboratore, sia quello utilizzato dagli sviluppatosi di programmi per facilitare il loro lavoro; Il software applicativo: comprende invece tutti quei programmi utilizzati dagli utenti per gestire,,per esempio, la posta, la contabilità di casa, per redigere una lettera, creare una presentazione, telefonare via Internet, ecc., oppure applicativi creati ad hoc per risolvere un determinato problema. 9/22/2010 Michele Nappi 32

Il Software Hardware Sistema Operativo Software di Base 9/22/2010 Michele Nappi 33

Il Sistema Operativo Interpretare ed eseguire comandi elementari e tradurre i comandi degli applicativi in operazioni della macchina Organizzare g la struttura della memoria di massa Ripartire le risorse del sistema tra gli utenti. (Multiuser Multitasking) 9/22/2010 Michele Nappi 34

Ambiente di Programmazione Editor Compilatore Linker Debugger Per Scrivere fisicamente il programma Permette di interrompere l esecuzione del programma dopo ogni istruzione per correggere eventuali errori (bug) Traduce i programmi in codice oggetto, eseguibile dal calcolatore Collega diversi moduli di un programma, e le cosiddette librerie, i producendo d il vero e proprio eseguibile 9/22/2010 Michele Nappi 35

Ambiente di Programmazione Fasi di Programmi C: 1. Editing 2. Preprocessing 3. Compilazione 4. Linking 5. Caricamento 6. Esecuzione 9/22/2010 Michele Nappi 36