DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
Selezione A. Ferrari.
PROGRAMMARE IN PASCAL (le basi)
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
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)
Informatica Problema Algoritmo Programma
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Algebra di Boole ed elementi di logica
Introduzione alla programmazione
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
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)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Definizione di Algoritmo
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione ll
Introduzione alla programmazione lll
Modulo 1: Problemi e Programmi
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Modulo 1: Problemi e Programmi
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica
Programmazione in Java Claudia Raibulet
Elementi di Informatica
ELEMENTI DI PROGRAMMAZIONE
2000 Prentice Hall, Inc. All rights reserved. Capitolo 3 (Deitel) Lo sviluppo di programmi strutturati Indice degli argomenti Introduzione 3.2 -
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
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
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Massimo Comun Divisore
Problema: come dividere due numeri
14 marzo 2002 Avvisi:.
ECDL Patente europea del computer
Programmazione Strutturata
Fondamenti di Programmazione
Programmazione imperativa
Linguaggi algoritmici
Introduzione a Javascript
Rappresentazione degli algoritmi
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 ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
PRIMI ELEMENTI DI PROGRAMMAZIONE
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Realizzazione software
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
ALGORITMI Dal problema al programma Definizione di algoritmo
Università degli Studi di Perugia 20/09/2015Informatica applicata all’educazione a.a Informatica applicata all’educazione a.a Corso.
Programmazione dei Calcolatori Elettronici
Strutture di controllo
Luca Chichisola1 Dal problema al programma LUCA CHICHISOLA.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Transcript della presentazione:

DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico Informatica generale Scienza della Comunicazione

CARATTERISTICHE FONDAMENTALI DI UN ESECUTORE Un’azione fondamentale presente in un processo eseguito da un calcolatore è l’assegnamento. V  9 V  E Espressione, cioè una formula che specifica sempre un valore. Ogni espressione è composta da operandi e operatori E Gli operandi possono essere costanti, espressioni o variabili Gli operatori possono essere di tre tipi: aritmetici, di relazione e logici

CARATTERISTICHE FONDAMENTALE DI UN ESECUTORE Operatori aritmetici + addizione - sottrazione * moltiplicazione div Divisione tra numeri interi / Divisione tra numeri reali mod Calcolo del resto della divisione tra interi ^ Elevamento a potenza

CARATTERISTICHE FONDAMENTALE DI UN ESECUTORE Operatori di relazione < Minore di <= Minore o uguale di > Maggiore >= Maggiore o uguale di <> Diverso

CARATTERISTICHE FONDAMENTALI DI UN ESECUTORE Operatori logici And Per il prodotto logico (congiunzione) Or Per la somma logica (disgiunzione) Not Per la negazione Xor Per l’OR esclusivo

Diagrammi di flusso Per la descrizione degli algoritmi si utilizzano particolari rappresentazioni grafiche denominate diagrammi di flusso, schemi a blocchi o flowchart Questa descrizione costituisce un efficace strumento per la descrizione degli algoritmi, più valido di una esposizione di tipo discorsivo (troppo generica e ambigua) Qualsiasi algoritmo può essere decomposto in poche funzioni elementari Trasferimento dati Blocco operativo Blocco decisionale Inizio o fine Simbolo di connessione

LA PSEUDOCODIFICA La pseudocodifica è la descrizione di un algoritmo ottenuta utilizzando termini e parole del linguaggio comune, ma applicando una serie di regole che permettono di organizzare un tipo di testo formalmente rigoroso e strettamente orientato alla stesura degli algoritmi. La pseudocodifica utilizza delle regole per strutturare il testo: Le parole chiave che aprono e chiudono il testo di un algoritmo sono INIZIO e FINE. Altre parole chiave sono A, ALLORA, ALTRIMENTI, CASO, DA, DI, ESEGUI, FINCHE’, MENTRE, PASSO, PER, RIPETI, SE. Ogni istruzione è indicata con una frase del linguaggio corrente e può contenere un’espressione di tipo aritmetico o logico Le istruzioni leggi(lista di variabili) e scrivi(variabili e costanti) vengono utilizzate per descrivere le operazione di immissione ed emissione dei dati La richiesta all’utente per acquisire i dati necessari all’elaborazione può essere indicata con chiedi(lista dei dati che servono) Le variabili, le costanti vengono indicate da parole in minuscolo dette identificatori

ESEMPIO Algoritmo rettangolo h b A= b  h Dati input Base e altezza del rettangolo INIZIO Chiedi(base, altezza) Leggi(base, altezza) Area  base * altezza Scrivi area Dati output Area del rettangolo FINE

ESEMPIO Inizio h b A= b  h Dati input Base e altezza del rettangolo Chiedi base, altezza Leggi base altezza Dati input Base e altezza del rettangolo Area base * altezza Dati output Scrivi area Area del rettangolo Fine

Programmazione Strutturata La programmazione strutturata è una tecnica di programmazione che ha lo scopo di semplificare la struttura di un algoritmo disciplinando l'organizzazione di uno schema a blocchi In particolare prevede l'uso di un numero limitato di strutture di controllo fondamentali Struttura di controllo: flowchart parziale da assumere come modello di computazione, con un ingresso ed una uscita La programmazione strutturata vincola quindi l'utilizzo delle strutture di controllo, ma offre i seguenti vantaggi: rende possibile una progettazione di tipo Top-Down permette la definizione di algoritmi più leggibili, essendo più facile individuare i moduli corrispondenti alle varie parti di cui si compone l'algoritmo test, correzione e manutenzione del programma sono perciò più semplici

Programmazione strutturata Si assumono come strutture di controllo fondamentali: A Sequenza B Vero Falso p A B Selezione binaria Vero p A While do (ripeti mentre)

Istruzioni per il controllo di flusso Forniscono al programmatore il meccanismo per decidere se e come eseguire blocchi di istruzioni condizionatamente a meccanismo decisionali definiti all’interno della applicazione Istruzioni per il controllo di flusso Istruzione Descrizione if Esegue o no un blocco di codice a seconda del valore restituito da una espressione booleana if-else Esegue permette di selezionare tra due blocchi di codice quello da eseguire a seconda del valore restituito da una espressione booleana while Esegue ripetutamente un blocco di codice controllando il valore di una espressione booleana do-while

somma l’inverso del cubo di i ad s Incrementa il contatore Sequenza Flowchart della struttura sequenza Due azioni eseguite in ordine somma l’inverso del cubo di i ad s Incrementa il contatore

Ciclo while Esegue una istruzione mentre una condizione è verificata Vero p A Esegue una istruzione mentre una condizione è verificata

Ciclo do-while A p Vero Falso Esegue una istruzione finché una condizione diventa falsa

La selezione binaria if È usata per scegliere fra due alternative Pseudocodice Se il voto è maggiore di 18 allora l’esame è superato Vero Falso voto>=18 Esempio di flowchart della struttura if if è una struttura con un solo punto di uscita stampa

La selezione binaria if/else Strutture di selezione if Esegui una singola operazione se la condizione è vera if/else Esegui operazioni diverse quando la condizione è vera o quando è falsa Pseudocodice Se il voto è maggiore o uguale di 18 Stampa “Esame superato” altrimenti Stampa “Esame non superato”

Stampa “Esame non superato” Stampa “Esame superato” La selezione binaria if/else falso vero voto >= 18 Stampa “Esame non superato” Stampa “Esame superato”

Ciclo controllato da un contatore stampa 30 volte la parola TRE START END C := 1 C := C + 1 stampa “TRE” C = 30 V F

Ciclo controllato da un contatore Media dei voti: Descrizione del problema: Una classe di 10 studenti affronta un quiz. I risultati sono interi fra 0 e 100. Calcolare la media complessiva. È una iterazione controllata da un contatore Il ciclo viene ripetuto finché un contatore non raggiunge un determinato valore Il numero di iterazioni è noto: si usa un contatore

azzera somma parziale - accumulatore Descrizione a parole: azzera somma parziale - accumulatore azzera il contatore dei numeri già introdotti leggi un dato somma il dato all’accumulatore incrementa il contatore se il numero di dati letti (contatore) è minore di 10 torna a 3, altrimenti continua stampa la media Inizio I = 0 S = 0 I contatore S accumulatore I = I + 1 Vero Falso I<10 Lettura dato Di Stampa media S: = S + Di Fine

START END dati A B RIS := A; CON := 1 stampa RIS CON := CON + 1 CON = B V F RIS := RIS + 1 A e B > 0 somma due numeri avendo a disposizione solo l’operazione di incremento unitario (macchina a strati)

START END dati A B RIS := 0; CON := 1 stampa RIS CON := CON + 1 CON = B V F RIS := RIS + A A e B > 0 moltiplica due numeri avendo a disposizione solo l’operazione di somma (macchina a strati)

Ciclo controllato da una sentinella Problema: costruire un algoritmo che, assegnati N dati numerici A1, A2, A3, …, AN Con N non noto a priori, sia capace di: Contare i dati, ossia determinare N Calcolare la somma S dei Dati Occorre un contatote Ct che, inizialmente azzerato, viene incrementato di una unità ogni volta che uno dei dati viene introdotto in memoria Occorre una sentinella (flag) adibita a segnalare il momento in cui si realizza L’evento: “la lettura dei dati è terminata”

A tale scopo si usa una variabile che chiameremo spia e che manterremo Spenta (spia=0) per tutta la durata della lettura dei dati eche accenderemo (spia=1) subito dopo l’immissione dell’ultimo dato Algoritmo INIZIO Spia:=0 Ct:=0 S:=0 Ripeti Introduzione del dato in A Introduzione di 0 o 1 in spia a seconda che la lettura dei dati non sia, o sia terminata Incrementa il contatore Incrementa la somma Finché (spia=1) Visualizza contatore Visualizza somma FINE

falso vero Inizio Spia: = 0 Ct: = 0 S:=0 Lettura dato A, spia Ct: = Ct+1 S:=S+A falso Spia=1 vero N=Ct Somma=S Fine

MCD(m,n) m,n >0 Leggi m r1m mod min r2n mod min Stampa min Leggi n si m>n minn minm 1. Leggi m e n; 2. considera il minore tra i due numeri (min) 3. verifica se min è divisore sia di m che di n. In caso positivo min è il MCD cercato altrimenti 3.1 sottrai 1 a min e torna al punto 3 r1m mod min r2n mod min (r1=0 and r2=0) si minmin-1 Stampa min