La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corsi di Laurea in Biotecnologie

Presentazioni simili


Presentazione sul tema: "Corsi di Laurea in Biotecnologie"— Transcript della presentazione:

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

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

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

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

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

6 Informatica di base – Linea 1
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! Informatica di base – Linea 1

7 Informatica di base – Linea 1
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 Informatica di base – Linea 1

8 Informatica di base – Linea 1
“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.” Informatica di base – Linea 1

9 Informatica di base – Linea 1
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! Informatica 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 Informatica di base – Linea 1

11 Informatica di base – Linea 1
Codifica del software Informatica di base – Linea 1

12 Informatica di base – Linea 1
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 Informatica di base – Linea 1

13 Informatica di base – Linea 1
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 Informatica di base – Linea 1

14 Informatica di base – Linea 1
Errori dei programmi Informatica di base – Linea 1

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

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

17 Terza Parte: Cosa sono gli algoritmi
Non c’entrano nulla con i “logaritmi”! Informatica 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... Informatica di base – Linea 1

19 Informatica di base – Linea 1
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 Problema Algoritmo Input Output Informatica di base – Linea 1

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 Informatica di base – Linea 1

21 Informatica di base – Linea 1
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” Informatica 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 Informatica di base – Linea 1

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

24 Informatica di base – Linea 1
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 Informatica di base – Linea 1

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

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

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

28 Terza Parte: Pensiamo in modo algoritmico!
“Mmm, qua diventa difficile....” Informatica 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! Informatica di base – Linea 1

30 Informatica di base – Linea 1
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. 5 2 4 1 1 5 4 2 Informatica di base – Linea 1

31 Informatica di base – Linea 1
Procedura MEAS Sia alfa la prima posizione a sinistra Sia beta la posizione appena a destra di alfa 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 Se c’è almeno una posizione a destra di beta, sposta beta a destra di una posizione e torna al passo 3, altrimenti termina Informatica di base – Linea 1

32 Esempio Input: Passo 1: Passo 2: Passo 3: Passo 4: torna al passo 3 5 2 4 1 5 2 4 1 alfa 5 2 4 1 alfa beta 2 5 4 1 alfa beta 2 5 4 1 alfa beta

33 Informatica di base – Linea 1
Esempio (cont.) Passo 3: Passo 4: torna al passo 3 Passo 4: termina. 2 5 4 1 alfa beta 2 5 4 1 alfa beta 1 5 4 2 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 Informatica di base – Linea 1

35 Informatica di base – Linea 1
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… Informatica di base – Linea 1

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

37 Informatica di base – Linea 1

38 Informatica di base – Linea 1
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 Informatica di base – Linea 1

39 Informatica di base – Linea 1
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). 5 2 4 1 1 2 4 5 Informatica di base – Linea 1

40 Informatica di base – Linea 1
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! Informatica di base – Linea 1

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

42 Informatica di base – Linea 1
Procedura OrdinaCD Sia alfa la prima posizione a sinistra Sia beta la posizione appena a destra di alfa 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 Se c’è almeno una posizione a destra di beta, sposta beta a destra di una posizione e torna al passo 3 Se ci sono almeno due posizioni a destra di alfa, sposta alfa alla posizione appena a destra di alfa e torna al passo 2 Termina MEAS Informatica di base – Linea 1

43 Informatica di base – Linea 1
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 Informatica di base – Linea 1

44 Informatica di base – Linea 1
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 7 2 9 3 4 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 Informatica di base – Linea 1

46 Quarta parte: La complessità computazionale
“Ahi, se si chiama “complessità”, tanto facile non deve essere…” Informatica 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 Informatica di base – Linea 1

48 Informatica di base – Linea 1
“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!” Informatica 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 Informatica 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 Informatica 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 n2 se raddoppia il numero di CD in input, il tempo necessario per completare l’algoritmo è di 4 volte tanto Informatica 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 Informatica 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 Informatica 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: log2 n (logaritmica) Informatica 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 = 1012 = 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! Informatica di base – Linea 1

56 Quinta parte: Riepilogo
Informatica di base – Linea 1

57 Informatica di base – Linea 1
Gli algoritmi Cos’è un algoritmo Quali sono le proprietà di un algoritmo: Input definito Output definito Determinatezza Efficacia Terminazione Informatica 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 Informatica di base – Linea 1

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

60 Informatica di base – Linea 1
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 Informatica di base – Linea 1

61 Informatica di base – Linea 1
Esercizi Dato uno scaffale pieno di CD, si calcoli il numero dei CD Dato uno scaffale pieno di CD, si calcoli il prezzo medio dei CD 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 Informatica di base – Linea 1

62 Informatica di base – Linea 1
Esercizi 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 Informatica di base – Linea 1


Scaricare ppt "Corsi di Laurea in Biotecnologie"

Presentazioni simili


Annunci Google