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

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

I SISTEMI DI NUMERAZIONE

I SISTEMI DI NUMERAZIONE ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA I SISTEMI DI NUMERAZIONE Prof. G. Ciaschetti Fin dall antichità, l uomo ha avuto il bisogno di rappresentare le quantità in modo simbolico. Sono nati

Dettagli

Aritmetica: operazioni ed espressioni

Aritmetica: operazioni ed espressioni / A SCUOLA DI MATEMATICA Lezioni di matematica a cura di Eugenio Amitrano Argomento n. : operazioni ed espressioni Ricostruzione di un abaco dell epoca romana - Museo RGZ di Magonza (Germania) Libero da

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Fondamenti di calcolo booleano

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Fondamenti di calcolo booleano Breve introduzione storica Nel 1854, il prof. Boole pubblica un trattato ormai famosissimo: Le leggi del pensiero. Obiettivo finale del trattato è di far nascere la matematica dell intelletto umano, un

Dettagli

PRIMAVERA IN BICOCCA

PRIMAVERA IN BICOCCA PRIMAVERA IN BICOCCA 1. Numeri primi e fattorizzazione Una delle applicazioni più rilevanti della Teoria dei Numeri si ha nel campo della crittografia. In queste note vogliamo delineare, in particolare,

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

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori Informazione e computer Si può rappresentare l informazione attraverso varie forme: Numeri Testi Suoni Immagini 0001010010100101010 Computer Cerchiamo di capire come tutte queste informazioni possano essere

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. A partire da questa lezione, ci occuperemo di come si riescono a codificare con sequenze binarie, quindi con sequenze di 0 e 1,

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag. SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno

Dettagli

ALGORITMI 1. GLI ALGORITMI 2. IL LINGUAGGIO DI PROGETTO

ALGORITMI 1. GLI ALGORITMI 2. IL LINGUAGGIO DI PROGETTO ALGORITMI 1. GLI ALGORITMI Un algoritmo è la descrizione del percorso risolutivo di un problema per giungere dai dati iniziali ai risultati finali. Scriviamo l algoritmo pensando di rivolgerci a un esecutore,

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

IMSV 0.8. (In Media Stat Virtus) Manuale Utente

IMSV 0.8. (In Media Stat Virtus) Manuale Utente Introduzione IMSV 0.8 (In Media Stat Virtus) Manuale Utente IMSV è una applicazione che calcola che voti può'prendere uno studente negli esami che gli mancano per ottenere la media che desidera. Importante:

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

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Codifica binaria e algebra di Boole

Codifica binaria e algebra di Boole Codifica binaria e algebra di Boole Corso di Programmazione A.A. 2008/09 G. Cibinetto Contenuti della lezione Codifica binaria dell informazione Numeri naturali, interi, frazionari, in virgola mobile Base

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Lezione 2: come si descrive il trascorrere del tempo

Lezione 2: come si descrive il trascorrere del tempo Lezione 2 - pag.1 Lezione 2: come si descrive il trascorrere del tempo 2.1. Il tempo: un concetto complesso Che cos è il tempo? Sembra una domanda tanto innocua, eppure Sembra innocua perché, in fin dei

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

I SISTEMI DI NUMERAZIONE

I SISTEMI DI NUMERAZIONE Istituto di Istruzione Superiore G. Curcio Ispica I SISTEMI DI NUMERAZIONE Prof. Angelo Carpenzano Dispensa di Informatica per il Liceo Scientifico opzione Scienze Applicate Sommario Sommario... I numeri...

Dettagli

I SISTEMI DI NUMERAZIONE E LA NUMERAZIONE BINARIA

I SISTEMI DI NUMERAZIONE E LA NUMERAZIONE BINARIA I SISTEMI DI NUMERAZIONE E LA NUMERAZIONE BINARIA Indice Introduzione Il sistema decimale Il sistema binario Conversione di un numero da base 10 a base 2 e viceversa Conversione in altri sistemi di numerazione

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

Guardiamo ora però la cosa da un altro punto di vista analizzando il seguente grafico a forma di torta. La torta in 5 parti

Guardiamo ora però la cosa da un altro punto di vista analizzando il seguente grafico a forma di torta. La torta in 5 parti L EQUIVALENZA FRA I NUMERI RAZIONALI (cioè le frazioni), I NUMERI DECIMALI (quelli spesso con la virgola) ED I NUMERI PERCENTUALI (quelli col simbolo %). Ora vedremo che ogni frazione (sia propria, che

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

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

I Polinomi. Michele Buizza. L'insieme dei numeri interi lo indicheremo con Z. è domenica = non vado a scuola. signica se e solo se.

I Polinomi. Michele Buizza. L'insieme dei numeri interi lo indicheremo con Z. è domenica = non vado a scuola. signica se e solo se. I Polinomi Michele Buizza 1 Insiemi In questa prima sezione ricordiamo la simbologia che useremo in questa breve dispensa. Iniziamo innanzitutto a ricordare i simboli usati per i principali insiemi numerici.

Dettagli

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

LAVORO ESTIVO DI INFORMATICA CLASSE 2O LAVORO ESTIVO DI INFORMATICA CLASSE 2O PER COLORO CHE HANNO AVUTO LA SOSPENSIONE DEL GIUDIZIO, GLI ESERCIZI SVOLTI DEVONO ESSERE CONSEGNATI TASSATIVAMENTE IL GIORNO DELL'ESAME SCRITTO. A CHI È STATO ASSEGNATO

Dettagli

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0. EQUAZIONI E DISEQUAZIONI Le uguaglianze fra espressioni numeriche si chiamano equazioni. Cercare le soluzioni dell equazione vuol dire cercare quelle combinazioni delle lettere che vi compaiono che la

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

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

ESERCIZI DI PREPARAZIONE E

ESERCIZI DI PREPARAZIONE E ESERCIZI DI PREPARAZIONE E CONSOLIDAMENTO PER I FUTURI STUDENTI DEL PRIMO LEVI si campa anche senza sapere che cos è un equazione, senza sapere suonare uno strumento musicale, senza conoscere il nome del

Dettagli

La Logica Proposizionale. (Algebra di Boole)

La Logica Proposizionale. (Algebra di Boole) 1 ISTITUTO DI ISTRUZIONE SUPERIORE ANGIOY La Logica Proposizionale (Algebra di Boole) Prof. G. Ciaschetti 1. Cenni storici Sin dagli antichi greci, la logica è intesa come lo studio del logos, che in greco

Dettagli

Brevissima introduzione al Lisp

Brevissima introduzione al Lisp Brevissima introduzione al Lisp Versione preliminare Giorgio Ausiello, Luigi Laura May 16, 2001 Queste pagine costituiscono un riferimento per gli studenti del corso di Informatica Teorica e non hanno

Dettagli

I Sistemi di numerazione e la rappresentazione dei dati

I Sistemi di numerazione e la rappresentazione dei dati I Sistemi di numerazione e la rappresentazione dei dati LA RAPPRESENTAZIONE DELLE INFORMAZIONI (1) Per utilizzare un computer è necessario rappresentare in qualche modo le informazioni da elaborare e il

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

Serie numeriche e serie di potenze

Serie numeriche e serie di potenze Serie numeriche e serie di potenze Sommare un numero finito di numeri reali è senza dubbio un operazione che non può riservare molte sorprese Cosa succede però se ne sommiamo un numero infinito? Prima

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

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana Schemi delle Lezioni di Matematica Generale Pierpaolo Montana Al-giabr wa al-mukabalah di Al Khuwarizmi scritto approssimativamente nel 820 D.C. Manuale arabo da cui deriviamo due nomi: Algebra Algoritmo

Dettagli

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione 4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:

Dettagli

0. Piano cartesiano 1

0. Piano cartesiano 1 0. Piano cartesiano Per piano cartesiano si intende un piano dotato di due assi (che per ragioni pratiche possiamo scegliere ortogonali). Il punto in comune ai due assi è detto origine, e funziona da origine

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

ISTITUZIONI DI MATEMATICHE E FONDAMENTI DI BIOSTATISTICA. 2. Insiemi numerici. A. A. 2014-2015 L.Doretti

ISTITUZIONI DI MATEMATICHE E FONDAMENTI DI BIOSTATISTICA. 2. Insiemi numerici. A. A. 2014-2015 L.Doretti ISTITUZIONI DI MATEMATICHE E FONDAMENTI DI BIOSTATISTICA 2. Insiemi numerici A. A. 2014-2015 L.Doretti 1 INSIEMI NUMERICI rappresentano la base su cui la matematica si è sviluppata costituiscono le tappe

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

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

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

schema riassuntivo del corso di excel avanzato

schema riassuntivo del corso di excel avanzato corso di excel avanzato Materiale prodotto da Domenico Saggese unicamente come supporto per i suoi corsi. E lecito trattenerne una copia per uso personale; non è autorizzato alcun uso commerciale o in

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

Non ho idea se è la prima volta che vedi un mio prodotto oppure se in passato le nostre strade si sono già incrociate, poco importa

Non ho idea se è la prima volta che vedi un mio prodotto oppure se in passato le nostre strade si sono già incrociate, poco importa Benvenuto/a o bentornato/a Non ho idea se è la prima volta che vedi un mio prodotto oppure se in passato le nostre strade si sono già incrociate, poco importa Non pensare di trovare 250 pagine da leggere,

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

LUdeS Informatica 2 EXCEL. Prima parte AA 2013/2014

LUdeS Informatica 2 EXCEL. Prima parte AA 2013/2014 LUdeS Informatica 2 EXCEL Prima parte AA 2013/2014 COS E EXCEL? Microsoft Excel è uno dei fogli elettronici più potenti e completi operanti nell'ambiente Windows. Un foglio elettronico è un programma che

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 2 Rappresentazione delle informazioni: numeri e caratteri 1 Codice La relazione che associa ad ogni successione ben formata di simboli di

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

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

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base: LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Algoritmi, dati e programmi

Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica: Scienza che studia l informazione e la sua elaborazione. informazione rappresentazione dell informazione (dati) dati elaborazione dei dati tramite

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Cenni di logica & algebra booleana

Cenni di logica & algebra booleana Cenni di algebra booleana e dei sistemi di numerazione Dr. Carlo Sansotta - 25 2 Parte Cenni di logica & algebra booleana 3 introduzione L elaboratore elettronico funziona secondo una logica a 2 stati:

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

Categoria Student Per studenti degli ultimi due anni della scuola secondaria di secondo grado

Categoria Student Per studenti degli ultimi due anni della scuola secondaria di secondo grado Categoria Student Per studenti degli ultimi due anni della scuola secondaria di secondo grado. Risposta A). Il triangolo ABC ha la stessa altezza del triangolo AOB ma base di lunghezza doppia (il diametro

Dettagli

La codifica dell informazione

La codifica dell informazione La codifica dell informazione Parte I Sui testi di approfondimento: leggere dal Cap. del testo C (Console, Ribaudo):.,. fino a pg.6 La codifica delle informazioni Un calcolatore memorizza ed elabora informazioni

Dettagli

Che cosa è la fisica? Per arrivare ad una legge fisica si fa un insieme di cose pratiche (procedura) che si chiama metodo scientifico.

Che cosa è la fisica? Per arrivare ad una legge fisica si fa un insieme di cose pratiche (procedura) che si chiama metodo scientifico. 01 Che cosa è la fisica? In questa lezione iniziamo a studiare questa materia chiamata fisica. Spesso ti sarai fatto delle domande su come funziona il mondo e le cose che stanno attorno a te. Il compito

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Alcune nozioni di base di Logica Matematica

Alcune nozioni di base di Logica Matematica Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di

Dettagli

Appunti di Sistemi Elettronici

Appunti di Sistemi Elettronici Prof.ssa Maria Rosa Malizia 1 LA PROGRAMMAZIONE La programmazione costituisce una parte fondamentale dell informatica. Infatti solo attraverso di essa si apprende la logica che ci permette di comunicare

Dettagli

GUIDA BASE DI PASCAL

GUIDA BASE DI PASCAL 1 GUIDA BASE DI PASCAL Un algoritmo, nel suo significato più ampio, è sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono la soluzione

Dettagli

1 Grafico di una funzione reale 1. 2 Funzioni elementari 2 2.1 Funzione potenza... 2 2.2 Funzione esponenziale... 3 2.3 Funzione logaritmica...

1 Grafico di una funzione reale 1. 2 Funzioni elementari 2 2.1 Funzione potenza... 2 2.2 Funzione esponenziale... 3 2.3 Funzione logaritmica... UNIVR Facoltà di Economia Sede di Vicenza Corso di Matematica Funzioni reali di variabile reale Indice Grafico di una funzione reale 2 Funzioni elementari 2 2. Funzione potenza................................................

Dettagli

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

Corso di Laurea in INFORMATICA

Corso di Laurea in INFORMATICA Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Utilizzo I mintermini si usano quando si considererà la funzione di uscita Q come Somma di Prodotti (S. P.) ossia OR di AND.

Utilizzo I mintermini si usano quando si considererà la funzione di uscita Q come Somma di Prodotti (S. P.) ossia OR di AND. IPSI G. Plana Via Parenzo 46, Torino efinizione di Mintermine onsiderata una qualunque riga della tabella di verità in cui la funzione booleana di uscita Q vale, si definisce mintermine il prodotto logico

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

Trattamento dell informazione

Trattamento dell informazione Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8 Trattamento dell informazione Prof. Giorgio Valle D.ssa Raffaella Folgieri giorgio.valle@unimi.it folgieri@dico.unimi.it Lez1 4.10.07 Trattamento

Dettagli

1. Calcolare la probabilità che estratte a caso ed assieme tre carte da un mazzo di 40, fra di esse vi sia un solo asso, di qualunque seme.

1. Calcolare la probabilità che estratte a caso ed assieme tre carte da un mazzo di 40, fra di esse vi sia un solo asso, di qualunque seme. Esercizi difficili sul calcolo delle probabilità. Calcolare la probabilità che estratte a caso ed assieme tre carte da un mazzo di, fra di esse vi sia un solo asso, di qualunque seme. Le parole a caso

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

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

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

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

Ins. Zanella Classe seconda. Problemi moltiplicativi

Ins. Zanella Classe seconda. Problemi moltiplicativi Ins. Zanella Classe seconda Problemi moltiplicativi FOGLI DI CARTA OGGI IN CLASSE SIAMO IN 23 ALUNNI. LA MAESTRA DA AD OGNI ALUNNO 3 FOGLI. DISEGNA QUESTA SITUAZIONE, IN MODO CHE SI CAPISCA QUANTI FOGLI

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag