INFORMATICA GENERALE Francesco Cerino

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INFORMATICA GENERALE Francesco Cerino"

Transcript

1 INFORMATICA GENERALE Francesco Cerino

2 IL SISTEMA Sistema: Insieme di componenti che lavorano in modo coordinato e che sollecitati da un insieme di Input producono un insieme di Output I S O I = {i 1, i n } con n appartenente a N 0 O = {o 1, o m } con m appartenente a N 0 S = {s 1, s q } con q appartenente a N 0 Dipendenza funzionale: y è il risultato della funzione f applicata ad x. y = f(x) y = variabile dipendente f = Funzione x = variabile indipendente Esempio 9 = QUAD(3) In generale: y = QUAD(x) con x numero reale e y numero reale non negativo N.B.: E importante definire gli insiemi di appartenenza per x e y. Per i sistemi in generale è O = S(I) O è il risultato che il sistema S produce se sollecitato dall input I. Espressioni aritmetiche rappresentate come sistemi Operatori elementari a b + c c = a + b con a,b,c numeri reali

3 a b * c c = a * b con a,b,c numeri reali a b - c c = a - b con a,b,c numeri reali a b / c c = a / b con a,c numeri reali e b numero reale non nullo Ogni altro operatore, se necessario, si può definire indicandone il simbolo e gli insiemi di appartenenza di I e O. Esempio a Quad b b = a 2 con a numero reale e b numero reale non negativo E possibile combinare i sistemi elementari per ottenere ulteriori sistemi più complessi, in tal caso i sistemi elementari possono essere definiti sottosistemi. Ad esempio è possibile combinare gli operatori elementari per ottenere sistemi che rappresentino le espressioni aritmetiche.

4 CIRCUITI LOGICI I circuiti logici sono particolari sistemi che utilizzano i valori di verità (vero/falso) come elementi di input e output, e che sono basati su tre operatori elementari. Ogni operatore è caratterizzato da un simbolo, da una espressione logica e da una tabella di verità che ne descrive il funzionamento. Operatore NOT i 1 o 1 Espressione logica: o 1 = NOT (i 1 ) Tabella di verità i 1 o Operatore AND i 1 o 1 Espressione logica: o 1 = AND (i 1 ; i 2 ) Tabella di verità i 2 i 1 i 2 o Operatore OR i 1 o 1 Espressione logica: o 1 = OR (i 1 ; i 2 ) Tabella di verità i 2 i 1 i 2 o N.B.: Anche per i circuiti logici, in quanto sistemi, vale quanto detto precedentemente in merito alla combinazione di operatori elementari al fine di costruire circuiti più complessi.

5 La sintesi di un circuito logico è il procedimento che si segue partendo da un problema specifico per definire la tabella di verità, l espressione logica e lo schema elettrico del circuito che risolve il problema proposto. Esempio Realizzare un circuito logico che dati due valori di input determini se essi sono diversi. Tabella di verità i 1 i 2 o Espressione Logica: o 1 = OR(AND(NOT(i 1 );i 2 );AND(i 1 ;NOT(i 2 ))) Schema elettrico Circuiti equivalenti: Due o più circuiti si dicono equivalenti quando sono associati alla stessa tabella di verità. Circuiti equivalenti possono differire per il numero di componenti da cui sono costituiti. Dato un problema possono esistere più circuiti equivalenti che lo risolvono, in tal caso sono necessarie operazioni di ottimizzazione del circuito per fare in modo di ricavare lo schema elettrico che contenga il minor numero di componenti possibile. L ottimizzazione si basa su regole di equivalenza e di semplificazione proprie dell Algebra di Boole. 1. OR(A;0) = A 2. OR(A;1) = 1 3. AND(A;0) = 0 4. AND(A;1) = A 5. OR(A;A) = A 6. AND(A;A) = A 7. OR(A;NOT(A)) = 1 8. AND(A;NOT(A)) = 0 9. NOT(NOT(A)) = A 10. OR(A;AND(A;B)) = A 11. OR(A;AND(NOT(A);B)) = OR(A;B) Leggi di De Morgan NOT(AND(A;B)) = OR(NOT(A);NOT(B)) NOT(OR(A;B)) = AND(NOT(A);NOT(B))

6 Esercizio Rappresentare il circuito logico che consente di accendere una cifra digitale secondo il seguente schema i 1 i 2 Cifra Schema cifra zero uno due tre Tabella di verità con due input e sette output A B o 1 o 2 o 3 o 4 o 5 o 6 o Espressioni logiche semplificate, per ottenerle si è utilizzato il metodo tradizionale per la deduzione delle espressioni logiche a partire dalla tabella di verità e si sono applicate successivamente le regole di semplificazione o 1 = OR(NOT(B);AND(A;B)) o 2 = 1 o 3 = OR(NOT(A);AND(A;B)) o 4 = o1 o 5 = NOT(B) o 6 = AND(NOT(A);NOT(B)) o 7 = A

7 Schema elettrico

8 SISTEMI DI NUMERAZIONE POSIZIONALI Un sistema di numerazione è posizionale se ogni simbolo (cifra) contribuisce al valore del numero in relazione alla posizione che occupa nella sequenza. Ad esempio il simbolo 2, nella sequenza 32 ha valore di 2 unità, mentre nella sequenza 23 ha valore due decine e cioè 20. A = Alfabeto Insieme di simboli usati per comporre numeri (cifre) b = Base Valore numerico che coincide con il numero di elementi presenti nell alfabeto A = {c 0, c 1,, c n-1 } b = n In base 10 (sistema decimale) l alfabeto è formato da 10 cifre - A = {0,1,2,3,4,5,6,7,8,9} In base 8 (sistema ottale) l alfabeto è formato da 8 cifre - A = {0,1,2,3,4,5,6,7} In base 2 (sistema binario) l alfabeto è formato da 2 cifre A = {0,1} Rappresentazione: E la sequenza di simboli utilizzati per costituire numeri. Tutte le cifre utilizzate devono appartenere all alfabeto associato alla base di rappresentazione. Per cui la rappresentazione (172) ha senso in base 8, ma non ha senso in base 6, visto che il simbolo 7 non appartiene all alfabeto della base 6. Valore: E la quantificazione associata ad una specifica rappresentazione. Passaggio dalla rappresentazione al valore Per calcolare il valore associato ad una data rappresentazione, secondo una base specifica, esiste la seguente formula: (c n c 1 c 0 ) b = Σc i * b i con i che va da 0 a n Esempio (175) 10 = 5* * *10 2 = 5*1 + 7*10 + 1*100 = = 175 (175) 8 = 5* * *8 2 = 5*1 + 7*8 + 1*64 = = 125 (101) 2 = 1* * *2 2 = 1*1 + 0*2 + 1*4 = = 5 Passaggio dal valore alla rappresentazione Dato un valore espresso in decimale si può scoprire qual è la rappresentazione ad esso associata secondo una specifica base, utilizzando il metodo delle divisioni successive per la base. Il metodo consiste nel dividere il valore di partenza per la base scelta, ripetendo l operazione sui quozienti che progressivamente si ottengono, fino ad ottenere quoziente zero. La rappresentazione cercata sarà ottenuta leggendo i resti delle divisioni in ordine inverso.

9 Esempio Si determini la rappresentazione in base 2 del valore decimale diviso 2 = 6 e resto 1 6 diviso 2 = 3 e resto 0 3 diviso 2 = 1 e resto 1 1 diviso 2 = 0 e resto 1 (1101) 2 N.B.:Combinando questi due metodi è possibile convertire un valore passando dalla sua rappresentazione in base b 1 alla sua rappresentazione in base b 2. Per ottenere questo scopo si calcola dapprima il valore associato alla rappresentazione in base b 1, e successivamente, tramite il metodo delle divisioni successive, si determina la sua rappresentazione in base b 2. Esempio Determinare la rappresentazione in base 6 del valore associato alla sequenza (312) 4 Determino il valore associato alla sequenza (312) 4 (312) 4 = 2* * *4 2 = 2*1 + 1*4 + 3*16 = = 54 Determino la rappresentazione associata al valore 54 secondo la base 6 54 diviso 6 = 9 e resto 0 9 diviso 6 = 1 e resto 3 1 diviso 6 = 0 e resto 1 (130) 6

10 IL SISTEMA BINARIO ED IL COMPUTER Il sistema di numerazione posizionale in base 2 è particolarmente interessante in quanto costituisce la base di tutta l elaborazione di un PC. Il computer, nonostante sia presentato come una macchina di grosse capacità, è pur sempre poco di più di un elettrodomestico, un insieme di circuiti elettrici senza una propria intelligenza dai meccanismi alquanto elementari. Ogni circuito è attraversato da corrente elettrica oppure no. Quindi il computer, ed in particolare tutti i sui componenti, può distinguere solo tra due eventi possibili: passaggio di corrente o assenza di corrente. Questa distinzione tra due stati è la minima informazione possibile ed è equivalente ad una risposta Vero/Falso. In informatica il valore Vero/Falso viene codificato con le cifre 1/0 che prendono il nome di BIT (Binary Digit). All interno di un computer queste cifre sono organizzate in unità più grandi e più comode da gestire. Esiste quindi un sistema di equivalenze molto simile ai nostri sistemi di misura (lunghezza, capacità, peso); con la differenza che mentre noi lavoriamo in base 10, e di conseguenza il sistema di multipli e sottomultipli è riferito alle potenze di 10, il computer lavora con i bit (base 2). Ciò comporta che il sistema di multipli del bit segue un andamento relativo alle potenze di 2. BIT = {0,1} 1 BYTE = 8 BIT 1 KILOBYTE (Kb) = 1024 BYTE 1 MEGABYTE (Mb) = 1024 KILOBYTE 1 GIGABYTE (Gb) = 1024 MEGABYTE 1 TERABYTE (Tb) = 1024 GIGABYTE Possiamo osservare che sia il valore 8 che il valore 1024 sono potenze di 2. Il computer, nel suo processo di elaborazione, non fa altro che operare da un punto di vista aritmetico e logico utilizzando i bit al posto delle 10 cifre da noi utilizzate. Possiamo dire, quindi, che i bit non sono altro che i mezzi con cui il PC rappresenta la realtà, ed il loro raggruppamento in unità di misura superiori non è che una sorta di traduzione che aiuta la nostra percezione ad orientarsi nel mondo dei bit, l unico mezzo con cui noi ed il computer possiamo comunicare.

11 AUTOMI A STATI FINITI Nelle reti combinatorie (circuiti logici), l output è funzione unicamente dell input e del comportamento del sistema. O = S(I) Negli automi a stati finiti (ASF) l output è funzione anche dello stato interno, inteso come condizione in cui si viene a trovare il dispositivo in un preciso istante. O = S(I,s) Definizione formale Un ASF risulta formalmente definito tramite 5 elementi: I = {i 1, i n } Insieme degli input accettati con n appartenente a N 0 O = {o 1, o m } Insieme degli output prodotti con m appartenente a N 0 S = {s 1, s q } Insieme degli stati che l ASF può assumere con q appartenente a N 0 Fs: (I x S) S Fo: (I x S) O Funzione di transizione degli Stati Funzione di transizione delle Uscite N.B.: Gli insiemi I,S ed O devono essere insiemi finiti N.B.: Le funzioni Fs e Fo sono rappresentate da due matrici o tabelle che indicano, per ogni combinazione di Input e Stato Attuale, quelli che saranno rispettivamente lo Stato Successivo e l Output N.B.: Le due tabelle possono essere riunite in un unica tabella detta Matrice di Transizione Un ASF può essere rappresentato graficamente tramite una struttura detta Grafo Stato Attuale I/O Stato Successivo

12 Esempio Descrivere il funzionamento come ASF di un ascensore di uno stabile a 3 piani. I = {P1, P2, P3} L input consiste nella pressione del pulsante che indica il piano che si vuole raggiungere O = {+2, +1, 0, -1, -2} S = {1, 2, 3} L output consiste nello spostamento della cabina dell ascensore Lo stato interno è il piano in cui è presente la cabina ad un certo istante N.B.: E evidente che lo spostamento della cabina (Output) non dipende solo dal pulsante selezionato (Input), ma anche dalla posizione della cabina nel momento in cui si seleziona il pulsante (Stato Interno). Tale caratteristica fa rientrare questo dispositivo nella categoria degli ASF. Fs: (I x S) S I\S P P P P1/0 1 P2/+1 2 P2/0 Fo: (I x S) O P1/-1 I\S P P P P1/-2 P3/+1 P2/-1 P3/+2 3 P3/0

13 IL PROBLEMA E L ALGORITMO Problema: Questione posta per essere presa in considerazione ed eventualmente risolta. Soluzione del problema: Strategia risolutiva che comprende informazioni in nostro possesso, azioni da compiere, scelte da fare per ottenere il risultato. Dominio del problema: Campo di azione e sfera di influenza del problema preso in esame. Analisi del problema: (Acquisizione del Know-How): acquisizione di tutte le possibili informazioni inerenti il problema per poi individuarne e mettere in pratica il procedimento risolutivo del problema stesso. Problema decidibile: un problema è decidibile se è possibile in un tempo finito determinarne la soluzione con una qualsiasi metodologia o comunque stabilirne la irresolubilità. Problema indecidibile: un problema è in decidibile se non esiste soluzione determinabile in un tempo finito, non è quindi possibile deciderne la irresolubilità.

14 I DATI PROBLE MA Elemento 1 DOMINIO DEL PROBLEMA Elemento 2 Proprietà 1 Proprietà 3 Elemento 3 Proprietà 2 Partendo dal problema da risolvere in una precisa realtà si passa ad individuarne il dominio Il dominio è costituito dagli elementi di interesse funzionali alla risoluzione del problema Ogni elemento è caratterizzato da alcune proprietà DATO: Valore assunto dalle proprietà degli elementi che caratterizzano il modello del problema Un dato può essere: VARIABILE: se può assumere valori diversi (ad esempio l età di una persona) COSTANTE: se assume sempre lo stesso valore (ad esempio Pi-Greco) Per IDENTIFICATORE si intende il nome che diamo a dati variabili e dati costanti per distinguerle all interno del modello

15 Esempio NOME PERSONE ETA LUOGO DI NASCITA BIBLIOTE CA LIBRI TITOLO COPIE DISPONIBILI AUTORE CASA EDITRICE TIPO DI DATO: In un problema i dati possono essere di tipo diverso Numerico: valori da usare con operatori aritmetici Alfanumerico: sequenze di lettere e/o cifre Logico: Dati che possono assumere solo valore vero o falso DATI DI INPUT: vengono forniti dall esterno per poter risolvere il problema DATI DI OUTPUT: vengono comunicati all esterno come risultato della soluzione del problema DATI DI LAVORO: necessari all attività di elaborazione per ottenere risultati parziali TABELLA DI PROGETTO: E una tabella che contiene i dati emersi dall interpretazione di un problema proposto, e che riassume le caratteristiche dei dati stessi Nella tabella di progetto vanno specificate le seguenti informazioni Identificatore Variabile o Costante Input, Output o Lavoro Tipo Descrizione

16 Esempio Esaminare un elenco di persone con Nome e Anno di nascita, contando le persone che hanno più di 20 anni Breve analisi del problema Il Nome e l Anno di Nascita delle persone costituiscono dati di input. Per contare le persone che hanno più di 20 anni sarà necessario calcolare l età di ogni persona, eseguendo la differenza tra l anno in corso ed il corrispondente anno di nascita. Ottenuta l età sarà necessario confrontarla con il valore costante 20, ed eventualmente incrementare un contatore. Tabella di progetto Identificatore Var/Cost I/O/L Tipo Descrizione Nome V I Alfanumerico Nome della persona AnnoNascita V I Numerico Anno di nascita della persona Età V L Numerico Età della persona EtàMinima C = 20 L Numerico Valore di confronto AnnoInCorso C = 2004 L Numerico Anno in corso Contatore V O Numerico Contatore delle persone con Età>20

17 LE AZIONI Le azioni sono attività che, mettendo i dati in relazione tra loro, consentono di ottenere i risultati desiderati Ogni azione modifica lo stato di qualche oggetto, ed il suo effetto può essere riconosciuto dal cambiamento di stato dell oggetto in questione Esistono 3 tipologie di azione Azioni di Input: sono necessarie per acquisire i dati iniziali dall esterno. In generale sono indicate dal verbo LEGGI Esempio LEGGI A, dove A è una variabile di un tipo specificato L esecuzione dell automazione si arresta ed attende l immissione del valore dall esterno Da quel momento, e fino a quando il valore di A non sarà modificato, ad A sarà associato il valore inserito Azioni di Output: sono necessarie per comunicare all esterno i risultati ottenuti. In generale sono indicate dal verbo SCRIVI Esempio SCRIVI A, dove A è una variabile cui è assegnato uno specifico valore Azioni di Assegnamento: sono necessarie per scrivere o modificare il valore associato ad una variabile Ad una variabile può essere assegnato un valore costante, compatibile con il suo tipo (A 9) Ad una variabile può essere assegnato il risultato di un espressione, sempre che sia compatibile con il suo tipo o (A E), dove per espressione si intende una formula che specifica sempre un valore o Ogni espressione è composta da operatori ed operandi Gli operandi possono essere costanti, variabili o a loro volta espressioni Gli operatori possono essere di tre tipi: ARITMETICI, DI RELAZIONE, LOGICI. Esempi A B A B + 2 A B<C A NOT(A) A NOME = ROSSI A AND(B>C; ETA = 32) A e B devono essere dello stesso tipo A e B devono essere di tipo numerico A deve essere di tipo logico, B e C di tipo numerico o alfanumerico A deve essere di tipo logico A deve essere di tipo logico, NOME di tipo alfanumerico A deve essere di tipo logico, B e C di tipo numerico o alfanumerico, ETA di tipo numerico

18 L ALGORITMO Algoritmo: Insieme finito di istruzioni (operazioni elementari) che devono essere eseguite per portare a termine un determinato compito e per raggiungere un risultato definito in precedenza. Caratteristiche delle istruzioni REALIZZABILITA : Ogni istruzione deve essere eseguibile per l esecutore Calcola RADQ(43) per un alunno delle elementari NON E un istruzione realizzabile Calcola RADQ(43) per un alunno delle superiori E un istruzione realizzabile NON AMBIGUITA : Ogni istruzione deve essere precisa Calcola l IVA al 20% E non ambigua Calcola l IVA E ambigua DURATA LIMITATA NEL TEMPO: Per quanto lungo il calcolo deve terminare Calcola il quadrato dei primi numeri E limitata Calcola tutte le cifre decimali di PI-Greco NON E limitata DETERMINISTICA: Deve produrre sempre il medesimo effetto se eseguita a partire dalle stesse condizioni iniziali Moltiplica 3 per 4 E deterministico Lancia la freccia contro il bersaglio NON E deterministico ELEMENTARE: non ulteriormente scomponibile Calcola RADQ(5) E elementare se eseguita con una calcolatrice Calcola RADQ(5) NON E elementare se eseguita a mano Caratteristiche dell algoritmo Deve essere composto da un numero finito di istruzioni Deve sempre presentare un unico inizio ed un unica fine Deve essere esaustivo, cioè contemplare tutti i casi che si possono verificare Deve essere riproducibile, cioè ogni sua successiva esecuzione partendo dai medesimi dati iniziali, deve produrre gli stessi risultati LA PSEUDOCODIFICA E la descrizione dell algoritmo tramite termini e parole del linguaggio comune, seguendo una serie di regole atte ad organizzare un testo orientato alla stesura degli algoritmi. Esempio Sommare due numeri Leggi (A;B) C A + B Scrivi (C) Dividere due numeri Leggi (A;B) Se B = 0 Allora Scrivi ( Errore ) Altrimenti C A / B Scrivi (C) Fine_Se

19 I DIAGRAMMI A BLOCCHI I Diagrammi a Blocchi (Flow Chart) sono un formalismo che rende standard la descrizione dell algoritmo data in precedenza tramite la PseudoCodifica. Il diagramma è costituito da blocchi che rappresentano le singole istruzioni, e collegati tra loro da frecce che indicano il flusso dell algoritmo. I blocchi possono essere di 4 tipi, ognuno dei quali è associato ai tipi di azioni descritti in precedenza. Blocchi Inizio e Fine: devono essere sempre presenti in quanto individuano L Inizio e la Fine dell elaborazione. Devono essere UNICI INIZIO FINE I/O: E il simbolo utilizzato per le azioni di lettura (Input) e scrittura (Output) Leggi (A) Scrivi (A) Comando: E il simbolo utilizzato per le azioni di assegnamento A 2 * B Scelta: E il simbolo che consente di diramare l elaborazione in relazione al verificarsi o meno di una certa condizione No A > Sì

20 Esempio Dividere due numeri INIZIO Leggi (A) Leggi (B) Scrivi Err B = Sì B = 0 No C A / B Scrivi (C) FINE Tabella di prova E una tabella che serve per verificare la correttezza dell algoritmo risolutivo del problema. In essa vanno indicate le costanti con i loro valori fissi, le variabili di input cui vengono assegnati valori arbitrari a piacere (compatibili con il loro tipo), le variabili di lavoro cui vengono assegnati valori dedotti dall esecuzione dell algoritmo effettuata sul diagramma a blocchi, le variabili di output cui vengono assegnati valori calcolati al termine dell esecuzione dell algoritmo sul diagramma a blocchi.

21 Esempio Calcolare la media di tre numeri immessi da tastiera Breve analisi La media si ottiene sommando i tre numeri immessi in input, e dividendo il risultato ottenuto per 3. Tabella di progetto Identificatore Var/Cost I/O/L Tipo Descrizione A V I Numerico Primo valore di input B V I Numerico Secondo valore di input C V I Numerico Terzo valore di input S V L Numerico Somma dei tre valori M V O Numerico Media dei tre valori Pseudocodifica Inizio Fine Leggi (A;B;C) S A + B + C M = S / 3 Scrivi (M) Diagramma a Blocchi INIZIO Leggi (A;B;C) S A + B + C Scrivi (M) M S / 3 FINE Tabella di prova A B C S M

22 La programmazione strutturata e le strutture di controllo L attività di programmazione può essere strutturata in 4 parti: 1. Definizione ed analisi del problema 2. Organizzazione dell algoritmo risolutivo 3. Stesura del programma 4. Prove di esecuzione Le fasi 1 e 2 non prevedono l uso dell elaboratore ed sono indipendenti dal linguaggio di programmazione usato nelle fasi successive. In particolare la fase 2 (organizzazione dell algoritmo risolutivo), può essere a sua volta suddivisa in ulteriori sezioni: a. Definizione dei dati (tabella di progetto) b. Definizione delle azioni (pseudocodifica e diagrammi di flusso) La stesura dell algoritmo è una delle fasi fondamentali del lavoro di programmazione, ed è necessario definire un insieme di regole che devono essere seguite per una corretta organizzazione del lavoro. Queste regole hanno lo scopo di rendere la programmazione un qualcosa di sistematico ed ordinato e rappresentano un metodo di lavoro che viene denominato Programmazione strutturata. Programmazione strutturata: progettazione, realizzazione e collaudo di un programma costituito di parti che dipendono l una dall altra secondo un ben definito modello organizzativo. Per ottenere questo risultato è necessario un lavoro di progettazione che rispetti certi schemi e che sia codificato in modo univoco. Esempio Un segretario deve effettuare una serie di inviti ad un elenco prestabilito di persone, annotando i casi in cui l invito è andato a buon fine, il numero risulta errato oppure il numero risulta occupato. Vediamo la pseudocodifica: Inizio Fine Ripeti Leggi (numero telefonico) SollevaRicevitore ComponiNumeroTelefonico Se Occupato Allora Scrivi ( occupato ) Altrimenti Se RispondePersonaDesiderata Allora Scrivi ( ok ) Altrimenti Scrivi ( numero errato ) Fine_Se Fine_se RiagganciaRicevitore Finchè ElencoTerminato

23 Esercizio Costruire il diagramma di flusso associato alla pseudocodifica Se si osserva la pseudocodifica si nota che le singole istruzioni sono organizzate secondo strutture standard di tre tipi. Sequenza: Istruzioni che devono essere eseguite una dopo l altra secondo l ordine con cui sono state scritte.. Leggi (numero telefonico) SollevaRicevitore ComponiNumeroTelefonico.. Alternativa: l esecutore deve fare una scelta tra un certo gruppo di istruzioni ed un altro gruppo a seconda di ciò che succede in quel momento durane l elaborazione. Se RispondePersonaDesiderata Allora Scrivi ( ok ) Altrimenti Scrivi ( numero errato ) Fine_Se Ripetizione: le istruzioni comprese tra ripeti e finchè devono essere eseguite più volte, tante quante sono le telefonate da fare. Ripeti. Finchè ElencoTerminato N.B.: Le stesse strutture possono essere riscontrate nel corrispondente diagramma a blocchi. E quindi possibile individuare all interno di un algoritmo alcune strutture tipiche. Dall esempio si vede che ci esistono tre tipi di strutture, intese come schemi particolari secondo cui sono organizzate le istruzioni all interno dell algoritmo. Ci si può chiedere se questo è un caso legato al particolare problema, oppure se quanto emerso trovi conferma nella teoria generale della programmazione strutturata. Studi condotti in linea teorica consentono di affermare che: Qualsiasi algoritmo appropriato può essere descritto utilizzando solo tre strutture di base: sequenza, alternativa, ripetizione. Questi tre modelli organizzativi di base prendono il nome di strutture di controllo perché servono a controllare il percorso all interno del procedimento risolutivo per ottenere i risultati desiderati. Esistono dei sinonimi per due di queste strutture. La struttura alternativa è anche detta condizionale o di selezione, la struttura di ripetizione è anche detta iterazione. Va precisato che per struttura si intende un modello organizzativo secondo cui si rappresentano le istruzioni all interno di un algoritmo.

24 Una formalizzazione del concetto esposto viene dal teorema di Bohm-Jacopini: Teorema - Un qualsiasi algoritmo può essere espresso usando esclusivamente le strutture di sequenza, selezione ed iterazione. Un corollario di questo teorema porta a comprendere come algoritmi che presentano altre strutture possono essere scritti in modo funzionalmente equivalente tramite le tre strutture fondamentali. Corollario Ogni algoritmo, scritto usando le istruzioni di salto, è anche rappresentabile usando soltanto le tre strutture di sequenza, selezione ed iterazione. Esempio Problema: Dato un elenco di persone di cui sono noti nome e professione, si vuole stampare l elenco degli avvocati. Pseudocodifica con istruzioni di salto 1. Inizio 2. Leggi il nome e la professione di una persona 3. Se la professione è diversa da avvocato vai a 5 4. Scrivi il nome della persona 5. Se l elenco non è terminato torna a 1 6. fine Pseudocodifica funzionalmente equivalente Inizio Fine Ripeti Leggi (nome) Leggi (professione) Se professione = avvocato Allora Scrivi (nome) Fine_Se Finchè ElencoTerminato Sono evidenti alcuni tra i vantaggi dell uso della programmazione strutturata: Sequenzialità dell algoritmo Maggiore comprensibilità Moduli facilmente individuabili Controllo del flusso dell algoritmo.

25 Esercizi 1. Inserite da tastiera le coordinate di due punti del piano cartesiano, calcolare le coordinate del punto medio del segmento che unisce i due punti. 2. Dati il valore di un deposito bancario ed il tasso di interesse annuo (360gg), calcolare gli interessi maturati dopo 25 gg. 3. Sul prezzo di un prodotto viene praticato lo sconto del 3% se costa meno di 500 euro e del 5% per prezzi superiori di 500 euro. Calcolare il prezzo da pagare. 4. Date le coordinate di due punti scrivere l equazione della retta passante per essi (attenzione al caso in cui la retta sia verticale). 5. Date le equazioni di due rette nella forma y=mx+q, trovare le coordinate del punto di intersezione (considerare anche i casi di rette parallele o coincidenti) 6. La scuola rimborsa il 15% del costo dell abbonamento se lo studente abita in provincia, usa l autobus ed è lontano almeno 20 km dalla scuola. Alle stesse condizioni, se usa il treno il rimborso è del 10%. Calcolare l ammontare del rimborso. 7. Inserire da tastiera numeri interi finchè si è riusciti a sommare 100 numeri pari. Scrivere il risultato della somma. 8. Calcolare la somma dei quadrati dei primi N numeri interi (N immesso da tastiera). 9. Dato un elenco di N numeri, si devono scegliere quelli che sono maggiori di 10 e minori di 100. Contare tali numeri e scrivere la loro somma.

26 La struttura alternativa Per la struttura alternativa sono possibili due casi: l alternativa a due vie e l alternativa ad una via. Nel primo caso è prevista un azione sia per l uscita ALLORA che per l uscita ALTRIMENTI. Nel secondo caso sono previste azioni solo per l uscita ALLORA. Pseudocodifica (Alternativa a due vie) SE condizione ALLORA Istruzioni-a ALTRIMENTI Istruzioni-b FINE-SE Pseudocodifica (Alternativa ad una via) SE condizione ALLORA Istruzioni-a FINE-SE Esercizio Su una somma di denaro si vuole applicare un imposta progressiva secondo lo schema: da 0 a 5000 euro: imposta del 10% da 5001 a euro: imposta del 20% oltre i euro: imposta del 30%. La struttura iterativa post-condizionale E una struttura di ripetizione che si basa sulla valutazione di una condizione logica. L elenco di istruzioni da ripetere costituiscono il corpo del ciclo, e vengono eseguite prima della valutazione della condizione. Se la condizione è falsa si ripete il ciclo, se è vera si passa ad eseguire la prima istruzione dopo il ciclo. Pseudocodifica RIPETI istruzioni FINCHE condizione La struttura postcondizionale si utilizza quando è necessario prevedere un ciclo in cui le istruzioni devono essere eseguite almeno una volta. Esercizio Dato un elenco non vuoto di persone, con l indicazione di esse del nome e dell età, si devono contare i maggiorenni.

27 Le strutture derivate In base al teorema di Bohm-Jacopini le tre strutture descritte sono sufficienti per la soluzione di qualsiasi problema. Per facilitare il lavoro di programmazione si ricorre, però, anche ad altri tipi di strutture che risultano di notevole utilità. Dal punto di vista teorico, però, va notato che le strutture che vengono presentate ora non sono indispensabili, ma sono una derivazione delle strutture di base precedenti. Questo significa che ogni frammento di programma contente strutture derivate, può essere tradotto in un frammento equivalente che contenga solo le strutture di base. La struttura iterativa pre-condizionale E possibile definire una struttura di iterazione derivata che preveda la possibilità di non eseguire affatto le istruzioni contenute nel ciclo, a differenza della iterazione post-condizionale, in cui le istruzioni del ciclo vengono eseguite almeno una volta. Pseudocodifica MENTRE condizione istruzioni RIPETI L elenco di istruzioni da ripetere costituiscono il corpo del ciclo, e vengono dopo della valutazione della condizione. Se la condizione è vera si esegue il ciclo, se è falsa si passa ad eseguire la prima istruzione dopo il ciclo. Esercizio Calcolo del prodotto tra interi utilizzando la sola operazione di somma. Come specificato in precedenza l iterazione pre-condizionale può essere espressa per mezzo dell iterazione post-condizionale. Bisogna solo fare attenzione alla condizione di uscita dal ciclo che per la pre-condizionale è condizione falsa, per la post-condizionale è condizione vera. Esempio di equivalenza RIPETI MENTRE (a<>0) Istruzioni Istruzioni FINCHE (a=0) RIPETI

28 La struttura iterativa con contatore E un altra struttura derivata di ripetizione che permette di ripetere un certo gruppo di istruzioni non in base al valore di verità di una condizione logica, ma in base al numero di volta che si vuole ripetere il gruppo di istruzioni. Questa struttura è utilizzabile tutte le volte che il numero di ripetizioni è noto a priori. Pseudocodifica PER variabile-contatore DA valore-iniziale A valore-finale istruzioni INCREMENTA variabile-contatore Il numero di cicli è controllato dal valore della variabile contatore, che viene incrementata di una unità ad ogni ciclo. Il ciclo sarà ripetuto finchè il valore di tale variabile è compreso nell intervallo definito dal valore iniziale e dal valore finale. Esercizio Data in input una serie di N numeri interi positivi, determinare il massimo tra essi. Anche in questo caso siamo in presenza di una struttura derivata che può essere espressa per mezzo di una struttura base. Esempio di equivalenza PER variabile-contatore DA valore-iniziale A valore-finale istruzioni INCREMENTA variabile-contatore È equivalente a variabile-contatore valore iniziale RIPETI Istruzioni variabile-contatore (variabile-contatore + 1) FINCHE (variabile-contatore>valore finale) Variante E possibile specificare un PASSO per modificare l entità dell incremento Pseudocodifica PER variabile-contatore DA valore-iniziale A valore-finale PASSO incremento istruzioni INCREMENTA variabile-contatore

29 La struttura scelta multipla Lo schema organizzativo dell alternativa a due vie non sempre risponde alle necessità che si possono incontrare nella stesura degli algoritmi. Per risolvere questioni più complesse rispetto alla struttura alternativa è stato introdotto lo schema della scelta multipla (selezione multipla). Pseudocodifica CASO DI variabile = Lista valori-1 Istruzioni-1 Lista valori-2 Istruzioni-2 Lista valori-n Istruzioni-n ALTRIMENTI Istruzioni FINE-CASO Il funzionamento prevede che se il valore della variabile è presente in una delle liste di valori allora viene eseguito il blocco di istruzioni corrispondente, successivamente si procede con la prima istruzione dopo il FINE-CASO. In caso contrario viene eseguito il blocco di istruzioni associato ad ALTRIMENTI e si passa alla prima istruzione dopo il FINE-CASO. Esercizio Scrivere una pseudocodifica equivalente a quella della struttura di scelta multipla utilizzando solo strutture di base. Esercizio Per la vendita di un prodotto si deve applicare uno sconto progressivo in base al numero di pezzi ordinati, secondo la tabella: Pezzi Sconto Fino a 3 5% Fino a 5 10% Fino a 10 20% Oltre 10 30%

30 Le strutture dati In molti problemi si ha la necessità di aggregare molti dati di tipo semplice per facilitarne la rappresentazione e rendere più veloce il loro ritrovamento. I dati sono organizzati in un insieme che prende il nome di struttura dati Tipo strutturato: Array (vettore) E una struttura statica e sequenziale che viene utilizzato per rappresentare un insieme di elementi omogenei (dello stesso tipo) tra loro A Matematica Inglese Italiano Storia Filosofia Per identificare l intero vettore si utilizza una variabile (A), che va dichiarata nella tabella di progetto. Per identificare le singole componenti si utilizza un indice (i) che ne individua la posizione A[3]: indica il contenuto del terzo elemento del vettore A Per dimensione del vettore si intende il numero di componenti da cui esso è costituito. Tale dimensione è prefissata e non può essere modificata nel corso del programma (da qui la caratteristica di essere una struttura statica). La scelta della dimensione del vettore è molto importante: una dimensione troppo piccola rischia di rendere il vettore inutilizzabile una dimensione troppo grande comporta uno spreco dello spazio di memoria Esempio Caricare due vettori di dimensione 3 con valori di tipo numerico e produrre in output la somma dei valori in essi contenuto Breve analisi Il problema può essere scomposto in tre fasi distinte e sequenziali. La prima fase prevede il caricamento del vettore A, successivamente si può passare al caricamento del vettore B, infine è necessario realizzare un ciclo che sommi i valori contenuti nei due vettori, producendo le due somme in output. Tabella di progetto Identificatore Var/Cost I/O/L Tipo Descrizione A V L Vettore Numerico Vettore di dimensione 3 B V L Vettore Numerico Vettore di dimensione 3 i V L Numerico Indice di scansione dei vettori n V I Numerico Valore per l input SA V O Numerico Somma dei valori contenuti in A SB V O Numerico Somma dei valori contenuti in B

31 PseudoCodifica e Diagramma a blocchi INIZIO Inizio Fine SA 0 SB 0 PER i DA 1 A 3 Leggi (n) A[i] n INCREMENTA i PER i DA 1 A 3 Leggi (n) B[i] n INCREMENTA i PER i DA 1 A 3 SA SA + A[i] SB SB + B[i] INCREMENTA i Scrivi (SA) Scrivi (SB) i i + 1 SA 0; SB 0; i 1 Leggi (n) No Sì i = 1 Leggi (n) i = 3 A[i] n B[i] n i i + 1 No i = 3 i = 1 Sì SA SA + A[i] SB SB + B[i] No Sì i i + 1 i = 3 Scrivi (SA; SB) Tabella di prova FINE i n SA SB A[1] A[2] A[3] B[1] B[2] B[3]

32 Algoritmi fondamentali per il vettore L algoritmo più utilizzato per i vettori è il loro caricamento, che consiste semplicemente in un ciclo di lettura dei valori da inserire ed assegnamento sequenziale di tali valori alle componenti del vettore PseudoCodifica (vettore generico di dimensione d) Inizio Fine PER i DA 1 A d Leggi (n) A[i] n INCREMENTA i Il principale obiettivo del raggruppamento di elementi in un vettore è la facilitazione delle operazioni di ricerca di uno o più elementi Se gli elementi di un vettore non sono ordinati l unico criterio di ricerca possibile è la ricerca sequenziale. Essa consiste nello scorrere il vettore dall inizio fino a che non si trova l elemento cercato, oppure fino a che non si è esaminato l intero vettore, in tal caso l elemento da ricercare non è presente nel vettore. Ricerca in un vettore non ordinato Tabella di progetto Id Cost/Var Tipo I/O/L Descrizione A Vettore Num Vettore da caricare DIM C Num I Dimensione del vettore i V Num O Indice N V Num I Valore da ricercare Tabella di prova (Dim = 5) A1 A2 A3 A4 A5 i N INIZIO i := 1 ; DIM := 5 LEGGI N A(i) = N V SCRIVI i F i := i + 1 F i = DIM V SCRIVI "NON TROVATO" FINE

33 N.B.: Nel diagramma viene utilizzato per l assegnamento il simbolo := in luogo del simbolo. I due simboli sono equivalenti. Questo tipo di ricerca è abbastanza efficiente per vettori di piccole dimensioni. Potrebbe, viceversa, diventare pesante se le dimensioni del vettore sono eccessivamente grandi. A tale scopo è utile trovare strategie diverse per la ricerca di un elemento in un vettore, ad esempio, ordinandolo ed eseguendo una ricerca molto più efficiente dell elemento Ordinamento di un vettore Esistono vari criteri di ordinamento di un vettore, ma nessuno di essi può essere considerato il migliore in assoluto. La bontà di un algoritmo di ordinamento dipende da molti fattori tra cui la dimensione del vettore stesso ed il livello di disordine presente all interno del vettore da ordinare. Tabella di progetto Id Cost/Var Tipo I/O/L Descrizione A Vettore Num Vettore da caricare DIM C Num I Dimensione del vettore i V Num L Indice J V Num L Indice T V Num L Temporaneo per scambio INIZIO i := 1 ; DIM := 5 J := i + 1 F i := i + 1 F A(i) > A(J) V T := A(i) A(i) := A(J) A(J) := T i = DIM V FINE

34 Ricerca in un vettore ordinato Ricercare un elemento in un vettore ordinato è molto più semplice ed efficiente. Basti pensare a cosa andremmo incontro se, ad esempio, l elenco telefonico non fosse disposto in ordine alfabetico. Esistono diverse tecniche di ricerca in un vettore ordinato Ricerca sequenziale Tabella di progetto Id Cost/Var Tipo I/O/L Descrizione A Vettore Num Vettore da caricare DIM C Num I Dimensione del vettore I V Num L Indice N V Num I Valore da ricercare INIZIO i := 1 ; DIM := 5 LEGGI N A(i) = N V SCRIVI i F A(i) > N V F i := i + 1 F i = DIM V SCRIVI "NON TROVATO" FINE

35 Tale algoritmo di ricerca sequenziale in un vettore ordinato inizia la ricerca dal primo elemento, terminando nel caso di successo della ricerca I casi di insuccesso possono verificarsi se il vettore viene completamente analizzato, oppure se, essendo ordinato in modo crescente, viene trovato un elemento superiore a quello cercato. Ricerca dicotomica PseudoCodifica INIZIO Leggi(n) Trovato Falso SX 1 DX Dim RIPETI MD INT(SX + DX)/2) SE (A[SX] = n) OR (A[DX] = n) OR (A[MD] = n) ALLORA Trovato Vero ALTRIMENTI SE A[MD] < n ALLORA SX MD + 1 ALTRIMENTI DX MD 1 FINE_SE FINE_SE FINCHE (SX>DX) OR (Trovato = Vero) SE Trovato = Vero ALLORA Scrivi( Valore Presente ) ALTRIMENTI Scrivi( Valore Assente ) FINE_SE FINE Il confronto tra algoritmi che risolvono lo stesso problema si fa in relazione al numero di operazioni che eseguono per giungere alla soluzione. Spesso l ottimalità di un algoritmo rispetto ad un altro non dipende esclusivamente dall algoritmo stesso, ma anche da altri fattori. La ricerca dicotomica è, in generale, migliore di quella sequenziale, ma è evidente che se l elemento da cercare si trova in A[1], quella sequenziale è più veloce!

36 Esercizi Vettori Per ogni esercizio, dopo aver fatto una breve analisi, costruire tabella di progetto, pseudocodifica, diagramma di flusso e tabella di prova (limitando a piacere la dimensione del vettore se dovesse risultare eccessiva per effettuare una prova significativa). 1. Dato un vettore di 7 elementi di tipo numerico, precaricato e già ordinato, costruire un nuovo vettore che sia identico a quello dato, ma con gli elementi in ordine inverso. 2. Caricare un vettore di 6 elementi di tipo numerico e costruire un nuovo vettore che contenga solo gli ultimi k elementi del vettore dato, con k letto da tastiera. 3. Caricare un vettore di 10 elementi di tipo numerico e fornire in output l elemento di valore massimo e quello di valore minimo. Calcolare poi la media dei 10 elementi. 4. Caricare un vettore di 10 elementi di tipo numerico e fornire in output l elemento ripetuto il maggior numero di volte. Se ci sono più elementi che soddisfano la richiesta, fornire un output quello memorizzato nella posizione di indice maggiore. 5. Convertire un numero decimale dato in input nella sua rappresentazione binaria, memorizzandola in un vettore. 6. Dati due vettori di 5 elementi di tipo numerico, precaricati, costruire un nuovo vettore che contenga solo gli elementi comuni ai due vettori dati (intersezione). 7. Dati due vettori di 5 elementi di tipo numerico, precaricati, costruire un nuovo vettore che contenga l unione degli elementi dei due vettori dati. 8. Una parola viene definita palindrome quando risulta identica sia se letta da sinistra a destra, sia se letta da destra a sinistra. (Esempio: ANNA). Dato un vettore di 5 elementi di tipo carattere, precaricato, scrivere un algoritmo che stabilisca se la parola memorizzata nel vettore è una palindrome o meno. N.B.: non è essenziale che la parola sia di senso compiuto. N.B.: L output dell algoritmo è un semplice messaggio del tipo Palindrome oppure Non Palindrome. 9. Analizzare lo stesso problema dell esercizio precedente con la differenza che il vettore sia di dimensione 4. Cambia qualcosa nell algoritmo risolutivo? Se sì, che cosa? E perché?

37 Strutture dati: Il record Un singolo oggetto necessita spesso di molti dati per essere adeguatamente descritto: per esempio, di un libro oltre al titolo vogliamo sapere il nome degli autori, l anno ed il luogo di edizione, la casa editrice ed altre informazioni. Diventa allora comodo poter aggregare tutte queste informazioni in un unica struttura che possa contenerle. Una tale struttura si diversifica dal vettore perché contiene dati fra loro non omogenei, cioè numeri, parole, codici alfanumerici ed anche strutture complesse come i vettori. Tale struttura viene denominata record e lo spazio per una singola informazione che lo costituisce si chiama campo del record. Per rappresentare un record occorre stabilire a priori quali sono i campi che lo compongono e le loro caratteristiche, andando a determinare quello che si definisce tracciato del record. Per ogni campo va definito il nome ed il tipo a livello di tabella di progetto. Vediamo alcuni esempi: Supponiamo di dover utilizzare un record per memorizzare i dati di una persona vista come studente universitario. Tracciato record STUDENTE_UNIVERSITARIO Nome campo Tipo campo Descrizione campo Matricola numerico Numero di matricola dello studente Nome alfabetico Nome dello studente Indirizzo alfanumerico Indirizzo dello studente DataNascita Data Data di nascita dello studente CodiceFiscale alfanumerico C.F. dello studente EsamiSuperati numerico Numero di esami superati Nella tabella di progetto va inserito il solo riferimento al record insieme a tutte le altre variabili utili per la progettazione dell algoritmo. Identificatore Tipo I/O/L V/C Descrizione n numerico I V Variabile di input i numerico L V Contatore Studente_Universitario Record Per utilizzare un record a livello di pseudocodifica è necessario conoscere la sintassi con cui ci si riferisce alla struttura record. Teoricamente tutto avviene nello stesso modo in cui si è utilizzata una variabile di tipo vettore, per cui bisogna distinguere il concetto di record (struttura), dal concetto di campo (dato), così come erano differenziati i concetti di vettore (struttura) e di componente del vettore (dato). Con riferimento ai vettori ricordiamo che A era il nome del vettore, mentre le singole componenti venivano individuate tramite la sintassi A[i]. Va precisato che erano le singole componenti ad essere usate a livello sintattico nella pseudocodifica, in quanto esse contenevano il singolo dato, mentre il vettore rappresentava la struttura. Così la componente A[i] era usata per le operazioni di assegnamento, la valutazione di condizioni logiche, le operazioni di lettura e scrittura, ecc. Allo stesso modo il record rappresenta la struttura mentre i singoli campi contengono i dati, per essi va determinata una sintassi di riferimento, e saranno i campi ad essere utilizzati per le varie operazioni funzionali all algortmo. In generale si ha: nome_record.nomecampo Ad esempio per assegnare un valore al nome dello studente universitario si scriverà:

38 Studente_Universitario.Nome Mario Rossi Utilizzo dei record Per rappresentare in modo efficace le strutture dati si possono utilizzare tutti i tipi di dati visti finora e questi possono essere combinati tra loro: un campo di un record può essere, oltre che di un tipo elementare, a sua volta un record oppure un vettore. Così come gli elementi di un vettore possono essere a loro volta di tipo record. Campo del record di tipo vettore Un record serve a rappresentare informazioni eterogenee in merito ad oggetti di una certa realtà. Tali oggetti sono caratterizzati da informazioni che possono essere di diversi tipi. Con riferimento all oggetto persona possiamo individuare varie caratteristiche quali il nome (alfabetico), l età (numerico), l indirizzo (alfanumerico), ecc E possibile che una di queste informazioni si presenti sotto forma di elenco omogeneo. Ad esempio l elenco dei voti (numerico) per uno studente. In tal caso è possibile definire come tipo vettore tale elenco che in ogni caso è una caratteristica dello studente e come tale va descritta tramite un campo del record. Esempio Scrivere un programma che calcoli la media (4 materie) dei voti di uno studente e riporti in output il suo nome e la media calcolata. Breve analisi Utilizzo una struttura record per codificare lo studente con tutte le sue informazioni. Dopo aver preso in input i suoi dati calcolo la media e produco in output i risultati richiesti. Tabella di progetto Tracciato record Studente Nome campo Tipo campo Descrizione campo Nome alfabetico Nome dello studente Voti Vettore numerico Elenco dei voti dello studente (Dim = 4) Identificatore Tipo I/O/L V/C Descrizione Nome_s Alfabetico I/O V Nome dello studente Voto_Materia numerico I V Voto di italiano i numerico L V Indice vettore voti Tot numerico L V Somma dei voti Media O V Risultato della media S Record Studente Record studente Pseudocodifica Inizio Tot 0; Leggi (Nome_s); S.Nome Nome_s; Per i da 1 a 4 Leggi(Voto_Materia); S.Voti[i] Voto_materia; Incrementa i; Per i da 1 a 4 Tot Tot + S.Voti[i]; Incrementa i;

39 Media Tot/4; Scrivi (Nome_s); Scrivi (media); Fine Si lascia per esercizio la prosecuzione dell esempio con il diagramma di flusso e la tabella di prova. Le tabelle (vettori di record) Il vettore di record è una struttura molto importante e molto utilizzata, tanto da assumere, come struttura, un nome ben preciso. Esso viene identificato come tabella perché si può schematizzare come una tabella contenente tante colonne quanti sono i campi del record e tante righe quante sono le componenti del vettore. Una tale struttura serve per dare un significato più completo al tipo record ed a ciò che rappresenta nella realtà. In effetti abbiamo detto che un record serve a memorizzare informazioni eterogenee di uno specifico oggetto, informazioni che ne rappresentano le singole caratteristiche di interesse. Nella realtà questo oggetti si trovano aggregati in elenchi, e per questo motivo è necessario prevedere una struttura che sia in grado di rappresentare collezioni di oggetti. Esempio L elenco telefonico è una collezione di persone, ed ogni persona è individuate da certe caratteristiche eterogenee. In tal senso è opportuno individuare un tipo Persona da rappresentare mediante un record, ed un tipo ElencoTelefonico, che non è altro che un vettore di persone. Da notare che il concetto di elenco di persone rispetta la struttura a vettore in quanto è una collezione di oggetti omogenei tra loro. Proviamo a scrivere allora la tabella di progetto e la pseudocodifica di un algoritmo che ricerchi una persona data in input, all interno di un elenco telefonico precaricato in tutte le sue componenti. N.B.: Della persona si utilizza solo il cognome e si ipotizza che non esistano omonimie. L elenco è limitato a 100 persone ed è già caricato in modo ordinato. Si sceglie di utilizzare la ricerca sequenziale su un vettore ordinato. Tabella di progetto Tracciato record Persona Nome campo Tipo campo Descrizione campo Nome_P Alfabetico Nome della persona Indirizzo_P Alfanumerico Indirizzo della persona Numero_telefonico_P Alfanumerico Numero di telefono Identificatore Tipo I/O/L V/C Descrizione E_T Vettore di Persona Vettore elenco telefonico (Dim = 100) Cognome Alfabetico I/O V Input del cognome da ricercare Num_Tel Alfanumerico O V Output del numero telefonico della persona trovata Indirizzo Alfanumerico O V Output dell indirizzo della persona trovata Num_Pers Numerico L C Numero di persone in elenco (100) Trovato Logico L V Variabile logica per la ricerca Mess Alfabetico O C Messaggio Non trovato

40 Pseudocodifica Inizio Num_Pers 100; i 0; Trovato Falso; Leggi (cognome); Ripeti i i + 1; se cognome = E_T[i].Nome_P allora Trovato Vero; Fine_Se; Finchè (trovato = vero) or (i=dim) Se trovato = vero Allora Num_Tel E_T[i].Numero_Telefonico_P; Indirizzo E_T[i].Indirizzo_P; scrivi(cognome;indirizzo;indirizzo); Altrimenti Scrivi (Mess); Fine_se; Fine. Esercizi 1. Progettare una struttura dati adeguata a contenere un elenco di cd musicali, scegliendo opportunamente le caratteristiche da codificare per ogni cd in funzione della scrittura di un algoritmo che determini il cd ascoltato più volte ed il cd meno costoso. La struttura non è precaricata, quindi i cd vanno inseriti uno alla volta scegliendo a piacere il loro quantitativo. 2. Dato un elenco di 100 persone di cui sono noti il cognome, l età e la professione (da scegliere tra insegnante, avvocato ed ingegnere). Scrivere un algoritmo che calcoli il numero degli avvocati che abbiano superato i 40 anni. L elenco è precaricato ed ordinato alfabeticamente per professione. 3. In una prova di corsa campestre per ogni atleta (noto per cognome) si registrano il tempo a metà gara ed il tempo finale. Scrivere un algoritmo che fornisca in output il cognome dell atleta che ha registrato il miglior tempo intermedio ed il cognome dell atleta che ha vinto la gara. Si prevede la presenza di 50 atleti in una struttura precaricata, ma non ordinata. 4. Una biblioteca gestisce un servizio di prenotazioni archiviando i 100 titoli di cui dispone in una struttura che prevede per ogni libro il titolo, l autore ed il numero di copie disponibili. Scrivere due algoritmi che realizzino il prestito e la restituzione di un libro (da ricercare per titolo). L elenco dei libri è precaricato e ordinato alfabeticamente per titolo. (Si consiglia di effettuare un attenta analisi del problema).

Problema ed Algoritmo

Problema ed Algoritmo Problema ed Algoritmo Problema Paolo si sveglia una mattina ma, stranamente, in casa è da solo. La mamma è dovuta uscire per un imprevisto di lavoro. Paolo, a colazione è solito bere una tazza di caffè

Dettagli

Algoritmi. Pagina 1 di 5

Algoritmi. Pagina 1 di 5 Algoritmi Il termine algoritmo proviene dalla matematica e deriva dal nome di in algebrista arabo del IX secolo di nome Al-Khuwarizmi e sta ad indicare un procedimento basato su un numero finito operazioni

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Caratteristiche di un calcolatore elettronico

Caratteristiche di un calcolatore elettronico Prof. Emanuele Papotto Caratteristiche di un calcolatore elettronico È una macchina, costituita da circuiti elettronici digitali e da componenti elettromeccaniche, ottiche e magnetiche. È velocissimo,

Dettagli

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

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

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Algoritmi. Andrea Passerini Informatica. Algoritmi

Algoritmi. Andrea Passerini Informatica. Algoritmi Andrea Passerini passerini@disi.unitn.it Informatica Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale

Dettagli

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Dettagli

Codifica binaria. Rappresentazioni medianti basi diverse

Codifica binaria. Rappresentazioni medianti basi diverse Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla

Dettagli

CAPITOLO 3 - ALGORITMI E CODIFICA

CAPITOLO 3 - ALGORITMI E CODIFICA FASI DI SVILUPPO DEL SOFTWARE Problema Idea (soluzione) Algoritmo (soluzione formale) Programma (traduzione dell algoritmo in una forma comprensibile da un elaboratore elettronico) Test (criteri di verifica)

Dettagli

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1 Concetti base della Tecnologia dell informazione Algoritmi Come interpreta un computer un problema? Algoritmi Algoritmo: sequenza ordinata di istruzioni per risolvere un problema (tradotto: sequenza di

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile Elaboratore Un elaboratore o computer è una macchina digitale, elettronica,

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Laurea in Ingegneria Civile e Ambientale Algoritmi e Algebra di Boole Stefano Cagnoni Il problema di fondo Descrizione

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni Sistemi di Elaborazione delle Informazioni Algoritmi e Programmi 1 Risoluzione di un problema Il procedimento di soluzione di un problema dovrebbe essere caratterizzato da: analisi del problema e identificazione

Dettagli

Corso di Informatica di Base

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

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.) Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica

Dettagli

Elementi di Informatica. Introduzione. Cos è l informatica. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing.

Elementi di Informatica. Introduzione. Cos è l informatica. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Elementi di Informatica Corso di Laurea in Ingegneria Biomedica aa 2003/2004 Ing. Antonio Coronato 1 Introduzione 2 Cos è l informatica Scienza della rappresentazione e della elaborazione (trasformazione)

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano

Dettagli

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Problema che coinvolge aspetti filosofici Interessa soprattutto distinguere informazioni diverse Con un solo simbolo è impossibile Pertanto l insieme minimo è costituito

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

Modulo 2: RAPPRESENTAZIONE DEI DATI I sistemi di numerazione

Modulo 2: RAPPRESENTAZIONE DEI DATI I sistemi di numerazione LABORATORIO DI ABILITA INFORMATICA Modulo 2: RAPPRESENTAZIONE DEI DATI I sistemi di numerazione Ing. Maria Grazia Celentano 1 SISTEMI DI NUMERAZIONE SISTEMI DI NUMERAZIONE BIT 2/73 BIT In termini pratici

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 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 2-Iterazione 1 Prerequisiti Salto condizionato Salto incondizionato Espressione logica 2 1 Introduzione In alcuni casi si presenta la necessità di eseguire un ciclo, ossia

Dettagli

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI SCUOLA PRIMARIA DEFINIZIONI SMART E RELATIVE ESERCITAZIONI MODULO 1 Competenze computazionali di base MODULO 1 COMPETENZE COMPUTAZIONALI DI BASE Dal numero decimale al numero binario Possiamo raggruppare

Dettagli

La codifica. dell informazione

La codifica. dell informazione La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dal Problema all Algoritmo Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Cosa Impareremo Informazioni e codici Definizione e soluzione di un problema Individuazione dei dati Definizione

Dettagli

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi. Flow-chart Introduzione agli algoritmi e ai diagrammi a blocchi ugo.rinaldi@gmail.com 1 Sommario Fasi dello sviluppo di un programma Algoritmo Dati: Variabili e Costanti Le operazioni tipiche Diagramma

Dettagli

Diagrammi a blocchi 1

Diagrammi a blocchi 1 Diagrammi a blocchi 1 Sommario Diagrammi di flusso, o a blocchi. Analisi strutturata. Esercizi. 2 Diagrammi a blocchi È un linguaggio formale di tipo grafico per rappresentare gli algoritmi. Attraverso

Dettagli

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3 Dall algoritmo al calcolatore: concetti introduttivi Fondamenti di Programmazione Algoritmo Problema o compito Preparazione di una torta Programmazione del VCR MCD tra due numeri Algoritmo sequenza precisa

Dettagli

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi 0.1.1.1 Definire un algoritmo 1. Con il termine algoritmo si intende: a) il software utilizzato in un calcolatore b) l elenco finito di istruzioni necessario per risolvere un problema c) un elaboratore

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni Il problema

Dettagli

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

Aritmetica dei Calcolatori Elettronici

Aritmetica dei Calcolatori Elettronici Aritmetica dei Calcolatori Elettronici Prof. Orazio Mirabella L informazione Analogica Segnale analogico: variabile continua assume un numero infinito di valori entro l intervallo di variazione intervallo

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Algoritmi

Dettagli

Modulo 1 Concetti di base della Tecnologia dell Informazione

Modulo 1 Concetti di base della Tecnologia dell Informazione Modulo 1 Concetti di base della Tecnologia dell Informazione 1.0.1.1 1.0.1.2 1.0.1.3 Algoritmi Definizione di algoritmo e sua rappresentazione grafica Per algoritmo si intende un procedimento, che permette

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: http://it.wikipedia.org/wiki/al-khwarizmi Un

Dettagli

La codifica. dell informazione. Codifica dei numeri. (continua) Codifica dei numeri. Codifica dei numeri: il sistema decimale

La codifica. dell informazione. Codifica dei numeri. (continua) Codifica dei numeri. Codifica dei numeri: il sistema decimale La codifica dell informazione Il codice ASCII consente di codificare le cifre decimali da a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero 324 potrebbe essere rappresentato

Dettagli

La codifica. dell informazione. (continua) Codifica dei numeri. Codifica dei numeri. Sono stati pertanto studiati codici alternativi per

La codifica. dell informazione. (continua) Codifica dei numeri. Codifica dei numeri. Sono stati pertanto studiati codici alternativi per La codifica dell informazione (continua) Codifica dei numeri Il codice ASCII consente di codificare le cifre decimali da 0 a 9 fornendo in questo modo un metodo per la rappresentazione dei numeri Il numero

Dettagli

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 Tipi di dati Informatica Facoltà di Medicina Veterinaria La Rappresentazione e la Codifica delle

Dettagli

I.4 Rappresentazione dell informazione

I.4 Rappresentazione dell informazione I.4 Rappresentazione dell informazione Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Ottobre 13, 2015 Argomenti Introduzione 1 Introduzione 2 3 L elaboratore Introduzione

Dettagli

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio ECDL MODULO 1 Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo 3 - Elaborazione testi Modulo 4 Foglio Elettronico Modulo 5 Uso delle Basi di Dati

Dettagli

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Docente : Ing. Secondulfo Giovanni Anno Accademico 2010-2011 Lezione 3: La Formalizzazione degli Algoritmi Dati e Variabili

Dettagli

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Dettagli

Unità di apprendimento 6. Dal problema al programma

Unità di apprendimento 6. Dal problema al programma Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 1 Conosciamo gli algoritmi e i linguaggi In questa lezione impareremo: cos è un problema come affrontarlo come descrivere

Dettagli

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

La formalizzazione dell informazione: Dati e Diagrammi di Flusso La formalizzazione dell informazione: Dati e Diagrammi di Flusso Codifica degli algoritmi Algoritmo formulato per essere comunicato tra esseri umani chiaro, sintetico e intuitivo codificato in linguaggi

Dettagli

Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017

Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017 Il linguaggio dei computer: rappresentazione in binario e algoritmi di conversione 20 settembre 2017 Architettura degli Elaboratori L Architettura (informatica) è l insieme dei criteri in base ai quali

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Informatica e Bioinformatica: Circuiti

Informatica e Bioinformatica: Circuiti Date TBD Macchina Hardware/Software Sistema Operativo Macchina Hardware La macchina hardware corrisponde alle componenti fisiche del calcolatore (quelle viste nella lezione precedente). Un sistema operativo

Dettagli

Lab 04 Programmazione Strutturata"

Lab 04 Programmazione Strutturata Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 04 Programmazione Strutturata" Lab04 1 Valutazione in cortocircuito (1)" In C, le espressioni booleane sono valutate

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione Sommario Problemi e soluzioni Definizione informale di algoritmo e esempi Proprietà degli algoritmi Input/Output, Variabili Algoritmi senza input o output 1 2 Problema Definizione (dal De Mauro Paravia):

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Algoritmo. Calcolabilità

Algoritmo. Calcolabilità Algoritmo In altri termini, l algoritmo può essere definito come la descrizione di un procedimento che ha le seguenti proprietà: deve essere esplicita e non ambigua per l interlocutore cui è destinata

Dettagli

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi Istruzioni variabili e tipi Sottoprogrammi Strutture di controllo Ricorsione 1 2 Obiettivo Ciclo di sviluppo di programmi Risoluzione

Dettagli

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 33 INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, bisogna conoscere

Dettagli

Il primo programma C++

Il primo programma C++ Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

La rappresentazione delle informazioni in un computer. La numerazione binaria

La rappresentazione delle informazioni in un computer. La numerazione binaria La rappresentazione delle informazioni in un computer La numerazione binaria Per comprendere la numerazione binaria dobbiamo prima discutere di alcune caratteristiche della numerazione decimale La numerazione

Dettagli

ALGORITMI E SOLUZIONI DI PROBLEMI

ALGORITMI E SOLUZIONI DI PROBLEMI ALGORITMI E SOLUZIONI DI PROBLEMI Il computer è una macchina complessa in grado di eseguire milioni di istruzioni al secondo, dotato di una memoria capace di contenere enormi quantità di dati, siano essi

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

Come scrivere bene codice? (1 di 1)

Come scrivere bene codice? (1 di 1) DIAGRMMI DI FLUSSO Come scrivere bene codice? (1 di 1) Prima di iniziare a scrivere un programma: Acquisire profonda comprensione del problema; Progettare un approccio per la risoluzione del problema.

Dettagli

Sistemi Web per il turismo - lezione 3 -

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

Dettagli

preparazione pane frattau per 4 persone

preparazione pane frattau per 4 persone Algoritmi introduzione Quando, nella vita di tutti i giorni, ci troviamo di fronte alla necessità di risolvere un problema, seguiamo, anche se non ce ne rendiamo conto, una sequenza di passi abbastanza

Dettagli

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1 I sistemi di numerazione Informatica - Classe 3ª, Modulo 1 1 La rappresentazione interna delle informazioni ELABORATORE = macchina binaria Informazione esterna Sequenza di bit Spett. Ditta Rossi Via Roma

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell'informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L'algebra

Dettagli

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota Corso di Problemi ed algoritmi Ing Pasquale Rota Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso Problemi ed algoritmi - Ing. Pasquale Rota 2 Proprietà degli algoritmi

Dettagli

Sistemi di numerazione

Sistemi di numerazione Sistemi di numerazione Introduzione Un sistema di numerazione è un sistema utilizzato per esprimere i numeri e possibilmente alcune operazioni che si possono effettuare su di essi. Storicamente i sistemi

Dettagli

Informatica Applicata. introduzione

Informatica Applicata. introduzione introduzione 1 INFORMATICA E' la scienza che si propone di raccogliere, organizzare, elaborare e conservare le informazioni gestendole in modo automatico. Il termine deriva dalla fusione delle parole:

Dettagli

ALGORITMI: PROPRIETÀ FONDAMENTALI

ALGORITMI: PROPRIETÀ FONDAMENTALI ALGORITMI: PROPRIETÀ FONDAMENTALI Non si può risolvere un problema senza prima fissare un insieme di azioni, i di mosse elementari possibili per l'esecutore. Bisogna conoscerne le caratteristiche, le mosse

Dettagli

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense. Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Dettagli

Analisi strutturata 1

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

Dettagli

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) INFORMATICA Cosa è l informatica Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) E una scienza E una tecnologia Cosa può essere automatizzato nell

Dettagli

Teoria dell Informazione

Teoria dell Informazione Corso di Laurea Magistrale in Scienze dell Informazione Editoriale, Pubblica e Sociale Teoria dell Informazione Cosa è l informazione L informazione è qualcosa che si possiede e si può dare ad un altro

Dettagli

La codifica. dell informazione

La codifica. dell informazione 00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

Casi di prova. Il problema dell ordinamento. Casi di prova. Casi di prova. Casi di prova

Casi di prova. Il problema dell ordinamento. Casi di prova. Casi di prova. Casi di prova Casi di prova Casi di prova Quando si vuole testare un algoritmo si devono costruire vari casi di prova. Invece di eseguire il programma più volte si può costruire un file di dati contenente tutti i casi

Dettagli

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione Dati e Istruzioni Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/28 Comunicazione dell algoritmo all

Dettagli

Esercizi svolti in aula

Esercizi svolti in aula Università degli Studi di Cagliari Corsi di Laurea in Ing. Civile e Ing. per l Ambiente e il Territorio ondamenti d Informatica 1 A.A. 2018/2019 Docente: Giorgio umera Esercizi svolti in aula ormulazione

Dettagli

Introduzione agli Algoritmi 4

Introduzione agli Algoritmi 4 Introduzione agli Algoritmi Sommario Problemi e soluzioni Definizione informale di algoritmo e esempi Proprietà degli algoritmi Input/Output, Variabili Algoritmi senza input o output Introduzione agli

Dettagli

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni La formalizzazione

Dettagli

Strutture di Controllo

Strutture di Controllo Introduzione Strutture di Controllo per strutture condizionali e cicliche Quando si affronta la programmazione si devono indicare al computer delle istruzioni da eseguire. Se il computer potesse comprendere

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La

Dettagli

Fondamenti di informatica

Fondamenti di informatica Fondamenti di informatica Alessandro GORI a.gori@unifi.it informottica.webnode.it A.Gori - Fondamenti di informatica 1 Bibliografia Introduzione ai Sistemi Informatici IV edizione, Sciuto et alt., McGraw-Hill

Dettagli

COSA SONO I FLOW CHART

COSA SONO I FLOW CHART COSA SONO LOW CHART flow chart sono schemi che descrivono visivamente come procede l esecuzione di un programma. Essi non sono legati ad uno specifico linguaggio: dato un flow chart, il programmatore può

Dettagli