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

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

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

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

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

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

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

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

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

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

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

E solo questione di metodo:

E solo questione di metodo: E solo questione di metodo: problemi e algoritmi di matematica elementare Progetto Lauree Scientifiche Scuola Estiva di Matematica (4092015) Stefano Finzi Vita Dipartimento di Matematica - Sapienza Università

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

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

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

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

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi: Modulo 8 Elettronica Digitale Contenuti: Introduzione Sistemi di numerazione posizionali Sistema binario Porte logiche fondamentali Porte logiche universali Metodo della forma canonica della somma per

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

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

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

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

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

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

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

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

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

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

la "macchina" universale di Turing

la macchina universale di Turing la "macchina" universale di Turing Nel 1854, il matematico britannico George Boole (1815-1864), elaborò una matematica algebrica che da lui prese il nome. Nell'algebra booleana le procedure di calcolo

Dettagli

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI

L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI L INNOVAZIONE SCIENTIFICO-TECNOLOGICA NEI PROCESSI PRODUTTIVI Scienza ed industria hanno oggi costituito legami molto forti di collaborazione che hanno portato innovazione tecnologica sia a livello organizzativo-amministrativo

Dettagli

Javascript: il browser

Javascript: il browser Javascript: il browser Un browser è un programma Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo Per la visualizzazione delle pagine un browser si appoggia al software di

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

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

+ / 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

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

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

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

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

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

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra.

Introduzione. è uguale a 0, spostamento di dati da una parte della memoria del calcolatore ad un altra. Appunti di Calcolatori Elettronici Modello di macchina multilivello Introduzione... 1 Linguaggi, livelli e macchine virtuali... 3 La struttura a livelli delle macchine odierne... 4 Evoluzione delle macchine

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

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

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

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

METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA 2 LEZIONE

METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA 2 LEZIONE METODI E TECNOLOGIE PER L INSEGNAMENTO DELLA MATEMATICA 2 LEZIONE LE AZIONI DEL FARE MATEMATICA OSSERVARE OSSERVARE Dalla spontanea formazione dei concetti nella mente del bambino fino alla concezione

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

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

Algoritmo. Funzioni calcolabili. Unità 28

Algoritmo. Funzioni calcolabili. Unità 28 Prerequisiti: - Conoscenza dei numeri naturali e interi e delle loro proprietà. - Acquisizione del concetto di funzione. Questa unità è riservata al primo biennio dei Licei, eccezion fatta per il Liceo

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

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

Aurora Martina Angelo Raffaele Meo Clotilde Moro Mario Scovazzi. Passo dopo passo impariamo a programmare con PYTHON

Aurora Martina Angelo Raffaele Meo Clotilde Moro Mario Scovazzi. Passo dopo passo impariamo a programmare con PYTHON Aurora Martina Angelo Raffaele Meo Clotilde Moro Mario Scovazzi Passo dopo passo impariamo a programmare con PYTHON Usare Python come calcolatrice Sul tuo computer clicca su: start, programmi, Python,

Dettagli

GUIDA RAPIDA ALL USO DI EXCEL

GUIDA RAPIDA ALL USO DI EXCEL GUIDA RAPIDA ALL USO DI EXCEL I fogli elettronici vengono utilizzati in moltissimi settori, per applicazioni di tipo economico, finanziario, scientifico, ingegneristico e sono chiamati in vari modi : fogli

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Rappresentazione binaria dei numeri negativi

Rappresentazione binaria dei numeri negativi Introduzione all Informatica 1 Conversione decimale binario (continuazione) La conversione di un numero decimale (es. 112) in binario si effettua tramite l algoritmo della divisione, dividendo successivamente

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

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

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

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

Appunti introduttivi sulla progettazione degli algoritmi

Appunti introduttivi sulla progettazione degli algoritmi Appunti introduttivi sulla progettazione degli algoritmi Marco Liverani Ottobre 2007 Nelle pagine seguenti sono riportati alcuni problemi e le relative soluzioni costituite da semplici algoritmi espressi

Dettagli

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere;

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere; Algoritmi 3 3.5 Capacità di calcolo Il matematico inglese Alan Turing (1912-1954) descrisse nel 1936 un tipo di automi, oggi detti macchine di Turing, e fornì una della prime definizioni rigorose di esecuzione

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

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

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

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

Lezione 4 Introduzione a Microsoft Excel Parte Prima

Lezione 4 Introduzione a Microsoft Excel Parte Prima Lezione 4 Introduzione a Microsoft Excel Parte Prima Cenni preliminari... 1 Elementi sullo schermo... 2 Creazione di una cartella di lavoro... 3 Utilizzo di celle e intervalli... 3 Gestione della cartella

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

per immagini guida avanzata Usare le formule e le funzioni Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Usare le formule e le funzioni Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Usare le formule e le funzioni Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Costruire formule in Excel Per gli utenti di altri programmi di foglio di calcolo, come ad esempio Lotus 1-2-3,

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

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

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Indice. 1 Rappresentazione dei dati... 3

Indice. 1 Rappresentazione dei dati... 3 INSEGNAMENTO DI INFORMATICA DI BASE LEZIONE II CODIFICA DELL'INFORMAZIONE PROF. GIOVANNI ACAMPORA Indice 1 Rappresentazione dei dati... 3 1.1. Rappresentazione dei numeri... 3 1.1.1 Rappresentazione del

Dettagli

Un algoritmo è una sequenza di comandi (detti istruzioni) che istruiscono sull'esecuzione di un determinato compito.

Un algoritmo è una sequenza di comandi (detti istruzioni) che istruiscono sull'esecuzione di un determinato compito. Definizione di algoritmo Un algoritmo è una sequenza di comandi (detti istruzioni) che istruiscono sull'esecuzione di un determinato compito. Esempi di algoritmi possono essere: una ricetta di cucina,

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

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

Algoritmi. Maurizio Palesi. Maurizio Palesi 1 Algoritmi Maurizio Palesi Maurizio Palesi 1 Cos è Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Un algoritmo è un metodo per la soluzione

Dettagli

Il foglio elettronico: Excel

Il foglio elettronico: Excel Il foglio elettronico: Excel Laboratorio di Informatica Corso di Laurea triennale in Biologia Dott. Fabio Aiolli (aiolli@math.unipd.it) Dott.ssa Elisa Caniato (ecaniato@gmail.com) Anno accademico 2007-2008

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

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

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

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

Corso basilare di programmazione

Corso basilare di programmazione Parte vi Corso basilare di programmazione Introduzione............................................ 947 Programma didattico.................................. 947 Strumenti per la compilazione..........................

Dettagli

MINIGUIDA EXCEL MICROSOFT EXCEL

MINIGUIDA EXCEL MICROSOFT EXCEL 1 MICROSOFT EXCEL Molto spesso ci si trova a dover affrontare problemi che richiedono numerosi calcoli meccanici e ripetitivi. Un foglio elettronico è una tabella particolare che permette di far svolgere

Dettagli

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI Informatica con esercitazioni Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo

Dettagli

CURRICOLO MATEMATICA

CURRICOLO MATEMATICA 1 CURRICOLO MATEMATICA Competenza 1 al termine della scuola dell Infanzia 2 NUMERI Raggruppare, ordinare, contare, misurare oggetti, grandezze ed eventi direttamente esperibili. Utilizzare calendari settimanali

Dettagli

COMPETENZE SPECIFICHE

COMPETENZE SPECIFICHE COMPETENZE IN MATEMATICA DISCIPLINA DI RIFERIMENTO: MATEMATICA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE FISSATI DALLE INDICAZIONI NAZIONALI PER IL CURRICOLO 2012. MATEMATICA TRAGUARDI ALLA FINE DELLA

Dettagli

La programmazione. Sviluppo del software

La programmazione. Sviluppo del software La programmazione problema Sviluppo del software idea (soluzione informale) algoritmo (soluzione formale) programma (traduzione dell algoritmo in una forma comprensibile da un elaboratore elettronico)

Dettagli

CURRICOLO MATEMATICA ABILITA COMPETENZE

CURRICOLO MATEMATICA ABILITA COMPETENZE CURRICOLO MATEMATICA 1) Operare con i numeri nel calcolo aritmetico e algebrico, scritto e mentale, anche con riferimento a contesti reali. Per riconoscere e risolvere problemi di vario genere, individuando

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

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

CURRICOLO VERTICALE DI MATEMATICA. Istituto comprensivo di Castell Arquato

CURRICOLO VERTICALE DI MATEMATICA. Istituto comprensivo di Castell Arquato CURRICOLO VERTICALE DI MATEMATICA Istituto comprensivo di Castell Arquato Scuola dell infanzia Campi di esperienza Traguardi per lo sviluppo delle competenze Abilità Conoscenze Immagini, suoni, colori

Dettagli

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch. Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE Comunicazione importante dalla prossima settimana, la lezione del venerdì si terrà: dalle 15:00 alle 17.15 in aula 311 l orario

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

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

Costruzione di Siti Web con PHP e MySQL. Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date

Costruzione di Siti Web con PHP e MySQL. Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Costruzione di Siti Web con PHP e MySQL Lezione 5: Cicli, Funzioni, Operazioni con Stringhe e Date Argomenti della lezione In questa lezione si riprenderanno le strutture di controllo, verrà introdotto

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

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta Anche se spesso si afferma che il sistema binario, o in base 2, fu inventato in

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

Calcolatori: Algebra Booleana e Reti Logiche

Calcolatori: Algebra Booleana e Reti Logiche Calcolatori: Algebra Booleana e Reti Logiche 1 Algebra Booleana e Variabili Logiche I fondamenti dell Algebra Booleana (o Algebra di Boole) furono delineati dal matematico George Boole, in un lavoro pubblicato

Dettagli

APPUNTI DI ELETTRONICA DIGITALE

APPUNTI DI ELETTRONICA DIGITALE APPUNTI DI ELETTRONICA DIGITALE ITIS MARCONI-GORGONZOLA docente :dott.ing. Paolo Beghelli pag.1/24 Indice 1.ELETTRONICA DIGITALE 4 1.1 Generalità 4 1.2 Sistema di numerazione binario 4 1.3 Operazioni con

Dettagli

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR

ALGEBRA BOOLEANA FONDAMENTI DI INFORMATICA 1. Algebra di Boole. Definizione NOT, AND, OR Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica, Chimica, Elettrica e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011 Docente: Gian

Dettagli

Rappresentazione e Memorizzazione dei Dati

Rappresentazione e Memorizzazione dei Dati Rappresentazione e Memorizzazione dei Dati Giuseppe Nicosia CdL in Matematica (Laurea Triennale) Facoltà di Scienze MM.FF.NN. Università di Catania Bit e loro Memorizzazione Definizioni Algoritmo: una

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