ALGORITMI 1 a Parte. di Ippolito Perlasca. Algoritmo:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "ALGORITMI 1 a Parte. di Ippolito Perlasca. Algoritmo:"

Transcript

1 ALGORITMI 1 a Parte di Ippolito Perlasca Algoritmo: Insieme di regole che forniscono una sequenza di operazioni atte a risolvere un particolare problema (De Mauro) Procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni scelte solitamente da un insieme finito (Wikipedia) Insieme ordinato in sequenza, di tutte le regole precise, inequivoche, analitiche, generali, astratte, formulate ex ante, la cui scrupolosa e letterale applicazione, da parte di chiunque, lo pone infallibilmente in grado di conseguire il risultato giusto (Borruso) Il termine deriva dal nome di Muhammad ibn Musa al-khwarizmi, matematico persiano del sec IX, che fu il primo a proporre un concetto simile, nella sua opera Kitāb al-djabr wa 'l-muqābala (Libro sulla ricomposizione e sulla riduzione) Qui a fianco: la statua di al-khwarizmi nella sua città natale di Khiva, oggi in Uzbekistan Il concetto di algoritmo è centrale in logica matematica e in informatica: è un concetto complicato, ma per semplificare diciamo che corrisponde all idea di procedimento meccanico per eseguire un calcolo o risolvere un problema Un algoritmo è costituito da una lista d istruzioni, cioè di operazioni matematico-logiche che l esecutore (calcolatore, essere umano o scimmia addestrata) sa eseguire La lista deve essere finita (ho un numero limitato di fogli su cui scrivere, il calcolatore ha una memoria limitata), anche se lunga quanto mi serve (posso sempre avere altri fogli o aggiungere memoria) Ogni istruzione deve essere chiara, senza ambiguità, perché l esecutore è scemo e non sa prendere tiva Tutte le possibili alternative devono essere esattamente specificate Ad esempio, aggiungere un po di sale (quanto?) o mettere pomodoro fresco o in salsa (ma come faccio a decidere quali dei due?) fanno sì che le ricette della nonna sono buone, ma NON SONO algoritmi Un algoritmo deve terminare in tempo finito (in un numero finito di passi) producendo un risultato (non deve ripetere per sempre le stesse cose, cioè non deve andare in loop, come dicono gli informatici Gli algoritmi si possono scrivere in liguaggi di programmazione per calcolatori (Pascal, C, Java, Labview, Python ecc ecc) o, come faremo nel seguito, in linguaggio di progetto, che è una specie di linguaggio di programmazione meno pedante e, nel nostro caso, italianizzato 1

2 Adottiamo un po di convenzioni: Tipi di dato, costanti e variabili I nostri algoritmi per il momento tratteranno solo tre tipi di dato: numerico (numeri naturali, cioè interi non negativi, interi relativi, numeri reali) booleano (o logico), che può assumere solo i valori vero e falso (oppure V e F, o 1 e 0) stringa, che sono successioni di caratteri (parole) I dati di questi tre tipi possono apparire come costanti: 8 numero intero positivo 1054 numero intero reale vero miao costante booleana vera costante stringa (notare gli apici) oppure essere contenuti in variabili, cioè in scatole individuate con un nome: x, y, pippo, marialuisa, xfcsdgytut I nomi di variabili sono arbitrari, ma se li scegliete con un po di logica migliorano la leggibilità degli algoritmi: ad esempio una variabile destinata a contenere una somma è meglio chiamarla s o somma, piuttosto che p o prodotto o pincopalla Inoltre nei nomi delle variabili distinguiamo il maiuscolo dal minuscolo: x è diversa da X Qui i capisce perché che le stringhe vanno fra apici ( ) per distinguerle dalle variabili: giovanni è una stringa, giovanni è una variabile che si riferisce al suo contenuto Assegnazioni e operazioni L operazione fondamentale è l assegnazione, che si indica con la freccia Ad esempio x 0 significa assegna alla variabile x la costante numerica intera 0 (metti 0 nella scatola di nome x) 1 x y ( x freccia y) significa copia il contenuto di y in x Se y = pippo (cioè il contenuto di x è pippo ) dopo l operazione anche y contiene pippo (ricordarsi che è una copia, non uno spostamento: pippo rimane anche in y, mentre il vechhio contenuto di x è riscritto e si perde) Chiaro che una cosa come 5 x invece non ha senso: non si può assegnare un nuovo valore a una costante, che resta sempre quella per definizione Tra variabili e costanti si possono fare le solito operazioni matematiche, ad esempio, se x, y e z sono variabili numeriche x y + z significa metti in x la somma di y e z (cioè dei contenuti di y e z) Se y =5 e z = 7 dopo l assegnazione x = 12 1 Per fare in fretta, scritte del tipo a b possiamo leggerle come a freccia b, con la convenzione che la freccia s intende sempre diretta da destra a sinistra 2

3 x x + 1 significa incrementa di 1 il contenuto di x: se prima x = 5, dopo l assegnazione x = 6; se la si ripete ancora diventa x = 7 e così via Casi di questo genere spiegano perché usiamo e non =, perché x = x + 1 non ha senso, nessun numero è uguale a se stesso più uno Purtroppo il C usa proprio =, in Pascal invece si matiene la distinzione usando := L altro modo di assegnare un valore a delle variabili sono prenderle dall esterno come dati Indicheremo un operazione di questo genere come lettura Ad esempio leggi x significa accetta il valore di x dall esterno (ad esempio, in un calcolatore, prendilo dalla tastiera, o da qualunque altra unità di input) Si possono leggere anche più variabili nella stessa istruzione: leggi x, y, pippo Un algoritmo può anche non avere instruzioni d ingresso, ma di sicuro deve averle d uscita, per comunicare all esterno i suoi risultati: stampa x significa butta fuori il contenuto di x, ad esempio stampalo su una stampante o invialo a qualche altro dispostivo di output Anche qui si possono stampare più variabili per volta: stampa aldo, giovanni, giacomo Si possono anche stampare costanti: stampa giorgio, 8 emette la parola giorgio e il numero 8 Attenzione che invece stampa giorgio stampa il contenuto della variabile di nome giorgio In genere non specificheremo esplicitamente il tipo delle variabili utilizzate in un algoritmo, che sarà chiaro dal contesto, ma a volte indicheremo che tipo di dato ci aspettiamo in ingresso: ad esempio: leggi N intero > 0 Spesso specificheremo le capacità dell esecutore: calcolatore, essere umano o scimmia ammaestrata che sia Il gioco consiste nel scrivere l algoritmo usando solo quelle A volte per spiegar meglio il funzionamento di un algoritmo ci metteremo dei commenti, indicati da // Tutto quello che c è fra // e riga non fa parte dell algoritmo, ma è solo una spiegazione Adesso proviamo a vedere nei dettagli le strutture che possiamo trovare in un algoritmo Le strutture: la sequenza La più semplice è la sequenza, costituita da una serie d istruzioni da eseguire una dietro l altra, senza mai deviare: istruzione 1 istruzione 2 istruzione 3 istruzione n Notare le parole e che delimitano la sequenza, e la indentazione, cioè la tecnica tipografica che arretra le istruzioni che costituiscono il corpo della sequenza, in modo da renderle evidenti a colpo d occhio: Ad esempio leggi x, y numeri reali z x + y stampa z è un semplicissimo algoritmo costituito da un unica sequenza di tre istruzioni che fa la somma di due numeri (reali) 3

4 La selezione binaria La sola sequenza è un po poco per fare delle cose interessanti Immaginiamo di voler progettare un algoritmo che accetta in ingresso due numeri e stampa il maggiore dei due Qui l algoritmo deve fare una scelta sulla base di un confronto fra i due numeri Qualcosa come: leggi x, y se x > y max x max y stampa max E ancora una sequenza di tre istruzioni, ma la seconda è un istruzione composta che si chiama selezione binaria: se x > y max x max y stampa max e infatti fa una selezione fra due alternative: se x > y in max mette x, (se cioè x y) in max ci mette y Vediamola nella sua forma più generale: se condizione istruzione 1 istruzione 2 dove condizione è una qualunque relazione logica (fra numeri, stringhe o booleani) che può essere vera o falsa Se è vera viene eseguita l istruzione 1, (se è falsa) viene eseguita l istruzione 2 Nella struttura può a volte mancare l'alternativa : se condizione istruzione che esegue istruzione se condizione è vera, prosegue con le istruzioni successive Come esempio, ecco un algoritmo che trasforma un numero reale nel suo valore assoluto: leggi x se x < 0 x -x stampa x l istruzione di cambiamento di segno presuppone che l esecutore sappia fare le moltiplicazioni (deve moltiplicare x per -1) Se l esecutore sa fare solo la somma (algebrica) si può cambiare di segno con x 0 x La forma più generale di selezione binaria e quando ci sono più istruzioni da fare sotto la condizione (o ) In questo caso bisogna raggrupparle con una coppia : 4

5 se condizione istruzione 11 istruzione 12 istruzione 1n istruzione 21 istruzione 22 istruzione 2m Notare anche qui l uso dell indentazione: il se individua la struttura di selezione, e sono rientrati di un livello, e di un altro ancora, e le istruzioni sono al livello più interno Si vede subito cosa viene fatto se la condizione e vera, e cosa se la condizione è falsa: pensate alla confusione se allineassimo tutto su una stessa colonna! Le condizioni si possono comporre con gli operatori non, e, o, che corrispondono alle porte NOT, AND, OR per esempio: (x > 0) o (y < - 5) è vera se e solo se x è maggiore di 0 oppure y è minore di -5 (o entrambe le cose) (x > 4) e (x 5) è vera se e soltanto se x è compreso fra 0 (escluso) e 5 (incluso) (in questo caso avremmo potuto scrivere l unica condizione 0 < x 5, da intendere come un abbreviazione) non(x > y) significa che x <y oppure x = y Notare che i pezzi che formano una condizione composta li mettiamo tra parentesi per chiarezza Inoltre, per comporre le condizioni teniamo presente che non lega più di tutti, seguito da e e poi da o Per alterare questo ordine si usano le parentesi, esattamente come nell algebra booleana Ad esempio le tre condizioni seguenti sono diverse: non(x > 0) e (y = 0) o (z < 0) non(x > 0) e ((y = 0) o (z < 0)) non ((x > 0) e (y = 0)) o (z < 0) Nella prima si fa nega x > 0, poi si fa e con y = 0 e il risultato va in o con z < 0 Nella seconda prima si fa o fra y = 0 e z < 0, poi il risultato va in e con la negazione di x > 0 Nella terza si fa e fra x > 0 e y = 0, il risultato va in o con z < 0, in si nega tutto In pratica è meglio evitare condizioni così complicate, anche perché le condizioni composte si possono sempre sostituire con strutture di selezione ripetute Ad esempio se (x > 0) e (x 5) istruzione equivale a se x > 0 se x 5 istruzione 5

6 e ancora se (x > 0) o (x 5) istruzione equivale a : se x < 0 istruzione se x 5 istruzione I cicli Spesso si devono ripetere più volte le stesse istruzioni Lo si può fare con il ciclo (l iterazione) con controllo in uscita (in coda): ripeti istruzione 1 istruzione 2 istruzione n finché condizione tutto quello che c è fra ripeti e finché viene ripetuto finché la condizione non diventa vera, dopo di che l algoritmo prosegue con le istruzioni successive Ad esempio: leggi N intero 0 i 0 ripeti stampa i i i + 1 finché i > N stampa tutti i numeri naturali fra 0 e N, poi si ferma Si può testare un algoritmo del genere dando all ingresso un valore ed eseguendolo passo passo Può essere utile costruire una tabella per riportare i cambiamenti delle variabili, l uscita (stampa) e la condizione di ciclo: N i stampa i > N F 1 2 F 2 3 F 3 4 F 4 5 F 5 6 V 6

7 Esiste un altro tipo di ciclo: il ciclo (iterazione) con il controllo in entrata (in testa): fintantoché condizione istruzione 1 istruzione 2 istruzione n Qui il ciclo fa un nuovo giro se condizione è vera; quando diventa falsa il ciclo viene saltato e l algoritmo prosegue con le istruzioni successive Se del ciclo fa parte una sola istruzione si omette la coppia : fintantoché condizione istruzione Proviamo a rifare l algoritmo precedente con un ciclo fintantoché: leggi N intero 0 i 0 fintantoché i N stampa i i i + 1 Come si vede da questo esempio, i due tipi di ciclo hanno applicazioni simili, tuttavia è opportuno ricordare le differenze: nel ciclo ripeti finché la condizione è di ciclo: quando è vera il ciclo termina nel ciclo fintantoché la condizione è di consenso al ciclo: se è vera il ciclo viene fatto nel ciclo ripeti finché le istruzioni nel ciclo vengono eseguite almeno una volta, perché il controllo è dopo nel ciclo fintantoché può succedere che le istruzioni nel ciclo non vengano mai eseguite (se da subito condizione è falsa), perché il controllo è prima Esiste il ciclo per, che esegue le istruzioni un numero dato di volte: per i da 1 a N istruzione 1 istruzione 2 istruzione n dove la sequenza di istruzioni viene ripetuta N volte, e la variabile contatore i percorre tutti i valori da 1 a N Se l istruzione da ripetere è una sola, al solito si omette : per i da 1 a N istruzione Il ciclo può cominciare da un valore diverso da 1, magari specificato da una variabile: per i da k a N 7

8 Ecco il solito algoritmo che stampa i numeri da 0 a N con il ciclo per: leggi N intero 0 per i da 0 a N stampa i è da notare che il ciclo per è comodo, ma non necessario Infatti un ciclo per da k a N è equivalente a: i k fintantoché i N istruzione 1 istruzione 2 istruzione n i i + 1 8

9 Esempi esempi esempi A questo punto, abbiamo detto tutto il necessario e possiamo vedere un (bel) po di esempi Il lettore è invitato caldamente a testarli passo passo: 1 Algoritmo che calcola la somma dei numeri naturali N: 1 a versione Ingresso: N intero non negativo Uscita: N Capacità esecutore: somma e confronto nei numeri interi non negativi leggi N intero > 0 s 0 c 1 ripeti s s + c c c + 1 finché c > N // L ultimo valore sommato è c = N stampa s Se si usa un ciclo fintantoché l algoritmo può accettare anche N = 0: 2 a versione Ingresso: N intero 0 Uscita: N Capacità esecutore: somma e confronto nei numeri interi non negativi leggi N intero 0 s 0 c 1 fintantoché c N // se N = 0 non fa il ciclo e stampa subito s = 0 inzia s s + c c c + 1 stampa s Per la verità basta modificare la 1 a versione lizzando c a 1, ma è meno efficiente, perché fa un operazione inutile (0 + 0) Se l esecutore ha anche la capacità di sottrazione, si può fare più in breve: 3 a versione leggi N intero 0 s 0 fintantoché N > 0 s s + N // Somma in ordine inverso: N N N - 1 stampa s 9

10 Però così si perde il valore le di N Se serve per calcoli successivi, si può copiarlo in un altra variabile e lavorare su questa: 4 a versione leggi N intero 0 copia N s 0 fintantoché copia > 0 inzia s s + copia copia copia - 1 stampa s 2 Algoritmo che calcola il fattoriale di un numero intero 0 Il fattoriale di un numero naturale n si indica con n!; se n > 0 è il prodotto di tutti i numeri naturali da 1 a n: n! = 1 * 2 * 3 * * n se n = 0 per convenzione si pone 0! = 1 Ingresso: n intero 0 Uscita: n! = 1*2*3* *n (per definizione 0! = 1) Capacità esecutore: somma, moltiplicazione e confronto nei numeri interi non negativi 1 a versione leggi n intero 0 f 1 c 1 fintantoché c n f f*c c c + 1 stampa f Se l esecutore sa fare anche le sottrazioni: 2 a versione leggi n intero 0 f 1 fintantoché n > 0 f f*n n n - 1 stampa f 10

11 3 Algoritmo che calcola il prodotto negli interi non negativi Ingresso: x, y interi non negativi Uscita: x*y Capacità esecutore: somma, sottrazione e confronto nei numeri interi non negativi 1 a versione leggi x, y interi non negativi p 0 c 1 fintantoché c y p p + x c c + 1 stampa p 2 a versione leggi x, y interi non negativi p 0 fintantoché y > 0 p p + x y y - 1 stampa p 4 Algoritmo che calcola il prodotto negli interi relativi Ingresso: x, y interi Uscita: x*y Capacità esecutore: somma, sottrazione e confronto nei numeri interi relativi leggi x, y interi relativi se y < 0 x -x y -y p 0 fintantoché y > 0 p p + x y y - 1 stampa p Nota: l operazione di cambiamento di segno x -x (e simili) equivale alla sottrazione x 0 - x 11

12 5 Algoritmo che accetta in ingresso numeri reali > 0 e a ogni immissione produce in uscita il minimo corrente, cioè il più piccoli dei dati introdotti fino al momento considerato Il programma termina con l introduzione di un datotappo 0 (che non deve essere visualizzato come minimo) Capacità esecutore: confronto fra numeri reali 1 a versione (presuppone che venga introdotto almeno un dato buono, cioè > 0) leggi x min x stampa min ripeti leggi x se x >0 se x < min min x stampa min finché x 0 2 a versione (funziona, terminando senza stampare nulla, anche se si introduce subito un dato 0) primo vero ripeti leggi x se x >0 se primo = vero // si può anche scrivere se primo e basta min x primo falso se x < min min x stampa min finché x 0 Commento al commento: se x è una variabile booleana, la condizione x = vero equivale semplicemente a x: infatti x è vera quando lo è l espressione x = vero e viceversa Allo stesso modo la condizione x = falso può essere scritta semplicemente come non(x): infatti non(x) è vera se e solo se è vera l espressione x = falso 6 Algoritmo che calcola il quoziente e il resto della divisione intera fra numeri interi non negativi Ingresso: x intero 0, y intero > 0 Uscita: q quoziente di x diviso y, r resto di x diviso y Capacità esecutore: somma, sottrazione e confronto nei numeri interi non negativi 12

13 leggi x 0, y > 0 interi r x q 0 fintantoché r y r r y q q + 1 stampa q, r Notare che per il divisore y = 0 va in loop infinito, perché r non diminuisce mai 7 Algoritmo che restituisce la parte intera x di un numero reale x 0, cioè il più grande intero n tale che n x Ingresso: x reale 0 Uscita: n x Capacità esecutore: somma e confronto nei reali leggi x reale 0 n 0 fintantoché n x 1 n <- n + 1 stampa n 8 Come il precedente, ma accetta anche reali negativi Ingresso: x reale Uscita: n x Capacità esecutore: somma, sottrazione e confronto nei reali leggi x reale n 0 se x 0 fintantoché n x 1 n n + 1 fintantoché n > x n n - 1 stampa n 13

14 9 Algoritmo che accetta in ingresso un numero reale x e calcola n x n x: Ingresso: x reale Uscita: n x Capacità esecutore: somma, sottrazione e confronto nei reali leggi x reale n 0 se x 0 fintantoché n < x n n + 1 fintantoché n x + 1 n n - 1 stampa n, cioè il più piccolo intero n tale che 10 Algoritmo che somma gli interi compresi fra due estremi Ingresso: a, b interi Uscita: s somma degli interi fra a e b (estremi compresi) Capacità esecutore: somma, sottrazione e confronto nei numeri interi relativi leggi a, b interi se a > b max a min b max b min a s min i min fintantoché i < max i i + 1 s s + i stampa s 14

15 11 Algoritmo che decide se un numero intero non negativo è multiplo di un altro Ingresso: x intero 0, y intero > 0 Uscita: SI se x è multiplo di y, NO Capacità esecutore: somma, sottrazione e confronto nei numeri interi non negativi leggi x 0, y > 0 interi fintantoché y x x x y se x = 0 stampa SI stampa NO 12 Algoritmo che calcola la potenza con esponente intero Ingresso: a numero reale 0, n intero relativo Uscita: a n Capacità esecutore: somma, sottrazione, moltiplicazione, divisione e confronto nei numeri reali 1 a versione leggi a 0, n intero p 1 se n 0 e n e -n fintantoché c > 0 p p*a c e 1 se n < 0 p 1/p stampa p 15

16 2 a versione leggi a 0, n intero p 1 e n se e 0 fintantoché e > 0 p p*a e e 1 fintantoché e < 0 p p/a e e + 1 stampa p (qui e serve solo a salvare n) 13 Algoritmo che calcola il numero di bit necessari a esprimere un numero dato di combinazioni Ingresso: numero combinazioni c 2 intero Uscita: il più piccolo intero n tale che 2 n c Capacità esecutore: somma, moltiplicazione e confronto nei numeri interi non negativi leggi c intero 2 n 0 p 1 ripeti p 2*p n n + 1 finché p c stampa n 16

17 14 Algoritmo di Euclide per il calcolo del massimo comun divisore E probabilmente il più bell esempio di algoritmo elementare, conosciuto già dal greco Euclide (seciii ac), l autore degli Elementi, la più importante opera di geometria dell antichità Ovviamente Euclide non parlava di algoritmi e non lo scriveva come facciamo noi, ma il meccanismo è lo stesso: leggi a,b numeri naturali non nulli fintantoché a b se a > b a a b b b a stampa a E facile capire l algoritmo se, come fece Euclide, si rappresentano i numeri con segmenti Applichiamo ad esempio l algoritmo ad a = 54 e b = 42: 6 54 a 42 b 12 a 42 b 12 a 30 b 12 a 18 b 12 a 6 b 6 a 6 b L algoritmo passa da una coppia di numeri alla successiva sostituendo il più grande dei due con la differenza fra se stesso e l altro Dal disegnoè chiaro che: I I divisori comuni dei due numeri originali sono divisori comuni anche di tutte le coppie generate dall algoritmo: se un segmento sta un numero intero di volte nei due segmenti a e b, ci sta un numero intero di volte anche nella loro differenza II Viceversa, i divisori comuni di una coppia a, b lo sono anche di tutte quelle precedenti: se un segmento sta un numero intero di volte nei due segmenti a e b, ci sta un numero intero di volte anche nella loro somma 17

18 In particolare: III il mcd della coppia originale (6 nel nostro caso) è anche mcd di tutte le coppie successive: infatti per (I) è divisore di tutte le coppie successive, e se in una coppia successiva ci fosse un divisore comune più grande ancora, per (II) sarebbe divisore comune anche della coppia originale, per cui sarebbe lui il mcd D altra parte l algoritmo deve arrivare ad a = b e fermarsi, perché i segmenti non possono continuare ad accorciarsi (per quanto detto, devono contenere almeno il mcd cercato) A questo punto il valore comune di a e b è ovviamente il loro mcd e, per (III), anche il mcd della coppia originale Per finire, notiamo che l algoritmo non gestisce correttamente i casi limite in cui (almeno) uno dei due valori è nullo Infatti se uno solo dei due è dati è nullo l algoritmo va in loop infinito e non si ferma più (perché i due dati sono diversi e la sottrazione non li modifica), mentre il mcd esiste e coincide con il dato diverso da 0 (che è il più grande divisore di sé stesso, e 0 è divisibile per qualsiasi intero) Se invece i due dati sono entrambi nulli il mcd non esiste (tutti gli interi sono divisori comuni e non ne esiste uno massimo) ma l algoritmo si ferma subito producendo 0 Se si vogliono includere questi casi, lo si deve fare separatamente, premettendo all algoritmo un controllo sui dati: leggi a,b numeri naturali se (a > 0) e (b > 0) fintantoché a b se a > b a a b b b a stampa a se (a = 0) e (b = 0) o (a < 0) o ( b < 0) stampa il MCD non e definito stampa a + b // la somma è uguale a quello 0 (in questo modo funziona correttamente anche nell insieme degli interi, rispondendo correttamente che il MCD non esiste se almeno uno dei dati è < 0) 18

19 Il concetto di funzione A volte nel progettare un algoritmo abbiamo bisogno di riciclare procedimenti già sviluppati in precedenza Per esempio l algoritmo 4 che calcola il prodotto di numeri interi relativi utilizza a sua volta l algoritmo 3, che calcola il prodotto di due interi, di cui solo il primo può essere negativo Rivediamolo: Algoritmo 4 leggi x, y interi relativi se y < 0 x -x y -y p 0 // Questo, da qui fintantoche y > 0 // // p p + x // y y - 1 // // a qui, è l algoritmo 3, 2 a versione stampa p Per evitare di ripetere un lavoro già fatto, avremmo potuto scrivere l algoritmo 3 così: funzione mult1(x,y) // x intero, y intero 0 p 0 fintantoche y > 0 p p + x y y - 1 restituisci p che è la stessa cosa, ma non prende x e y dall esterno (tastiera), perché considerà i loro valori già messi nelle variabili, e non stampa (a video) il risultato, ma lo restituisce genericamente dove serve Allora l algoritmo 4 diventerebbe così: leggi x, y interi relativi se y < 0 x -x y -y risult mult1(x,y) // Come se fosse un abbreviazione di tutto l algoritmo 1, // che mette il risultato nella variabile risult stampa risult cioè mult1(x,y) è una procedura, un algoritmo, come si dice una funzione che restituisce il prodotto degli interi x e y, con y 0 Con una scrittura del tipo z mult1(x,y) intendiamo che mult1 calcola il prodotto di x per y, che poi viene messo in z Ma possiamo certo scrivere anche z mult1(a,b), dove qui mult1 calcola il prodotto di a per b, 19

20 perché in fondo il nome delle variabili in un algoritmo non ha importanza, e possiamo sempre sostituirvi i nomi vecchi con nomi nuovi: vuol dire semplicemente che a va al posto di x e b al posto di y Possiamo addirittura scrivere cose come z mult1(4,5), perché nell algoritmo possiamo sempre scrivere 4 al posto di x, e copiare 5 in y (che deve rimanere una variabile, perché fa da contatore) Insomma, possiamo dare per scontato, anche se non lo scriviamo esplicitamente, che gli argomenti della funzione, cioè i suoi ingressi, i dati su cui lavora, siano essi variabili o costanti, vengano ricopiati nelle variabili usate nell algoritmo Questa operazione di copiatura dei fattori (variabili o costanti) nelle variabili dell algoritmo la possiamo dare per scontata anche se non la scriviamo (come se fosse compresa nella definizione di funzione): ciò vuol anche dire che le variabili originali, quelle che figurano come argomenti della funzione, non vengono mai modificate dalla funzione stessa E non preoccupatevi neppure per cose tipo: p -7 x mult1(p,5) perché è vero che noi abbiamo già usato p dentro l algoritmo di mult1 per contenere il risultato della moltiplicazione, mentre qui l usiamo come fattore, ma p qui e p dentro mult1 vanno pensate come variabili diverse che non interagiscono fra loro, tanto dentro mult1 si può sempre usare una variabile di altro nome (quindi il risultato della sequenza di istruzioni è correttamente x = -35) Basta quindi intenderci e fare le semplici modifiche che servono, per riciclare algoritmi in algoritmi più complicati E possiamo anche chiamare più volte la funzione su dati diversi nella stessa istruzione, come in: z mult1(4,x)+ mult1(a,b) (che ha come risultato z = 4x + ab) o usare funzioni all interno di condizioni: (se ab > 5 y diventa 10) se mult1(a,b) > 5 y 10 E importante perà rendersi conto che nei linguaggi di programmazione, come il C, le funzioni non sono solo una abbreviazione della scrittura: sono pezzi di programma (sottoprogrammi) che possiamo richiamare tutte le volte che ci servono Basta scrivere l algoritmo come funzione una volta sola, poi usare il nome della funzione tutte le volte che dobbiamo fare quel tipo calcolo, come se fosse una nuova istruzione Addirittura, una funzione ci può essere data da un altro programmatore, e noi possiamo usarla a scatola chiusa: ci basta sapere cosa fa, non come lo fa Proviamo a riscrivere come funzioni qualcuno degli algoritmi già visti, anche quelli che, come la nuova versione appena vista di Algoritmo 4, usano ( richiamano ) a loro volta altre funzioni: funzione mult(x,y) // moltiplica due interi relativi; se y < 0 x -x y -y p mult1(x,y) // Una funzione dentro una funzione restituisci p Ci limiteremo comunque a funzioni che restituiscono un solo valore, perche sono di solito la norma nei linguaggi di programmazione Se dobbiamo tradurre in funzione un algoritmo che restituisce ad esempio due valori, come quello del quoziente e del resto (Algoritmo n7), lo spezziamo in due funzioni distinte: 20

21 funzione quoziente(x,y) q 0 fintantoché x y x x y q q + 1 restituisci q funzione resto(x,y) fintantoché x y x x y restituisci x (ricordare che le modifiche ai parametri fatte dentro alle funzioni non escono all esterno L unica uscita è attraverso l istruzione restituisci) le procedure Abbiamo visto che che le funzioni non modificano le variabili (e a maggior ragione le costanti) che passiamo loro come argomenti e restituiscono all esterno un risultato che può essere asssegnato a un avariabile o comunque usato in un espressione Però a volte è comodo considerare un tipo diverso di sottoprogrammi, che possiamo chiamare procedure Un esempio per capire: procedura raddoppio(x) // Raddoppia il numero x x = x + x (notate l assenza di restituisci) Qui entrata e uscita coincidono: è sempre la variabile x, che prima della chiamata ha un valore, dopo quello doppio Considerate le istruzioni: x 7 raddoppio(x) y 15 raddoppio(y) z x + y se pensate che alla z = 2*7 + 2*15 = 44 avete capito giusto: notate che a differenza delle funzioni le procedure modificano i loro argomenti: è proprio questo il modo con cui comunicano i risultati delle loro operazioni Anche qui possiamo usare variabili diverse (possiamo di nuovo pensare a una copia, questa volta nei due sensi: dagli argomenti alle variabili interne, dai risultato interni agli argomenti), ma naturalmente non possiamo passare a una procedura delle costanti: raddoppio(8) non ha senso (il doppio di 8 è 16, ma dove va? Non certo in 8, che non è una scatola, cioè non è una variabile ) Le procedure sono utili quando dobbiamo modificare in contemporanea più variabili; un esempio classico è lo scambio di due variabili, in cui ognuna delle variabili assume il valore che prima aveva l altra: scambia(x,y) p x // p è dello stesso tipo di x e y x y y p (perché abbiamo introdotto una variabile intermedia di parcheggio p invece di scrivere semplicemente x y seguita da y x dovrebbe essere chiaro) 21

22 In alcuni linguaggi di programmazione, come il Pascal, le procedure esistono a fianco delle funzioni In C ci sono solo le funzioni, ma queste possono, con qualche rigiro, essere usate come procedure Vedremo E per il momento basta In un prossimo futuro vedremo algoritmi più complicati, che elaborano stringhe e array, cioè insiemi ordinati di elementi Questo materiale può essere fatto girare liberamente, ma vi prego di non modificarlo senza avvertirmi Sono gradite critiche, osservazioni e commenti Sono disponibili le traduzioni in C degli esempi Bergamo, Febbraio 2009 Rivisto nel Dicembre 2010 Ippolito Perlasca 22

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee

Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Algoritmo euclideo, massimo comun divisore ed equazioni diofantee Se a e b sono numeri interi, si dice che a divide b, in simboli: a b, se e solo se esiste c Z tale che b = ac. Si può subito notare che:

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P.

Dettagli

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale Radicali 1. Radice n-esima Terminologia Il simbolo è detto radicale. Il numero è detto radicando. Il numero è detto indice del radicale. Il numero è detto coefficiente del radicale. Definizione Sia un

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

1A ARITMETICA. I numeri naturali e le quattro operazioni. Esercizi supplementari di verifica

1A ARITMETICA. I numeri naturali e le quattro operazioni. Esercizi supplementari di verifica A ARITMETICA I numeri naturali e le quattro operazioni Esercizi supplementari di verifica Esercizio Rappresenta sulla retta orientata i seguenti numeri naturali. ; ; ; 0;. 0 Esercizio Metti una crocetta

Dettagli

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti 4. Insiemi numerici 4.1 Insiemi numerici Insieme dei numeri naturali = {0,1,,3,,} Insieme dei numeri interi relativi = {..., 3,, 1,0, + 1, +, + 3, } Insieme dei numeri razionali n 1 1 1 1 = : n, m \{0}

Dettagli

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno

GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno GeoGebra 4.2 Introduzione all utilizzo della Vista CAS per il secondo biennio e il quinto anno La Vista CAS L ambiente di lavoro Le celle Assegnazione di una variabile o di una funzione / visualizzazione

Dettagli

Indice generale. Modulo 1 Algebra 2

Indice generale. Modulo 1 Algebra 2 Indice generale Modulo 1 Algebra 2 Capitolo 1 Scomposizione in fattori. Equazioni di grado superiore al primo 1.1 La scomposizione in fattori 2 1.2 Raccoglimento a fattor comune 3 1.3 Raccoglimenti successivi

Dettagli

Come si può esprimere il risultato dl un conteggio e di una misura? Quando si dice che In una

Come si può esprimere il risultato dl un conteggio e di una misura? Quando si dice che In una NUMERI INTERI E NUMERI DECIMALI Come si può esprimere il risultato dl un conteggio e di una misura? Quando si dice che In una cassetta sono contenuti 45 penne e che una lamiera misura 1,35 m. dl lunghezza,

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

al via 1 Percorsi guidati per le vacanze di matematica e scienze UNITÀ CAMPIONE Edizioni del Quadrifoglio Evelina De Gregori Alessandra Rotondi

al via 1 Percorsi guidati per le vacanze di matematica e scienze UNITÀ CAMPIONE Edizioni del Quadrifoglio Evelina De Gregori Alessandra Rotondi Evelina De Gregori Alessandra Rotondi al via 1 Percorsi guidati per le vacanze di matematica e scienze per la Scuola secondaria di primo grado UNITÀ CAMPIONE Edizioni del Quadrifoglio Test d'ingresso NUMERI

Dettagli

FUNZIONI AVANZATE DI EXCEL

FUNZIONI AVANZATE DI EXCEL FUNZIONI AVANZATE DI EXCEL Inserire una funzione dalla barra dei menu Clicca sulla scheda "Formule" e clicca su "Fx" (Inserisci Funzione). Dalla finestra di dialogo "Inserisci Funzione" clicca sulla categoria

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA

ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA ALGEBRA I: NUMERI INTERI, DIVISIBILITÀ E IL TEOREMA FONDAMENTALE DELL ARITMETICA 1. RICHIAMI SULLE PROPRIETÀ DEI NUMERI NATURALI Ho mostrato in un altra dispensa come ricavare a partire dagli assiomi di

Dettagli

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense Linguaggio del calcolatore Circuiti e reti combinatorie ppendice + dispense Solo assenza o presenza di tensione: o Tante componenti interconnesse che si basano su e nche per esprimere concetti complessi

Dettagli

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1

CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 1.1 Che cos è un algoritmo CAPITOLO PRIMO IL CONCETTO DI ALGORITMO 1 Gli algoritmi sono metodi per la soluzione di problemi. Possiamo caratterizzare un problema mediante i dati di cui si dispone all inizio

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

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

Dettagli

Algebra di Boole ed Elementi di Logica

Algebra di Boole ed Elementi di Logica Algebra di Boole ed Elementi di Logica 53 Cenni all algebra di Boole L algebra di Boole (inventata da G. Boole, britannico, seconda metà 8), o algebra della logica, si basa su operazioni logiche Le operazioni

Dettagli

I numeri relativi. Il calcolo letterale

I numeri relativi. Il calcolo letterale Indice Il numero unità I numeri relativi VIII Indice L insieme R Gli insiemi Z e Q Confronto di numeri relativi Le operazioni fondamentali in Z e Q 0 L addizione 0 La sottrazione La somma algebrica La

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Dall italiano alla logica proposizionale

Dall italiano alla logica proposizionale Rappresentare l italiano in LP Dall italiano alla logica proposizionale Sandro Zucchi 2009-10 In questa lezione, vediamo come fare uso del linguaggio LP per rappresentare frasi dell italiano. Questo ci

Dettagli

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma.

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma. Addizione: PROPRIETA' COMMUTATIVA Cambiando l'ordine degli addendi la somma non cambia. 1) a + b = b + a PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si

Dettagli

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2 Dati due numeri naturali a e b, diremo che a è divisibile per b se la divisione a : b è esatta, cioè con resto 0. In questo caso diremo anche che b è un divisore di a. 24 : 3 = 8 con resto 0 26 : 4 = 6

Dettagli

Alla pagina successiva trovate la tabella

Alla pagina successiva trovate la tabella Tabella di riepilogo per le scomposizioni Come si usa la tabella di riepilogo per le scomposizioni Premetto che, secondo me, questa tabella e' una delle pochissime cose che in matematica bisognerebbe "studiare

Dettagli

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE 1 DIPENDENZA E INDIPENDENZA LINEARE Se ho alcuni vettori v 1, v 2,, v n in uno spazio vettoriale V, il sottospazio 1 W = v 1,, v n di V da loro generato è

Dettagli

1 n. Intero frazionato. Frazione

1 n. Intero frazionato. Frazione Consideriamo un intero, prendiamo un rettangolo e dividiamolo in sei parti uguali, ciascuna di queste parti rappresenta un sesto del rettangolo, cioè una sola delle sei parti uguali in cui è stato diviso.

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

SCOMPOSIZIONE IN FATTORI DI UN POLINOMIO

SCOMPOSIZIONE IN FATTORI DI UN POLINOMIO SCOMPOSIZIONE IN FATTORI DI UN POLINOMIO Così come avviene per i numeri ( 180 = 5 ), la scomposizione in fattori di un polinomio è la trasformazione di un polinomio in un prodotto di più polinomi irriducibili

Dettagli

APPUNTI DI MATEMATICA GLI INSIEMI NUMERICI

APPUNTI DI MATEMATICA GLI INSIEMI NUMERICI APPUNTI DI MATEMATICA GLI INSIEMI NUMERICI I numeri naturali I numeri interi I numeri razionali Teoria degli insiemi (cenni) ALESSANDRO BOCCONI Indice 1 L insieme N dei numeri naturali 4 1.1 Introduzione.........................................

Dettagli

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali 1 Numeri naturali La successione di tutti i numeri del tipo: 0,1, 2, 3, 4,..., n,... forma l'insieme dei numeri naturali, che si indica con il simbolo N. Tale insieme si può disporre in maniera ordinata

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

STRUTTURE (O COSTRUTTI) DI CONTROLLO

STRUTTURE (O COSTRUTTI) DI CONTROLLO Le strutture di controllo Le strutture di controllo STRUTTURE (O COSTRUTTI) DI CONTROLLO determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

Appunti di Logica Matematica

Appunti di Logica Matematica Appunti di Logica Matematica Francesco Bottacin 1 Logica Proposizionale Una proposizione è un affermazione che esprime un valore di verità, cioè una affermazione che è VERA oppure FALSA. Ad esempio: 5

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

Frazioni e numeri razionali

Frazioni e numeri razionali Frazioni e numeri razionali I numeri naturali sono i primi numeri che hai incontrato, quando hai cominciato a contare con le dita. Ma vuoi eseguire tutte le sottrazioni. E allora hai bisogno dei numeri

Dettagli

Ricapitoliamo. Ricapitoliamo

Ricapitoliamo. Ricapitoliamo Ricapitoliamo Finora ci siamo concentrati sui processi computazionali e sul ruolo che giocano le procedure nella progettazione dei programmi In particolare, abbiamo visto: Come usare dati primitivi (numeri)

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

4. Operazioni elementari per righe e colonne

4. Operazioni elementari per righe e colonne 4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:

Dettagli

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Cenni su algoritmi, diagrammi di flusso, strutture di controllo Cenni su algoritmi, diagrammi di flusso, strutture di controllo Algoritmo Spesso, nel nostro vivere quotidiano, ci troviamo nella necessità di risolvere problemi. La descrizione della successione di operazioni

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Scuola primaria: obiettivi al termine della classe 5

Scuola primaria: obiettivi al termine della classe 5 Competenza: partecipare e interagire con gli altri in diverse situazioni comunicative Scuola Infanzia : 3 anni Obiettivi di *Esprime e comunica agli altri emozioni, sentimenti, pensieri attraverso il linguaggio

Dettagli

ESTRAZIONE DI RADICE

ESTRAZIONE DI RADICE ESTRAZIONE DI RADICE La radice è l operazione inversa dell elevamento a potenza. L esponente della potenza è l indice della radice che può essere: quadrata (); cubica (); quarta (4); ecc. La base della

Dettagli

CALCOLO DEL MASSIMO COMUN DIVISORE

CALCOLO DEL MASSIMO COMUN DIVISORE CALCOLO DEL MASSIMO COMUN DIVISORE Problema: "calcolare il Massimo Comun Divisore (M.C.D.) di due numeri naturali, A e B, secondo l'algoritmo cosiddetto delle sottrazioni successive". L'algoritmo "delle

Dettagli

Così come le macchine meccaniche trasformano

Così come le macchine meccaniche trasformano DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Il Consiglio Scientifico della rivista ha pensato di attuare un iniziativa culturalmente utile presentando in ogni numero di Mondo Digitale un argomento

Dettagli

LA NOTAZIONE SCIENTIFICA

LA NOTAZIONE SCIENTIFICA LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo

Dettagli

I numeri complessi. Mario Spagnuolo Corso di Laurea in Fisica - Facoltà di Scienze - Università Federico II di Napoli

I numeri complessi. Mario Spagnuolo Corso di Laurea in Fisica - Facoltà di Scienze - Università Federico II di Napoli I numeri complessi Mario Spagnuolo Corso di Laurea in Fisica - Facoltà di Scienze - Università Federico II di Napoli 1 Introduzione Studiare i numeri complessi può sembrare inutile ed avulso dalla realtà;

Dettagli

Analisi Matematica di circuiti elettrici

Analisi Matematica di circuiti elettrici Analisi Matematica di circuiti elettrici Eserciziario A cura del Prof. Marco Chirizzi 2011/2012 Cap.5 Numeri complessi 5.1 Definizione di numero complesso Si definisce numero complesso un numero scritto

Dettagli

I numeri. Premessa: Che cosa sono e a che servono i numeri?

I numeri. Premessa: Che cosa sono e a che servono i numeri? I numeri Premessa: Che cosa sono e a che servono i numeri? Come ti sarai reso conto, i numeri occupano un ruolo importante nella tua vita: dai numeri che esprimono il prezzo degli oggetti venduti in un

Dettagli

Prolog: aritmetica e ricorsione

Prolog: aritmetica e ricorsione Capitolo 13 Prolog: aritmetica e ricorsione Slide: Aritmetica e ricorsione 13.1 Operatori aritmetici In logica non vi è alcun meccanismo per la valutazione di funzioni, che è fondamentale in un linguaggio

Dettagli

Parte 3. Rango e teorema di Rouché-Capelli

Parte 3. Rango e teorema di Rouché-Capelli Parte 3. Rango e teorema di Rouché-Capelli A. Savo Appunti del Corso di Geometria 203-4 Indice delle sezioni Rango di una matrice, 2 Teorema degli orlati, 3 3 Calcolo con l algoritmo di Gauss, 6 4 Matrici

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

CONOSCIAMO GLI ALGORITMI E I LINGUAGGI

CONOSCIAMO GLI ALGORITMI E I LINGUAGGI Dal problema al programma UNITÀ DIDATTICA 1 CONOSCIAMO GLI ALGORITMI E I LINGUAGGI IN QUESTA UNITÀ IMPAREREMO... che cos è un problema e come affrontarlo che cosa sono un algoritmo e un programma che cosa

Dettagli

Teoria degli insiemi

Teoria degli insiemi Teoria degli insiemi pag 1 Easy Matematica di dolfo Scimone Teoria degli insiemi Il concetto di insieme si assume come primitivo, cioè non riconducibile a concetti precedentemente definiti. Sinonimi di

Dettagli

EQUAZIONI E DISEQUAZIONI POLINOMIALI E COLLEGAMENTI CON LA GEOMETRIA ELEMENTARE

EQUAZIONI E DISEQUAZIONI POLINOMIALI E COLLEGAMENTI CON LA GEOMETRIA ELEMENTARE EQUAZIONI E DISEQUAZIONI POLINOMIALI E COLLEGAMENTI CON LA GEOMETRIA ELEMENTARE 1. EQUAZIONI Definizione: un equazione è un uguaglianza tra due espressioni letterali (cioè in cui compaiono numeri, lettere

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani Ricerca Operativa Esercizi sul metodo del simplesso Luigi De Giovanni, Laura Brentegani 1 1) Risolvere il seguente problema di programmazione lineare. ma + + 3 s.t. 2 + + 2 + 2 + 3 5 2 + 2 + 6,, 0 Soluzione.

Dettagli

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori" slide a cura di Salvatore Orlando & Marta Simeoni " Architettura degli Elaboratori 1 Interi unsigned in base 2" Si utilizza un

Dettagli

Ricorsione. Rosario Culmone. - p. 1/13

Ricorsione. Rosario Culmone. - p. 1/13 Ricorsione Rosario Culmone - p. 1/13 Induzione e Ricorsione Spesso utilizzeremo le definizioni induttive. Sono forme di definizione compatte che descrivono un numero infinito di elementi. I contesti di

Dettagli

Non tutto, ma un po di tutto

Non tutto, ma un po di tutto ALFREDO MANGIA Non tutto, ma un po di tutto Nozioni fondamentali per conoscere e usare un foglio di calcolo. Corso di alfabetizzazione all informatica Settembre 2004 SCUOLA MEDIA GARIBALDI Genzano di Roma

Dettagli

I db, cosa sono e come si usano. Vediamo di chiarire le formule.

I db, cosa sono e come si usano. Vediamo di chiarire le formule. I db, cosa sono e come si usano. Il decibel è semplicemente una definizione; che la sua formulazione è arbitraria o, meglio, è definita per comodità e convenienza. La convenienza deriva dall osservazione

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

L infinito nell aritmetica. Edward Nelson Dipartimento di matematica Università di Princeton

L infinito nell aritmetica. Edward Nelson Dipartimento di matematica Università di Princeton L infinito nell aritmetica Edward Nelson Dipartimento di matematica Università di Princeton Poi lo condusse fuori e gli disse: . E soggiunse:

Dettagli

Percorsi di matematica per il ripasso e il recupero

Percorsi di matematica per il ripasso e il recupero Giacomo Pagina Giovanna Patri Percorsi di matematica per il ripasso e il recupero 1 per la Scuola secondaria di secondo grado UNITÀ CMPIONE Edizioni del Quadrifoglio à t i n U 1 Insiemi La teoria degli

Dettagli

IL GIOCO DEL 15. OVVERO: 1000$ PER SPOSTARE DUE BLOCCHETTI

IL GIOCO DEL 15. OVVERO: 1000$ PER SPOSTARE DUE BLOCCHETTI IL GIOCO DEL. OVVERO: 000$ PER SPOSTARE DUE BLOCCHETTI EMANUELE DELUCCHI, GIOVANNI GAIFFI, LUDOVICO PERNAZZA Molti fra i lettori si saranno divertiti a giocare al gioco del, uno dei più celebri fra i giochi

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

1. Intorni di un punto. Punti di accumulazione.

1. Intorni di un punto. Punti di accumulazione. 1. Intorni di un punto. Punti di accumulazione. 1.1. Intorni circolari. Assumiamo come distanza di due numeri reali x e y il numero non negativo x y (che, come sappiamo, esprime la distanza tra i punti

Dettagli

Matlab: Funzioni. Informatica B. Daniele Loiacono

Matlab: Funzioni. Informatica B. Daniele Loiacono Matlab: Funzioni Informatica B Funzioni A cosa servono le funzioni? 3 x = input('inserisci x: '); fx=1 for i=1:x fx = fx*x if (fx>220) y = input('inserisci y: '); fy=1 for i=1:y fy = fy*y A cosa servono

Dettagli

A i è un aperto in E. i=1

A i è un aperto in E. i=1 Proposizione 1. A è aperto se e solo se A c è chiuso. Dimostrazione. = : se x o A c, allora x o A = A o e quindi esiste r > 0 tale che B(x o, r) A; allora x o non può essere di accumulazione per A c. Dunque

Dettagli

GRANDEZZE SINUSOIDALI

GRANDEZZE SINUSOIDALI GRANDEE SINUSOIDALI INDICE -Grandezze variabili. -Grandezze periodiche. 3-Parametri delle grandezze periodiche. 4-Grandezze alternate. 5-Grandezze sinusoidali. 6-Parametri delle grandezze sinusoidali.

Dettagli

SCUOLA PRIMARIA DI MONTE VIDON COMBATTE CLASSE V INS. VIRGILI MARIA LETIZIA

SCUOLA PRIMARIA DI MONTE VIDON COMBATTE CLASSE V INS. VIRGILI MARIA LETIZIA SCUOLA PRIMARIA DI MONTE VIDON COMBATTE CLASSE V INS. VIRGILI MARIA LETIZIA Regoli di Nepero Moltiplicazioni In tabella Moltiplicazione a gelosia Moltiplicazioni Con i numeri arabi Regoli di Genaille Moltiplicazione

Dettagli

Unità 1. I Numeri Relativi

Unità 1. I Numeri Relativi Unità 1 I Numeri Relativi Allinizio della prima abbiamo introdotto i 0numeri 1 naturali: 2 3 4 5 6... E quattro operazioni basilari per operare con essi + : - : Ci siamo però accorti che la somma e la

Dettagli

Esercizi su lineare indipendenza e generatori

Esercizi su lineare indipendenza e generatori Esercizi su lineare indipendenza e generatori Per tutto il seguito, se non specificato esplicitamente K indicherà un campo e V uno spazio vettoriale su K Cose da ricordare Definizione Dei vettori v,,v

Dettagli

Da una a più variabili: derivate

Da una a più variabili: derivate Da una a più variabili: derivate ( ) 5 gennaio 2011 Scopo di questo articolo è di evidenziare le analogie e le differenze, relativamente al calcolo differenziale, fra le funzioni di una variabile reale

Dettagli

APPUNTI DI MATEMATICA LE DISEQUAZIONI NON LINEARI

APPUNTI DI MATEMATICA LE DISEQUAZIONI NON LINEARI APPUNTI DI MATEMATICA LE DISEQUAZIONI NON LINEARI Le disequazioni fratte Le disequazioni di secondo grado I sistemi di disequazioni Alessandro Bocconi Indice 1 Le disequazioni non lineari 2 1.1 Introduzione.........................................

Dettagli

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore

Cicli in Visual Basic for Application. For contatore = inizio To fine istruzioni Next contatore Cicli in Visual Basic for Application Le strutture del programma che ripetono l'esecuzione di una o più istruzioni sono chiamate Cicli. Alcune strutture per i cicli sono costruite in modo da venire eseguite

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

La ricorsione. Politecnico di Milano Sede di Cremona

La ricorsione. Politecnico di Milano Sede di Cremona La ricorsione Politecnico di Milano Sede di Cremona Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Definizioni ricorsive Sono comuni

Dettagli

2 Rappresentazioni grafiche

2 Rappresentazioni grafiche asi di matematica per la MPT 2 Rappresentazioni grafiche I numeri possono essere rappresentati utilizzando i seguenti metodi: la retta dei numeri; gli insiemi. 2.1 La retta numerica Domanda introduttiva

Dettagli

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dal Problema all'algoritmo stituto Tecnico Statale Commerciale Dante Alighieri Cerignola (FG) Dispense di nformatica Anno Scolastico 2008/2009 Classe 3APS Dal Problema all'algoritmo Pr.: 001 Ver.:1.0 Autore: prof. Michele Salvemini

Dettagli

INDICE. Unità 0 LINGUAGGI MATEMATICI, 1. Unità 1 IL SISTEMA DI NUMERAZIONE DECIMALE, 49

INDICE. Unità 0 LINGUAGGI MATEMATICI, 1. Unità 1 IL SISTEMA DI NUMERAZIONE DECIMALE, 49 INDICE Unità 0 LINGUAGGI MATEMATICI, 1 Il libro prosegue nel CD Il linguaggio degli insiemi, 2 1 GLI INSIEMI E LA LORO RAPPRESENTAZIONE, 2 Gli insiemi, 2 Insieme vuoto, finito e infinito, 3 La rappresentazione

Dettagli