Programmazione. Marco Anisetti. Università degli Studi di Milano, Dipartimento di Informatica
|
|
- Gianluigi Mariani
- 6 anni fa
- Visualizzazioni
Transcript
1 Programmazione Marco Anisetti Università degli Studi di Milano, Dipartimento di Informatica Marco Anisetti - 1 / 40
2 Riepilogo lezione 1 Ruolo del corso all interno del piano di studi Ruolo della programmazione nella vita lavorativa e spendibilità delle competenze Calcolatore - Programma - Programmazione Algoritmo e sue proprietà, Esecutore, Problema soluzione generale e istanza di una soluzione Esempi di algoritmi e non Relazione algoritmo programma Cenni di computabilità e complessità Marco Anisetti - 2 / 40
3 Algoritmo riepilogo (1) Un algoritmo è come una ricetta da cucina, un insieme di passi da eseguire per arrivare alla soluzione del problema Un algoritmo viene concretizzato in un programma con un dato linguaggio a seconda dell esecutore che deve comprenderne il linguaggio Le ricette sono scritte per un esecutore umano in linguaggio naturale Nel descrivere un algoritmo anche in linguaggio naturale devo individuare 2 tipologie di operazioni: Le istruzioni operative I controlli del flusso delle istruzioni. Ad esempio una condizione per eseguire una determinata operazione, un salto ad una determinata locazione dell algoritmo Marco Anisetti - 3 / 40
4 Algoritmo riepilogo (2) A volte questi vengono nascosti dalle tipicità dell esecutore per cui è stato ideato l algoritmo Nel nostro caso essendo sempre algoritmi orientati ad esecutori automatici occorre vestire i panni dell esecutore anche in fase di scrittura dell algoritmo ESERCIZIO Scrivere la ricetta degli spaghetti alla carbonara per un esecutore umano e per un esecutore robotico Occorre qualche cosa di più rigoroso per descrivere un algoritmo per evitare fraintendimenti e per garantire la trasposizione dell algoritmo in un programma in maniera rapida e indolore ed il più possibile indipendente dal linguaggio che si sceglierà Marco Anisetti - 4 / 40
5 Notazione delle espressioni matematiche (1) Espressioni tipo a b+c sono utilizzate dalla matematica da secoli e risultano a noi familiari Alcuni linguaggi di programmazione cercano di utilizzare una notazione simile per renderla più familiare In generale i linguaggi di programmazione usano dei mix di notazioni differenti Prefissa: l operatore è indicato prima degli operandi +ab Postfissa: l operatore è indicato dopo gli operandi ab+ Infissa: l operatore è indicato tra gli operandi a+b le notazioni prefissa e post fissa non richiedono parentesi per essere eseguite correttamente (nell ordine corretto) Marco Anisetti - 5 / 40
6 Notazione delle espressioni matematiche (2) Il numero di operandi di un operatore è detto arità Es. notazione prefissa = 3030 = 900 similmente = 1050 Es. notazione postfissa = 3030 = 900 similmente = 1050 La notazione infissa richiede delle regole di precedenza o l uso di parentesi Operatori con la stessa precedenza (e.g. + e -) vengono raggruppati usando nella norma la associazione sinistra Esiste la notazione mista Alcuni varianti della notazione prefissa sono ad esempio le chiamate a funzione tipo max(x,y) dove l arità è variabile dipendente da quello che c è in parentesi Marco Anisetti - 6 / 40
7 Linguaggi per la descrizione di algoritmi (1) Un algoritmo deve essere descritto utilizzando un opportuno linguaggio che risulti comprensibile da parte dell esecutore. Il linguaggio è un formalismo costituito da: Un insieme di istruzioni primitive ( elementi propri, facenti parte, del linguaggio) Un insieme di tipi di dato primitivi (numeri interi, numeri reali, caratteri, ecc.) Un insieme di operazioni primitive su tali dati (somma e sottrazione per i numeri interi e reali, ecc.) Marco Anisetti - 7 / 40
8 Linguaggi per la descrizione di algoritmi (2) Linguaggio naturale (ad esempio, l italiano, l inglese), pensato per un esecutore umano Linguaggi grafici, come quello dei diagrammi di flusso o il più recente e generale linguaggio UML (Unified Modeling Language). Anche in questo caso si tratta di linguaggi pensati per un esecutore umano Linguaggi di programmazione, come ad esempio C++, Pascal, Java, VisualBasic, ecc., che sono per loro natura adatti ad un esecutore automatico, specificatamente il calcolatore. Marco Anisetti - 8 / 40
9 Linguaggio naturale Il linguaggio naturale non si usa per la descrizione di algoritmi perchè è inadatto per una macchina: Ambiguo Vago Complicato Nessuno ha ancora costruito una macchina che capisce l italiano (o l inglese) Marco Anisetti - 9 / 40
10 Diagrammi di flusso (Flow chart) I diagrammi di flusso sono un formalismo grafico di descrizione degli algoritmi. I diversi tipi di istruzioni che caratterizzano questo formalismo sono rappresentati tramite blocchi di varia forma, connessi da frecce. Orientato principalmente ad un esecutore umano Ha il pregio di mettere ben in evidenza il control flow (la presenza di cicli, di salti, di biforcazioni, ecc..) Marco Anisetti - 10 / 40
11 Flow chart Assegnamenti racchiusi in rettangoli Decisioni racchiuse in rombi Una ripetizione è indicata da un loop, ovvero una sequenza ciclica di istruzioni contenente almeno una decisione che determina la fine del loop Esempi tratti dal Wirth Marco Anisetti - 11 / 40
12 Esempio 1: Problema - algoritmo - Flow chart Problema: Moltiplicare due numeri naturali, considerando un esecutore che sappia fare solo somme x, r, y denotano delle variabili ovvero un identificativo per un oggetto che è appunto variabile. l assegnamento avviene espresso con il simbolo Formalizzazione del problema: r x y Passo 1: r 0; Passo 2: r r +x; y y 1; finchè y = 0; Per verificare la correttezza dell algoritmo proposto è possibile fare delle prove e valutarne la tabella contenente le successioni dei risultati assegnati alle variabili (detta traccia). Esistono numerose varianti per risolvere lo stesso problema Marco Anisetti - 12 / 40
13 Diagramma di flusso: moltiplicazione per somme ESERCIZI Scrivere la ricetta della carbonara per esecutore robotico usando il flow chart Trovare delle formulazioni alternative più efficienti per la moltiplicazione per somme Marco Anisetti - 13 / 40
14 Esercizio:soluzione Marco Anisetti - 14 / 40
15 Esempio 2: Problema - algoritmo - Flow chart Problema: Dividere un numero naturale x per un numero naturale y, ricavando il quoziente intero q e il resto r Formalizzazione del problema tramite l istruzione: (q,r) x div y Supponiamo che l esecutore non sia in grado di eseguire l operazione complessa div allora va scomposta in un programma che utilizza sottrazioni ripetute Passo 1: q 0; r x; Passo 2: fintanto che r y ripetere q q +1; r r y; Questo esempio come il precedente descrive un processo sequenziale. Gli unici processi trattati in questo corso sono processi sequenziali Marco Anisetti - 15 / 40
16 Diagramma di flusso: operazione div ESERCIZO Scrivere il Flow Chart per l algoritmo dell operazione div descritto in precedenza Marco Anisetti - 16 / 40
17 Diagramma di flusso: operazione div ESERCIZO Scrivere il Flow Chart per l algoritmo dell operazione div descritto in precedenza Marco Anisetti - 16 / 40
18 Considerazioni Un programma descrive delle trasformazioni di stato delle proprie variabili Tali trasformazioni di stato ne definiscono il processo (programma in esecuzione) Il formalismo dei Flow Chart evidenzia dei costrutti che sono alla base della programmazione strutturata Permette di definite facilmente la traccia del programma per seguire l evolversi del processo relativo al programma Generalmente contiene operazioni definite in un linguaggio di programmazione formalizzato Marco Anisetti - 17 / 40
19 Linguaggio di programmazione (1) Un repertorio di segni convenzionali e di regole per combinarli in enunciati più complessi ed un insieme di regole che permettano di associare un significato a ciascun enunciato. Si distinguono 3 livelli Sintattico: regole che specificano in quali modi i segni possano essere combinati per formare enunciati; Semantico: regole che permettono di associare a ciascun segno e a ciascun enunciato il loro significato; Pragmatico: implicazioni pratiche e le conseguenze di un enunciato. Marco Anisetti - 18 / 40
20 Linguaggio di programmazione (2) Alfabeto o vocabolario Σ: Il repertorio di segni convenzionali di cui sono costruiti gli enunciati di un linguaggio. E un insieme finito di elementi, chiamati simboli o token. Simboli o token: sono gli atomi di cui è costituito un enunciato in un linguaggio Parola w su un alfabeto: una sequenza di lunghezza finita di simboli dell alfabeto. Si può definire la parola vuota, ǫ come sequenza di zero simboli comune ad ogni alfabeto. Σ denota l insieme di tutte le parole composte da elementi di Σ, compresa ǫ. Per esempio, se Σ = {0,1}, Σ = {ǫ,0,1,00,01,10,11,...}. Marco Anisetti - 19 / 40
21 Linguaggio di programmazione (3) Un linguaggio L è un sottoinsieme delle parole costruibili su un alfabeto Σ, L Σ. Data una parola (stringa o frase a seconda) w Σ, ci sono due possibilità: w appartiene al linguaggio, w L, cioè rappresenta un enunciato di L w non appartiene al linguaggio, w / L, cioè non rappresenta un enunciato valido di L. L contiene un numero infinito di parole cioè di possibili enunciati. Marco Anisetti - 20 / 40
22 Linguaggio di programmazione (4) Approccio basato sul riconoscimento: rappresentare L attraverso la definizione di un algoritmo che, per ogni parola w Σ, termina con il risultato si se w L e no altrimenti. Approccio generativo: consiste nel definire una procedura in grado di generare sistematicamente tutte le parole w di L, una dopo l altra. Un importantissima classe di sistemi generativi, che sono di fatto impiegati per descrivere in modo finito linguaggi infiniti, tra cui i linguaggi di programmazione, sono le grammatiche. Marco Anisetti - 21 / 40
23 Grammatica (1) G = (N,Σ,R,S) N insieme dei simboli non terminali, o metasimboli, cioè che non possono comparire negli enunciati del linguaggio ma che ci servono per denotare elementi di un enunciato N Σ = Σ alfabeto del linguaggio costituito da simboli terminali. R insieme finito delle regole di produzione nella forma α β con α N \{ǫ} e β (N Σ). Quando la regola viene applicata, un istanza di una stringa α può essere riscritta in una istanza della stringa β S simbolo non terminale speciale, S N ed è il punto di partenza che denota un enunciato valido. Marco Anisetti - 22 / 40
24 Grammatica (2) Relazione di produzione e derivazione Produzione: G (N Σ) (N Σ) : γ G δ sse δ si ottiene da γ mediante l applicazione di una singola regola di produzione di R nella grammatica G. Derivazione: G : γ G δ sse δ si ottiene da γ mediante l applicazione di zero o più regole di produzione di R nella grammatica G Linguaggio generato da G denominato L(G) L insieme di tutte le sequenze di simboli terminali ottenibili applicando le regole di produzione dell insieme R, a partire dal simbolo iniziale S. L(G) = {w : w Σ S G w} Marco Anisetti - 23 / 40
25 Esempio (1) Linguaggio delle espressioni aritmetiche Σ = {0,1,2,3,4,5,6,7,8,9,+,?,,/,(,)} E simbolo di partenza A sta per argomento, O per operazione, N per numero naturale, I per cifra iniziale di un numero naturale, M per sequenza delle eventuali cifre successive di numero naturale, e C denota una qualsiasi cifra decimale. Marco Anisetti - 24 / 40
26 Esempio (2) Esempio di derivazione Si ricava che E 2 (3+4) quindi 2 (3+4) appartiene al linguaggio. Marco Anisetti - 25 / 40
27 Esercizio (1) Data la seguente grammatica: S CVRT C T C R C h V a V i V u T p T t T k R n R l R r Marco Anisetti - 26 / 40
28 Esercizio (2) Quale delle seguenti espressioni fa parte del linguaggio? tank tar bin leak Marco Anisetti - 27 / 40
29 Formato di Backus e Naur BNF(1) Formalismo utilizzato nell Informatica. Il BNF fu impiegato per la prima volta per definire la sintassi del linguaggio Algol 60 delle regole viene sostituita da ::= I simboli non terminali sono rappresentati mediante stringhe alfanumeriche racchiuse tra parentesi angolari (ad esempio <espressione>) I simboli terminali, o token del linguaggio, sono di norma racchiusi tra virgolette ( o ) Notazione compatta per più regole con lo stesso membro sinistro <cifra iniziale> ::= Marco Anisetti - 28 / 40
30 Formato di Backus e Naur BNF(2) Esistono alcune varianti a seconda dell autore (esempio Extended BNF) Gli elementi opzionali sono spesso racchiusi tra parentesi tonde o quadre, mentre le parentesi graffe sono usate praticamente in tutte le varianti del BNF per denotare elementi che possono essere ripetuti zero o più volte ESERCIZIO Ridefinire in BNF la grammatica dell esempio delle espressioni visto in precedenza Marco Anisetti - 29 / 40
31 Esercizio:soluzione < espr >::=< num > ( < espr > ) < espr >< op >< espr > < espr > = < espr > < num >::=< cifra > < num >< cifra > < cifra >::= < op >::= + / Marco Anisetti - 30 / 40
32 Esempio: numero reale Il simbolo ::= può essere letto come può essere e il simbolo come oppure < real number >::=< integer part >. < fraction > < integer part >::=< digit > < integer part >< digit > < fraction >::=< digit > < digit >< fraction > < digit >::= Marco Anisetti - 31 / 40
33 Esercizio Si consideri la seguente definizione in BNF di un linguaggio: < expr >::=< const > < fn > ( < args > ) < args >::=< expr > < expr >, < args > < const >::= a b c d e < fn >::= f g h Quale delle seguenti espressioni fa parte del linguaggio? a e(f,h) g(a) g() g Marco Anisetti - 32 / 40
34 Abstract Syntax Tree (AST) Evidenzia i componenti più significativi di un linguaggio e li mostra nella forma di un albero ESERCIZIO Disegnare l AST delle espressioni nelle forme prefissa +ab infissa a+b e postfissa a b+ Marco Anisetti - 33 / 40
35 Abstract Syntax Tree (AST) Evidenzia i componenti più significativi di un linguaggio e li mostra nella forma di un albero ESERCIZIO Disegnare l AST delle espressioni nelle forme prefissa +ab infissa a+b e postfissa a b+ L AST è indipendente dalla notazione usata ESERCIZIO Disegnare l AST dell espressione b b 4ac Marco Anisetti - 33 / 40
36 AST soluzioni Marco Anisetti - 34 / 40
37 Esempio BNF linguaggio naturale (1) Σ = {il,lo,la,cane,mela,gatto,mangia,graffia,,} (2) N = {frase, soggetto, verbo, complemento, articolo, nome} (3) P, regole espresse in BNF (forma di Backus-Naur): frase ::= soggetto verbo complemento soggetto ::= articolo nome articolo ::= il la lo nome ::= cane mela gatto verbo ::= mangia graffia complemento ::= articolo nome articolo nome, complemento (4) S = frase. Esempio tratto dal Pighizzini, Ferrari: Dai fondamenti agli oggetti Marco Anisetti - 35 / 40
38 Parse tree E un albero ordinato con radice, che rappresenta la struttura sintattica di una stringa relativamente ad una grammatica formale Si differenzia dall AST perchè i suoi elementi riflettono più concretamente la sintassi di un linguaggio in input Una grammatica per un linguaggio impone un parse tree sui programmi scritti in quel linguaggio Marco Anisetti - 36 / 40
39 Esempio di produzione (Parse tree) frase soggetto verbo complemento articolo nome graffia articolo nome, complemento lo mela lo gatto articolo nome il cane Marco Anisetti - 37 / 40
40 Carte sintattiche Le carte sintattiche sono dei diagrammi che esprimono le regole di una grammatica in forma grafica. Per specificare una grammatica mediante carte sintattiche, si deve fornire un diagramma per ciascun simbolo non terminale In una carta sintattica: I rettangoli indicano simboli non terminali (che andranno espansi con le carte sintattiche corrispondenti) Gli ovali o rettangoli con gli angoli arrotondati, indicano simboli terminali, che quindi non devono essere espansi ulteriormente Le frecce sono definite in modo tale che, seguendo i percorsi da esse delineati, sia possibile ricostruire una sequenza lecita di simboli Ogni biforcazione indica un alternativa Marco Anisetti - 38 / 40
41 Carte sintattiche esempio Pighizzini, Ferrari frase soggetto verbo complemento soggetto articolo nome complemento articolo nome, articolo verbo lo la il graffia mangia nome gatto mela cane Marco Anisetti - 39 / 40
42 Carte sintattiche esempio espressione ESERCIZIO Definire la grammatiche dell esempio delle espressioni usando il formalismo delle carte sintattiche Marco Anisetti - 40 / 40
43 Carte sintattiche esempio espressione ESERCIZIO Definire la grammatiche dell esempio delle espressioni usando il formalismo delle carte sintattiche Marco Anisetti - 40 / 40
Lezione 1 - Linguaggi per la descrizione di algoritmi
Lezione 1 - Linguaggi per la descrizione di algoritmi Corso Programmazione Fondamenti di programmazione Linguaggi di programmazione Marco Anisetti e-mail: marco.anisetti@unimi.it web: http://homes.di.unimi.it/anisetti/
DettagliDescrizione delle operazioni di calcolo. Espressioni costanti semplici
Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette
DettagliIl Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)
Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande
DettagliCorso di Programmazione Linguaggi di Programmazione. Linguaggio. Messaggio
Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Linguaggi di Programmazione Dott. Pasquale Lops lops@di.uniba.it Università degli Studi di Bari Dipartimento di Informatica
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliRAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO
RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento
DettagliLez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
DettagliGrammatiche Parse trees Lezione del 17/10/2012
Fondamenti di Programmazione A.A. 2012-2013 Grammatiche Parse trees Lezione del 17/10/2012 AUTILI MARCO http://www.di.univaq.it/marco.autili/ Riassunto lezione precedente Sintassi vs Semantica Stringhe,
DettagliLINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
DettagliDalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
DettagliProblemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
DettagliDispensa di Informatica II.1
ALGORITMI La dispensa di seguito proposta si pone come tutorial per poter porre le basi per la realizzazione di algoritmi che poi potranno eventualmente essere sviluppati in moduli software con metodologia
DettagliProblema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliUniversità degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java
Università degli studi Roma Tre Linguaggi: Sintassi e Semantica Il A cura di A. Orlandini 1 Obiettivi Distinguere la sintassi dalla semantica di un linguaggio Conoscere le convenzioni del meta-linguaggio
DettagliCorso di Programmazione Linguaggi di Programmazione
Corso di Programmazione Linguaggi di Programmazione Dott. Stefano Ferilli ferilli@di.uniba.it Università degli Studi di Bari Dipartimento di Informatica Linguaggio Insieme di sequenze di simboli appartenenti
DettagliAlgoritmi. Pagina 1 di 5
Algoritmi Il termine algoritmo proviene dalla matematica e deriva dal nome di in algebrista arabo del IX secolo di nome Al-Khuwarizmi e sta ad indicare un procedimento basato su un numero finito operazioni
DettagliPROBLEMI ALGORITMI E PROGRAMMAZIONE
PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL
DettagliGrammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione
Grammatiche Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Esempio dei numeri interi Si consideri il linguaggio
DettagliLa codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
DettagliCONCETTI FONDAMENTALI
CONCETTI FONDAMENTALI Algoritmo Procedura di trasformazione di un insieme di dati iniziali in un insieme di risultati finali mediante una sequenza di istruzioni. Linguaggio di programmazione Programma
DettagliSviluppo di programmi
Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai
DettagliIl concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
DettagliLe basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
DettagliLinguaggi Sintassi e Semantica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 4 Linguaggi Sintassi e Semantica Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Linguaggi - Sintassi
DettagliCaratteristiche di un linguaggio ad alto livello
Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono
DettagliL intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero.
ANALISI SINTATTICA Data un linguaggio scrivere una grammatica che lo generi ESERCIZIO 1 Definire una grammatica per il linguaggio L = {ww w appartiene a (a, b)*} ESERCIZIO 2 Dato l alfabeto T=[0,1,2,3,4,5,6,7,8,9,/}
DettagliFondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi
DettagliUnità Didattica 2 I Linguaggi di Programmazione
Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche
DettagliLa codifica. dell informazione
La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero
DettagliLa "macchina" da calcolo
La "macchina" da calcolo Abbiamo detto che gli algoritmi devono essere scritti in un linguaggio "comprensibile all'esecutore" Se il nostro esecutore è il "calcolatore", questo che linguaggio capisce? che
DettagliDISPENSE DI PROGRAMMAZIONE
DISPENSE DI PROGRAMMAZIONE Modulo 1 Risolvere problemi con l elaboratore: dal problema all algoritmo (Parte II) I Linguaggi di descrizione degli algoritmi - Notazioni grafiche (parte 1) Il linguaggio dei
DettagliLe grammatiche formali
Le grammatiche formali Il carattere generativo dei sistemi linguisticii i Consideriamo i la seguente frase: Un gatto rincorre il topo Non facciamo difficoltà a riconoscere che si tratta di una frase sintatticamente
DettagliInformatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema
Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica informatica informazione mezzi mezzi fisici procedure Algoritmi, dati e programmi rappresentazione dell informazione
DettagliFormalismi per la descrizione di algoritmi
Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
DettagliGRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve
GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE Cosimo Laneve 1 argomenti 1. linguaggi di programmazione 2. definizione formale di insiemi infiniti 3. la grammatica e la notazione BNF 4. notazioni alternative
DettagliDESCRIZIONI RIGOROSE c7
DESCRIZIONI RIGOROSE c7 Es. cucinare la pasta asciutta per una famiglia La descrizione rigorosa della strategia risolutiva prevede Analisi del problema (con chiara individuazione degli obiettivi e dei
DettagliAltrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)
Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica
DettagliLinguaggi formali e compilazione
Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2015/2016 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2015-2016 / Ricevimento:
DettagliPROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t
PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica Una grammatica permette di stabilire se una sequenza di simboli
DettagliConcetti di base dell ICT
Informatica Linguaggio di programmazione Computer Bit Algoritmo Linguaggio macchina Informatica: Informazione automatica Gli anglosassoni usano il termine Computer Science = Scienza dei Calcolatori Computer:
DettagliDal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dal Problema all Algoritmo Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Cosa Impareremo Informazioni e codici Definizione e soluzione di un problema Individuazione dei dati Definizione
DettagliCome ragiona il computer. Problemi e algoritmi
Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema
DettagliAnalizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.
Analizzatore lessicale o scanner Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner,
DettagliLinguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl
Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare
DettagliModulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1
Concetti base della Tecnologia dell informazione Algoritmi Come interpreta un computer un problema? Algoritmi Algoritmo: sequenza ordinata di istruzioni per risolvere un problema (tradotto: sequenza di
DettagliEspressioni e Comandi
Espressioni e Comandi March 24, 2017 Elementi di Base dei Programmi Ricordate? Macchina Astratta: Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Abbiamo parlato
DettagliCosa è l Informatica?
Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione Elaboratore
DettagliPROBLEMI E ALGORITMI VESPIA CATERINA LICEO CLASSICO AGLI ANGELI
PROBLEMI E ALGORITMI prof.ssa VESPIA CATERINA LICEO CLASSICO AGLI ANGELI C O N T E N U T I Problemi. Concetto di algoritmo. Caratteristiche di un algoritmo. Descrizione di algoritmi - Diagrammi di flusso.
DettagliCorso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a
Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma
DettagliRappresentazione dei numeri interi in un calcolatore
Corso di Calcolatori Elettronici I Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle
Dettagli3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi
0.1.1.1 Definire un algoritmo 1. Con il termine algoritmo si intende: a) il software utilizzato in un calcolatore b) l elenco finito di istruzioni necessario per risolvere un problema c) un elaboratore
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
DettagliCorso di Informatica Modulo T1 1 - Il concetto di problema
Corso di Informatica Modulo T1 1 - Il concetto di problema 1 Prerequisiti Concetti intuitivi di: Proporzione Problema Variabile Numeri interi e reali 2 1 Introduzione Nel risolvere un problema abbiamo
DettagliIl potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
Dettagli= < < < < < Matematica 1
NUMERI NATURALI N I numeri naturali sono: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,... L insieme dei numeri naturali è indicato con la lettera. Si ha cioè: N= 0,1,2,3,4,5,6,7,.... L insieme dei naturali privato
DettagliEspressività e limitazioni delle grammatiche regolari
Espressività e limitazioni delle grammatiche regolari Vantaggi: Le grammatiche regolari consentono di esprimere una significativa classe di linguaggi: linguaggi con un numero di sequenze infinito grazie
DettagliRisolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: http://it.wikipedia.org/wiki/al-khwarizmi Un
DettagliLa codifica. dell informazione
00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111
DettagliRappresentazione con i diagrammi di flusso (Flow - chart)
Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo
DettagliLINGUAGGI DI PROGRAMMAZIONE!
LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni
DettagliUnità aritmetica e logica
Aritmetica del calcolatore Capitolo 9 Unità aritmetica e logica n Esegue le operazioni aritmetiche e logiche n Ogni altra componente nel calcolatore serve questa unità n Gestisce gli interi n Può gestire
DettagliCorso di Linguaggi di Programmazione + Laboratorio
Corso di inguaggi di Programmazione + aboratorio Capitolo 1 - Introduzione Si ringrazia il Dott. Marco de Gemmis per la collaborazione nella predisposizione del materiale didattico Apprendimento di un
DettagliIntroduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
DettagliLESSICO E SINTASSI DEL PASCAL
LESSICO E SINTASSI DEL PASCAL Il linguaggio di programmazione Pascal è potente e semplice nello stesso tempo; ciò ne giustifica la scelta, inoltre i nuovi compilatori del linguaggio pascal permettono di
DettagliDall algoritmo al programma
Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione
DettagliCURRICOLO DI ISTITUTO
ISTITUTO COMPRENSIVO G.PERLSC Ferrara CURRICOLO DI ISTITUTO NUCLEO TEMTICO Il numero CONOSCENZE BILIT S C U O L P R I M R I classe 1^ L alunno conosce: i numeri naturali, nei loro aspetti cardinali e ordinali,
DettagliPrincipali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 12 LA COMPLESSITA COMPUTAZIONALE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliRappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)
Rappresentazione di Numeri Reali Un numero reale è una grandezza continua Può assumere infiniti valori In una rappresentazione di lunghezza limitata, deve di solito essere approssimato. Esistono due forme
DettagliRappresentazione dei Numeri
Rappresentazione dei Numeri Rappresentazione dei Numeri Il sistema numerico binario è quello che meglio si adatta alle caratteristiche del calcolatore Il problema della rappresentazione consiste nel trovare
DettagliSomma di numeri binari
Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di
DettagliLezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi
Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione
DettagliUn po di storia sui linguaggi
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 Un po di storia sui linguaggi 1957 John Backus e colleghi della IBM rilasciano la prima
DettagliCosa si intende con stato
Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando
DettagliDiagrammi a blocchi 1
Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi." Analisi strutturata." Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi." Attraverso
DettagliAritmetica dei Calcolatori Elettronici
Aritmetica dei Calcolatori Elettronici Prof. Orazio Mirabella L informazione Analogica Segnale analogico: variabile continua assume un numero infinito di valori entro l intervallo di variazione intervallo
DettagliTipi di dato primitivi
Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso
DettagliFondamenti di programmazione e Laboratorio di introduzione alla programmazione (modulo 1)
Fondamenti di programmazione e Laboratorio di introduzione alla programmazione (modulo 1) Docente: Eugenia Occhiuto e-mail: occhiuto@di.unipi.it web: http://www.di.unipi.it/~occhiuto Ricevimento al Polo
DettagliLaboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi
Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di
DettagliCodifica binaria. Rappresentazioni medianti basi diverse
Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla
DettagliI.4 Rappresentazione dell informazione
I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione
DettagliLaboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra
Dettaglimodificato da andynaz Cambiamenti di base Tecniche Informatiche di Base
Cambiamenti di base Tecniche Informatiche di Base TIB 1 Il sistema posizionale decimale L idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 + 30 + 2 = 1 10 2 + 3 10 1 + 2 10 0 Un numero
DettagliTeoria dell Informazione
Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro
DettagliCodice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli
Codice La relazione che associa ad ogni successione ben formata di simboli di un alfabeto il dato corrispondente è detta codice. Un codice mette quindi in relazione le successioni di simboli con il significato
DettagliIl linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
DettagliAlgoritmi e Programmi
Algoritmi e Programmi Algoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. Problema di elaborazione Insieme dati di partenza Risultato ricerca Algoritmi
DettagliGrammatiche context-free
Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2013-2014 Linguaggi Formali e Compilatori Grammatiche context-free Giacomo PISCITELLI Politecnico di Bari G. Piscitelli pag. 1 di 28 Grammatiche
DettagliCORSO DI ELEMENTI DI INFORMATICA
CORSO DI ELEMENTI DI INFORMATICA Corso di Laurea Triennale in Ingegneria Gestionale della Logistica e della Produzione Area didattica Ingegneria Elettrica a.a. 2016/2017 Docente: Ing. Domenico Amalfitano
DettagliInformatica e Bioinformatica: Algoritmi
Informatica e Bioinformatica: Algoritmi 20 Marzo 2014 Programmi Applicativi Programmi Applicativi Sistema Operativo (lezione 3) Macchina Hardware (lezione 1 e 2) La macchina hardware permette l esecuzione
DettagliAlgoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
DettagliCalcolo letterale. è impossibile (*) x y. per x = -25; impossibile per y= Impossibile. 15 y
Calcolo letterale Calcolo letterale e operazioni - L uso delle lettere al posto dei numeri si utilizza per scrivere proprietà e regole dandone una valenza più generale rispetto ad un restrittivo esempio
DettagliDiagrammi a blocchi 1
Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi. Analisi strutturata. Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi. Attraverso
Dettaglin Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi 1 Cos è n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati n Un algoritmo è un metodo per la soluzione di un problema adatto
DettagliAnalisi e programmazione 1
Informatica Secondo l ACM l informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l informazione: la loro teoria, analisi progetto efficienza realizzazione ed applicazione 1
Dettagliin termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico
Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito
DettagliLezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari
Lezione 4 L artimetica binaria: I numeri relativi e frazionari Sommario I numeri relativi I numeri frazionari I numeri in virgola fissa I numeri in virgola mobile 1 Cosa sono inumeri relativi? I numeri
Dettagli