Laboratorio di Programmazione M-Z
|
|
|
- Ignazio Ippolito
- 8 anni fa
- Visualizzazioni
Transcript
1 Laboratorio di Programmazione M-Z Docente: Dott. Francesco Strappaveccia Università di Bologna, Sede di Cesena
2 Espressioni algebriche Uno dei compiti del compilatore è quello di valutare le espressioni algebriche: Per esempio: y = x + z (w/x + z (7 + 6)). Il compilatore, oltre a valutarne il valore numerico, deve stabilire se è sintatticamente corretta o meno. Le notazioni con cui possiamo descrivere le espressioni algebriche possono essere 3: Prefissa, Infissa e Postfissa. Nella vita reale, sin dalle prime esperienze di calcolo, abbiamo sempre avuto a che fare con la notazione Infissa.
3 Notazione Infissa E la notazione più comunemente usata. Infissa significa che ogni operatore binario appare in mezzo ai suoi due operandi: A }{{} + }{{} B }{{} Operando1 Operatore Operando2 A }{{} + }{{} B }{{} Operando1 Operatore Operando2 Operatore2 Operando3. }{{} c }{{} Possiamo scrivere il secondo esempio in due modi diversi, usando le parentesi e quindi indicando una precedenza nella valutazione delle varie operazioni: (A + B) C oppure (A+(B*C)). Per la valutazione di espressioni infisse, sono applicate le seguenti regole: 1. Regole di Precedenza (es. il deve essere valutato prima del +). 2. Regole associative (valutando da sinistra verso destra). 3. Regole relative alle parentesi..
4 Espressioni Prefisse e Postfisse Nel caso delle espressioni prefisse (postfisse) l operatore binario tra due operandi è posizionato prima (dopo) gli operandi stessi: Prefissa: +A B, (A + B). Postfissa: A B+, (A + B). Il vero vantaggio di tali espressioni è che non è necessario l uso di regole di precedenza tra le operazioni, infatti è lo stesso posizionamento degli operatori e degli operandi a dirci quali espressioni devono essere valutate per prime.
5 Conversione da notazione infissa a prefissa Per convertire b + c 3/2 4 è necessario compiere due passi: Individuare le precedenze: Individuare le associazioni e porre l operatore delle singole operazioni binarie prima degli operandi:
6 Conversione da notazione infissa a postfissa Per convertire a + b/c è necessario compiere due passi: Individuare le precedenze: Individuare le associazioni e porre l operatore delle singole operazioni binarie dopo degli operandi:
7 Algoritmo per la conversione da notazione infissa a postfissa. Pile Utilizzando le Pile (Stack), possiamo scrivere un algoritmo per la conversione da notazione infissa a notazione postfissa(prefissa). Utilizzando la pila possiamo tenere traccia degli operatori che incontriamo e delle parentesi. I passi dell algoritmo sono pochi e relativamente semplici: Ogni volta che incontriamo un operando, lo accodiamo nell espressione postfissa che stiamo calcolando. Ogni volta che incontriamo un operatore, lo confrontiamo con quello sulla testa della pila. Se la sua priorità è maggiore lo inseriamo nella pila (push), altrimenti togliamo dalla pila (pop) tutti gli operatori di priorità minore (o uguale) e li accodiamo nell espressione di ritorno.
8 Algoritmo per la conversione da notazione infissa a postfissa (II). Ogni volta che incontriamo una parentesi aperta ( la inseriamo nella pila. Ogni volta che incontriamo una parentesi chiusa ), accodiamo nella espressione postfissa tutto quello che c è sulla pila fino alla prima parentesi aperta (.
9 Algoritmo per la conversione da notazione infissa a postfissa (III). Esempio I A + B C D/E Infix Stack Postfix A+B*C-D/E # +B*C-D/E # A B*C-D/E # + A *C-D/E # + A B C-D/E # + * A B -D/E # + * A B C D/E # - A B C * + /E # - A B C * + D E # - / A B C * + D # - / A B C * + D E # - A B C * + D E / # A B C * + D E / -
10 Algoritmo per la conversione da notazione infissa a postfissa (IV). Esempio II A B (C + D) + E Infix Stack Postfix A*B-(C+D)+E # *B-(C+D)+E # A B-(C+D)+E # * A -(C+D)+E # * A B (C+D)+E # - A B * C+D)+E # - ( A B * +D)+E # - ( A B * C D)+E # - ( + A B * C )+E # - ( + A B * C D +E # - A B * C D + E # + A B * C D + - # + A B * C D + - E # A B * C D + - E +
11 Algoritmo per la conversione da notazione infissa a postfissa (V). Pseudo-Codice stack = Create_stack (); out_list = Create_list () while (eof ( in_infix )){ ch= getch ( in_infix ); // Prendo il carattere successivo di in_infix if(ch == operand ) add_tail ( out_list, ch); // Valuto se è un operando if(ch == ( ) push ( stack, ch); // Valuto se è una ( if(ch = ) ){ // Valuto se è una ) chpop = pop ( stack ); while ( chpop!= ( ){ add_tail ( out_list, chpop ); chpop = pop ( stack ); } } if(ch == operator ) // Valuto se è un operatore { while (! is_empty ( stack ) && pred (top ( stack )) >= pred (ch)){ chpop = pop ( stack ); add_tail (out_list, chpop ); } push ( stack, ch); } } while (! is_empty ( stack )){ // Svuoto lo stack ch = pop ( stack ); add_tail ( out_list, ch); }
12 Esercizi 1. Scrivere un algoritmo per trasformare un espresssione infissa in una prefissa.
Da infissa a Postfissa
Da infissa a Postfissa Facciamo vedere come si può convertire un'espressione aritmetica infissa in una equivalente postfissa, come secondo esempio di uso della pila e per completare il nostro primo caso
Descrizione 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
Foglio Elettronico Lezione 1
- Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in
ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)
ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente
Elementi 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
Esercitazioni di Reti Logiche. Algebra Booleana e Porte Logiche
Esercitazioni di Reti Logiche Algebra Booleana e Porte Logiche Zeynep KIZILTAN Dipartimento di Scienze dell Informazione Universita degli Studi di Bologna Anno Academico 2007/2008 Notizie Il primo parziale
Espressioni ed operatori in C
Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere
Operatori di relazione
Condizioni Negli algoritmi compaiono passi decisionali che contengono una proposizione (o predicato) dal cui valore di verità dipende la sequenza dinamica Chiamiamo condizioni tali proposizioni Nei casi
Algebra Booleana, Funzioni Logiche e Circuiti Logici
Algebra Booleana, Funzioni Logiche e Circuiti Logici Esercizio 1 Si scriva, utilizzando gli operatori booleani AND, OR, NOT, la funzione booleana che riceve in ingresso un numero binario puro su 3 bit
Esercizi su strutture dati
Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate
Aritmetica postfissa
Aritmetica postfissa Le espressioni aritmetiche sono normalmente scritte in notazione infissa, cioe in modo tale che i simboli delle operazioni binarie compaiono tra gli oggetti su cui operano. ESEMPIO:
Lezione 7 Alberi binari: visite e alberi di ricerca
Lezione 7 Alberi binari: visite e alberi di ricerca Informatica 6 Maggio 2015 Operazioni sugli alberi: visita La visita di un albero esplora tutti i nodi ed esegue una qualche operazione su di essi. Per
Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole e Circuiti Logici Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Algebra di Boole e Circuiti Logici L Algebra
Sviluppo 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
IL LINGUAGGIO C TIPI DI DATO
IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei
Il 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
3. 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
Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
LINGUAGGI 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
Laboratorio di Programmazione Laurea in Bioinformatica
Laboratorio di Programmazione Laurea in Bioinformatica 15 dicembre 2008 1 Programmazione strutturata 1.1 Esercizio 1 Si scriva lo pseudocodice di un programma che calcola la media di due numeri reali.
RAPPRESENTAZIONE 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
Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono:
Variabili logiche Una variabile logica (o booleana) è una variable che può assumere solo uno di due valori: Connettivi logici True (vero identificato con 1) False (falso identificato con 0) Le variabili
MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio
ECDL MODULO 1 Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo 3 - Elaborazione testi Modulo 4 Foglio Elettronico Modulo 5 Uso delle Basi di Dati
Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole
Andrea Passerini [email protected] Informatica Variabili logiche Una variabile logica (o booleana) è una variable che può assumere solo uno di due valori: True (vero identificato con 1) False (falso
CONVERSIONE DA DECIMALE A BINARIO
CONVERSIONE DA DECIMALE A BINARIO Il procedimento per convertire in forma binaria un certo numero decimale n consiste nello scrivere, andando da destra verso sinistra, le cifre oppure seguendo delle determinate
Algebra di Boole X Y Z V. Algebra di Boole
L algebra dei calcolatori L algebra booleana è un particolare tipo di algebra in cui le variabili e le funzioni possono solo avere valori 0 e 1. Deriva il suo nome dal matematico inglese George Boole che
Conversione di un numero da binario a decimale
Conversione di un numero da binario a decimale Esercizio 1. Convertire in decimale il seguente numero binario: (11100011) 2 Soluzione: Ricordando che il sistema numerico binario è un sistema posizionale,
Potenziamento formativo, Infermieristica, M. Ruspa Esempi di operazioni con monomi
Esempi di operazioni con monomi Esempi di operazioni con polinomi POTENZE DI 10 Che cosa vuol dire 10 n? Che cosa vuol dire 10 -n? POTENZE DI 10 Che cosa vuol dire 10 n? 10000..00000 n zeri Che cosa vuol
Formalismi 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
Informatica di Base - 6 c.f.u.
Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Informatica di Base - 6 c.f.u. Anno Accademico 27/28 Docente: ing. Salvatore Sorce Rappresentazione delle informazioni Sistemi di
Espressione di chiamata di funzione
Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo [email protected] a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De
Introduzione alla programmazione in C(++)
Testi Testi Consigliati: Introduzione alla programmazione in C(++) A. Kelley & I. Pohl C didattica e programmazione A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. D. M. M. Ritchie
Espressioni. Espressioni. Valutazione di un espressione. Espressioni semplici
Espressioni Una espressione E del linguaggio C può essere definita formalmente come segue (definizione induttiva): E è una espressione semplice. Espressioni Sia Op n un operatore del linguaggio di arità
Strutture di Controllo
Introduzione Strutture di Controllo per strutture condizionali e cicliche Quando si affronta la programmazione si devono indicare al computer delle istruzioni da eseguire. Se il computer potesse comprendere
Esercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA
PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA 1. Competenze: le specifiche competenze di base disciplinari previste dalla
Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }
Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio
Algebra di Boole Algebra di Boole
1 L algebra dei calcolatori L algebra booleana è un particolare tipo di algebra in cui le variabili e le funzioni possono solo avere valori 0 e 1. Deriva il suo nome dal matematico inglese George Boole
Programmazione in Python. Moreno Marzolla
Programmazione in Python Moreno Marzolla http://www.moreno.marzolla.name/ Copyright 2011, Moreno Marzolla (http://www.moreno.marzolla.name/teaching/labinf2011/) This work is licensed under the Creative
Sistemi di numerazione
Istituto Tecnico Lombardo Radice Sistemi di numerazione Appunti di Informatica - Roberto De Virgilio 1 1 Regole di un sistema di numerazione I sistemi di numerazioni sono linguaggi, quindi sono un insieme
Fondamenti 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
LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
PROLOG 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
CALCOLO NUMERICO. Rappresentazione virgola mobile (Floating Point)
ASA Marzo Docente Salvatore Mosaico Introduzione al Calcolo Numerico (parte ) CALCOLO NUMERICO Obiettivo del calcolo numerico è quello di fornire algoritmi numerici che, con un numero finito di operazioni
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2
Esercitazioni su rappresentazione dei numeri e aritmetica Salvatore Orlando & Marta Simeoni Interi unsigned in base 2 Si utilizza un alfabeto binario A = {0,1}, dove 0 corrisponde al numero zero, e 1 corrisponde
Monomi L insieme dei monomi
Monomi 10 10.1 L insieme dei monomi Definizione 10.1. Un espressione letterale in cui numeri e lettere sono legati dalla sola moltiplicazione si chiama monomio. Esempio 10.1. L espressione nelle due variabili
Corso 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
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani [email protected] Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
OBIETTIVI DI APPRENDIMENTO DI MATEMATICA-SCUOLA SECONDARIA DI PRIMO GRADO
OBIETTIVI DI APPRENDIMENTO DI MATEMATICA-SCUOLA SECONDARIA DI PRIMO GRADO OBIETTIVI DELLE INDICAZIONI PER IL CURRICOLO OBIETTIVI DI APPRENDIMENTO ANNUALI Classe prima- secondaria Classe seconda secondaria
CALCOLO LETTERALE I MONOMI. Il primo tipo di oggetto che incontriamo nel calcolo letterale è il MONOMIO.
CALCOLO LETTERALE Il calcolo letterale è importante perchè ci consente di realizzare un meccanismo di astrazione fondamentale per l'apprendimento in generale. Scrivere, ad esempio, che l'area di un rettangolo
