Informatica Generale Marzia Buscemi

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

INFORMATICA Algoritmi fondamentali
Informatica Generale Susanna Pelagatti
Informatica Generale Marzia Buscemi IMT Lucca
Process synchronization
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Informatica Generale Susanna Pelagatti
(sommario delle lezioni in fondo alla pagina)
Informatica Generale Alessandra Di Pierro
Anno accademico Array e puntatori in C.
INFORMATICA Strutture iterative
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Iterazione enumerativa (for)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Algebra di Boole ed elementi di logica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 25 Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Introduzione alla programmazione lll
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica
Biologia Computazionale - Algoritmi
Dall’algoritmo al programma.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
PROGRAMMAZIONE: linguaggi
CODIFICA Da flow-chart a C++.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Massimo Comun Divisore
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
14 marzo 2002 Avvisi:.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Programmazione Strutturata
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Introduzione a Javascript
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
Strutture di controllo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
Transcript della presentazione:

Informatica Generale Marzia Buscemi buscemi@di.unipi.it Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: http://www.di.unipi.it/~buscemi/IG07.htm (sommario delle lezioni in fondo alla pagina) dddd

Argomenti trattati la scorsa lezione Cos’è un programma Com’è organizzata la memoria nel calcolatore (memoria centrale e memoria di massa) Linguaggi di programmazione Linguaggio macchina Linguaggio assembler Linguaggi ad alto livello Variabili, costanti e tipi di dato

Cosa tratteremo in questa lezione Le strutture di controllo sequenza di istruzioni selezione (if .. then .. else ..) iterazione (while .. do, repeat .. while, for .. to .. do) Come si rappresentano gli algoritmi: pseudocodice diagramma di flusso Le strutture dati array

Istruzioni elementari Operazioni aritmetiche di base: somma (a+b), sottrazione (a-b), confronto (a=b oppure a==b) Operazioni di I/O: leggere da tastiera (read a), scrivere sullo schermo (write a) Operazioni di assegnamento (a := b+c oppure a=b+c)

Strutture di controllo 1 sono comuni a tutti i tipi di linguaggi di programmazione definiscono l’ordine in cui eseguire le istruzioni di un programma si dividono in tre tipi fondamentali: sequenza di istruzioni selezione (if) ripetizione (for, while, repeat)

Strutture di controllo 2 Sequenza: se S1, S2, ... , Sk sono istruzioni, allora una sequenza è: S1; S2; ... Sk; Le istruzioni sono eseguite in successione ordinata. Esempi: culinario: “mettere farina, poi aggiungere uova, ...”. linguaggio C: { x = y + 2; z = x*4; }

Strutture di controllo 3 Selezione: se E è vera allora S1 altrimenti S2 Indica la scelta tra due possibilità. Se in un caso si vogliono eseguire istruzioni in più si elimina il ramo “altrimenti” Esempi: “se avete burro scioglietelo e poi versatelo, altrimenti versate direttamente l’olio. if (a>0) a=a-1; else b=a;

Strutture di controllo 4 Ciclo condizionato (for): Esegui (S1, S2, ... , Sk) N volte Il ciclo (loop) viene eseguito n volte. Esempi: “Prendere un uovo e separare il tuorlo dall’albume. Ripetere l’operazione con altre 10 uova.” linguaggio C: for (i=1; i <=100; i++) { ... } ad ogni ciclo incrementa di 1 il valore di “i” assegna a “i” il valore 1 ripete il ciclo finché vale questa condizione

Strutture di controllo 5 Ciclo condizionato (while): Finché E, esegui (S1, S2, ... , Sk) Il ciclo (loop) viene eseguito per tutto il tempo in cui vale E. Esempi: “Finché non si è sciolto il burro, tenere il tegame sul fuoco” linguaggio C: i= 1; while (i <=100) { ... i++; }

Algoritmi e programmi Algoritmo Programma Eseguibile Codifica in un linguaggio di programmazione (C, Java, etc) Programma Input : programma Compilatore Eseguibile Output : rappresentazione comprensibile alla macchina

Algoritmi 1 Algoritmo: sequenza di azioni non ambigue che da un dato input produce un output dato un problema, descrive teoricamente la sequenza di istruzioni che devono essere eseguite per risolvere il problema viene “scritto” in un certo linguaggio di programmazione (implementazione) Il flusso di istruzioni di un algoritmo e’ regolate dalle stutture di controllo. può essere rappresentato mediante pseucodice o diagrammi di flusso le informazioni sono organizzate in modo logico, tramite le strutture di dati

Algoritmi 2 Ci sono due modi di rappresentare gli algoritmi. Lo pseudocodice: “assomiglia” (pseudo) alla sintassi (codice) usata nei linguaggi di programmazione il flusso di istruzioni è rappresentato con precisione le istruzioni sono definite “informalmente” I diagrammi di flusso: sono grafici che permettono di esprimere un algoritmo in modo preciso ed intuitivo si costruiscono a partire da blocchi “base” che rappresentano le operazioni elementari ed i costrutti di controllo i blocchi base sono collegati tramite “freccie”

Algoritmi: pseudocodice 1 Lo pseudocodice sfrutta le parole chiave e l’indentazione. Esempio informale: tipi di dato in input: latte, uova, ... tipi di dato in output: torta inizio preparazione metti farina in una casseruola; aggiungi lo zucchero; se zucchero non basta vai a comprarlo; ... finché il composto non si è amalgamato, rimescola; fine preparazione

Algorimi: pseudocodice 2 Parole chiave (possono essere in italiano, in inglese, etc.) e indentazione: Inizio e fine programma: begin, end; I/O: read (per leggere l’input), write, return, print (per scrivere l’output), Sequenza: successione di istruzioni con la stessa indentazione Selezione: if .. then .. else .. Iterazione: while .. do, repeat .. until, for .. to .. do

Algoritmi: pseudocodice 3 Esempio 1: 1. leggi i numeri x e y 2. assegna a d il valore x – y 3. se d è maggiore di zero allora scrivi x altrimenti scrivi y Esempio 2: var d: int begin read x, y; d := x – y; if d>0 then return x; else return y; end più discorsivo più formale

Algoritmi: diagrammi di flusso Sono grafici che permettono di esprimere un algoritmo in modo preciso ed intuitivo Si costruiscono a partire da blocchi base che rappresentano le operazioni elementari ed i costrutti di controllo I blocchi base sono collegati tramite ‘freccie’ blocco di istruzioni sequenziali operazioni di I/O condizione inizio progr. Es. if C then I else L fine progr. begin no yes C L I sottoprogramma end

Esempi Scrivere gli algoritmi in pseudocodice e diagramma di flusso per risolvere i seguenti problemi: Dati x e y, scrivere un algoritmo che calcoli il massimo tra x e y (usando solo sottrazione e assegnamenti) Calcolare il massimo tra 3 numeri Calcolare il massimo tra N numeri Scrivere un algoritmo che calcola il prodotto di due interi x e y (usando solo somma e assegnamenti)

Il maggiore fra 2 numeri interi x, y Algoritmo max 1. Leggi i valori di x e y dall’esterno 2. Calcola la differenza d fra x e y (d=x-y) 3. Se d è maggiore di 0 vai al passo 5 altrimenti prosegui in sequenza 4. Stampa ‘il massimo è …’ seguito dal valore di y e vai a 6 5. Stampa ‘il massimo è …’ seguito dal valore di x 6. Termina l’esecuzione

Diagramma di flusso di max Inizio Passo 1 Leggi x e y Passo 2 d = x - y Passo 3 Si d > 0 ? No Scrivi ‘max è y’ Scrivi ‘max è x’ Passo 5 Passo 4 Fine Passo 6

Il maggiore fra 3 numeri interi Possiamo sfruttare l’algoritmo max come ‘sottoalgoritmo’ Algoritmo max_3 1. Leggi i valori di x, y, z dall’esterno 2. Valuta se x> y usando l’algoritmo max 3. In caso affermativo vai al passo 5 4. Trova il massimo fra y e z (con max) e termina 5. Trova il massimo fra x e z (con max) e termina

Il massimo fra N numeri interi Possiamo ancora sfruttare l’algoritmo max come ‘sottoalgoritmo’! Idea … trovare prima il maggiore fra i primi due numeri, poi confrontare il risultato con il terzo, poi con il quarto etc … In pratica, possiamo usare la struttura di controllo iterativa while…do per effettuare le operazioni di max su tutti i numeri in ingresso

Determinare il massimo fra N numeri interi Algoritmo max_N 1. Leggi il valore di N dall’esterno 2. Leggi i primi due numeri 3. Trova il maggiore m fra i primi due numeri (con max) 4. Finchè (hai esaminato meno di N numeri) a. Leggi un nuovo numero x b. Trova il maggiore fra m e x usando l’algoritmo max c. Assegna il valore del maggiore a m 5. Stampa ‘il massimo è…’ ed il valore di m e termina

Diagramma di flusso per il problema del massimo di N numeri Inizio Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b m = max(a,b) Ancora numeri da esaminare ? Si No Scrivi ‘max è m’ Leggi il nuovo numero in a Fine Supponiamo N fissato m = max(a,m)

(versione più formale) Leggi N Inizio I = 2 Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b m = max(a,b) Si I < N ? No I = I + 1 Scrivi ‘max è m’ DF per il problema del massimo di N numeri (versione più formale) Leggi il nuovo numero in a Fine m = max(a,m) Supponiamo N almeno 2

Prodotto di due interi positivi x e y Algoritmo prod 1. Leggi i valori di x e y dall’esterno 2. Assegna a p il valore di 0. (p=0) 3. Se y è uguale a 0 vai al passo 5 4. Assegna a p il valore p+x (p=p+x) 5. Decrementa y di 1 (y=y-1) e vai al passo 3 6. Stampa ‘il prodotto di x per y è … ’ seguito dal valore di p 7. Termina l’esecuzione

Strutture dati Tutti i linguaggi ad alto livello per la programmazione permettono di definire due tipi di aggregati di variabili (o strutture dati) array : tabelline di valori tutti dello stesso tipo record : gruppi di variabili di tipo diverso Le strutture dati seguono criteri logici e non fisici. I compilatori traducono le istruzioni che manipolano strutture dati in istruzioni che operano su locazioni di memoria.

Array Possiamo definire una sequenza lunga N es. 1 3 7 8 Array di 4 valori interi (a una sola dimensione) Possiamo definire una tabella a due dimensioni, ad esempio per memorizzare le vendite di un prodotto in un trimestre dell’anno I II III IV 1 32 7 8 Prod 1 9 3 3 8 Array 3x4 di 12 valori interi (a due dimensioni) Prod 2 Prod 3 14 3 723 82

Array 2 Come si specifica la struttura di un array? E come si usano le singole variabili nella struttura? La struttura si specifica con il tipo e l’ampiezza di ogni dimensione es : int X[4] int T[3][4] 1 3 7 8 I II III IV 1 32 7 8 Prod 1 9 3 3 8 Prod 2 Nomi delle tabelle Prod 3 14 3 723 82

Array 3 Uso di una singola variabile : X[1] T[1][0] Si specificano le coordinate della variabile desiderata Ogni elemento di ogni dimensione è identificato da un valore da 1 a N (o da 0 a N-1, dipende dal linguaggio) 1 2 3 posizione 1 3 7 8 Noi generalmente seguiremo la convenzione del linguaggio C di partire da 0 valore I II III IV X[1] 1 32 7 8 Prod 1 9 3 3 8 Prod 2 T[1][0] Prod 3 14 3 723 82

Esempi Dato un array A di interi di lunghezza N e un valore (chiave) k, scrivere un algoritmo Calc_Posiz_k (A,N) che dà in output l’indice i tale che A[i]=k. Es.: Suggerimento: provare prima usando for poi usando while.Confrontare le soluzioni. 3 9 6 5 Calc_Posiz_9(A,4) dà in output i=1 A 0 1 2 3

Esercizio proposto Dato un array A di lunghezza N, scrivere un algoritmo palindromo_N che restituisce in output True se A è palindromo, False altrimenti. N.B. Una sequenza di numeri (o caratteri) è palindroma se, letta al rovescio, rimane identica. Es.: A=011110, A=anna.