1- Introduzione Al Corso e Algoritmi

52
 Informatica A A.a. 2013/2014 Allievi Ingegneria Gestionale  (P-Z) Introduzione al Corso 

description

Informatica A Ingegneria Gestionale Introduzione e Algoritmi

Transcript of 1- Introduzione Al Corso e Algoritmi

  • Informatica A

    A.a. 2013/2014

    Allievi Ingegneria Gestionale

    (P-Z)

    Introduzione al Corso

  • Docenti Docente: Dott. ssa Elisa Quintarelli

    Dipartimento di Elettronica e Informazione

    Email: [email protected]

    Ufficio: I Piano Dipartimento di Elettronica e Informazione

    Tel.: 02 2399 3478

    Esercitatrice: Ing. Mirjana Mazuran Email: [email protected] Responsabile di laboratorio: Ing. Laura Mandelli Email: [email protected] Sito web del corso: su BEEP

  • Testi consigliati

    Ceri, Mandrioli, Sbattella. Informatica, arte e mestiere. McGraw-Hill, 1999.

    Un libro sul linguaggio C (a scelta) - AL KELLEY, Ira Pohl. C Didattica e

    programmazione. Addison Wesley. - A. Bellini, A. Guidi. Linguaggio C guida alla

    programmazione (seconda edizione). Mc-GrawHill, 2003.

    - Programmazione in C, Apogeo.

  • Organizzazione

    Il corso equivale a 10 crediti Lezioni = 52 ore Esercitazioni = 40 ore Laboratorio = 24 ore

    Orario: Lezioni ed Esercitazioni: Mercoled 13.15 16.15 Gioved 10.15 12.15 Venerd 8.15 11.15 Laboratorio: Luned o Gioved

    Ricevimento:

    Luned: 10.30 11.30 Su appuntamento in altri orari o giorni

  • Laboratori

    1 Squadra in Aula L1.4 dalle 8.15 alle 12.15 Ottobre: 28 Novembre: 4,11 Dicembre: 9, 16 Gennaio: 20

    2 Squadra nelle Aule CS 0.6 e CS 0.7 dalle 14.15 alle 18.15 Ottobre: 31 Novembre: 7,14 Dicembre: 5, 12 Gennaio: 23

  • Ambiente di Sviluppo C In laboratorio verr utilizzato

    l'ambiente DEV-C++. Per l'installazione necessario:

    scaricare l'ambiente dal seguente sito http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe?use_mirror=heanet

    e salvare il file devcpp-4.9.9.2_setup.exe lanciare il file eseguibile precedentemente salvato

    (devcpp-4.9.9.2_setup.exe) seguire l'installazione automatica accettando tutte le

    selezioni.

    Per il MAC esiste XCode

  • Modalit di Valutazione

    33 punti (che corrispondono a 30 e lode) suddivisi nel seguente modo: Laboratorio: da 0 a 3 punti; superato se

    si ottiene un voto non negativo alla prova valutata obbligatoria per chi non ha ottenuto in passato una valutazione positiva.

    Due prove in itinere NON OBBLIGATORIE: un massimo di 30 punti per ogni prova.

    La prima prova in itinere ritenuta superata se lo studente ottiene un voto maggiore o uguale a 18.

    Solo gli studenti che superano la prima prova possono accedere al pre-appello (seconda prova). La seconda prova superata se si ottiene almeno 18.

    Il voto finale sar la media dei due voti scritti + il voto di laboratorio.

  • Modalit di Valutazione

    Tre appelli scritti: Febbraio, Luglio e Settembre

  • Perch studiare informatica?

    Perch linformatica a livello mondiale uno dei settori industriali maggiori e pi in crescita

    Perch oltre ad essere una tecnologia primaria una tecnologia abilitante di altre tecnologie e di altri settori industriali

    Per capire la societ dellinformazione

    Perch imparare a programmare passando dalla formulazione del problema alla sua soluzione attraverso lo studio di un algoritmo risolutivo, insegna un metodo, rigoroso, spendibile in tutte le altre attivit.

  • Informatica Informatica

    scienza che studia la rappresentazione e lelaborazione dellinformazione (mediante macchine dette calcolatori elettronici)

    non solo la tecnologia dei calcolatori (il calcolatore solo uno strumento) ma anche il modo in cui linformazione viene strutturata ed elaborata automaticamente

    Non solo applicazione su calcolatori (uso dei calcolatori in un dominio applicativo)

    Include: La produzione di strumenti

    informatici La costruzione di applicazioni

  • Informatica Informatica

    Scienza: approccio rigoroso e sistematico Informazione: parte di qualsiasi attivit

    umana Rappresentazione: il problema di astrarre i

    concetti importanti da quelli trascurabili per poter modellare la realt di interesse. Dobbiamo studiare metodi di rappresentazione appropriati allelaborazione da parte di una macchina digitale

    Elaborazione: uso e trasformazione dellinformazione in maniera funzionale agli obiettivi

  • Il punto di partenza Gli elaboratori sono stati introdotti

    con lo scopo di risolvere problemi In modo autonomo non risolvono

    niente Deve essere realizzata una

    applicazione in grado di risolvere il problema

  • Informatica Informatica

    scienza che studia la rappresentazione e lelaborazione dellinformazione (mediante macchine dette calcolatori elettronici)

    Contesto e necessit delluomo

    Problemi da risolvere

    Informazioni da elaborare

    Soluzione del Problema Struttura dei dati da elaborare

    Rappresentazione (della soluzione e dei dati) Calcolatore Elettronico

    Elaborazione mediante

    Funzionalit programmata:

    Comportamento determinato dallesecuzione di programmi

    Programma: descrizione della soluzione di un problema

    Flessibile

    Funzionalit intrinseca (o cablata):

    Comportamento determinato dalla struttura costruttiva

    Efficiente ma rigida

  • Algoritmo: dal problema alla soluzione

    Obiettivo: dato un problema definire un procedimento che

    possa essere eseguito automaticamente da un esecutore per risolvere il problema

    Definizione di Algoritmo Dato un problema e un esecutore,

    lalgoritmo : una successione finita e ordinata di

    passi elementari (operazioni e direttive)

    eseguibili senza ambiguit (comprensibili) dallesecutore

    che risolve il problema dato

  • Un esempio di algoritmo

    Conti correnti on-line: apertura di un conto su XBANK

    Registrati sul sito della banca Attendi user-id e password Attendi il PIN1 Effettua un bonifico per aprire il

    conto (utilizzando il PIN1) Invia il contratto firmato e i

    documenti richiesti Attendi il PIN2 (per sicurezza) . Opera sul tuo C/C

  • Gli algoritmi e linformatica

    Un algoritmo pu essere svolto da un calcolatore

    Il calcolatore va istruito quindi serve un formalismo adatto: linguaggio di programmazione

    In un modo pi formale, possiamo quindi definire l'algoritmo come una sequenza ordinata e finita di istruzioni che, dato uno o una serie di elementi in input, produce uno o una serie di risultati in output Input sono i dati in ingresso Output sono i dati in uscita I passi sono detti istruzioni

  • Obiettivi del corso

    Capire come le informazioni si rappresentano allinterno di un calcolatore

    Conoscere le funzionalit del calcolatore: architettura HW e SW

    Imparare a codificare gli algoritmi in linguaggio artificiale: Capacit di individuare una

    soluzione algoritmica Conoscenza del linguaggio di

    programmazione

  • Programma Breve rassegna sullInformatica

    Nozioni di base sullarchitettura hardware e software di un calcolatore Struttura e principi di funzionamento di un

    calcolatore elettronico elementare Codifica binaria dell'informazione Il linguaggio ASSEMBLER

    La programmazione del calcolatore: Rappresentazione dello schema risolutivo

    (algoritmo) di un problema in una forma adatta all'elaborazione automatica

    Rappresentazione e codifica degli algoritmi in un linguaggio formale (programmi)

    Linguaggio C

    Applicazioni dellInformatica Basi di dati: progettazione e interrogazione

  • Specifiche

    Problema

    Algoritmo

    Soluzione del Problema in forma adatta alla risoluzione automatica

    Espressione della soluzione

    Programma Descrizione dellAlgoritmo in forma capibile dal calcolatore

    Esecuzione

    Architettura HW Blocchi Funzionali

    Architettura SW: Sistema Operativo

    Esecutore

    (Rappresentazione binaria

    dellInformazione)

    Codifica

    Uso del calcolatore per agevolare e potenziare le possibilit di trattamento dellinformazione

  • Dal problema alla soluzione automatica

    Specifiche dei requisiti: descrizione precisa e corretta dei requisiti (verificabilit)

    cosa? Progetto: procedimento con cui

    si individua la soluzione come?

    Soluzione: algoritmo

  • Esempio: il prodotto di due interi positivi

    Leggi W Leggi Y Somma W a se stesso Y volte Scrivi risultato

  • Prodotto di due interi positivi

    1 Leggi W 2 Leggi Y 3 SP = 0 4 NS = Y 5 SP = SP + W 6 NS = NS - 1 7 NS = 0?

    Se NO: torna a 5

    8 Z=SP 9 Scrivi Z

    Procedimento sequenziale

    Non ambiguo Formulazione

    generale Prevede tutti i

    casi (che succede se Y

    < 0?)

  • Propriet degli Algoritmi Procedimenti sequenziali: un passo dopo

    laltro secondo un ordine specificato (flusso di esecuzione)

    Correttezza: Lalgoritmo perviene alla

    soluzione del compito cui preposto, senza difettare di alcun passo fondamentale

    Efficienza: Lalgoritmo perviene alla soluzione del

    problema nel modo pi veloce possibile e/o usando la minima quantit di risorse fisiche

    Determinismo: I passi elementari devono essere eseguiti in modo univoco dallesecutore devono essere descritti in una forma

    eseguibile per lesecutore

  • Propriet degli Algoritmi La descrizione di un algoritmo per un

    esecutore deve avere una formulazione generale la soluzione individuata non deve

    dipendere solo da valori predefiniti dei dati, cosi che lalgoritmo sia utilizzabile nel maggior numero possibile di casi

    gli algoritmi prevedono particolari passi destinati ad acquisire i valori dei dati da utilizzare ed elaborare in ogni particolare esecuzione

    Terminazione: Lesecutore deve terminare in

    tempo finito per ogni insieme di valori in ingresso Insieme finito di istruzioni e ogni istruzione

    eseguita un numero finito di volte Realizzabilit pratica: Lesecutore deve essere

    in grado di eseguire lalgoritmo con le risorse a sua disposizione (informazioni + tecnologia)

  • Propriet degli Algoritmi

    Ogni operazione o direttiva deve: terminare entro un intervallo finito di tempo

    Es.: calcolare le cifre decimale di , NO!

    produrre un effetto osservabile (stato prima dellesecuzione, stato dopo lesecuzione)

    Produrre lo stesso effetto ogni volta che viene eseguita a partire dalle stesse condizioni iniziali Es. X=5, y=10 x+y=15

  • Elementi degli Algoritmi

    Oggetti: le entit su cui opera lalgoritmo 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: lindicazione delle possibili successioni dei passi dellalgoritmo La correttezza dei risultati dipende non solo

    dalla corretta esecuzione delle singole operazioni, ma anche dalla corretta sequenza con cui sono eseguite

  • Elementi degli Algoritmi

    NOTA: Flusso di controllo: la descrizione a priori di

    tutte le possibili sequenze nellesecuzione dei passi dellalgoritmo, 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 dellalgoritmo e che dipende dai particolari valori che i dati assumono in quellesecuzione

  • Rappresentazione di un algoritmo destinato

    allesecuzione automatica Rappresentazione di un

    algoritmo Descrizione, univoca per lesecutore,

    di tutte le possibili sequenze di operazioni da eseguire per risolvere il problema dato

    Descrizione del flusso di controllo, delle operazioni eseguibili, e degli oggetti su cui agiscono le singole operazioni

    E necessario un formalismo di rappresentazione, cio un linguaggio.

  • Rappresentazione di un algoritmo destinato

    allesecuzione automatica Il linguaggio costituito da:

    Vocabolario: insieme di elementi per la descrizione di oggetti, operazioni e flusso di controllo

    Sintassi: insieme di regole di composizione degli elementi in frasi eseguibili e costrutti di controllo (istruzioni)

    Semantica: insieme di regole per linterpretazione degli elementi e delle istruzioni sintatticamente corrette

  • Linguaggi di descrizione

    I linguaggi per descrivere gli algoritmi devono essere noti alluomo che progetta gli algoritmi e al calcolatore che deve eseguirli

    Fasi iniziali di progetto: struttura generale dellalgoritmo descrizione rigorosa del flusso di

    controllo descrizione semplificata delle

    direttive, per es. mediante luso di linguaggio naturale

  • Linguaggi semi-formali Esempi di linguaggi semiformali:

    Schemi a blocchi (o diagrammi di flusso)

    elementi grafici per indicare il flusso di controllo e i tipi di operazioni

    elementi testuali per descrivere le operazioni e gli oggetti

    Linguaggio naturale completamente testuale i costrutti di controllo sono identificabili

    anche visivamente

    le operazioni sono descritte in italiano Pseudo-codice

    completamente testuale costrutti di controllo descritti con la forma

    e le parole chiave dei linguaggi di programmazione

    le operazioni possono essere descritte in modo informale

    IF A>0 THEN A=A+1 ELSE A=0

  • Schemi a Blocchi

    Elementi di base Blocco esecutivo

    Blocco di inizio

    Blocco di terminazione

    Flusso di controllo delle operazioni

    Blocco condizionale

    operazione

    Inizio

    Fine

    Condizione vera falsa

  • Schemi a Blocchi

    Elementi di base

    Blocco di ingresso dati

    Blocco di uscita dati

    Operazione di ingresso

    Operazione di uscita

  • Schemi a blocchi

    Variabili: rappresentate tramite nomi simbolici Le operazioni descritte possono essere

    eseguite di volta in volta sui diversi valori assegnabili alle variabili (formulazione generale)

    Variabile: contenitore di valori Propriet: una variabile non pu

    essere vuota, cio ad una variabile sempre associato un valore

    Negli schemi a blocchi operazioni e condizioni sono rappresentate in modo testuale e tramite simboli che rappresentano le operatori aritmetici, di confronto, ecc.

  • Regole di composizione ed interpretazione degli

    elementi Composizione degli elementi

    flusso di controllo dellalgoritmo, cio tutte le

    possibili sequenze di blocchi da eseguire Un solo blocco di inizio Almeno un blocco di terminazione Dal blocco di inizio e da ogni blocco esecutivo

    deve uscire una sola freccia Se per ogni blocco ce un solo blocco

    successivo: flusso di controllo sequenziale (sequenza)

    Da ogni blocco condizionato devono uscire due frecce contrassegnate dalle indicazioni vero (si) e falso (no)

    Condizione vera falsa

    Inizio

    operazione

  • Regole di composizione ed interpretazione degli

    elementi Il flusso di controllo non pi sequenziale se

    dopo un blocco si possono presentare diverse alternative. In questo caso si usa un blocco di selezione

    Dal blocco di selezione escono due frecce che devono essere contrassegnate dal valore vero o falso. Il successivo blocco da eseguire dipende dal valore della condizione

    In tutti i casi -in esecuzione- unica la scelta del blocco successivo da eseguire

    Condizione vera falsa operazione1 operazione2

    Condizione vera falsa operazione1 operazione2

  • Esempio Prodotto di due numeri

    interi positivi Diagramma di flusso con direttive in

    italiano

    Inizio

    Leggi(W)

    Scrivi (Z)

    Leggi(Y)

    Moltiplica intero W per intero Y e denota

    il risultato con Z

    Fine

    Acquisizione dallutente dei particolari valori da considerare per i due fattori del prodotto e da assegnare alle variabili W e Y

    Operazioni di elaborazione, valide per qualsiasi valore dei dati

    Emissione allutente del risultato dellelaborazione

    Variabili W, Y, Z intere

    W, Y, fattori di ingresso

    Z risultato in uscita

  • Operatori ed espressioni Operatori aritmetici: +, -, , /, ...

    agiscono sugli operandi (variabili o costanti) producono un valore numerico

    Operatori di confronto: >, =,

  • Esempio 2 Prodotto di due interi

    tramite somme ripetute Algoritmo: somma W a se stesso

    tante volte quanto vale Y

    Variabili: W,Y intere (valori in ingresso) Z intera (valore in uscita)

    Variabili ausiliari: NS intera (contatore del numero di

    somme ancora da eseguire) SP intera (valore della somma

    parziale)

  • Inizio

    Leggi(W)

    Scrivi (Z)

    Leggi(Y)

    SP:=0

    Fine

    NS:=Y

    SP:=SP+W

    NS:=NS-1

    NS>0

    no si

    Z:=SP

    Acquisizione dei dati in ingresso e attribuzione dei loro valori a W e Y

    Inizializzazione delle variabili ausiliarie

    Corpo del ciclo

    Valutazione della condizione di uscita dal ciclo

    Emissione del risultato

    Schema a Blocchi con ciclo a condizione finale (lalgoritmo corretto se Y>0)

  • Flusso di controllo ciclico

    Permette di esprimere literazione di un insieme di istruzioni (corpo del ciclo)

    Il corpo del ciclo ripetuto un numero finito di volte

    La ripetizione controllata dalla valutazione della condizione di permanenza del ciclo

    variabile di controllo del ciclo inizializzata prima di entrare nel

    ciclo condizione di permanenza

    funzione della variabile di controllo corpo del ciclo

    contiene la modifica della variabile di controllo

    CICLO A CONDIZIONE FINALE CICLO A CONDIZIONE INIZIALE

  • Schema a blocchi con ciclo a condizione iniziale (lalgoritmo corretto per Y>=0)

    Inizio

    Leggi(W)

    Scrivi (Z)

    Leggi(Y)

    SP:=0

    Fine

    NS:=Y

    SP:=SP+W

    NS:=NS-1

    NS>0

    no

    si

    Z:=SP

    SP:=SP+W

    NS:=NS-1

    NS>0 no

    si

  • Algoritmo in linguaggio naturale per calcolare il prodotto di due numeri con

    somme ripetute ( a controllo iniziale)

    Leggi W Leggi Y Azzera il prodotto Le somme da fare = Y Ripeti se hai ancora somme da

    fare | somma W al prodotto |_ sottrai 1 ai cicli ancora

    da fare Scrivi il prodotto

  • Algoritmo in linguaggio naturale per calcolare il prodotto di due numeri con

    somme ripetute ( a controllo finale)

    Leggi W Leggi Y Azzera il prodotto Le somme da fare = Y Ripeti | somma W al prodotto | sottrai 1 ai cicli ancora

    da fare |_ fintantoch hai ancora

    somme da fare Scrivi il prodotto

  • Algoritmo con esecutore calcolatore per lesempio

    precedente (ciclo a condizione finale)

    int main () { int w,y,z,sp,ns; /*dichiarazione delle variabili */ leggi(w); leggi(y);

    sp=0; /*inizializzazione*/ ns=y; /*inizializzazione*/

    /*ciclo a condizione finale: lalgoritmo

    e corretto solo nellipotesi y>0 */ do { sp=sp+w; ns=ns-1;

    }while (ns>0); z=sp; scrivi (z);

    }

  • Algoritmo con esecutore calcolatore per lesempio precedente

    (ciclo a condizione iniziale) int main () { int w,y,z,sp,ns; /*dichiarazione delle variabili */ leggi(w); leggi(y);

    sp=0; /*inizializzazione*/ ns=y; /*inizializzazione*/

    /*ciclo a condizione iniziale:

    lalgoritmo e corretto solo nellipotesi y>=0 */

    while (ns>0) { sp=sp+w; ns=ns-1;

    } z=sp; scrivi (z);

    }

  • Raffinamenti Successivi

    Nelle prime fasi di progetto si trascurano i dettagli

    Man mano che il progetto evolve si conosce meglio il problema

    Uno dei raffinamenti tipici: VERIFICA DEI DATI IN INGRESSO

    Lutente pu commettere errori nellimmissione dei dati

    si verifica che i dati immessi siano accettabili rispetto alle ipotesi di correttezza dellalgoritmo

    Esempio precedente: lalgoritmo non fornisce valori corretti per valori negativi di Y

    Y >= 0 ?

  • ESEMPIO: verifica dei dati in ingresso

    Inizio

    Leggi(W)

    Scrivi (Z)

    Leggi(Y)

    SP:=0

    Fine

    NS:=Y

    Z:=SP

    SP:=SP+W

    NS:=NS-1

    NS>0 no

    si

    Y>=0 no si

    Scrivi: Secondo fattore Negativo

    Ipotesi: lalgoritmo non calcola il prodotto nei casi in cui Y < 0

  • Flusso di controllo condizionale

    Costrutto di selezione semplice Si utilizza quando alcune operazioni possono

    essere o non essere eseguite, in dipendenza del verificarsi di una condizione

    Si esprime tramite un un blocco condizionale. Lungo uno dei due rami uscenti sono collocati i blocchi che descrivono le operazioni da eseguire; laltro riguarda le operazioni da non eseguire

    Costrutto di selezione doppia Si utilizza quando, in dipendenza del verificarsi

    di una condizione, si devono eseguire operazioni alternative

    Si esprime tramite un blocco condizionale. Lungo uno dei due rami uscenti sono collocati i blocchi che descrivono le operazioni da eseguire in un caso; laltro riguarda le operazioni da eseguire in alternativa

  • Ipotesi: i due fattori possono essere positivi, nulli o negativi

    Inizio

    Leggi(W)

    Scrivi (Z)

    Leggi(Y)

    NS:=Y

    Fine

    CS:=1

    Z:=SP

    SP:=SP+W

    NS:=NS-1

    NS> 0? no si

    no si Y>=0 ?

    NS:=-Y

    CS:=-1

    CS=1? no si

    Z:=-SP

    SP:=0

  • In linguaggio naturale: Leggi w e y Controlla e ricorda se y0 | sp=sp+w | ns=ns-1 se cs==1 z=sp altrimenti z=-sp scrivi(z);

  • Codifica in C int main () {int w,y,z,sp,ns,cs;/*dichiarazione variabili*/

    leggi(w); leggi(y); if (y>=0) { ns=y; cs=1; } else /*y negativo*/ { ns=-y; cs=-1; } sp=0; /*inizializzazione*/ while (ns>0) { sp=sp+w; ns=ns-1; } if (cs==1) {z=sp;} else {z=-sp;} scrivi(z); }