La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.

Presentazioni simili


Presentazione sul tema: "Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università."— Transcript della presentazione:

1 Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università degli Studi di Milano Corsi di Laurea in Biotecnologie (primo anno interfacoltà)

2 Seconda lezione: I linguaggi di programmazione e gli algoritmi (capitoli 7 e 8) 2Informatica di base – Linea 1

3 Prima Parte: A che punto siamo arrivati? “La lezione di settimana scorsa è stata pesantissima: non mi ricordo nulla!” 3Informatica di base – Linea 1

4 La volta scorsa Come funziona un computer? – processore – memoria – programmi: serie di istruzioni elementari vengono eseguiti dal computer in linguaggio macchina (istruzioni binarie) 4Informatica di base – Linea 1

5 Seconda parte: Come si scrivono i programmi? “Non vorrà mica farci scrivere dei programmi questa qua, vero?!” 5Informatica di base – Linea 1

6 Linguaggio macchina Un programma è una serie di istruzioni elementari codificate in linguaggio macchina – la serie è molto lunga (anche milioni di righe di codice) che prende il nome di oggetto binario – ricordiamoci: un’istruzione è composta da 4 byte: Scrivere un programma direttamente in linguaggio macchina è un processo: – lungo e soggetto ad errori – praticamente impossibile per programmi complessi! 6Informatica di base – Linea 1

7 Assembly E’ possibile scrivere istruzioni più semplici: ADD  usiamo lettere e numeri invece che bit Ognuna di queste istruzioni viene poi trasformata in un’istruzione in linguaggio macchina: – il programma che effettua la trasformazione in linguaggio macchina si chiama assembler – il linguaggio si chiama assembly 7Informatica di base – Linea 1

8 “Questo l’ho capito!” “Voi informatici siete degli scansafatiche e, al posto che scrivere direttamente in linguaggio macchina (che è l’unica cosa che i computer possono eseguire), scrivete in assembly (che è un po’ più semplice) e poi chiedete all’assembler di trasformarlo in linguaggio macchina.” 8Informatica di base – Linea 1

9 Tutto in assembly? Abbiamo detto: – l’assembler trasforma un’istruzione scritta in assembly in una istruzione scritta in linguaggio macchina – l’oggetto binario (l’insieme delle istruzioni di un programma) è lungo anche milioni di istruzioni Quindi, per scrivere un programma, dovremmo scrivere migliaia (anche milioni) di istruzioni in assembly… – E’ ancora troppo difficile! 9Informatica di base – Linea 1

10 Linguaggi di programmazione di alto livello I linguaggi di programmazione di alto livello permettono di specificare istruzioni in linguaggi più semplici per l’uomo: – istruzioni più complesse rispetto alle istruzioni elementari eseguite dal processore – il compilatore trasforma ogni istruzione di un programma di alto livello in una o più (spesso molte di più!) istruzioni elementari 10Informatica di base – Linea 1

11 Codifica del software 11Informatica di base – Linea 1

12 Quanta automazione? Il passaggio dal codice di alto livello al codice in linguaggio macchina è automatico E’ possibile semplificare ulteriormente la creazione di codice? – in parte sì (ad esempio, riutilizzo del codice) – in buona parte no: è un’operazione che deve essere svolta manualmente dai programmatori 12Informatica di base – Linea 1

13 Quanto è difficile? E’ difficile scrivere codice di alto livello? – molto meno che scrivere il codice in linguaggio macchina – semplici programmi sono facili da scrivere un corso universitario è sufficiente per imparare le basi – programmi complessi e/o di grandi dimensioni sono più difficili da scrivere spesso contengono errori 13Informatica di base – Linea 1

14 Errori dei programmi 14Informatica di base – Linea 1

15 Errori dei programmi (2) 15Informatica di base – Linea 1

16 Errori dei programmi (3) 16Informatica di base – Linea 1

17 Terza Parte: Cosa sono gli algoritmi Non c’entrano nulla con i “logaritmi”! 17Informatica di base – Linea 1

18 Gli “algoritmi” che conoscete già Serie di istruzioni finalizzate a conseguire uno scopo: – come si cucina una torta? – come si fa una somma in colonna? – come si monta un mobiletto? Queste sono procedure, non algoritmi, ora scopriamo la differenza... 18Informatica di base – Linea 1

19 Cos’è un algoritmo Procedimento che permette di risolvere un dato problema attraverso una serie di passi eseguiti in una sequenza specificata: – assume in input delle informazioni – produce in output delle informazioni 19 InputOutput Informatica di base – Linea 1 Algoritmo Problema

20 Algoritmo: 5 proprietà fondamentali Input specificato: – bisogna specificare cosa l’algoritmo assume in input Output specificato: – quali risultati può generare l’algoritmo Determinatezza Efficacia Terminazione 20Informatica di base – Linea 1

21 Determinatezza L’algoritmo specifica precisamente la sequenza di operazioni Ogni operazione deve avere una sola interpretazione possibile Esempio: – “eseguire i passi necessari”  “eseguire i passi 1, 2, 5” – “aggiungete un po’ di sale”  “aggiungete 4g di sale” 21Informatica di base – Linea 1

22 Efficacia (o calcolabilità) L’algoritmo deve poter essere eseguito in modo meccanico Deve essere possibile calcolare ogni operazione Ad ogni passo si ha la conoscenza: – degli input dell’algoritmo – dei risultati calcolati nei passi precedenti 22Informatica di base – Linea 1

23 Terminazione Come potrebbe non terminare una procedura? – alcune operazioni possono essere ripetute – se fossero ripetute all’infinito, la procedura potrebbe non terminare 23Informatica di base – Linea 1

24 Programmi e algoritmi Un programma è un algoritmo espresso in un particolare linguaggio di programmazione: – un programma implementa un algoritmo – un algoritmo può essere implementato in diversi modi Gli informatici studiano principalmente gli algoritmi – ma anche come possono essere implementati 24Informatica di base – Linea 1

25 Programmi e algoritmi 25 InputOutput Algoritmo Problema Programma Informatica di base – Linea 1 possono esistere più algoritmi per risolvere lo stesso problema un algoritmo può essere implementato con linguaggi diversi

26 Dal problema al programma 26 Problema Algoritmo lavoro umano Codice di alto livello implementazione (fatta dall’uomo) Compilazione e assemblamento Codice oggetto Espressi in linguaggio naturale Espressi in linguaggi formali

27 Linguaggi naturali vs formali Linguaggi naturali: – es: italiano, inglese, etc... – sono soggetti ad interpretazioni Linguaggi formali: – es: assembly, C++, Java (2 linguaggi di alto livello) – sono univocamente interpretabili 27Informatica di base – Linea 1

28 Terza Parte: Pensiamo in modo algoritmico! “Mmm, qua diventa difficile....” 28Informatica di base – Linea 1

29 Prendiamo un problema reale Abbiamo dei CD in una scaffalatura – uno spazio per ogni CD Ogni CD ha un prezzo Vogliamo mettere il CD con il prezzo minore all’inizio della scaffalatura (a sinistra) Definiamo l’algoritmo MEAS (=Metti Economico A Sinistra) – MEAS è un nome inventato solo per questa lezione! 29Informatica di base – Linea 1

30 Input e Output Input: una sequenza di CD che riempie completamente una scaffalatura orizzontale. Es: Output: al termine, i CD in input sono in un ordine tale che il CD con il prezzo minore è nella prima posizione a sinistra dello scaffale. Es: Informatica di base – Linea 1

31 Procedura MEAS 1.Sia alfa la prima posizione a sinistra 2.Sia beta la posizione appena a destra di alfa 3.Se il CD in posizione beta costa meno del CD in posizione alfa, allora scambia il CD in posizione alfa con il CD in posizione beta 4.Se c’è almeno una posizione a destra di beta, sposta beta a destra di una posizione e torna al passo 3, altrimenti termina 31Informatica di base – Linea 1

32 Esempio Input: Passo 1: Passo 2: Passo 3: Passo 4: + torna al passo alfa 5241 beta 2541 alfa beta 2541 alfa beta

33 Esempio (cont.) Passo 3: Passo 4: + torna al passo 3 Passo 3: Passo 4: termina alfa beta 2541 alfa beta 1542 alfa beta Informatica di base – Linea 1

34 La procedura MEAS è un algoritmo? Input e un output sono definiti Ogni istruzione è deterministica Ogni istruzione può essere calcolata L’algoritmo termina: – perché ad ogni iterazione del ciclo (istruzioni 3 e 4) beta indica una posizione sempre più a destra e le posizioni sono finite Dunque la procedura MEAS è un algoritmo 34Informatica di base – Linea 1

35 Diagramma di flusso Serve per rappresentare in forma grafica i passi di un algoritmo – permette di visualizzare i blocchi di istruzioni, le scelte, le iterazioni, … Serve ai programmatori, non ai computer… 35Informatica di base – Linea 1

36 Diagramma di flusso 36 Alfa è la prima posizione a sinistra Beta è la posizione successiva CD in pos. beta costa meno CD in pos. alfa? Scambia CD in pos alfa e beta C’è almeno una posizione dopo beta? Termina Sposta beta a destra di una posizione Inizio sì no

37 Informatica di base – Linea 137

38 Ordinamento dei CD Consideriamo un nuovo problema: – vogliamo ordinare tutti i CD in base al loro prezzo Possiamo: – trovare un metodo completamente nuovo oppure – estendere il metodo precedente 38Informatica di base – Linea 1

39 Input e Output Input: una sequenza di CD che riempie completamente una scaffalatura orizzontale. Es: Output: al termine tutti i CD in input sono ordinati a seconda del loro prezzo, da sinistra (il più basso) a destra (il più alto). Es: Informatica di base – Linea 1

40 Idea! Eseguo MEAS una volta e metto il CD più economico a sinistra Poi eseguo MEAS un’altra volta, considerando tutte le posizioni tranne la prima (il più economico è già nella prima posizione) – metto il secondo più economico al secondo posto Continuo fino a quando non l’ho fatto per tutti! 40Informatica di base – Linea 1

41 Esempio Applico MEAS a – ottengo: Nella prima posizione c’è il CD giusto Applico MEAS a – ottengo: Nella seconda posizione c’è il CD giusto Applico MEAS a – ottengo: Nella 3° e 4° posizione ci sono i CD giusti Informatica di base – Linea 1

42 Procedura OrdinaCD 1.Sia alfa la prima posizione a sinistra 2.Sia beta la posizione appena a destra di alfa 3.Se il CD in posizione beta costa meno del CD in posizione alfa, allora scambia il CD il posizione alfa con il CD in posizione beta 4.Se c’è almeno una posizione a destra di beta, sposta beta a destra di una posizione e torna al passo 3 5.Se ci sono almeno due posizioni a destra di alfa, sposta alfa alla posizione appena a destra di alfa e torna al passo 2 6.Termina 42 MEAS Informatica di base – Linea 1

43 Per capire meglio Alfa è la posizione in cui vogliamo mettere il CD più economico rimasto tra quelli da considerare – all’inizio è la prima posizione, poi si sposta verso destra Ogni volta che cambio il valore di alfa, beta “scorre” tutti quelli successivi alla ricerca del CD più economico rimasto 43Informatica di base – Linea 1

44 Prova tu! Inventati qualche input e prova ad “eseguire a mano” l’algoritmo OrdinaCD: – esempio: Prova a disegnare il diagramma di flusso di OrdinaCD: – parti dal diagramma di flusso di MEAS e modificalo Informatica di base – Linea 1

45 OrdinaCD è un algoritmo? Input e un output sono definiti Ogni istruzione è deterministica Ogni istruzione può essere calcolata L’algoritmo termina: – perché beta indica una posizione sempre più spostata a destra (e le posizioni sono finite!) – ogni volta che beta arriva all’ultima posizione, alfa viene spostato a destra (e le posizioni sono finite!) Dunque la procedura OrdinaCD è un algoritmo 45Informatica di base – Linea 1

46 Quarta parte: La complessità computazionale “Ahi, se si chiama “complessità”, tanto facile non deve essere…” 46Informatica di base – Linea 1

47 Avremmo potuto usare un algoritmo diverso? Certo, esistono diversi algoritmi diversi per ordinare “Ma allora qual è il migliore?” Quello che utilizza meglio le risorse del computer: – tempo di calcolo – spazio di memoria 47Informatica di base – Linea 1

48 “Qua stai barando!” “Mi hai appena detto che un algoritmo è una cosa teorica, indipendente da come viene implementata ed eseguita su un computer!” “Non mi puoi mica venire a dire che per confrontare due algoritmi vai a guardare quanto tempo ci mettono le loro implementazioni (cioè i programmi) ad essere eseguite su un computer!” 48Informatica di base – Linea 1

49 La complessità computazionale E’ possibile misurare la complessità di un algoritmo, indipendentemente dalla sua implementazione o dal computer sul quale viene eseguito Il tempo non è misurato in termini di secondi ma in termini di altri parametri: – nell’esempio dei CD, potremmo scegliere il numero di scambi che dobbiamo fare 49Informatica di base – Linea 1

50 Esempio: la complessità di MEAS Assumiamo che il nostro input sia composto da n CD: quante volte eseguiamo il ciclo per confrontare il prezzo di due CD? Soluzione: “circa” n – “circa”: non ci interessa il risultato esatto (es: n-1 o 2n), ci interessa il comportamento asintotico Il tempo di calcolo di MEAS è lineare nella dimensione dell’input: – se raddoppia l’input (il numero di CD), raddoppia il tempo necessario per calcolare l’output 50Informatica di base – Linea 1

51 Esempio: la complessità di OrdinaCD Vai a rivedere i due algoritmi: quale sarà la complessità di OrdinaCD? Per spostare alfa a destra di una posizione bisogna eseguire MEAS una volta – alfa deve essere spostato a destra n volte Soluzione: la complessità di ordinaCD è di n 2 – se raddoppia il numero di CD in input, il tempo necessario per completare l’algoritmo è di 4 volte tanto 51Informatica di base – Linea 1

52 “Non mi sembra così importante” “I computer sono così veloci, cosa vuoi che mi interessi se un algoritmo risolve un problema un po’ più velocemente di un altro?” – esistono problemi così “difficili” che, se non si trovano algoritmi efficienti, la loro implementazione (cioè il programma) potrebbe richiedere anni di esecuzione (anche migliaia di anni!) prima di trovare la soluzione 52Informatica di base – Linea 1

53 Un esempio (di bioinformatica) Problema: determinare l’avvolgimento di una proteina a partire dalla sequenza di amino acidi (protein folding) E’ un problema tanto difficile che non sono noti algoritmi efficienti per risolverlo – “perché è così difficile?” – “a cosa ci serve sapere che è difficile?”  l’analisi della complessità di un algoritmo vi permette di rispondere a queste domande 53Informatica di base – Linea 1

54 Un altro esempio: la ricerca (1) Problema: ricercare un valore in un elenco di n elementi Soluzione semplice: – scorro tutti i valori fino a quando non trovo quello che mi serve – complessità computazione: n (lineare) Soluzione avanzata (richede che l’elenco sia ordinato) – complessità computazionale: log 2 n (logaritmica) 54Informatica di base – Linea 1

55 Un altro esempio: la ricerca (2) Per elenchi piccoli, quasi non fa differenza – ma per elenchi lunghi, la differenza è enorme! Esempio: n = = – soluzione semplice: di confronti – soluzione avanzata: log ≈ 40 Esempio: se Google usasse la soluzione semplice ci metterebbe anni per effettuare una sola ricerca... invece ci mette pochi millisecondi! 55Informatica di base – Linea 1

56 Quinta parte: Riepilogo 56Informatica di base – Linea 1

57 Gli algoritmi Cos’è un algoritmo Quali sono le proprietà di un algoritmo: – Input definito – Output definito – Determinatezza – Efficacia – Terminazione 57Informatica di base – Linea 1

58 Come si ragiona in modo algoritmico? Capacità che dovete acquisire: – come si può trovare un algoritmo che risolva un (semplice) problema? – dato un algoritmo, sono in grado di capire cosa fa? I diagrammi di flusso possono aiutarvi a capire meglio un algoritmo 58Informatica di base – Linea 1

59 Dove studiamo? Sul libro di testo (Snyder, “Fluency”): – Capitolo 7, sezione “Software” e “Programmazione avanzata” – Capitolo 8 59Informatica di base – Linea 1

60 Esercizi Vi è richiesto di acquisire la capacità di generare degli algoritmi che risolvano dei semplici problemi Negli esercizi che seguono: – trovate l’algoritmo che risolve il problema – disegnate il diagramma di flusso corrispondente se vi risulta più semplice, partite dal diagramma di flusso e POI trovate l’algoritmo – eseguite qualche prova per verificare che il vostro algoritmo sia corretto 60Informatica di base – Linea 1

61 Esercizi 1.Dato uno scaffale pieno di CD, si calcoli il numero dei CD 2.Dato uno scaffale pieno di CD, si calcoli il prezzo medio dei CD 3.Dato un numero intero positivo n, si dica se n è primo: – Un numero n è primo se non può essere diviso per nessun altro numero intero ad eccezione di 1 e di n 61Informatica di base – Linea 1

62 Esercizi 4.Si descriva l’algoritmo per effettuare una somma “in colonna” di due numeri, entrambi di due cifre – iniziate con: sia a1 la cifra più a destra del primo numero, a2 la cifra più a sinistra Si modifichi l’algoritmo OrdinaCD in modo tale che, se ci fossero degli spazi vuoti nello scaffale, questi vengano ordinati tutti sulla destra 62Informatica di base – Linea 1


Scaricare ppt "Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università."

Presentazioni simili


Annunci Google