Algoritmi e Linguaggi



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

Il Software programmabili programma algoritmo

LINGUAGGI DI ALTO LIVELLO

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

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

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

Linguaggi di Programmazione

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

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

Introduzione alla programmazione. Walter Didimo

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Il linguaggio di programmazione Python

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

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

Introduzione alla programmazione

CONCETTI FONDAMENTALI

FONDAMENTI DI INFORMATICA

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Sviluppo di programmi

Laboratorio di Programmazione

Corso di Informatica di Base

Linguaggi di Programmazione

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

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

Rappresentazione con i diagrammi di flusso (Flow - chart)

Linguaggi di programmazione

FONDAMENTI DI INFORMATICA

Introduzione. Informatica B. Daniele Loiacono

I Linguaggi di Programmazione

Unità di apprendimento 6. Dal problema al programma

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Fasi di creazione di un programma

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

Informatica Generale Andrea Corradini I linguaggi di programmazione

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati

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

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

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

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

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Il calcolatore. Architettura di un calcolatore (Hardware)

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

Unità Didattica 2 I Linguaggi di Programmazione

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

ALGORITMI: PROPRIETÀ FONDAMENTALI

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Algoritmi e soluzione di problemi

Транскрипт:

Algoritmi e Linguaggi

Programmi e linguaggi Un calcolatore è solo un esecutore rapidissimo di istruzioni Un programma è un insieme di istruzioni codificate in un opportuno linguaggio 2 / 21

Linguaggi e algoritmi Prima di scrivere un programma si deve 1. generalizzare il più possibile la procedura 2. assicurarsi che termini sempre 3. identificare tutte le possibili configurazioni iniziali 4. precisare in maniera univoca i passi da compiere 5. accertarsi che un calcolatore possa eseguirli 3 / 21

Algoritmo Le precedenti caratteristiche portano agli algoritmi: un algoritmo è una procedura 1. generale 2. finita 3. completa 4. non ambigua 5. eseguibile 4 / 21

Progettare gli algoritmi Non esiste un algoritmo per progettare algoritmi! Due approcci: top-down: dal generale al particolare bottom-up: dal particolare al generale Non tutti i problemi sono calcolabili e.g.: un programma si fermerà sempre? 5 / 21

Complessità degli algoritmi Tra i problemi calcolabili ce ne sono alcuni intrinsecamente più difficili, ad esempio trovare un percorso minimo per visitare un insieme di città una sola volta verificare la correttezza di un circuito logico trovare il minimo numeri di colori per una mappa 6 / 21

Diagrammi di flusso Un algoritmo può essere descritto usando un diagramma di flusso Un diagramma di flusso è costituito da blocchi di base strutture per comporre i blocchi 7 / 21

Blocchi di base Rappresentazione Funzione inizio e fine istruzione ingresso / uscita 8 / 21

La programmazione strutturata Un qualsiasi algoritmo può essere espresso combinando i blocchi di base mediante sequenza selezione ripetizione o iterazione Si ottiene un diagramma di flusso strutturato 9 / 21

La sequenza Inizio Inizio Acquisisci la la base base b È semplicemente un insieme di blocchi che si susseguono E.g.: l area di un triangolo Acquisisci l altezza h a = b ** h // 2 Restituisci l area l area a Fine Fine 10 / 21

La selezione Permette di sdoppiare l esecuzione in dipendenza di una condizione vero I I lati lati sono sono uguali? uguali? falso Equilatero Non Non equilatero 11 / 21

L iterazione Serve a ripetere una serie di istruzioni fa uso della selezione per terminare falso n > 0? 0? vero n = n // b resto(n, b) b) 12 / 21

Linguaggi naturali e formali Un linguaggio naturale è ambiguo una vecchia porta la sbarra Un linguaggio formale non lo è mai grammatiche formali 13 / 21

Il linguaggio macchina e l assemblatorel Anche le istruzioni sono codificate con sequenze di bit Si possono associare simboli mnemonici, ma rimangono la complessità la mancanza di astrazione 14 / 21

I linguaggi ad alto livello Permettono di astrarre le caratteristiche del calcolatore generalizzare la scrittura di procedure ricorrenti Caratteristiche sintassi semplice, familiare al programmatore più sono lontani dal calcolatore e meno sono efficienti: compromesso tra velocità e versatilità 15 / 21

Traduzione Ogni linguaggio deve essere ritradotto in linguaggio macchina Tre metodi compilazione: C++ interpretazione: Javascript pseudo-codice: Java 16 / 21

Tipologie di linguaggi ad alto livello Imperativi: si specificano le istruzioni da eseguire C, Pascal Ad oggetti: si modella il problema in termini di interazioni tra oggetti C++, Java Funzionali: si formula il problema in termini di funzioni Lisp, ML Dichiarativi: si descrive il problema in termini logici lasciando al calcolatore il compito di risolverlo Prolog, XSLT 17 / 21

Determinismo Un algoritmo è deterministico se ad ogni configurazione di ingresso corrisponde un unico percorso di esecuzione Algoritmi non deterministici algoritmi casuali approcci dichiarativi 18 / 21

Compilazione Il codice viene tradotto una volta per tutte efficiente deve essere ricompilato per ogni calcolatore diverso Programma sorgente (codice) Compilatore Programma oggetto (eseguibile) 19 / 21

Interpretazione Il codice viene tradotto linea per linea ogni volta lento portabile immediatamente su calcolatori diversi permette la meta-programmazione Linea del programma sorgente Interprete Istruzione/i in linguaggio macchina 20 / 21

Pseudo-codice Il codice viene tradotto in un linguaggio intermedio universale abbastanza lento portabile immediatamente su calcolatori diversi Programma sorgente (codice) Compilatore Programma in pseudo-codice Virtual M. M. Istruzione/i in linguaggio macchina 21 / 21

Il problema della fermata 1. Sia P(x) un programma che mi dice se il programma x termina (vero o falso) 2. Aggiungo alla fine di P un programma Q(y) che termina solo se y = P(x) è falsa 3. Se ora pongo x = P ottengo una contraddizione, infatti 1. se P termina P + Q non termina 2. se P non termina P + Q termina 22 / 21