Programmazione Funzionale Esercizi sulle funzioni ricorsive Davide Mottin - Themis Palpanas March 19, 2014 1/10 Operazioni su stringhe Funzioni e operazioni Conta occorrenze Serie armonica Sommario 2/10 Una utile funzione (∗ C o n v e r t e un c a r a t t e r e i n una s t r i n g a ∗) l e t s t r i n g o f c h a r c = S t r i n g . make 1 c ; ; Operazioni su stringhe 3/10 Sottostringhe Costruire una funzione che prenda in input una stringa e due interi inizio e fine e restituisca la sottostringa che parte da inizio (incluso) e termina in fine (escluso). Operazioni su stringhe 4/10 Sottostringhe - soluzione (∗ R e s t i t u i s c e l a s o t t r o s t r i n g a d i s t r i n g da posizione s ( inclusa ) a posizione e ( esclusa ) ∗) l e t rec s u b s t r s t r i n g s e = i f s = e then ”” else ( string of char string . [ s ])ˆ ( s u b s t r s t r i n g ( s +1) e ) ; ; Operazioni su stringhe 5/10 Conta occorrenze Costruire una funzione che conti le occorrenze di un determinato carattere in una stringa. Operazioni su stringhe 6/10 Conta occorrenze - Soluzione (∗ Conta i l numero d i o c c o r r e n z e d i c h a r i n s t r i n g ∗) l e t rec countchar s t r i n g char = i f s t r i n g = ”” t h e n 0 else i f s t r i n g . [ 0 ] = char then 1 + ( countchar ( substr s t r i n g 1 ( String . length s t r i n g )) char ) else 0 + ( countchar ( substr s t r i n g 1 ( String . length s t r i n g )) char ) ; ; E se volessimo costruire una funzione che presi in input due caratteri e una stringa conti le occorrenze di entrambi e le restituisca in una coppia? Operazioni su stringhe 7/10 Conta coppie di occorrenze - Soluzione l e t rec count two a b s = i f s = ”” then ( 0 , 0 ) else let ( c a , c b ) = count two a b ( s u b s t r s 1 ( S t r i n g . length s )) in i f s . [ 0 ] = a then ( c a + 1 , c b ) e l s e i f s . [ 0 ] = b then ( c a , c b + 1) else (c a , c b );; Operazioni su stringhe 8/10 Serie armonica Costruire una funzione che calcoli la serie armonica fino ad un determinato numero. La serie armonica `e cos`ı definita n X 1 i=1 Serie armonica i 9/10 Serie armonica - Soluzione (∗ C a l c o l a l a s e r i e armonica f i n o a c ∗) l e t rec armonic c = i f c < 1 then 0. e l s e 1 . 0 / . ( f l o a t o f i n t c ) +. a r m o n i c ( c − 1 ) ; ; E se volessimo restituire la stringa con tutta la serie fino ad un numero supponendo di avere una variabile nella funzione che memorizza il valore della serie fino a quel punto? Serie armonica 10/10
© Copyright 2024 ExpyDoc