Linguaggi di programmazione Problema Algoritmo Programma Progettista Progetto Esecutore Comittente Programmatore Programma Computer Utente Dal problema all’algoritmo • • • • • • • • • Problema Risolutore ed esecutore Algoritmo Flusso di esecuzione Memoria Automi Calcolo automatico Macchine di Turing Proprietà degli algoritmi Problema (Teorema di Pitagora) • Stato iniziale – Ciò che è rilevabile prima di iniziare (i due cateti) • Stati intermedi – (i quadrati dei due cateti) • Stato finale – (l’ipotenusa) Problema Fasi analisi progettazione verifica della soluzione specifica attraverso istruzioni le azioni da svolgere per passare dallo stato iniziale agli stati intermedi ed ai risultati finali Risolutore ed esecutore_1 • Risolutore: – ricerca e definisce le istruzioni che, inteprerate da un esecutore, partendo dai dati iniziali conducono ai dati finali • Esecutore: – interperta le istruzioni ed eseguendole definisce le azioni da compiere per giungere al risultato finale Risolutore ed esecutore_2 Risolutore Istruzioni Linguaggio Esecutore azioni Dati iniziali Dati finali dati intermedi Algoritmo Insieme delle regole che consentono la risoluzione di un determinato problema Procedura effettiva composta da istruzioni che, a partire da dati conosciuti, ottengano i risultati desiderati • Sequenza di istruzioni • Tipi di istruzioni: – operative – di controllo decisionale o di selezione Flusso di esecuzione istruzione1 passo1 Flusso istruzione1 istruzione2 passo2 istruzione2 ………….. Memoria dati iniziali dati intermedi dati finali istruzioni Memoria Automa Esegue in modo automatico una sequenza di azioni predefinite ingressi automa uscite stati interni dell’automa 4 2 ingressi uscite 1 3 Calcolo automatico Macchina di Turing - MdT Meccanismo di controllo Testina di lettura/scritura nastro Proprietà degli algoritmi Algoritmo Esecutore - il numero di istruzioni è finito - le istruzioni che è in grado - le istruzioni devono poter essere eseguibili dall’esecutore - ogni istruzione deve poter essere eseguita in un tempo finito di eseguire sono in nunero finito - ha memoria - il calcolo avviene in passi discreti - la memoria non è limitata a priori - il numero di passi di esecuzione non è limitato a priori - il calcolo non può essere probabilistico - sono ammesse esecuzioni Dati iniziali - il numero non è limitato a priori con un numero di passi finito Dati finali Linguaggi algoritmici • • • • • Caratteristiche del linguaggio algoritmico Variabili. Tipo di dato Diagramma a blocchi. Tipi di blocchi Programazione strutturata Pseudolinguaggio Caratteristiche del linguaggio algoritmico • • non ambigui capacità di esplicitare il flusso di esecuzione delle istruzioni Categorie delle istruzioni: - operative - input/output - decisionali Variabili • • • • • • Variabile == una zona di memoria atta a contenere un dato Identificatore == nome della zona di memoria Memoria dei dati == insieme delle variabili Assegnamento == associare a una variabile un valore Tipo di dato: definisce l’insieme dei valori che la variabile può assumere e l’insieme delle operazioni ammesse sui dati Diagramma a blocchi Tipi di blocco inizio input / output operativi decisionali fine Programmazione strutturata Struttura Fondamentali strutture di controllo del flusso • sequenza • selezione • ripetizione Pseudolinguaggio Un pseudolinguaggio o linguaggio di progetto consente la rappresentazione o pseudocodifica degli algoritmi utilizzando un numero ristretto di termini a cui sono attribuiti un significato univoco e precise regole di composizione Parole chiave: INIZIO, FINE, A, ALLORA, ALTRIMENTI, CASO, DA, DI, ESEGUI, FINCHE’, FINE, INIZIO, MENTRE, PASSO, PER, RIPETI, SE Esempio: INIZIO chiedi (base, altezza) leggi (base, altezza) area scrivi (area) FINE base * altezza Dall’algoritmo al programma Evoluzione dei linguaggi • • • • • • Linguaggi di programmazione Linguaggio macchina Linguaggi assembler Linguaggi ad alto livello Linguaggi orientati ad oggetti Traduttori, compilatori, interpreti Linguaggi di programmazione Uomo Linguaggi ad alto livello C++, Visual Basic Linguaggi a basso livello Assembler, linguaggi macchina Microlinguaggi Hardware Linguaggi macchina Programma (codice oggetto): sequenza di cifre binarie che codificano le istruzioni e i dati Le istruzioni sono strettamente legate all’architettura dell’elaboratore Codice operativo operando 0000010011011011 0000000001101010 Esempio di programma: 0000000000010101 0000000000010101 preleva il contenuto della cella di memoria di indirizzo 84 0000000000011111 0000000001011110 sommalo al valore 639 Linguaggi assembler Programma (codice mnemonico) Esempio: CARICA 84 preleva il contenuto della cella di memoria di indirizzo 84 SOMMA 639 sommalo al valore 639 traduttore Assembler Linguaggio macchina Linguaggi ad alto livello Programma: le istruzioni utilizzano simboli matematici e seguono il modo di ragionare dell’uomo traduttore Linguaggi ad alto livello Linguaggio macchina I più noti: COBOL COmmon Business Oriented Language per applicazioni di tipo gestionale FORTAN FORmula TRANslator per applicazioni di tipo scientifico PASCAL orientato a scopi didattici C utilizzato da progettatori di programmi per la gestione dell’elaboratore Linguaggi orientati ad oggetti OOP Object Oriented Programmimng Consentono di modellare, in modo più naturale per l’uomo, gli elementi della realtà che deve essere rappresentata nella soluzione del problema Un oggetto è un elemento concreto definito dalle sue caratteristiche e dai suoi comportamenti. Esempio: Il cittadino Paolo Rossi che vive a Roma è definito in base alle caratteristiche di: essere nato a Roma nel 1990, di risiedere in Via Nomentana al n. 34 e alle scelte di: trasferisci in Via Milano al n. 50, sposarsi con Maria Bianchi e avere un figlio I piu famosi: C++ estensione del linguaggio C Java Traduttori, compilatori, interpreti Linguaggio Assembler Codice mnemonico Codice eseguibile Assemblatore Codice oggetto Linguaggio ad alto livello Codice sorgente Codice eseguibile Compilatore Codice oggetto Fase di Codice sorgente Fase di compilazione Codice oggetto Interprete Codice sorgente Compilazione + esecuzione esecuzione Il Visual Basic Ha origine dal linguaggio BASIC (Beginners Allpurpose Symbolic Instruction Code) ovvero linguaggio adatto ai principianti e a tutti gli scopi. Il termine Visual indica che il programma si sviluppa in un ambiente grafico dove utilizza i classici elementi quali le finestre, i pulsanti, caselle, ecc. Ambiente di programmazione • • Le applicazioni software create con VB sono realizzate con un progetto Tipi di progetto: – – – – – – – • • • • Form Controlli Moduli Finestre – – – – – • Standard.exe Active.exe ActiveX.DLL ActiveX Controls ActiveX Document Add-in files VB Application Wizard del Progetto delle Proprietà di Disposione form Esecuzione immediata del Codice Casella degli strumenti Oggetti dell’interfaccia grafica Form Casella di testo bottone Codice icona etichetta (Procedure o Form Funzioni) modulo Procedura Dichiarazione delle variabili Progetto (.VBP): insieme di form (.FRM) e di moduli (.BAS) Il codice • Insieme di istruzioni del linguaggio • Istruzioni organizzate come unità logiche in routine: – Sub (Private/Public) – Function • Finestra del codice – lista degli oggetti – lista delle Routine • Formattazione automatica Caratteristiche del linguaggio_1 • • • • • • • istruzione ‘commento istruzione : istruzione (sulla stessa riga) istruzione_continua (anche su più righe) argomenti (di Sub e Function) separati da , aiuto F1 assegnazione ‘nome_variabile = valore’ nome variabile: max 40 caratteri (iniziano con una lettera) Caratteristiche del linguaggio_2 Tipo di dato Dimensione Intervallo Byte 1 byte da 0 a 255 Boolean 2 byte True e False Integer 2 byte da -32766 a 32767 Long 4 byte da -2147483648 a 2147483647 Single 4 byte virgola mobile a precisione semplice Double 8 byte virgola mobile a precisione doppia Date 8 byte Da 1 gennaio 1000 a 31 dicembre 9999 String lunghezza stringa Da 1 a circa 65400 Carattere Tipo di dato % Integer & Long ! Single # Double $ String suffissi tipo di variabile