Cicli ed asserzioni. Ordinamento. Dato un intero positivo n ed una sequenza di n elementi a 1,...,a n

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Cicli ed asserzioni. Ordinamento. Dato un intero positivo n ed una sequenza di n elementi a 1,...,a n"

Transcript

1 Cicli ed asserzioni 1. Problemi, algoritmi e specifiche Un algoritmo è un metodo di calcolo per risolvere un problema computazionale. Come una ricetta di cucina, descrive il processo che conduce dagli ingredienti (l ingresso) al piatto pronto (l uscita); ma come appunto una ricetta può essere ripetuto quante volte si vuole, per i tutti i casi particolari di ingressi, per i quali produce le relative uscite. Astrattamente un problema computazionale può identificarsi con l insieme R delle coppie: i = caso particolare dell ingresso, r = risposta accettabile per i cioè con la relazione tra i possibili casi e le risposte che si considerano accettabili per ciascuno di essi. Dato che i casi particolari di un problema, o istanze, sono normalmente infiniti, è impossibile definire un problema elencando tutte le coppie istanza, risposta. Si definisce allora un criterio per riconoscere le coppie accettabili: la specifica del problema. Esempi: Massimo comun divisore (MCD). Dati due interi positivi non entrambi nulli n ed m, determinare un intero positivo k tale che 1. k divide sia n che m; 2. per ogni divisore comune h di n ed m, h divide k. Ordinamento. Dato un intero positivo n ed una sequenza di n elementi a 1,...,a n di un insieme linearmente ordinato, trovare una permutazione π di ordine n tale che a π (1),..., a π ( n ) sia una sequenza ordinata non decrescente. Cammino minimo. Date una mappa stradale che riporti località, strade e lunghezze dei percorsi, ed una coppia di località raggiungibili l una dall altra, trovare un percorso che renda minima la lunghezza. Un istanza del problema MCD è una coppia di interi: ad esempio 35, 14 ; una risposta accettabile (nel caso di MCD sempre unica) è 7. Un istanza del problema di ordinamento è 7, 5, 22, 5, con n = 4; una risposta accettabile è la permutazione: { 1a 3,2 a 1,3 a 4,4 a 2, ma anche { 1a 3,2 a 2,3 a 4,4 a 1. Analogamente con certe mappe e certe località può esistere più di un percorso di lunghezza minima. Quindi la specifica di un problema definisce una relazione R, in generale non univoca, tra istanze e risposte, descrivendo in modo preciso che cosa si considera una risposta accettabile. Un algoritmo invece è un metodo deterministico per associare risposte a istanze: se ripetuto più volte sulle stesse istanze, fornisce sempre le stesse risposte. Perciò un algoritmo calcola una funzione F dagli ingressi alle uscite, descrivendo come calcolare una risposta data una certa istanza. Se per ogni i che possa figurare come primo elemento di una coppia in R si ha che i, F(i) R, allora l algoritmo che calcola F è corretto rispetto al problema definito da R. 1

2 2. Il metodo delle asserzioni Una procedura (in C/C++ una funzione) è una realizzazione concreta o implementazione, di un algoritmo. Il problema della specifica per una procedura consiste nel definire che cosa calcoli, ossia nel determinare la funzione input-ouput ad essa associata. Un modo semplice per farlo consiste nell indicare le proprietà essenziali dell output (ma anche di eventuali variabili globali che la procedura può alterare): la post-condizione, sotto l ipotesi che valgano certe proprietà dell ingresso (ovvero delle medesime variabili globali): la pre-condizione. Esempi: int MCD(int n, int m) // pre: n, m positivi non entrambi nulli // post: ritorna k che divide sia n che m e t.c. // per ogni divisore comune h di n ed m, h divide k int Divisione (int n, int m) // pre: n 0, m > 0 // post: ritorna q, r t.c. n = m q + r, con 0 r < m void SelectSort (int v[], int n) // post: ordina distruttivamente ed in // senso non decrescente v[0..n-1] Mentre di solito si riserva il termine algoritmo ai metodi di calcolo la cui esecuzione termina in ogni istanza, una procedura può non terminare (tipicamente per un errore logico). Il criterio di correttezza per le procedure si esprime allora in due modi: Correttezza parziale. Una procedura si dice parzialmente corretta rispetto ad una specifica definita dalla pre-condizione ϕ e dalla post-condizione ψ, se ogni sua esecuzione che inizi in uno stato che rende vera ϕ e che abbia termine produce uno stato che rende vera ψ. Correttezza totale. Una procedura si dice totalmente corretta rispetto ad una specifica definita dalla pre-condizione ϕ e dalla post-condizione ψ, se ogni sua esecuzione che inizi in uno stato che rende vera ϕ termina, ed inoltre produce uno stato che rende vera ψ. dove lo stato non è che una descrizione astratta della memoria in un determinato momento del calcolo, la quale associa a tutti gli identificatori in uso (parametri attuali, variabili globali, variabili locali visibili in quel momento) i rispettivi valori. Le asserzioni furono introdotte da Floyd, e successivamente sviluppate da Hoare ed altri, nell intento sia di fornire una definizione matematicamente precisa della nozione di correttezza, che di realizzare un sistema semiautomatico di verifica dei programmi. Un asserzione è un predicato delle variabili che occorrono in una procedura (e quindi in un programma) esprimibile nella logica del primo ordine, ossia con quantificatori solo sugli individui (non si può dire: per ogni insieme di individui, o esiste una funzione, ma per ogni individuo del tale insieme o per ogni x esiste un 2

3 y così e così ). Nella formulazione di Hoare, una coppia di asserzioni ed un comando C (non importa quanto complesso, e quindi all estremo l intero corpo della procedura) formano una tripla o formula di Hoare: ϕ Cψ se l esecuzione di C iniziata in uno stato che soddisfa ϕ termina, si ottiene uno stato che soddisfa ψ In sostanza la formula di Hoare afferma che la procedura il cui corpo sia comando C è parzialmente corretta rispetto alla pre-condizione ϕ ed alla post-condizione ψ. Per dimostrare che una certa procedura soddisfa la specifica espressa dalle sue pre e post-condizioni si suddivide il comando C nelle sue parti costituenti che siano ancora dei comandi, e si intercalano asserzioni tali che sia più facile dimostrare che esse sono pre e post-condizioni valide relativamente ad un segmento del codice, per poi risalire ad una prova della validità di pre e post-condizioni dell intera procedura. Hoare ha formalizzato tutto ciò in un calcolo delle triple; più semplicemente in questa nota si ricorre alle asserzioni come commenti nel codice per poi argomentare, in modo informale, che ogni volta che il l esecuzione della procedura raggiunge un punto occupato da un asserzione, quella risulta vera dei valori che lo stato assegna agli identificatori in quel momento. Esempio: if (x 0) z = x; else // x < 0 z = -x; // z == x Sebbene possa essere utile descrivere con esattezza pre e post-condizioni di una selezione quando questa presenti molti casi o annodamenti (sottocasi), l uso più interessante è con i cicli. Limitandosi ai cicli while (condizione) comando, cui tutte le altre forme sono riconducibili, il problema consiste nel trovare un asserzione che sia vera prima di ogni possibile esecuzione del corpo (il comando che segue la condizione) dell iterazione. Esempio: void Divisione (int n, int m, int& q, int& r) // pre : n 0, m > 0 // post: n = m * q + r, 0 r < m { r = n; q = 0; while (r m) // n = m * q + r, 0 r (*) { r = r m; // r 0 q = q + 1; // r > m, n = m * q + r, 0 r Dato che n = m q + r = m ( q + 1) + r m e che se r m allora r m 0 se ne deduce che gli assegnamenti ad r e q preservano l asserzione (*). Questa asserzione, che vale trivialmente prima di 3

4 ogni iterazione, varrà anche dopo l ultima se il ciclo termina. D altra parte il ciclo termina perché r, il cui valore iniziale è n cioè un intero positivo, è decrementato progressivamente dell intero positivo non nullo m. Quando il ciclo termina la condizione r m sarà divenuta falsa: combinando la sua negazione con l asserzione (*) si ottiene esattamente la post-condizione dell intera procedura. Nota. Il codice della funzione Divisione utilizza per ritornare i due interi che formano il valore della funzione, la possibilità data dal C++ di passare parametri per riferimento: la notazione del C++: int& q equivale all uso di var q: integer nella stringa dei parametri di una procedura PASCAL. L asserzione (*) dell esempio è un caso particolare di un invariante di ciclo, che è appunto un asserzione vera prima di ogni possibile esecuzione del corpo del ciclo, e quindi anche prima e dopo l intera esecuzione dell iterazione, a meno che il test di controllo del ciclo non possa mai essere soddisfatto (e quindi il ciclo non venga mai eseguito). Osserviamo in conclusione che non esiste l invariante di un ciclo: al contrario ve n è una infinità, visto che ogni tautologia (asserzione sempre vera) è tale; è chiaro però che un invariante interessa se implica una post-condizione del ciclo che sia a sua volta utile per ragionare sul resto della procedura che contiene il ciclo, ed in ultima analisi per stabilire la validità della post-condizione dell intera procedura. 3. Uso delle asserzioni nel progetto di algoritmi iterativi Il metodo delle asserzioni comporta la formalizzazione completa delle proprietà dello stato così come trasformato dai comandi che costituiscono il corpo di una procedura (ovvero di un intero programma). Non è tuttavia plausibile in pratica che un programmatore fornisca una documentazione del risultato del proprio lavoro con un simile grado di dettaglio, né si conoscono procedure automatiche per produrla (anzi: risultati teorici della logica implicano che tali procedure non sono meccanizzabili). L uso pratico delle asserzioni è dunque più simile alla trattazione matematica di un problema, in cui si omettano sistematicamente i passaggi più semplici ma tediosi, per concentrarsi sui passi fondamentali, e si ammettano formulazioni informali (purché precise, tali cioè da essere formalizzabili in linea di principio). In particolare individuare un invariante significativo per un ciclo equivale a fornire una descrizione rigorosa dell idea su cui il ciclo si basa, ed una guida più sicura alla elaborazione dell intera procedura. Esempio Volendo ordinare un vettore v[0..n 1] di n interi supponiamo di averlo suddiviso in due parti: da 0 a i 1 supponiamo sia ordinato in senso non decrescente, mentre da i a n sia fatto di elementi ciascuno dei quali maggiorizzi tutti quelli nel semivettore v[0.. i 1]. E chiaro che questa ipotesi è soddisfatta a vuoto quando il semivettore non ordinato è l intero vettore, cioè in partenza; inoltre essa è la post-condizione di un algoritmo di ordinamento quando è il semivettore ordinato a coincidere con l intero vettore. Il problema diventa adesso quello di estendere la parte ordinata mantenendo le ipotesi sulla partizione del vettore: per far ciò basta individuare l indice del minimo in v[i.. n 1], diciamo k, e scambiare tra loro v[i] e v[k]. Il nuovo elemento in v[i] sarà così maggiore di tutti quelli in v[0.. i 1], onde v[0..i] è ordinato, e minore di tutti quelli in v[i+1.. n 1]. Quindi possiamo incrementare i di 1 conservando la verità delle ipotesi sulla partizione. In conclusione abbiamo costruito la procedura di ordinamento per selezione, (SelectSort): 4

5 void SelectSort (int v[], int n) // post: ordina distruttivamente ed in // senso non decrescente v[0..n-1] { for (int i = 0; i < n; i++) // inv. v[0..i-1] ordinato, gli el.in v[i..n-1] // maggiorizzano quelli in v[0..i-1] { int k = IndiceDelMin (v, i, n); Scambia (v[i], v[k]); dove le funzioni ausiliarie IndiceDelMin e Scambia (scritte a parte per maggior chiarezza) sono: int IndiceDelMin ( int v[], int i, int n) // pre: i < n, quindi v[i..n-1] non e vuoto // post: ritorna l indice del minimo in v[i..n-1] { int indmin = i; for(int j = i + 1; j < n; j++) if (v[j] < v[indmin]) indmin = j; return indmin; void Scambia(int& a, int& b) // post: scambia distruttivamente i valori dei par. { int temp = a; a = b; b = temp; Nota. Il C++ consente la dichiarazione di variabili anche all interno di un blocco (delimitato da { e ) ovvero nel campo di inizializzazione di una clausola for. Visibilità e persistenza sono limitati al blocco, con eventuale oscuramento di variabili con lo stesso nome dichiarate fuori del blocco. L uso più frequente degli invarianti nel disegno di algoritmi iterativi è quando questi si basano sull uso di un accumulatore. Un accumulatore è una o più variabili il cui valore rappresenta l approssimazione corrente di ciò che un ciclo calcola in modo incrementale. Esempi. int Moltiplicazione (int x, int n) // Pre: n intero positivo // Post: ritorna x n { int z = 0, y = n; while (y > 0) // inv. x n = z + x y { z = z + x; y = y - 1; return z; La funzione implementa la moltiplicazione di interi positivi come iterazione della somma. L accumulatore z vale alla i-esima iterazione x i ; la variabile y è un contatore, ossia una variabile il cui incremento/decremento controlla il numero delle iterazioni. Si osservi come l invariante non sia altro che la descrizione della relazione tra valori in ingresso, accumulatore e contatore. 5

6 Nel caso della funzione Divisione, gli accumulatori sono le variabili q ed r, inoltre r è un contatore; anche qui l invariante descrive la relazione tra ingressi, accumulatori e contatore. Per valutare un polinomio di grado n a coefficienti razionali in un punto x si può procedere in modo ovvio: double ValutaPolinomio ( double coeff[], int grado, double x) // pre : il polinomio e rappresentato col vettore // coeff[0..grado] dei suoi coefficienti // post: ritorna il valore del polinomio in x { double y =1, z = coeff[0]; for ( int i = 1; i < grado + 1; i++) // inv. y == x^(i-1), // z == coeff[0] + coeff[1] * x +... // + coeff[i-1] * x^(i-1) { y = y * x; z = z + coeff[i]*y; return z; Tuttavia, se associamo il polinomio secondo la cosiddetta formula di Horner: p ( x) = a + x( a x( a n 1 + xa 0 n allora otteniamo un algoritmo che minimizza il numero delle moltiplicazioni. La sua realizzazione si basa sull uso di un accumulatore che determina l invariante: ))...) z = a a x i+ 1 + i a n x n ( i+ 1) dove i si riferisce alla i-esima iterazione. A partire questo invariante costruiamo la procedura: double Horner (double coeff[], int grado, double x) // pre : il polinomio e rappresentato col vettore // coeff[0..grado] dei suoi coefficienti // post: ritorna il valore del polinomio in x { double z = coeff[grado]; for(int i = grado - 1; i >= 0; i--) // inv. z == coeff[i+1] + coeff[i+2] * x +... // + coeff[grado] * x^(grado-(i+1)) z = z * x + coeff[i]; return z; 6

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella

LA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella LA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2010/11 Andrea Corradini, Paolo Mancarella INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico

Dettagli

MATEMATICA DI BASE 1

MATEMATICA DI BASE 1 MATEMATICA DI BASE 1 Francesco Oliveri Dipartimento di Matematica, Università di Messina 30 Agosto 2010 MATEMATICA DI BASE MODULO 1 Insiemi Logica Numeri Insiemi Intuitivamente, con il termine insieme

Dettagli

Progetto e analisi di algoritmi

Progetto e analisi di algoritmi Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento

Dettagli

Cosa si intende con stato

Cosa 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

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi Codice BCD Prima di passare alla rappresentazione dei numeri relativi in binario vediamo un tipo di codifica che ha una certa rilevanza in alcune applicazioni: il codice BCD (Binary Coded Decimal). È un

Dettagli

Problema: 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. 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

Dettagli

04 - Logica delle dimostrazioni

04 - Logica delle dimostrazioni Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,

Dettagli

Altrimenti, 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.)

Altrimenti, 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

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al Corso Maria Rita Di Berardini (Camerino), Emanuela Merelli (Ascoli) 1 1 Scuola di Scienze e Tecnologie - Sezione di Informatica Università di Camerino Parte I Il concetto di Algoritmo Il

Dettagli

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Permutazioni. 1 Introduzione

Permutazioni. 1 Introduzione Permutazioni 1 Introduzione Una permutazione su un insieme di n elementi (di solito {1, 2,...,n}) è una funzione biiettiva dall insieme in sé. In parole povere, è una regola che a ogni elemento dell insieme,

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche 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

Dettagli

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore MCD in N e Polinomi Giovanna Carnovale October 18, 2011 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore

Dettagli

Le strutture di controllo in C++

Le strutture di controllo in C++ Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli

Dettagli

Codice Gray. (versione Marzo 2007)

Codice Gray. (versione Marzo 2007) Codice Gray (versione Marzo 27) Data una formula booleana con n variabili, per costruire una tavola di verità per questa formula è necessario generare tutte le combinazioni di valori per le n variabili.

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : Gli Algoritmi INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

Sistemi Web per il turismo - lezione 3 -

Sistemi Web per il turismo - lezione 3 - Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa

Dettagli

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 4 Sommario. Dimostriamo il Teorema di Completezza per il Calcolo dei Predicati del I ordine. 1. Teorema di Completezza Dimostriamo il Teorema

Dettagli

Appunti di informatica. Lezione 7 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 7 anno accademico Mario Verdicchio Appunti di informatica Lezione 7 anno accademico 2016-2017 Mario Verdicchio L algoritmo di Euclide per l MCD Dati due numeri A e B, per trovare il loro MCD procedere nel seguente modo: 1. dividere il maggiore

Dettagli

Concentriamo la nostra attenzione sull insieme dei numeri razionali Q. In Q sono definite

Concentriamo la nostra attenzione sull insieme dei numeri razionali Q. In Q sono definite Lezioni del 22 e 24 settembre. Numeri razionali. 1. Operazioni, ordinamento. Indichiamo con N, Z, Q gli insiemi dei numeri naturali, interi relativi, e razionali: N = {0, 1, 2,...} Z = {0, ±1, ±2,...}

Dettagli

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore

Dettagli

Elementi di Algebra e Logica Determinare la tavola della verità di ciascuna delle seguenti forme proposizionali:

Elementi di Algebra e Logica Determinare la tavola della verità di ciascuna delle seguenti forme proposizionali: Elementi di Algebra e Logica 2008. 8. Logica. 1. Determinare la tavola della verità di ciascuna delle seguenti forme proposizionali: (a) p ( q r); (b) p (q r); (c) (p q) ( p r); (d) (p q) ( p r); (e) (p

Dettagli

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1

Parte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1 Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta

Dettagli

Matematica per le scienze sociali Elementi di base. Francesco Lagona

Matematica per le scienze sociali Elementi di base. Francesco Lagona Matematica per le scienze sociali Elementi di base Francesco Lagona University of Roma Tre F. Lagona (francesco.lagona@uniroma3.it) 1 / 24 Outline 1 Struttura del corso 2 Algebra booleana 3 Algebra degli

Dettagli

Analisi e Programmazione

Analisi e Programmazione Algoritmi 1 Analisi e Programmazione I Calcolatori Elettronici si differenziano da altri tipi di macchine per il fatto che possono essere predisposti alla risoluzione di problemi di diversa natura. A tale

Dettagli

Università del Piemonte Orientale

Università del Piemonte Orientale Compito di Algebra del 13 Gennaio 2009 1) Trovare l ordine di [11] 112 in Z 112. Si dica poi per quali valori di k si ha [11] k 112 [34] 112 = [31] 112. Soluzione. L ordine di [11] 112 è 12. k 12 8. 2)

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 3. Espressioni booleane I comandi if-else e while Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if

Dettagli

1.1 Coordinate sulla retta e nel piano; rette nel piano

1.1 Coordinate sulla retta e nel piano; rette nel piano 1 Sistemi lineari 11 Coordinate sulla retta e nel piano; rette nel piano Coordinate sulla retta Scelti su una retta un primo punto O (origine) ed un diverso secondo punto U (unita ), l identificazione

Dettagli

Corso di elettrotecnica Materiale didattico: i grafi

Corso di elettrotecnica Materiale didattico: i grafi Corso di elettrotecnica Materiale didattico: i grafi A. Laudani 12 ottobre 2005 I grafi costituiscono uno strumento matematico che permette di descrivere e schematizzare una grande varietà di problemi

Dettagli

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Dettagli

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

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno : Gli Algoritmi INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze

Dettagli

La ricorsione. cioè la tesi vale per n + 1. Se ne conclude che vale per ogni n.

La ricorsione. cioè la tesi vale per n + 1. Se ne conclude che vale per ogni n. La ricorsione 1. Induzione e definizioni ricorsive Una definizione che adoperasse il concetto stesso che intende definire sarebbe considerata circolare e dunque vuota, per le stesse ragioni per cui non

Dettagli

Equazioni lineari con due o più incognite

Equazioni lineari con due o più incognite Equazioni lineari con due o più incognite Siano date le uguaglianze: k 0; x + y = 6; 3a + b c = 8. La prima ha un termine incognito rappresentato dal simbolo letterale k; la seconda ha due termini incogniti

Dettagli

IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE.

IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE. IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE. PH. ELLIA Indice Introduzione 1 1. Divisori di un numero. 1 2. Il Teorema Fondamentale dell Aritmetica. 2 3. L insieme dei numeri primi è

Dettagli

LOGICA PER LA PROGRAMMAZIONE - a.a Secondo Appello - 11/02/2016 Soluzioni Proposte

LOGICA PER LA PROGRAMMAZIONE - a.a Secondo Appello - 11/02/2016 Soluzioni Proposte LOGICA PER LA PROGRAMMAZIONE - a.a. 2015-2016 Secondo Appello - 11/02/2016 Soluzioni Proposte Attenzione: Le soluzioni che seguono sono considerate corrette dai docenti. Per ogni esercizio possono esistere

Dettagli

LEZIONE 23. ax 2 + bxy + cy 2 + dx + ey + f

LEZIONE 23. ax 2 + bxy + cy 2 + dx + ey + f LEZIONE 23 23.1. Riduzione delle coniche a forma canonica. Fissiamo nel piano un sistema di riferimento Oxy e consideriamo un polinomio di grado 2 in x, y a meno di costanti moltiplicative non nulle, diciamo

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

Prodotto scalare e prodotto vettoriale. Elisabetta Colombo

Prodotto scalare e prodotto vettoriale. Elisabetta Colombo Corso di Approfondimenti di Matematica Biotecnologie, Anno Accademico 2010-2011, http://users.mat.unimi.it/users/colombo/programmabio.html Vettori Vettori 1 2 3 4 di di Ricordiamo il in R n Dati a = (a

Dettagli

( ) le colonne della matrice dei coefficienti, con. , risulta A 3 = A 1 + 4A 2 + 4A 5, A 4 = A 1 + A 2,

( ) le colonne della matrice dei coefficienti, con. , risulta A 3 = A 1 + 4A 2 + 4A 5, A 4 = A 1 + A 2, 1 Elementi di Analisi Matematica e Ricerca Operativa prova del 6 luglio 2016 1) Discutere il seguente problema di Programmazione Lineare: Trovare il massimo di p x 1, x 2, x 3, x 4 # x 2 + 4 x 3 + x 4

Dettagli

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Dettagli

= < < < < < Matematica 1

= < < < < < 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

Dettagli

Rapida Nota sulla Rappresentazione dei Caratteri

Rapida Nota sulla Rappresentazione dei Caratteri TECNOLOGIA DIGITALE TECNOLOGIA DIGITALE (segue) CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale Dati ed operazioni vengono codificati tramite sequenze di bit 8 bit

Dettagli

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi). Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione 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

Dettagli

Anno 1. Divisione fra polinomi

Anno 1. Divisione fra polinomi Anno 1 Divisione fra polinomi 1 Introduzione In questa lezione impareremo a eseguire la divisione fra polinomi. In questo modo completiamo il quadro delle 4 operazioni con i polinomi. Al termine di questa

Dettagli

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Le Derivate. Appunti delle lezioni di matematica di A. Pisani Liceo Classico Dante Alighieri

Le Derivate. Appunti delle lezioni di matematica di A. Pisani Liceo Classico Dante Alighieri Le Derivate Appunti delle lezioni di matematica di A. Pisani Liceo Classico Dante Alighieri Nota bene Questi appunti sono da intendere come guida allo studio e come riassunto di quanto illustrato durante

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzioni di controllo Iterative Condizionali Algoritmi e Diagrammi di flusso Esercizi 28/03/2011 2 Istruzioni iterative while do

Dettagli

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara Sistemi lineari Lorenzo Pareschi Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara http://utenti.unife.it/lorenzo.pareschi/ lorenzo.pareschi@unife.it Lorenzo Pareschi (Univ. Ferrara)

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

Dettagli

01 - Elementi di Teoria degli Insiemi

01 - Elementi di Teoria degli Insiemi Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 01 - Elementi di Teoria degli Insiemi Anno Accademico 2015/2016

Dettagli

2. I numeri reali e le funzioni di variabile reale

2. I numeri reali e le funzioni di variabile reale . I numeri reali e le funzioni di variabile reale Introduzione Il metodo comunemente usato in Matematica consiste nel precisare senza ambiguità i presupposti, da non cambiare durante l elaborazione dei

Dettagli

ELEMENTI di TEORIA degli INSIEMI

ELEMENTI di TEORIA degli INSIEMI ELEMENTI di TEORI degli INSIEMI & 1. Nozioni fondamentali. ssumeremo come primitivi il concetto di insieme e di elementi di un insieme. Nel seguito gli insiemi saranno indicati con lettere maiuscole (,,C,...)

Dettagli

LEZIONE N 3 METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA

LEZIONE N 3 METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA LEZIONE N 3 METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA GLI INSIEMI NUMERICI N Numeri naturali Z : Numeri interi Q : Numeri razionali R : Numeri reali Q A meno di isomorfismi!!! R 5 π 2 3 11

Dettagli

Due numeri naturali non nulli a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi.

Due numeri naturali non nulli a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi. MASSIMO COMUNE DIVISORE E ALGORITMO DI EUCLIDE L algoritmo di Euclide permette di calcolare il massimo comun divisore tra due numeri, anche se questi sono molto grandi, senza aver bisogno di fattorizzarli

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

II Esonero di Matematica Discreta - a.a. 06/07. Versione B

II Esonero di Matematica Discreta - a.a. 06/07. Versione B II Esonero di Matematica Discreta - a.a. 06/07 1. Nell anello dei numeri interi Z: Versione B a. Determinare la scrittura posizionale in base 9 del numero che in base 10 si scrive) 5293 e la scrittura

Dettagli

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda

Dettagli

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto Rappresentazione di numeri relativi (interi con segno) E possibile estendere in modo naturale la rappresentazione dei numeri naturali ai numeri relativi. I numeri relativi sono numeri naturali preceduti

Dettagli

Maiuscole e minuscole

Maiuscole e minuscole Maiuscole e minuscole Abilità interessate Distinguere tra processi induttivi e processi deduttivi. Comprendere il ruolo e le caratteristiche di un sistema assiomatico. Riconoscere aspetti sintattici e

Dettagli

Matlab. Istruzioni condizionali, cicli for e cicli while.

Matlab. Istruzioni condizionali, cicli for e cicli while. Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il

Dettagli

ALGEBRA I: SOLUZIONI QUINTA ESERCITAZIONE 9 maggio 2011

ALGEBRA I: SOLUZIONI QUINTA ESERCITAZIONE 9 maggio 2011 ALGEBRA I: SOLUZIONI QUINTA ESERCITAZIONE 9 maggio 2011 Esercizio 1. Usando l algoritmo euclideo delle divisioni successive, calcolare massimo comune divisore e identità di Bézout per le seguenti coppie

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Diagrammi a blocchi 1

Diagrammi 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

Dettagli

IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero

IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero Il teorema degli zeri è fondamentale per determinare se una funzione continua in un intervallo chiuso [ a ; b ] si annulla in almeno un punto interno

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè Pr1: determinare il maggiore di n numeri interi 1 2 3 4 n 1 Pr1: determinare il maggiore di n numeri interi 1 2 3 4 n P1. trovare il maggiore fra i primi 2 numeri; P2. trovare il maggiore fra il terzo

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute. I due esercizi seguenti su un esempio semplice (trovare il massimo tra due o tra tre numeri) introducono la descrizione di algoritmi con diagrammi a blocchi, le strutture di controllo sequenza e condizione,

Dettagli

Logica proposizionale

Logica proposizionale Logica proposizionale Proposizione: frase compiuta che è sempre o vera o falsa. Connettivi Posti in ordine di precedenza: not, and, or, implica, doppia implicazione Sintassi Le proposizioni sono costituite

Dettagli

Primo modulo: Aritmetica

Primo modulo: Aritmetica Primo modulo: Aritmetica Obiettivi 1. ordinamento e confronto di numeri;. riconoscere la rappresentazione di un numero in base diversa dalla base 10; 3. conoscere differenza tra numeri razionali e irrazionali;

Dettagli

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

Programma 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

Dettagli

x 1 Fig.1 Il punto P = P =

x 1 Fig.1 Il punto P = P = Geometria di R 2 In questo paragrafo discutiamo le proprietà geometriche elementari del piano Per avere a disposizione delle coordinate nel piano, fissiamo un punto, che chiamiamo l origine Scegliamo poi

Dettagli

Linguaggi. Claudio Sacerdoti Coen 29,?/10/ : La struttura dei numeri naturali. Universitá di Bologna

Linguaggi. Claudio Sacerdoti Coen 29,?/10/ : La struttura dei numeri naturali. Universitá di Bologna Linguaggi 5: La struttura dei numeri naturali Universitá di Bologna 29,?/10/2014 Outline La struttura dei numeri naturali 1 La struttura dei numeri naturali I numeri naturali La

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Università di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando

Università di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando Università di Roma Tor Vergata L6-1 iterazione: struttura di controllo per ripetere più volte uno stesso comando comandi iterativi C++: while, do-while, for while: sintassi while (espressione) comando;

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione 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

Dettagli

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 4 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 4 anno accademico 2015-2016 Mario Verdicchio Numeri primi Si definisce primo un numero intero maggiore di 1 che ha due soli divisori: se stesso e 1 Esempi di numeri primi:

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Cap. 2 - Rappresentazione in base 2 dei numeri interi Cap. 2 - Rappresentazione in base 2 dei numeri interi 2.1 I NUMERI INTERI RELATIVI I numeri relativi sono numeri con il segno: essi possono essere quindi positivi e negativi. Si dividono in due categorie:

Dettagli

TEOREMA DEL RESTO E REGOLA DI RUFFINI

TEOREMA DEL RESTO E REGOLA DI RUFFINI TEOREMA DEL RESTO E REGOLA DI RUFFINI ALCUNI TEOREMI IMPORTANTI Prendiamo una divisione intera tra numeri: 6 : 3 = 2. Il resto di questa divisione è 0, e questo significa che moltiplicando il quoziente

Dettagli

Analisi e Modelli Matematici

Analisi e Modelli Matematici Analisi e Modelli Matematici Marzo - Aprile 2014 Lezione 4 Numeri reali L utilizzo dei numeri negativi e dei numeri complessi è problematico fino all inizio del XIX secolo. 1737: Euler dimostra che e è

Dettagli

Informatica, Algoritmi, Linguaggi

Informatica, Algoritmi, Linguaggi Elementi di Informatica e Applicazioni Numeriche T Informatica, Algoritmi, Linguaggi Cos'è l'informatica? Che cos'è l'informatica? Cos'è l'informatica? Che cos'è l'informatica? Dell'informatica possiamo

Dettagli

Introduzione all algebra

Introduzione all algebra Introduzione all algebra E. Modica http://dida.orizzontescuola.it Didattica OrizzonteScuola Espressioni letterali come modelli nei problemi Espressioni come modello di calcolo Esempio di decodifica Premessa

Dettagli

CORSO ZERO DI MATEMATICA

CORSO ZERO DI MATEMATICA UNIVERSITÀ DEGLI STUDI DI PALERMO FACOLTÀ DI ARCHITETTURA CORSO ZERO DI MATEMATICA RADICALI Dr. Erasmo Modica erasmo@galois.it LE RADICI Abbiamo visto che l insieme dei numeri reali è costituito da tutti

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

OPERAZIONI IN Q = + = = = =

OPERAZIONI IN Q = + = = = = OPERAZIONI IN Q A proposito delle operazioni tra numeri razionali, affinché il passaggio da N a vero e proprio ampliamento è necessario che avvengano tre cose: Q risulti un ) le proprietà di ciascuna operazione

Dettagli

Informatica e Bioinformatica: Algoritmi

Informatica 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

Dettagli

Diagrammi a blocchi 1

Diagrammi 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

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione

Dettagli