Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema...

30
Biologia Biologia Computazionale Computazionale - - Algoritmi Algoritmi

Transcript of Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema...

Page 1: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Biologia ComputazionaleBiologia Computazionale--

AlgoritmiAlgoritmi

Page 2: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Programmi ed algoritmiProgrammi ed algoritmi

Quando si vuole risolvere un problema Quando si vuole risolvere un problema utilizzando un computer è necessario prima utilizzando un computer è necessario prima “disegnare” un “disegnare” un algoritmoalgoritmo per la soluzione per la soluzione

L’algoritmo deve essere indipendente dalla L’algoritmo deve essere indipendente dalla successiva implementazione (codifica) in un successiva implementazione (codifica) in un linguaggio di programmazionelinguaggio di programmazione

L’algoritmo descrive un procedimento che, L’algoritmo descrive un procedimento che, partendo da dati di input (l’istanza del partendo da dati di input (l’istanza del problema), esegue un insieme di istruzioni o problema), esegue un insieme di istruzioni o operazioni, in un ordine stabilito, che al operazioni, in un ordine stabilito, che al termine produce come risultato (output) la termine produce come risultato (output) la soluzione del problemasoluzione del problema

Page 3: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Programmi ed algoritmiProgrammi ed algoritmi

I passi (istruzioni) dell’algoritmo devono essereI passi (istruzioni) dell’algoritmo devono essere FinitiFiniti (l’algoritmo deve terminare) (l’algoritmo deve terminare) Non ambiguiNon ambigui Terminare e produrre un output correttoTerminare e produrre un output corretto per ogni istanza per ogni istanza

del problemadel problema Ad esempio, una ricetta *non* è un algoritmo se scrive Ad esempio, una ricetta *non* è un algoritmo se scrive

“aggiungere un pizzico di sale”; lo è se scrive “aggiungere un pizzico di sale”; lo è se scrive “aggiungere 0,5 g di sale”“aggiungere 0,5 g di sale”

Ad esempio, dato il problema “Dati a, b, c risolvere Ad esempio, dato il problema “Dati a, b, c risolvere l’equazione di secondo grado con coefficienti a,b,c” l’equazione di secondo grado con coefficienti a,b,c” deve prevedere tutti i casi diversi che si possono deve prevedere tutti i casi diversi che si possono presentare per i valori di a,b,c (equazione impossibile, di presentare per i valori di a,b,c (equazione impossibile, di primo grado, etc.)primo grado, etc.)

Page 4: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Programmi ed algoritmiProgrammi ed algoritmi

Per molti problemi (quelli più difficili!) possono Per molti problemi (quelli più difficili!) possono esistere più metodi di soluzione e quindi più esistere più metodi di soluzione e quindi più algoritmialgoritmi

L’algoritmo migliore è quello più “L’algoritmo migliore è quello più “efficienteefficiente”, ”, ovvero quello che implementato richiede meno ovvero quello che implementato richiede meno risorse di calcolo (tempo, spazio su memoria o risorse di calcolo (tempo, spazio su memoria o su disco) per produrre una soluzione esattasu disco) per produrre una soluzione esatta

La “teoria degli algoritmi” si occupa di stimare - La “teoria degli algoritmi” si occupa di stimare - indipendentemente dall’implementazione - il indipendentemente dall’implementazione - il numero di operazioni “atomiche” o elementari numero di operazioni “atomiche” o elementari e lo spazio richiesti da un algoritmo, in modo e lo spazio richiesti da un algoritmo, in modo da decidere a priori quale possa essere la da decidere a priori quale possa essere la soluzione miglioresoluzione migliore

Page 5: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Programmi ed algoritmiProgrammi ed algoritmi

Un algoritmo può essere descritto in vari modi, purché Un algoritmo può essere descritto in vari modi, purché rispetti le condizioni precedentirispetti le condizioni precedenti

Ad esempio, si possono usare:Ad esempio, si possono usare: Linguaggio naturaleLinguaggio naturale Diagramma di flussoDiagramma di flusso ““Pseudocodice”Pseudocodice”

Il linguaggio naturale si presta a semplici algoritmi, ma Il linguaggio naturale si presta a semplici algoritmi, ma già algoritmi per problemi “semplici” come l’equazione già algoritmi per problemi “semplici” come l’equazione di secondo grado diventano di difficile “lettura” se di secondo grado diventano di difficile “lettura” se descritti cosìdescritti così

““Se a è uguale a zero, allora è un equazione di primo grado, Se a è uguale a zero, allora è un equazione di primo grado, la cui soluzione, se b e c sono diversi da zero è data da la cui soluzione, se b e c sono diversi da zero è data da meno uno per b diviso per c, altrimenti ....”meno uno per b diviso per c, altrimenti ....”

Page 6: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Diagramma di flussoDiagramma di flusso

Un “diagramma di flusso” descrive il “flusso di calcolo” Un “diagramma di flusso” descrive il “flusso di calcolo” di un algoritmodi un algoritmo

E’ suddiviso in blocchi: in ciascun blocco l’algoritmo E’ suddiviso in blocchi: in ciascun blocco l’algoritmo compie un’operazione compie un’operazione

Archi orientati (frecce) collegano un blocco all’altro, Archi orientati (frecce) collegano un blocco all’altro, indicando la sequenza delle operazioni da compiereindicando la sequenza delle operazioni da compiere

Alcuni blocchi sono “Alcuni blocchi sono “condizionalicondizionali” (o di “selezione”, di ” (o di “selezione”, di solito a forma di rombo), ovvero il blocco (istruzione) solito a forma di rombo), ovvero il blocco (istruzione) successivo dipenderà dalla condizione descritta dal successivo dipenderà dalla condizione descritta dal blocco stesso: a seconda del fatto che la condizione sia blocco stesso: a seconda del fatto che la condizione sia soddisfatta o meno, saranno possibili due scelte per il soddisfatta o meno, saranno possibili due scelte per il passo successivo (e quindi ci saranno due archi uscenti)passo successivo (e quindi ci saranno due archi uscenti)

Page 7: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Delta = b2-4ac

Delta < 0?

Scrivi“l’equazione

non ha soluzionireali”

x1=(-b+Delta)/2ax2=(-b-Delta)/2a

Scrivi“L’equazione ha

soluzioni x1 e x2”

Delta = 0?

x=-b/2a

Scrivi“L’equazione ha

due soluzioni coincidenti = x”

VERO

VERO

FALSO

FALSO

Page 8: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

““Pseudocodice”Pseudocodice”

““Simula” uno “pseudo” linguaggio di Simula” uno “pseudo” linguaggio di programmazione, e descrive l’algoritmo programmazione, e descrive l’algoritmo utilizzando le “pseudo-istruzioni” del utilizzando le “pseudo-istruzioni” del linguaggio di programmazionelinguaggio di programmazione

Lo pseudocodice deve comunque essere Lo pseudocodice deve comunque essere indipendente dal linguaggio in cui si indipendente dal linguaggio in cui si scriverà il programmascriverà il programma

Deve quindi contenere un insieme Deve quindi contenere un insieme “minimale” di istruzioni che ci “minimale” di istruzioni che ci aspettiamo essere comuni a tutti i aspettiamo essere comuni a tutti i linguaggi (vedi dispense)linguaggi (vedi dispense)

Page 9: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

““Iterazioni”Iterazioni”

E’ possibile fare ripetere all’algoritmo lo E’ possibile fare ripetere all’algoritmo lo stesso insieme di operazioni un qualsiasi stesso insieme di operazioni un qualsiasi numero n di volte, senza bisogno di numero n di volte, senza bisogno di scriverle esplicitamente n voltescriverle esplicitamente n volte

n può n può essere un numero prefissato essere un numero prefissato una variabile il cui valore può variare una variabile il cui valore può variare

durante l’esecuzione dell’algoritmodurante l’esecuzione dell’algoritmo dipendere dal fatto che una condizione dipendere dal fatto che una condizione

venga soddisfatta o meno (ovvero, le venga soddisfatta o meno (ovvero, le istruzioni vengono ripetute finché la istruzioni vengono ripetute finché la condizione è soddisfatta) condizione è soddisfatta)

Page 10: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Esempio: calcola 2Esempio: calcola 2nn

Leggi nLeggi ncontatore = 0contatore = 0potenza = 1potenza = 1

ESEGUIFINCHE’ (contatore < n)ESEGUIFINCHE’ (contatore < n)potenza = potenza * 2potenza = potenza * 2contatore = contatore + 1contatore = contatore + 1

FINE ESEGUIFINCHE’FINE ESEGUIFINCHE’Scrivi “Due alla” n “è uguale a” potenzaScrivi “Due alla” n “è uguale a” potenza

Page 11: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

““Pseudocodice”Pseudocodice”

Un programma per computer lavorerà su in insieme di Un programma per computer lavorerà su in insieme di “variabili” contenenti i dati del problema, soluzioni “variabili” contenenti i dati del problema, soluzioni intermedie, soluzioni finaliintermedie, soluzioni finali

Le variabili possono essere di tipo diverso, a seconda dei Le variabili possono essere di tipo diverso, a seconda dei dati che trattiamo, ad esempiodati che trattiamo, ad esempio Numeri interiNumeri interi Numeri realiNumeri reali MatriciMatrici Parole costruite su un alfabetoParole costruite su un alfabeto VettoriVettori ........

Anche in questo caso dobbiamo prevedere un insieme Anche in questo caso dobbiamo prevedere un insieme “minimale” di tipi di variabili su cui lavorare con lo “minimale” di tipi di variabili su cui lavorare con lo pseudocodicepseudocodice

Page 12: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

VariabiliVariabili

I tipi di variabili disponibili e le relative I tipi di variabili disponibili e le relative operazioni dipendono dal linguaggio di operazioni dipendono dal linguaggio di programmazioneprogrammazione

Possiamo considerare “universali” due Possiamo considerare “universali” due tipi di variabile:tipi di variabile: Variabile “Variabile “numeronumero”” Variabile “Variabile “caratterecarattere””

Inoltre, possiamo prevedere la Inoltre, possiamo prevedere la possibilità di gestire possibilità di gestire Vettori o matrici di numeriVettori o matrici di numeri Sequenze di caratteri (o “stringhe”)Sequenze di caratteri (o “stringhe”)

Page 13: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

VariabiliVariabili

La parola “ciao” è composta da quattro La parola “ciao” è composta da quattro carattericaratteri

In un computer è rappresentata come In un computer è rappresentata come un un arrayarray (o vettore) di quattro elementi (o vettore) di quattro elementi carattere (detto carattere (detto stringastringa))

Quindi, se abbiamo una variabile di tipo Quindi, se abbiamo una variabile di tipo stringa il cui valore è “ciao” (senza stringa il cui valore è “ciao” (senza virgolette!) potremmo anche accedere a virgolette!) potremmo anche accedere a uno qualsiasi dei caratteri della parolauno qualsiasi dei caratteri della parola

Page 14: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

VariabileVariabile

Una variabile è definita da un tipo Una variabile è definita da un tipo (numero, carattere, etc.) e da un nome(numero, carattere, etc.) e da un nome

In un programma non si può In un programma non si può (abbastanza logicamente) assegnare lo (abbastanza logicamente) assegnare lo stesso nome a variabili diversestesso nome a variabili diverse

Tutte le operazioni (assegnazione, Tutte le operazioni (assegnazione, confronto, etc.) devono essere confronto, etc.) devono essere effettuate su variabili effettuate su variabili dello stesso tipodello stesso tipo

In perl le variabili (qualsiasi sia il loro In perl le variabili (qualsiasi sia il loro tipo) sono precedute dal simbolo $, tipo) sono precedute dal simbolo $, mentre i vettori dal simbolo @mentre i vettori dal simbolo @

Page 15: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Lo “pseudolinguaggio”Lo “pseudolinguaggio”

Possiamo assumere che il linguaggio di Possiamo assumere che il linguaggio di programmazione che usiamo conterrà programmazione che usiamo conterrà operazioni:operazioni: Leggi/ScriviLeggi/Scrivi (input/output) (input/output) OperazioniOperazioni (e (e funzionifunzioni) matematiche) matematiche AssegnamentoAssegnamento: assegnare un valore a una : assegnare un valore a una

variabilevariabile SelezioneSelezione: :

SE(condizione)...ALLORA...ALTRIMENTISE(condizione)...ALLORA...ALTRIMENTI IterazioneIterazione: ESEGUIFINCHE’(condizione) - : ESEGUIFINCHE’(condizione) -

esegue finché la condizione è veraesegue finché la condizione è vera IterazioneIterazione: PEROGNI elemento IN collezione: PEROGNI elemento IN collezione

Page 16: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

VariabiliVariabili

Mentre, intuitivamente, quando progettiamo un Mentre, intuitivamente, quando progettiamo un algoritmo una variabile può essere di qualsiasi tipo algoritmo una variabile può essere di qualsiasi tipo e/o assumere qualsiasi valore, nei linguaggi di e/o assumere qualsiasi valore, nei linguaggi di programmazione ogni variabile ha un TIPO ben programmazione ogni variabile ha un TIPO ben definitodefinito

Il tipo della variabile definisce l’insieme di valori che Il tipo della variabile definisce l’insieme di valori che la variabile può assumere:la variabile può assumere: BooleanoBooleano: vero/falso: vero/falso InteroIntero: un numero intero: un numero intero ““Floating pointFloating point”: un numero con virgola ”: un numero con virgola

(razionale!)(razionale!) CarattereCarattere: uno dei 255 caratteri definiti dalla : uno dei 255 caratteri definiti dalla

tabella ASCII associata al computer che state tabella ASCII associata al computer che state usandousando

Page 17: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Codifica ASCII dei caratteriCodifica ASCII dei caratteri

Page 18: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Variabili e tipiVariabili e tipi

Linguaggi Linguaggi TIPIZZATITIPIZZATI: quando si usa una : quando si usa una variabile in un programma è necessario variabile in un programma è necessario definire esplicitamente (la prima volta che la definire esplicitamente (la prima volta che la si usa) che tipo è associato ad essa, ad si usa) che tipo è associato ad essa, ad esempio:esempio: intint x = 10 x = 10 charchar c = ‘a’ c = ‘a’

Linguaggi Linguaggi non tipizzatinon tipizzati: quanto sopra non è : quanto sopra non è necessario. E’ l’interprete del linguaggio che necessario. E’ l’interprete del linguaggio che cerca di “indovinare” di che tipo di variabile cerca di “indovinare” di che tipo di variabile si tratta sulla base dei valori associati ad essa si tratta sulla base dei valori associati ad essa (utile, ma pericoloso per chi programma!)(utile, ma pericoloso per chi programma!)

Page 19: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Variabili e tipiVariabili e tipi

In ogni caso, per qualsiasi di In ogni caso, per qualsiasi di linguaggio di programmazione linguaggio di programmazione usiate, dovete abituarvi a pensare usiate, dovete abituarvi a pensare di fare fare di fare fare assegnamenti/confronti/etc assegnamenti/confronti/etc soltanto tra variabili dello stesso soltanto tra variabili dello stesso tipotipo ed è quindi necessario che, ed è quindi necessario che, indipendentemente dal linguaggio, indipendentemente dal linguaggio, abbiate sempre chiaro quale tipo è abbiate sempre chiaro quale tipo è associato a ciascuna variabileassociato a ciascuna variabile

Page 20: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Tipi di dati “derivati”Tipi di dati “derivati”

Abbiamo accennato all’istruzione “Abbiamo accennato all’istruzione “per per ogniogni””PER OGNIPER OGNI elemento elemento ININ

collezione_di_elementicollezione_di_elementiESEGUIESEGUI......

Come è possibile definire una Come è possibile definire una “collezione” di elementi? “collezione” di elementi?

Il metodo più utilizzato è quello della Il metodo più utilizzato è quello della “sequenza” (o “array”, vedi dispense “sequenza” (o “array”, vedi dispense pagine 20/21)pagine 20/21)

Page 21: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

StringheStringhe

Una “stringa” (ovvero una sequenza di Una “stringa” (ovvero una sequenza di caratteri) è un tipo dato un po’ caratteri) è un tipo dato un po’ “particolare”“particolare”

In alcuni linguaggi (es. C) è In alcuni linguaggi (es. C) è semplicemente vista come un array di semplicemente vista come un array di carattericaratteri

In altri (es. Perl) è invece un tipo dati a In altri (es. Perl) è invece un tipo dati a se stante, con alcune operazioni se stante, con alcune operazioni “comode” già predefinite“comode” già predefinite

Page 22: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

StringheStringhe

Ad esempio, in un linguaggio che Ad esempio, in un linguaggio che contiene il tipo “stringa”, possiamo contiene il tipo “stringa”, possiamo avere come operazioni associate:avere come operazioni associate:Date due stringhe s,tDate due stringhe s,teqeq: (s eq t) “equal”, è vero se s è uguale : (s eq t) “equal”, è vero se s è uguale a t, falso altrimentia t, falso altrimentine: ne: (s ne t) “not equal”, l’inverso di eq(s ne t) “not equal”, l’inverso di eq. : “concatenazione”, s.t è dato da una . : “concatenazione”, s.t è dato da una nuova stringa composta dai caratteri di s nuova stringa composta dai caratteri di s seguiti dai caratteri di tseguiti dai caratteri di t

Page 23: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Concatenazione di stringheConcatenazione di stringhe

s = “Ciao”s = “Ciao” t = “come va?”t = “come va?” u = s.t (concatenazione)u = s.t (concatenazione) Quale sarà il valore di u?Quale sarà il valore di u? u = “Ciaocome va?” (non c’era uno u = “Ciaocome va?” (non c’era uno

spazio alla fine di s!)spazio alla fine di s!)

Page 24: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

SottostringheSottostringhe

Data una stringa di n caratteri s, Data una stringa di n caratteri s, una sottostringa t di s è a sua volta una sottostringa t di s è a sua volta una stringa, composta da caratteri una stringa, composta da caratteri consecutivi di sconsecutivi di ss[i]s[i+1]s[i+2]...s[j]s[i]s[i+1]s[i+2]...s[j]

Dove i >= 0 (ricordatevi che il primo Dove i >= 0 (ricordatevi che il primo elemento di una sequenza ha elemento di una sequenza ha indice zero!), i < n, e j >=iindice zero!), i < n, e j >=i

Page 25: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

SottostringheSottostringhe

Quindi, se la stringa $s è “Ciao come va?”:Quindi, se la stringa $s è “Ciao come va?”: ““Ciao”Ciao” ““come”come” ““me v”me v” “ “ “ “ (uno spazio singolo)(uno spazio singolo) ““?”?”

sono tutte sottostringhe di $ssono tutte sottostringhe di $s Il comando sottostringa($s,i,j) restituisce la sottostringa Il comando sottostringa($s,i,j) restituisce la sottostringa

di lunghezza j che inizia in posizione idi lunghezza j che inizia in posizione i Quindi, nell’esempio sopra, ($s,0,4) restituirà “Ciao”Quindi, nell’esempio sopra, ($s,0,4) restituirà “Ciao” Quindi se $t = ($s,0,4) $t sarà la stringa “Ciao”Quindi se $t = ($s,0,4) $t sarà la stringa “Ciao”

Page 26: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Iterazioni su arrayIterazioni su array

Se abbiamo un array di n elementi, Se abbiamo un array di n elementi, possiamo farli “scorrere” tutti possiamo farli “scorrere” tutti utilizzando un “ciclo” PEROGNI, come utilizzando un “ciclo” PEROGNI, come avevamo visto primaavevamo visto prima

Si sfrutta il fatto che gli elementi Si sfrutta il fatto che gli elementi dell’array sono “indicizzati” e quindi dell’array sono “indicizzati” e quindi accessibili tramite il numero che accessibili tramite il numero che rappresenta la loro posizione all’interno rappresenta la loro posizione all’interno dell’arraydell’array

Page 27: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Iterazioni su arrayIterazioni su array

$s = “Ciao”$s = “Ciao”PER OGNI $i IN (0..3)PER OGNI $i IN (0..3)

scrivi $s[$i];scrivi $s[$i];FINE PER OGNIFINE PER OGNI

L’output saràL’output saràCCiiaaoo

Nota: un valore per una variabile carattere viene Nota: un valore per una variabile carattere viene solitamente tra apici (‘), mentre per una stringa è tra solitamente tra apici (‘), mentre per una stringa è tra virgolette (“)virgolette (“)

$carattere = ‘a’$carattere = ‘a’ $stringa = “stringa”$stringa = “stringa”

Page 28: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

EsercizioEsercizio

DatiDati Avete come input una sequenza di DNA (di Avete come input una sequenza di DNA (di

lunghezza qualsiasi)lunghezza qualsiasi) ““Leggi” permette di leggere la sequenza di Leggi” permette di leggere la sequenza di

input e di memorizzarla in un array di caratteriinput e di memorizzarla in un array di caratteri lunghezza(array) è un comando che permette lunghezza(array) è un comando che permette

di stabilire da quanti elementi è costituito un di stabilire da quanti elementi è costituito un arrayarray

Scrivete un algoritmo che determini se e dove Scrivete un algoritmo che determini se e dove all’interno della sequenza sono contenuti codoni all’interno della sequenza sono contenuti codoni di start (ATG)di start (ATG)

““Trattate” la sequenza di DNA come se fosse un Trattate” la sequenza di DNA come se fosse un array di caratteriarray di caratteri

Page 29: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Esercizio (esempio)Esercizio (esempio)

Dato come inputDato come inputACGACAATGACGACGTACGACAATGACGACGT

L’output saràL’output saràCodone di start in posizione: 7Codone di start in posizione: 7

Dato come inputDato come inputATGACATTATGCATATGACATTATGCAT

L’output saràL’output saràCodone di start in posizione: 1Codone di start in posizione: 1Codone di start in posizione: 9Codone di start in posizione: 9(notate che mentre in informatica si conta a partire (notate che mentre in informatica si conta a partire

da zero, in biologia una sequenza è numerata a da zero, in biologia una sequenza è numerata a partire da uno!)partire da uno!)

Page 30: Biologia Computazionale - Algoritmi. Programmi ed algoritmi Quando si vuole risolvere un problema utilizzando un computer è necessario prima disegnare.

Esercizio (complicato!)Esercizio (complicato!)

Riuscite a scrivere in quale frame di Riuscite a scrivere in quale frame di lettura si trova ciascun codone di start lettura si trova ciascun codone di start trovato?trovato?

Riuscite anche a trovare se una Riuscite anche a trovare se una sequenza contiene codoni di stop sequenza contiene codoni di stop (qualsiasi tra TAA, TGA o TAG)?(qualsiasi tra TAA, TGA o TAG)?

Riuscite a fare lavorare il vostro script Riuscite a fare lavorare il vostro script anche sul filamento inverso?anche sul filamento inverso?

Riuscite a stabilire se, dato un codone di Riuscite a stabilire se, dato un codone di start ATG, esiste “a valle” un codone di start ATG, esiste “a valle” un codone di stop “in frame”? stop “in frame”?