Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript
|
|
- Eugenio Durante
- 6 anni fa
- Visualizzazioni
Transcript
1 Sommario Problema computazionale Sviluppo software Algoritmi Diagrammi di Flusso; Pseudo Codice Istruzioni Sequenziali, Condizionali, Cicliche; Javascript
2 Il Problema computazionale È computazionale un problema che da alcuni dati iniziali porta ad un risultato in uscita tramite almeno una sequenza preordinata di passi; Esempi nella vita pratica si trovano facilmente nell arte culinaria o nella musica.
3 Esempi Il Risotto alla Zucca: - Abbiamo gli ingredienti (riso, zucca, olio, prezzemolo, cipolla, sale, etc.) con le giuste quantità; - Seguiamo la ricetta; - Serviamo il piatto a tavola.
4 Altro esempio L esecuzione della nona di Beethoven: - Abbiamo l orchestra, il direttore ed i musicisti; - Seguiamo lo spartito; - La musica riempie la sala.
5 Ma Non è così facile come sembra! Per scrivere la sequenza di passi bisogna essere un bravo cuoco o un bravo compositore (o entrambi, come Rossini); Anche per sapere eseguire bisogna imparare l arte (bisogna avere un ottimo esecutore).
6 Il cuore dell informatica definizione di un particolare problema computazionale scrittura di un algoritmo che lo risolve scrittura del programma che traduce i passi dell algoritmo in termini comprensibili dal computer
7 Il cuore dell informatica Ovvero, dato un problema bisogna definire un procedimento (l algoritmo) che possa essere eseguito automaticamente da un esecutore a partire dai dati in ingresso per risolvere il problema (fornire i risultati in uscita) algoritmo input esecutore output
8 Quindi problema risolutore algoritmo essere umano esecutore calcolatore esecuzione
9 Cosa è un Algoritmo Un algoritmo (procedimento) èuna sequenza finita di passi (azioni) che un esecutore è in grado di eseguire affinché venga risolto (in un tempo finito) un dato problema computazionale. Ogni passo deve essere eseguibile dall esecutore e in un tempo finito. Un algoritmo determina un procedimento sequenziale (un passo dopo l altro secondo un ordine specificato chiamato flusso di esecuzione) La cosa difficile è scrivere una sequenza di passi che risolvano il problema computazionale e NON scrivere un programma per il calcolatore
10 Esecutore di algoritmi Un esecutore è caratterizzato da il linguaggio che è in grado di interpretare l insieme di azioni che è in grado di compiere l insieme delle regole che ad ogni frase corretta del linguaggio (costrutto linguistico) associano le relative azioni da compiere
11 Caratteristiche di un algoritmo Tutte le azioni specificate dall algoritmo devono essere eseguibili dall esecutore sono azioni elementari In caso contrario, si deve scomporre un problema complesso in più sotto-problemi più semplici Per ogni problema più semplice deve esistere un istruzione nel linguaggio adottato per la scrittura degli algoritmi la cui esecuzione lo risolve.
12 Esempio di algoritmo L esecutore è un essere umano che è solo in grado di premere tasti ed usare il mouse Accendere il calcolatore Accendere il monitor Scrivere il nome utente Scrivere la password Premere il tasto invio Se compare il messaggio di password scaduta allora cambiare la password altrimenti accedere al desktop di windows
13 Esempio: scomposizione in sotto-problemi Ma l esecutore sa direttamente eseguire il comando cambiare la password? NO! Abbiamo definito in maniera precisa ed univoca che cosa l esecutore è in grado di fare per cui dobbiamo scrivere un algoritmo per la risoluzione del problema cambiare la password scrivere una sequenza di almeno sei caratteri ri-scrivere, per conferma, la stessa sequenza premere il tasto invio Per esercizio, avendo ormai esperienza di come si accede all aula 15, completate l algoritmo!!
14 Caratteristiche di un algoritmo Formulazione generale la soluzione individuata non deve dipendere solo da valori predefiniti dei dati, cosi che l algoritmo sia utilizzabile nel maggior numero possibile di casi Passi eseguibili univoci e non ambigui abbastanza, a volontà, un pochetto, non sono adatti ad esecutori come i calcolatori. Determinismo una volta fatto un passo, in maniera univoca quello successivo può essere determinato dall esecutore anche se ci sono alternative Finitezza del numero di passi Terminazione prima o poi l esecuzione dell algoritmo deve terminare La finitezza del numero dei passi implica la terminazione?
15 Caratteristiche di un algoritmo Ogni passo (azione) deve terminare entro un intervallo finito di tempo produrre un effetto osservabile produrre lo stesso effetto ogni volta che viene eseguito a partire dalle stesse condizioni iniziali
16 Elementi degli algoritmi Oggetti: le entità su cui opera l algoritmo Dati iniziali del problema, informazioni ausiliarie, risultati parziali e finali Le informazioni sono dette dati (anche i risultati parziali e finali) e possono essere variabili o costanti Operazioni: Interventi da effettuare sui dati Calcoli, confronti, ricopiature,acquisizioni, emissioni, ecc. Flusso di controllo: l indicazione delle possibili successioni dei passi dell algoritmo La correttezza dei risultati dipende non solo dalla corretta esecuzione delle singole operazioni, ma anche dalla corretta sequenza con cui sono eseguite
17 Flusso di controllo e di esecuzione Flusso di controllo: la descrizione a priori di tutte le possibili sequenze nell esecuzione dei passi dell algoritmo, in particolare di operazioni in alternativa e di operazioni da ripetere più volte ciclicamente Flusso di esecuzione: la sequenza di operazioni effettivamente seguita durante una particolare esecuzione dell algoritmo e che dipende dai particolari valori che i dati assumono in quell esecuzione
18 Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer dei passi dell algoritmo Deve essere scritto tramite un linguaggio che il computer capisca (linguaggio macchina); Il programmatore utilizza un linguaggio di programmazione che poi viene tradotto (da qualcosa) in linguaggio macchina;
19 Dall uomo al calcolatore uomo algoritmo programma pseudo codice diagramma di flusso linguaggio di programmazion ad alto livello traduttore linguaggio macchina esecuzione del processore input calcolatore output
20 Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo
21 Le fasi Analisi del problema computazionale (individuare input ed output, etc.) Progettazione di una soluzione proponendo una suddivisione del problema in sottoproblemi più semplici; alla fine di questa fase, per ogni sottoproblema si deve scrivere l algoritmo utilizzando pseudo-codici e diagrammi di flusso; Stesura del programma a partire dall algoritmo: implementazione vera e propria Test del programma: alfa testing, beta testing, debugging Produzione documentazione e distribuzione
22 Un altro esempio di algoritmo Preparazione del Risotto alla Zucca da parte di un esecutore in grado di aggiungere, tagliare, mescolare, tostare, mantecare, 1. Preparare il soffritto ed il brodo; 2. Aggiungere la zucca a pezzettini al soffritto; 3. Mescolare fino a quando la zucca non è un purè; 4. Aggiungere il riso al soffritto; 5. Fare tostare il riso; poi bagnarlo con il vino; 6. Aggiungere brodo fino a quando il riso è cotto; 7. Aggiungere prezzemolo, pepe e burro; 8. Se preferisci salato, allora aggiungi sale;
23 Sottoproblemi L algoritmo precedente è un altro esempio di cosa significa scomporre un problema in sottoproblemi; Come si prepara un soffritto? Come si prepara un brodo? Ogni sottoproblema può essere scomposto in problemi via via più elementari; Per ogni problema elementare deve esistere un istruzione nel linguaggio adottato la cui esecuzione lo risolve.
24 Alto e basso livello Man mano che si suddivide il problema in sottoproblemi, si scende di livello; Se ci si avvicina al linguaggio umano, si parla di linguaggi di Alto livello; Se ci si avvicina al linguaggio macchina, si parla di linguaggi di Basso livello;
25 Linguaggi Linguaggio umano (es. Italiano) Descrizione di un algoritmo (es. diagrammi di flusso, pseudo codice, etc ) Linguaggi di Programmazione (es. C, VBasic, Java, Logo, etc ) Alto livello Linguaggio Macchina Basso livello
26 Linguaggi di programmazione Linguaggio macchina Codifica binaria delle istruzioni Diverso per ogni architettura Istruzioni e operazioni elementari coincidono Linguaggio Assembler Sempre a livello macchina, ma codifica simbolica delle istruzioni Es: ADD R1, R6 STORE R1, RAM[255] MOV R1, #4
27 Linguaggi di programmazione Linguaggio ad alto livello (HLL - High-Level Languages Elaboratore virtuale Operazioni molto più astratte delle operazioni HW Es: x = y+2 z = cos(x) Linguaggio indipendente dalla piattaforma! Possibile mediante l esistenza di traduttori
28 Linguaggi di programmazione Programma sorgente (HLL) Traduttore Programma eseguibile (bit)
29 Traduttori somma due interi stampa un messaggio... Uomo Traduttore Macchina
30 Traduttori Due schemi Compilatori Interpreti
31 Compilatori Traduzione avviene in due passi: Compilazione vera e propria Collegamento (link) Dopo la fase di link, il programma può essere eseguito direttamente Ogni fase produce un file corrispondente all aggiunta di informazioni di vario tipo Formato oggetto Formato eseguibile
32 Compilatori sorgente COMPILATORE oggetto LINKER Libreria eseguibile
33 Linker Risolve i riferimenti ad indirizzi di memoria Indirizzi logici => indirizzi fisici Aggiunge al codice le librerie: Funzioni pre-compilate e riutilizzabili (es. funzioni matematiche) e distribuite con il compilatore Codice scritto in precedenza Due schemi: Librerie statiche Librerie dinamiche
34 Interpreti Il formato interno viene generato interpretando e traducendo il formato sorgente Il programma viene interpretato ed immediatamente eseguito istruzione per istruzione. Non viene generato né formato intermedio (oggetto) né eseguibile.
35 Compilatori vs. interpreti Linguaggi compilati: Vantaggi: Formato del programma eseguibile più efficiente esecuzione più veloce Migliore supporto per istruzioni complesse dimensioni Svantaggi: Rallentamento tempo di sviluppo dei programmi e programmi di grandi Maggiori requisiti di spazio di memoria (il compilatore è un programma sofisticato) Linguaggi interpretati: Ideali in ambiente didattico per lo sviluppo rapido di programmi.
36 Portabilità del software Possibilità per un programma di poter essere eseguito su piattaforme HW e SW diverse da quelle su cui è stato sviluppato compilatore Windows codice eseguibile Windows codice sorgente compilatore Linux codice eseguibile Linux compilatore MacOS codice eseguibile MacOS
37 Linguaggi di programmazione FORTRAN FORmula TRANslation (1956) calcoli tecnico-scientifici (ambiente fisico/matematico) svariate librerie compilato COBOL COmmerce and Business Oriented Language (1960) elaborazione di archivi, tabulati applicazioni contabili
38 Linguaggi di programmazione BASIC Beginner s All-purpose Symbolic Instruction Code (1962) relativamente semplice capacità grafiche interpretato versioni evolute (VisualBasic) PASCAL (1972) Linguaggio molto formale (progetto accademico) Programmazione strutturata Utile per la didattica Compilato
39 Linguaggi di programmazione C C++ Bell Labs (1972) Evoluzione più efficiente del PASCAL Istruzioni per ottimizzazione del codice efficiente Molto usato nella programmazione di sistema compilato Bell Labs ( 80) Evoluzione del C ad oggetti Diverso paradigma di programmazione Include il C compilato
40 Linguaggi di programmazione Java Perl Sun MicroSystems ( 90) Evoluzione del C++ Schema misto compilato+interpretato Portabilità universale tramite formato intermedio (bytecode) Vasta gamma di librerie Supporto alla programmazione web GNU project ( 90) interpretato complesso, ma molto potente molto utilizzato nella programmazione web programmi=>script
41 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 comprensione degli esseri umani ma abbastanza vicino ai linguaggi di programmazione 3. produrre un programma scritto nel linguaggio di programmazione scelto
42 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 dei contenitori di dati (variabili) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
43 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 dei contenitori di dati (variabili) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
44 FASE 1: problema e sua analisi L analisi di un problema è la primissima cosa da fare quando si è di fronte alla richiesta di risolverlo Bisogna capire bene il problema prima di pensare di risolverlo! L analisi del problema deve fornire come prodotto: un nome ed una breve descrizione di cosa si vuol fare un elenco di requisiti, ovvero, di richieste, vincoli che il programma deve soddisfare
45 Esempio di Analisi del problema: ax 2 +bx+c Problema: CALCOLO RADICI Descrizione: calcolare le soluzioni reali di una equazione di secondo grado Requisiti: l equazione può avere nessuna soluzione reale, due soluzioni coincidenti, o due soluzioni distinte. Si devono, in questi casi, evidenziare il messaggio nessuna radice radici coincidenti r (dove r è il valore delle radici) radici distinte r1 ed r2 (dove r1 ed r2 sono il valore delle radici)
46 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 dei contenitori di dati (variabili) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
47 FASE 2: specifica funzionale Una specifica funzionale descrive: quali sono i dati iniziale, ovvero i dati di input (ingresso) da elaborare qual è il risultato atteso in funzione dei dati in ingresso (output, uscita dell algoritmo)
48 Esempio di specifica funzionale CALCOLO RADICI: specifica funzionale INPUT: i numeri reali a,b,c che sono i coefficienti dell equazione da risolvere OUTPUT: i messaggi nessuna radice reale x1=x2=r se l equazione ha due radici reali coincidenti pari ad r x1=r1, x2=r2 se l equazione ha due radici reali distinte pari ad r1 ed r2
49 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 dei contenitori di dati (variabili) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
50 FASE 3: scrittura dell algoritmo Descrizione dell algoritmo, ovvero, dei passi da eseguire per giungere al risultato di uscita partendo dai dati in input La prima stesura non necessariamente deve essere completa di ogni dettaglio. in genere, si procede per raffinamenti successivi
51 Esempio di stesura preliminare di algoritmi CALCOLO RADICI: stesura preliminare dell algoritmo risolvo il problema calcolando il discriminante (delta) dell equazione analizzo i vari casi di delta < 0 = 0 > 0 costruisco per ognuno di questi casi il messaggio da produrre in output Successivamente si definiscono le variabili (contenitori di dati) coinvolte e dettaglio la specifica dell algoritmo usando un diagramma di flusso o lo pseudo codice.
52 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 (contenitori di dati) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
53 FASE 3.1: definizione delle variabili Ogni algoritmo deve tenere traccia (memorizzare) i valori dei dati in input, dei risultati in output, e dei valori intermedi calcolati durante l esecuzione dei passi A questo fine si usano delle variabili (contenitori di dati). Ogni variabile ha un nome associato al dato (valore) memorizzato. Una variabile è una astrazione (semplificazione) della nozione di area di memoria (una o più celle della RAM, un registro generale) contenente i bit rappresentanti i dati I dati contenuti in una variabile hanno un tipo (si dice che una variabile è di un certo tipo) che caratterizza un insieme di elementi e le operazioni che sono possibili su di essi
54 FASE 3.1: definizione delle variabili Ogni variabile memorizza il valore di un dato Ogni dato appartiene ad un tipo di dato Un tipo di dato è: un insieme di elementi, rappresentabili in modo finito, dotato di operazioni primitive su di esso ESEMPIO: il tipo di dato intero è l insieme dei numeri interi, sequenze di cifre, con segno dotato di operazioni primitive ed effettivamente eseguibili come somma (+), differenza (-), prodotto (*), divisione intera (/), resto.
55 FASE 3.1: definizione delle variabili Le variabili da usare per memorizzare i valori dei dati intermedi dipendono dall algoritmo All inizio della stesura di un algoritmo difficilmente si è già a conoscenza di quante e quali variabili si dovranno usare Ad ogni raffinamento dell algoritmo si possono aggiungere o togliere variabili fino ad arrivare all uso corretto di ognuna
56 Esempio di definizione di variabili CALCOLO RADICI: variabili usate ci vogliono tante variabili quanti sono i dati in input. In questo caso ci vogliono tre variabili che chiamiamo a,b,c per i coefficienti dell equazione ci vogliono tante variabili quanti sono i dati in uscita. In questo caso, servono due variabili r1,r2 per il valore delle radici dell equazione ci vogliono alcune variabili per tenere conto di dati intermedi da calcolare e modificare per ottenere la soluzione. In questo caso, potremmo usare una variabile per memorizzare il valore del discriminante. La variabile la chiamiamo delta Il tipo di tutte queste variabili è float (numeri reali).
57 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 (contenitori di dati) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
58 Descrizione di un algoritmo Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi; Non si utilizza un linguaggio di programmazione specifico, ma è meglio utilizzare qualcosa di più generale; Pseudo-codici o Diagrammi di Flusso
59 Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di operazioni: calcoli ottenibili tramite le operazioni primitive su tipi di dato (valutazione di espressioni) azioni che consistono nella modifica del valore associato alle variabili
60 Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di operazioni: calcoli ottenibili tramite le operazioni primitive su tipi di dato (valutazione di espressioni) azioni che consistono nella modifica del valore associato alle variabili
61 Calcoli: espressioni valutabili L esecutore dell algoritmo valuta espressioni dove gli elementi possono essere variabili o valori costanti 3 * X + sin (Y * sqrt(z)) b*b-4*a*c h / j k /
62 Calcoli: espressioni booleane (logiche) Ci sono anche particolari tipi di espressioni chiamate booleane o logiche Sono espressioni che possono dare origine a due soli possibili valori: VERO o FALSO Una proposizione della quale dobbiamo valutare se è vera o falsa Per costruire un espressione logica si possono usare le seguenti relazioni: = (uguaglianza); < (minore); <= (minore o uguale); > (maggiore); >= (maggiore o uguale); <> (diverso);
63 Esempi di espressioni booleane (logiche) A seconda del valore delle variabili l espressione booleana può essere vera o falsa b*b-4*a*c = 0 h / j <> 2.4 k / 2.23 > p 192 <= 12
64 Calcoli: espressioni logiche complesse - NOT Possiamo costruire espressioni booleane più complesse grazie ad alcune regole della cosiddetta algebra booleana; Se A è un espressione logica, anche Not A (la negazione logica di A) lo è A Not A Vero Falso Falso Vero
65 Congiunzione (AND) Se A e B sono espressioni logiche, anche A and B lo è; A B A and B Vero Vero Falso Falso Vero Falso Vero Falso Vero Falso Falso Falso
66 Disgiunzione (OR) Se A e B sono espressioni logiche, anche A or B lo è; A B A or B Vero Vero Falso Falso Vero Falso Vero Falso Vero Vero Vero Falso
67 Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di operazioni: calcoli ottenibili tramite le operazioni primitive su tipi di dato (valutazione di espressioni) azioni che consistono nella modifica del valore associato alle variabili
68 Azioni: modifica valori delle variabili L esecutore di un algoritmo deve poter compiere azioni che hanno un effetto sui dati gestiti Le azioni più semplici sono assegnamenti a variabili Un assegnamento ad una variabile si denota con VARIABILE:= ESPRESSIONE con il seguente significato: 1. l esecutore valuta l espressione a destra del := 2. e poi modifica il valore della variabile con il risultato della valutazione dell espressione
69 Esempi di azioni: assegnamenti a variabili L esecutore valuta espressioni dove gli elementi possono essere variabili o valori costanti e se ne assegna il valore ad una variabile pippo := 3 * X + sin (Y * sqrt(z)) delta := b*b-4*a*c a := h / j W := k / 2.23 M := 192 T := p x := x + 1 Una variabile non può essere vuota : ad una variabile deve sempre essere associato un valore Il valore contenuto in una variabile è l ultimo assegnatole e resta inalterato finché una successiva assegnazione non modifica il valore stesso
70 Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpretazioni non univoche Si usano due formalismi: diagrammi di flusso: formalismo grafico pseudo-codice: linguaggio con istruzioni simili a quelle dei linguaggi di programmazione si possono usare in alternativa
71 Specifica di inizio e di fine Ogni algoritmo deve avere un inizio ed una fine start end start end
72 Input ed output di dati Ogni algoritmo parte da dati in ingresso per produrre dati in uscita (problema computazionale) readx read X write Z write Z
73 Specifica delle azioni Ogni algoritmo specifica azioni che l esecutore deve compiere del tipo descritto in precedenza Z := X + 1 Z := X + 1
74 Specifica delle condizioni logiche Alcuni passi di un algoritmo si devono eseguire se sono verificate condizioni logiche su valori di variabili In genere, questi salti dell algoritmo sono sottoposti ad una condizione logica (risposta vero o falso); Si parla di blocchi decisionali
75 Specifica delle condizioni logiche vero azioni caso vero azioni condizione logica azioni seguenti comuni falso azioni caso falso azioni if (condizione logica) then azioni caso vero else azioni caso falso end if azioni seguenti comuni
76 Specifica delle condizioni logiche vero azioni caso vero azioni condizione logica falso azioni if (condizione logica) then azioni caso vero end if azioni seguenti comuni azioni seguenti comuni
77 vero Condizioni logiche Annidate: esempio vero condizione logica 2 azioni condizione logica 1 falso azioni seguenti comuni falso condizione logica 3 falso vero azioni vero 2 azioni falso 2 azioni vero 3 azioni if (condizione logica 1) then else if (condizione logica 2) then azioni vero 2 else azioni falso 2 end if if (condizione logica 3) then azioni vero 3 end if end if azioni seguenti comuni
78 Flusso di esecuzione I singoli diagrammi devono essere uniti tramite i connettori (linee e frecce in un flow chart); L esecuzione dei passi deve essere fatta sequenzialmente, ovvero seguendo i connettori, partendo dall inizio dell algoritmo fino a raggiungere la sua fine Quando si scrive l algoritmo bisogna fare molta attenzione alla direzione del flusso di esecuzione
79 Strutture di controllo: iterazione azioni da ripetere vero azioni condizione logica falso azioni while (condizione logica) azioni da ripetere end while azioni seguenti azioni seguenti
80 Strutture di controllo: iterazioni annidate azioni iterazione esterna da ripetere azioni iterazione interna da ripetere vero vero azioni condizione logica interna condizione logica esterna falso falso azioni while (condizione logica esterna) while (condizione logica interna) azioni iterazione interna da ripetere end while azioni iterazione esterna da ripetere end while azioni seguenti azioni seguenti
81 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 (contenitori di dati) necessarie e delle relative operazioni elementari FASE 3.2: Specifica di un diagramma di flusso ( o di uno pseudo codice) che descrive in modo preciso e non ambiguo la sequenza di operazioni da eseguire FASE 4: Traduzione del diagramma di flusso ( o dello pseudo codice) in un programma in un linguaggio di programmazione
82 Esempio di algoritmo Scrivere l algoritmo che esegue la somma di due numeri start read X read Y Z := X + Y start read X read Y Z := X + Y write Z end write Z end
83 Esempio: massimo tra due numeri Dati due numeri, dire qual è il massimo tra i due. vero max := X start read X read Y X > Y write max end falso max := Y start end read X read Y if (X > Y) then else max := X max := Y end if write max
84 Esempio di algoritmo: calcolo radici vero write "nessuna radice" start read a,b,c delta:=b*b-4*a*c delta < 0 vero end falso write "radici coincidenti" r1 := (-b + sqrt(delta))/2*a r2 := (-b - sqrt(delta))/2*a write r1,r2 delta = 0 falso write "radici distinte" start read a,b,c delta := b*b-4*a*c if (delta < 0) then write nessuna radice else r1 := (-b+sqrt(delta))/2*a r2 := (-b-sqrt(delta))/2*a write r1,r2 if (delta = 0) then write radici coincidenti else write radici distinte end if end if end
85 Esercizio: massimo di una sequenza Si supponga di fornire in input ad un programma un numero indefinito di interi positivi. L inserimento verrà terminato dall utente quando questi inserirà uno zero (0). Il programma deve restituire il valore massimo tra quelli introdotti. Disegnare il diagramma di flusso di tale programma.
86 Strutture di controllo: iterazione azioni da ripetere vero azioni condizione logica falso azioni while (condizione logica) azioni da ripetere end while azioni seguenti azioni seguenti
87 Strutture di controllo: iterazioni annidate azioni iterazione esterna da ripetere azioni iterazione interna da ripetere vero vero azioni condizione logica interna condizione logica esterna falso falso azioni while (condizione logica esterna) while (condizione logica interna) azioni iterazione interna da ripetere end while azioni iterazione esterna da ripetere end while azioni seguenti azioni seguenti
88 Esercizio: massimo di una sequenza start max := -1 start max := -1 read numero read numero vero numero >0 vero numero > max falso max := numero falso write max end while (numero > 0) if (numero > max) then max := numero end if read numero end while write max read numero end
89 Esercizio: massimo di una sequenza falso start max := -1 read numero vero numero > max numero <> 0 numero < 0 vero falso max := numero read numero falso vero write max end write "solo positivi!!" start max := -1 read numero while (numero <> 0) if (numero < 0) then write solo positivi!! else if (numero > max) then max := numero end if end if read numero end while write max end
90 Esercizio: cosa fa questo algoritmo? start P := 0 start P := 0 read A,B read A,B vero A <> 0 falso write P while (A <> 0) if (A è dispari) then vero P := P + B A è dispari falso end P := P + B end if A := A / 2 B := B * 2 A := A / 2 end while B := B * 2 write P end
91 Esercizio: cosa fa questo algoritmo? P A B
92 Esercizio: cosa fa questo algoritmo? P A B
93 Esercizio: dispari-pari Dato un numero, verificare se è pari o dispari e stampare il relativo messaggio N := N - 2 write "pari" start read N vero N > 1 falso vero N = 0 end falso write "dispari" start end read N while (N > 1) N := N 2 end while if (N = 0) then else write pari write dispari end if
94 Esercizio: dispari-pari (controllo input) Dato un numero stampare se è pari o dispari N := N - 2 start read N vero N > 1 falso vero write "pari" falso vero N < 0 N := -N N = 0 end falso write "dispari" start read N if (N < 0) then N := -N end if while (N > 1) N := N 2 end while if (N = 0) then write pari else write dispari end if end
95 Esercizio: minimo di una sequenza di K numeri Si supponga di fornire in input ad un programma un numero K e K interi positivi. Il programma deve restituire il valore minimo tra quelli introdotti.
96 Esercizio: minimo di una sequenza di K numeri vero min := numero read numero vero start K min := numero inseriti := 1 inseriti < K read numero numero < min falso inseriti := inseriti + 1 falso write min end start read K read numero min := numero inseriti := 1 while (inseriti < K) read numero if (numero < min) then min := numero end if inseriti := inseriti + 1 end while write min end
97 Esercizio: minimo di una sequenza di K numeri (controllo input) vero min := numero start read numero vero K K <= 0 falso min := numero inseriti := 1 inseriti < K read numero numero < min falso vero inseriti := inseriti + 1 falso write "K deve essere positivo!" write min end start read K if ( K <= 0) then write K deve essere positivo! else read numero min := numero inseriti := 1 while (inseriti < K) read numero if (numero < min) then min := numero end if inseriti := inseriti + 1 end while write min end if end
98 Esercizio: elevamento a potenza Data la base e l esponente calcolare l elevamento a potenza start potenza:= 1 read B,E falso E > 0 write potenza vero potenza:= potenza * B end E := E -1 start potenza := 1 read B,E while (E > 0) potenza := potenza * B E := E - 1 end while write potenza end
99 Esercizio: elevamento a potenza (controllo input) Data la base e l esponente calcolare l elevamento a potenza start read B,E E >= 0 vero potenza := 1 vero E > 0 falso potenza:= potenza * B E := E -1 falso write"esponente negativo!" write potenza end start read B,E if (E >= 0) then potenza := 1 while (E > 0) potenza := potenza * B E := E - 1 end while write potenza else write esponente negativo! end if end
100 Esercizio: fattoriale Dato un numero calcolare il suo fattoriale start fattoriale:= 1 read N falso N > 0 write fattoriale vero fattoriale:= fattoriale * N end N:= N -1 start fattoriale := 1 read N while (N > 0) fattoriale := fattoriale * N N := N - 1 end while write fattoriale end
101 Esercizio: fattoriale (controllo input) Dato un numero calcolare il suo fattoriale start read N N >= 0 vero fattoriale:= 1 vero N > 0 fattoriale:= fattoriale * N N := N -1 falso write"numero negativo!" falso write fattoriale end start read N if (N >= 0) then fattoriale := 1 while (N > 0) fattoriale := fattoriale * N N := N - 1 end while write fattoriale else write numero negativo! end if end
102 Esercizio: numero primo Dato un numero N scrivere un algoritmo che verifichi se N è un numero primo e stampi un relativo messaggio Il numero N è un numero primo se è divisibile solo per 1 e per N Quindi, per verificare se un numero N è primo è sufficiente provare a dividerlo per tutti gli interi minori di esso Se almeno uno di questi interi è un divisore di n allora n non è primo Altrimenti n è primo
103 vero primo := falso Esercizio: numero primo vero N divisibe per divisore falso divisore := divisore + 1 start N divisore := 2 primo := vero divisore < N vero write "numero primo" falso primo = vero end falso write "numero nonprimo" start read N divisore := 2 primo := vero while (divisore < N) if (N divisibile per divisore) then primo := falso end if divisore := divisore + 1 end while if (primo = vero) then write numero primo else write numero non primo end if end
104 vero primo := falso Esercizio: numero primo ottimizzazione I vero N divisibe per divisore falso divisore := divisore + 1 start N divisore := 2 primo := vero divisore < N and primo = vero vero write "numero primo" falso primo = vero end falso write "numero nonprimo" start read N divisore := 2 primo := vero while (divisore < N and primo = vero) if (N è divisibile per divisore) then primo := falso end if divisore := divisore + 1 end while if (primo = vero) then write numero primo else write numero non primo end if end
105 vero primo := falso divisore := N Esercizio: numero primo ottimizzazione II vero N divisibe per divisore falso divisore := divisore + 1 start N divisore := 2 primo := vero divisore < N vero write "numero primo" falso primo = vero end falso write "numero nonprimo" start read N divisore := 2 primo := vero while (divisore < N) if (N è divisibile per divisore) then primo := falso divisore := N end if divisore := divisore + 1 end while if (primo = vero) then end write numero primo else write numero non primo end if
106 Esercizi Produrre un algoritmo che controlla la correttezza dell input Produrre un algoritmo più efficiente di quello di base (più efficiente vuol dire che compie meno operazioni)
107 Esercizio: divisibilità Dati un dividendo ed un divisore scrivere un algoritmo che verifichi la divisibilità DD := DD - DS write "divisibile" start read DD,DS vero DD >= DS vero DD = 0 end falso falso write "non divisibile" start end read DD,DS while (DD >= DS) DD := DD DS end while if (DD = 0) then else write divisibile write non divisibile end if
108 Esercizi Produrre un algoritmo che sia corretto per ogni tipologia di dati in ingresso Come risolvereste il problema del pari o dispari adesso?
109 Esercizio: triangoli Scrivere un algoritmo che, date le coordinate di tre punti corrispondenti ai vertici di un triangolo, riconosca se si tratta di un triangolo degenere o no, e nel caso di triangolo non degenere calcoli il suo perimetro A B C
110 Esercizio: triangoli soluzione preliminare start leggi coordinate dei vertici A,B,C del triangolo vero triangolo degenere falso calcola la lunghezza dei lati calcola il perimetro del triangolo write "triangolo degenere" write perimetro end
111 Esercizio: triangoli - raffinamento start leggi coordinate dei vertici A,B,C del triangolo vero (A coincide con B) OR (B coincide con C) OR (C coincide con A) OR (A,B,C sono allineati) falso LAB := distanza(a,b) LBC := distanza(b,c) LCA := distanza(c,a) perimetro:=lab+lbc+lca write riangolo degenere" write perimetro end
112 Esercizio: triangoli raffinamento ulteriore start read AX,AY,BX,BY,CX,CY vero (AX=BX AND AY=BY) OR (BX=CX AND BY=CY) OR (CX=AX AND CY=AY) OR (A,B,C sono allineati) falso LAB := sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)) LBC := sqrt((bx-cx)*(bx-cx)+(by-cy)*(by-cy)) LCA := sqrt((cx-ax)*(cx-ax)+(cy-ay)*(cy-ay)) perimetro:=lab+lbc+lca write "triangolo degenere" write perimetro end
113 Esercizio: triangoli Se i tre vertici sono allineati allora otteniamo due triangoli rettangoli i cui cateti sono nella stessa proporzione C A B (AY-BY):(AX-BX)=(AY-CY):(AX-CX)
114 Esercizi: triangoli In una proporzione il prodotto dei medi è uguale al prodotto degli estremi per cui i tre vertici sono allineati se è vera la condizione logica (AX-BX)*(AY-CY)=(AY-BY)*(AX-CX)
115 Esercizi: triangoli - soluzione start read AX,AY,BX,BY,CX,CY vero (AX=BX AND AY=BY) OR (BX=CX AND BY=CY) OR (CX=AX AND CY=AY) OR (AX-BX)*(AY-CY)=(AY-BY)*(AX-CX) falso LAB := sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)) LBC := sqrt((bx-cx)*(bx-cx)+(by-cy)*(by-cy)) LCA := sqrt((cx-ax)*(cx-ax)+(cy-ay)*(cy-ay)) perimetro:=lab+lbc+lca write "triangolo degenere" write perimetro end
116 Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che dettaglieremo e raffineremo in passaggi successivi per ottenere un algoritmo direttamente eseguibile Ognuno dei sottoproblemi potrà essere risolto da un algoritmo a parte che potremo riutilizzare, quando sarà necessario, nella soluzione di ulteriori problemi complessi.
117 Individuazione di sottoproblemi: vantaggi I dettagli delle diverse soluzioni sono descritti negli algoritmi dei sottoproblemi In generale, uno stesso sottoproblema deve essere risolto più volte nella soluzione di un problema principale Dagli algoritmi derivano programmi, quindi si possono raccogliere librerie di software da riutilizzare in nuovi programmi
118 Esercizio: frazioni Scrivere un algoritmo che verifichi se una frazione è apparente o propria Sapreste risolverlo senza un analisi del problema? Vi ricordate la FASE 1: Dare un nome al problema partendo dall analisi del problema e la FASE 2: Scrivere la specifica funzionale? apparenti: numeratore multiplo di denominatore proprie: numeratore minore di denominatore
119 Esercizio: MCD Scrivere un algoritmo che calcoli il massimo comune divisore di due numeri Sapreste risolverlo senza un analisi del problema? Vi ricordate la FASE 1: Dare un nome al problema partendo dall analisi del problema e la FASE 2: Scrivere la specifica funzionale? Il massimo comune divisore di due numeri è il più grande numero, minore o uguale del più piccolo dei due, che divide entrambi
120 Esercizio: anno bisestile Scrivere un algoritmo che verifichi se un anno è bisestile producendo un messaggio Sapreste risolverlo senza un analisi del problema? Vi ricordate la FASE 1: Dare un nome al problema partendo dall analisi del problema e la FASE 2: Scrivere la specifica funzionale? Un anno è bisestile (ha 366 giorni) se è divisibile per quattro (come il 1980) e non è divisibile per 100 (ad es. il 1900 non è bisestile). Fanno eccezione gli anni divisibili per 400, che sono bisestili (ad es. il 2000 è bisestile). Questa regola non si applica prima del 1582, anno di introduzione del calendario gregoriano.
121 Esercizio: busta paga Scrivete un algoritmo che calcoli l importo della busta paga settimanale di un lavoratore sapendo il numero di ore che ha lavorato durante una settimana e la retribuzione oraria L algoritmo deve segnalare l opportunità di far recuperare al lavoratore delle ore di lavoro se non è stato rispettato l accordo sindacale che prevede un minimo di 35 ore settimanali L algoritmo deve altresì tenere in conto le ore di straordinario che sono, come da contratto, retribuite il doppio di quelle normali
122 Esercizio: poligoni Scrivere un algoritmo che, date le coordinate di quattro punti corrispondenti ai vertici di un poligono irregolare, riconosca se si tratta di un quadrato o di un rettangolo e nel caso calcoli la sua area
123 Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti e stampare in ordine inverso i numeri inseriti. Sembra un problema già visto: Si supponga di fornire in input ad un programma un numero K e K interi positivi. Il programma deve restituire il valore minimo tra quelli introdotti. ma non lo è!! Infatti dobbiamo memorizzare tutti i valori inseriti per stampare il primo inserito per ultimo Ma quante variabili usiamo?
124 Gli array Nelle situazioni in cui si devono memorizzare un INSIEME di dati allori si può usare la struttura di dati chiamata vettore o array Un array (vettore) è costituito da una sequenza di elementi consecutivi nella memoria di un calcolatore Un array si può vedere come una generalizzazione del concetto di variabile
125 Gli array Ad ogni istante un array individua un insieme di valori Ogni singolo valore nell array è individuato dall identificatore (nome) dell array e da un indice che ne individua la posizione nella sequenza degli elementi nell array stesso Un array è caratterizzato da una dimensione che esprime il numero di elementi che contiene L operazione di assegnazione permette di modificare il valore di un determinato elemento della sequenza come per una qualsiasi variabile In genere gli elementi di un array sono tutti dello stesso tipo (stringhe, interi, caratteri, ecc.) ma in alcuni linguaggi di programmazione sono permessi array di elementi di tipo diverso, es. JavaScript, ma non è una scelta consigliabile
126 Gli array in Javascript Gli array (o vettori) contengono un insieme di dati rappresentati da un singolo nome di variabile Un array contiene un insieme di elementi Ogni elemento è identificato da un indice (il primo ha indice zero) 0 elemento
127 Gli array in Javascript Un array è creato mediante la seguente dichiarazione: var nome_array = new Array (numero_di_elementi) Si fa riferimento ad un elemento, ad esempio, nei seguenti modi: nome_array[0] = Pippo ; nome_array[y] = 27*sqrt(k/2); window.prompt(nome_array[k*3]);
128 Problema: calcolare il massimo tra K numeri Ipotizziamo di aver già letto i numeri ListaNumeri
129 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
130 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
131 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
132 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
133 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
134 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
135 Problema: calcolare il massimo tra K numeri ListaNumeri MAX
136 Problema: soluzione preliminare e raffinament start read K start leggi i K numeri leggi i K numeri i := 0 max := ListaNumeri[0] calcola max i < K vero falso end leggi i K numeri write max read ListaNumeri[i] scrivi in ordine inverso i := i + 1 end
137 Problema: soluzione preliminare e raffinament start start calcola max read K i := 1 leggi i K numeri max := ListaNumeri[0] i < K vero falso end calcola max calcola max vero ListaNumeri[i] > max write max max := ListaNumer[i] falso scrivi in ordine inverso end i := i + 1
138 Problema: soluzione preliminare e raffinament start read K leggi i K numeri start scrivi in ordine inverso i := K - 1 max := ListaNumeri[0] calcola max i >= 0 vero falso end scrivi in ordine inverso write max write ListaNumeri[i] scrivi in ordine inverso end i := i - 1
139 Esercizio Tradurre il precedente algoritmo e tutti i successivi in pseudo-codice Scrivere il codice Javascript che traduca l algoritmo
140 Esempio Assegnare a tutte le posizioni di un vettore un numero X. Assumere che la dimensione del vettore sia uguale ad N e che la prima posizione del vettore sia uguale a 0
141 Esempio start read X,N i := 0 i < N vero falso end vettore[i] := X i := i + 1
142 Codice Javascript <html> <head> <title>esercizio sugli array</title> </head> <body> <script> <!-- Inizio script JavaScript var N,X,i; X = window.prompt("inserisci il numero X"); X = X * 1; N = window.prompt("inserisci la lunghezza dell'array"); N = N * 1; var vettore = new Array(N); i = 0; while (i < N) { vettore[i] = X; i = i + 1; } i = 0; while (i < N) { window.alert("vettore[" + i + "]=" + vettore[i]); i = i + 1; } // Fine script --> </script> </body> </html> Inserito per mostrare il contenuto dell array
143 Esempio Assegnare alle posizioni di indice pari di un vettore il valore 10 e alle posizioni dispari il valore 20. Assumere che la dimensione del vettore sia uguale ad N e che la prima posizione del vettore sia uguale a 0
144 Esempio start read N i := 0 i < N vero falso end falso i è dispari vero vettore[i] := 10 vettore[i] := 20 i := i + 1
145 Codice Javascript <html> <head> <title>esercizio sugli array</title> </head> <body> <script> <!-- Inizio script JavaScript var N; var i; N = window.prompt("inserisci la lunghezza dell'array"); N = N * 1; var vettore = new Array(N); i = 0; while (i < N) { if(i%2==0) { vettore[i] = 10; } else { vettore[i] = 20; } i = i + 1; } i = 0; while (i < N) { window.alert("vettore[" + i + "]=" + vettore[i]); i = i + 1; } // Fine script --> </script> </body> </html> Inserito per mostrare il contenuto dell array
146 Problema: ricerca di un elemento Ricerca di un numero all'interno di un vettore. Assumere che la dimensione del vettore sia uguale ad N e che la prima posizione del vettore sia uguale a 0. Esempio: Se N=4 e il contenuto del vettore è vettore[0]=7 vettore[1]=10 vettore[2]=555 vettore[3]=14 se proviamo a cercare il numero 555 il risultato deve essere il seguente: il numero 555 è alla posizione 2 del vettore se proviamo a cercare il numero 90 il risultato deve essere il seguente: il numero 90 non è presente nel vettore
147 Problema: ricerca di un elemento start read N,X i := 0 presente := false i < N falso presente=false vero vero vero vettore[i]=x falso write "X non presente" write "X è in posizione i" presente := true falso end i := i + 1
148 Codice Javascript: prima parte <html> <head> <title>esercizio sugli array</title> </head> <body> <script> <!-- Inizio script JavaScript var N,X,i,presente; N = window.prompt("inserisci la lunghezza dell'array"); N = N * 1; var vettore = new Array(N); i = 0; while (i < N) { vettore[i] = window.prompt("inserisci vettore[" + i + "]"); vettore[i] *= 1; //è la stessa cosa di: vettore[i]=vettore[i]*1; i = i + 1; } X = window.prompt("inserisci il numero da ricercare"); X = X * 1; Non presente nell algoritm ma necessario
149 Codice Javascript: seconda parte i = 0; presente = false; while (i < N) { if(vettore[i]==x) { window.alert("il numero " + X + " è presente in posizione " + i); presente = true; } i = i + 1; } if(presente==false) { window.alert("il numero " + X + " non è presente"); } // Fine script --> </script> </body> </html>
150 Problema: conteggio occorrenze Conteggio delle occorrenze di un numero all'interno di un vettore. Assumere che la dimensione del vettore sia uguale ad N e che la prima posizione del vettore sia uguale a 0. Esempio: Se N=4 e il contenuto del vettore è vettore[0]=555 vettore[1]=10 vettore[2]=555 vettore[3]=14 se proviamo a contare quante volte il numero 555 compare nel vettore allora il risultato deve essere il seguente: il numero 555 compare 2 volte se proviamo a cercare il numero 90 il risultato deve essere il seguente: il numero 90 compare 0 volte
151 Problema: conteggio occorrenze start read N,X i := 0 occorrenze := 0 vero vero i < N vettore[i]=x falso write occorrenze end occorrenze := occorrenze + 1 falso i := i + 1
152 Codice Javascript: prima parte <html> <head> <title>conteggio occorrenze in array</title> </head> <body> <script> <!-- Inizio script JavaScript var N; var X; var i; var occorrenze; N = window.prompt("inserisci la lunghezza dell'array"); N = N * 1; var vettore = new Array(N); i = 0; while (i < N) { vettore[i] = window.prompt("inserisci vettore[" + i + "]"); vettore[i] *= 1; i = i + 1; } X = window.prompt("inserisci il numero da ricercare"); X = X * 1; Non presente nell algoritm ma necessario
153 Codice Javascript: seconda parte = 0; ccorrenze = 0; hile (i < N) { if(vettore[i]==x) { occorrenze = occorrenze + 1; } i = i + 1; } indow.alert("il numero " + X + " compare " + occorrenze + " volte nell'array"); / Fine script --> /script> /body> /html>
154 Problema: verifica ordinamento Scrivere un algoritmo ed un relativo programma in Javscript che calcoli il valore di una variabile booleana che deve essere true se l array è ordinato in maniera crescente e false altrimenti e stampi il relativo messaggio. Assumere che la dimensione del vettore sia uguale ad N e che la prima posizione del vettore sia uguale a 0. Esempio: Se N=4 e il contenuto del vettore è vettore[0]=555, vettore[1]=10, vettore[2]=555, vettore[3]=14 allora la variabile deve valere false Esempio: Se N=4 e il contenuto del vettore è vettore[0]=12, vettore[1]=17, vettore[2]=555, vettore[3]=1312 allora la variabile deve valere true
155 Problema: verifica ordinamento start read N i := 0 ordinato:= true i < N -1 falso ordinato=true vero vero vero vettore[i]>vettore[i+1] falso write "array ordinato" ordinato := false falso write "array ordinato" i := i + 1 end
156 Codice Javascript: prima parte <html> <head> <title>verifica ordinamento array</title> </head> <body> <script> <!-- Inizio script JavaScript var N; var i; var ordinato; N = window.prompt("inserisci la lunghezza dell'array"); N = N * 1; var vettore = new Array(N); i = 0; while (i < N) { vettore[i] = window.prompt("inserisci vettore[" + i + "]"); vettore[i] *= 1; i = i + 1; }
157 Codice Javascript: prima parte i = 0; ordinato = true; while (i < N) { if(vettore[i]>vettore[i+1]) { ordinato = false; } i = i + 1; } if(ordinato==true) { window.alert("array ordinato"); } else { window.alert("array non ordinato"); } // Fine script --> </script> </body> </html>
Cosa è un programma. Informatica di Base -- R.Gaeta 18
Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer
DettagliEsercizio: divisibilità
Esercizio: divisibilità Dati un dividendo ed un divisore scrivere un algoritmo che verifichi la divisibilità start read DD,DS vero DD := DD - DS DD >= DS falso vero falso DD = 0 write "divisibile" write
DettagliSviluppo 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
DettagliProgrammazione: Sommario
Programmazione: Sommario Concetti di Base della Programmazione; Algoritmi; Diagrammi di Flusso; Istruzioni Sequenziali, Condizionali, Cicliche; Logo Variabili, Procedure e Parametri; 1 Il Problema computazionale
DettagliEsercizio: dispari-pari
Esercizio: dispari-pari Dato un numero, verificare se è pari o dispari e stampare il relativo messaggio N := N - 2 write "pari" read N N > 1 N = 0 write "dispari" read N while (N > 1) N := N 2 while if
DettagliSommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript
Sommario Problema computazionale Sviluppo software Algoritmi Diagrammi di Flusso; Pseudo Codice Istruzioni Sequenziali, Condizionali, Cicliche; Javascript Il Problema computazionale È computazionale un
DettagliSommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript
Sommario Problema computazionale Sviluppo software Algoritmi Diagrammi di Flusso; Pseudo Codice Istruzioni Sequenziali, Condizionali, Cicliche; Javascript 1 Il Problema computazionale È computazionale
DettagliProblema: calcolare il massimo tra K numeri
Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti
DettagliFormalismi per la descrizione di algoritmi
Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano
DettagliProblema: ricerca di un elemento
Problema: ricerca di un elemento Ricerca di un numero all'interno di un vettore. Assumere che la dimensione del vettore sia uguale ad N e che la prima posizione del vettore sia uguale a 0. Esempio: Se
DettagliProblema: conteggio occorrenze
Problema: conteggio occorrenze start read N,X i := 0 occorrenze := 0 vero vero i < N vettore[i]=x falso write occorrenze end occorrenze := occorrenze + 1 falso i := i + 1 Codice Javascript: prima parte
DettagliEsercizio: numero primo
Esercizio: numero primo Dato un numero N scrivere un algoritmo che verifichi se N è un numero primo e stampi un relativo messaggio Il numero N è un numero primo se è divisibile solo per 1 e per N Quindi,
DettagliIntroduzione 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
DettagliIndividuazione di sottoproblemi
Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che
DettagliInformatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
DettagliProblema: 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
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliCorso 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
DettagliLez. 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
DettagliLinguaggi, 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
DettagliIl linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
DettagliFasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
DettagliRappresentazione con i diagrammi di flusso (Flow - chart)
Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo
DettagliInformatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
DettagliEsercizio: dispari-pari
Esercizio: dispari-pari Dato un numero, verificare se è pari o dispari e stampare il relativo messaggio N := N - 2 write "pari" read N N > 1 N = 0 write "dispari" read N while (N > 1) N := N 2 while if
DettagliMODULO 07. La soluzione dei problemi mediante gli algoritmi
MODULO 07 La soluzione dei problemi mediante gli algoritmi MODULO 07 Unità didattica 02 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando
DettagliUniversità degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie
Università degli Studi di Verona Dipartimento di Biotecnologie Laurea in Biotecnologie Corso di Informatica2014/2015 Algoritmie Diagrammidiflusso Gennaio 2015 - Sergio Marin Vargas Problemi e soluzioni
DettagliLezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi
Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione
DettagliRAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO
RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento
DettagliIntroduzione 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
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
DettagliDiagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto
Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra
DettagliRisolvere 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
DettagliI Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Dettagliin 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
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliPROBLEMI 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
DettagliInformatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema
Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica informatica informazione mezzi mezzi fisici procedure Algoritmi, dati e programmi rappresentazione dell informazione
DettagliDescrizione 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
DettagliCorso 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
DettagliConcetti Introduttivi. Il Computer
Concetti Introduttivi Il Computer Introduzione Informazione Notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere Messaggio Tutto ciò che porta
DettagliAlgoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema
Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina
DettagliAlgoritmi 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)
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
DettagliLinguaggi di programmazione
Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché
DettagliProblemi, 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
DettagliIl 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
DettagliLaboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso
Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso
DettagliLINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
DettagliIl 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
DettagliINFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione? Aula? 1 Analisi e programmazione Tramite un elaboratore si possono risolvere
DettagliCos è la programmazione?
La programmazione Cos è la programmazione? Termine usato per indicare le attività che trasformano l esigenza di risolvere un Problema in un Programma, inteso come sistema informatico capace di risolvere
DettagliFondamenti di Algoritmi
Fondamenti di Algoritmi Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione roveri@elet.polimi.it Indice Algoritmi: Definizione Diagrammi di Flusso Esempi ed esercizi
DettagliCome 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
DettagliINFORMATICA. 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
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
DettagliAltrimenti, 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
DettagliAlgoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Dettagli3. Programmi e algoritmi
3. Programmi e algoritmi Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Contiene slides del corso «Fondamenti di Informatica» del Prof. Montessoro (Università degli Studi di Udine) Recall:
DettagliLA 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
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliInformatica. Come si risolve un problema?
Informatica Elaborazione automatica dell informazione Esempio di elaborazione: rubrica, elenco telefonico. Ogni problema di elaborazione dell informazione è caratterizzato da: un insieme di dati di partenza
DettagliALGORITMI: 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
DettagliIntroduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
DettagliCos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
DettagliElementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Elementi di programmazione Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università
DettagliAlgoritmi. 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
DettagliParte Seconda: Fondamenti di informatica
Parte Seconda: Trattamento dell informazione Fondamenti di informatica Gestione dell informazione Calcolatore IN Elaborazione archiviazione comunicazione OUT acquisizione dati dati elaborati e soluzioni
DettagliLaboratorio di Programmazione
Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai
DettagliInformatica. Elaborazione di informazione
Lauree triennali della Facoltà di Medicina LEZIONE 6 Algoritmi, dati e programmi 1 Elaborazione di informazione Introduzione ai concetti di: algoritmo programma dato linguaggio di programmazione diagramma
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE
INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni
DettagliFONDAMENTI DI INFORMATICA
Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica
DettagliIl Concetto di Algoritmo Corso di Informatica Laurea in Fisica
Il Concetto di Algoritmo Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2010-11 Esempio: risolviamo le equazioni di secondo grado ax 2 + bx + c = 0 La formula risolutiva è: x= b±
DettagliA.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica
O. BELLUZZ I - L. DA VINCI Prot.8480/6.3 del 05/07/2017 A.S. 2016-2017 Classe III H Informatica Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica
DettagliAlgoritmi e Linguaggi
Algoritmi e Linguaggi Programmi e linguaggi Un calcolatore è solo un esecutore rapidissimo di istruzioni Un programma è un insieme di istruzioni codificate in un opportuno linguaggio 2 / 21 Linguaggi e
DettagliTraduzione e interpretazione
Traduzione e interpretazione Parte dei lucidi sono stati gentilmente forniti dal Prof. Salza VII.1 Linguaggi di programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliInformatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati
1 2 Informatica Algoritmi, dati e programmi Informatica: Scienza che studia l informazione e la sua elaborazione. informazione rappresentazione dell informazione (dati) dati elaborazione dei dati tramite
Dettagli3. 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
DettagliAlgoritmi e Programmi
Algoritmi e Programmi Algoritmi e Programmi Le azioni che si compiono ogni giorno sono finalizzate alla risoluzione di problemi. Problema di elaborazione Insieme dati di partenza Risultato ricerca Algoritmi
DettagliA lezione sono stati presentati i seguenti passi per risolvere un problema:
Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi
DettagliLinguaggi di programmazione
Linguaggi di programmazione Problema Algoritmo Programma Progettista Programmatore Progetto Programma Esecutore Computer Comittente Utente Dal problema all algoritmo Problema Risolutore ed esecutore Algoritmo
DettagliTeoria 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
DettagliIl Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
DettagliLaboratorio di Python
Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliElaboratore Elettronico
L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati)) per produrre rre altri oggetti
DettagliModulo 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
DettagliAlgoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo
Algoritmi, linguaggi e programmi Emilio Di Giacomo e Walter Didimo Risolvere i problemi Il calcolatore permette di risolvere molti problemi, ma sfortunatamente non tutti Il concetto di algoritmo consente
DettagliUnità di apprendimento 6. Dal problema al programma
Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 2 Impariamo a fare i diagrammi a blocchi In questa lezione impareremo: come descrivere l algoritmo risolutivo utilizzando
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Obiettivi: studio delle strutture dati fondamentali studio degli strumenti e metodi per lo sviluppo di programmi di tipo tecnico-scientifico su piccola/media scala Approccio
Dettaglin Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi 1 Cos è n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati n Un algoritmo è un metodo per la soluzione di un problema adatto
Dettagliunità didattica 3 Le strutture condizionali e le strutture iterative
unità didattica 3 Le strutture condizionali e le strutture iterative 1. La struttura condizionale Il Pascal prevede la codifica della struttura condizionale (indicata anche con il nome di struttura dell
DettagliFONDAMENTI DI INFORMATICA
Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia talia@deis.unical.it A.A. 2002-2003 Facoltà di Ingegneria UNICAL Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica
DettagliLINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI
LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI Giacomo Piscitelli pag. 1/10 Dall Algoritmo al Programma Metodo risolutivo problema algoritmo Linguaggio programma Individuazione di un metodo risolutivo
DettagliCONCETTI FONDAMENTALI
CONCETTI FONDAMENTALI Algoritmo Procedura di trasformazione di un insieme di dati iniziali in un insieme di risultati finali mediante una sequenza di istruzioni. Linguaggio di programmazione Programma
Dettagli