DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 31 Marzo 2014 Marco D. Santambrogio – [email protected] Gianluca Durelli – [email protected] Ver. aggiornata al 31 Marzo 2014 Obiettivi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Esercitarsi sui costrutti visti a lezione Costrutti iterativi Array e Stringhe 2 Esercizi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • • • • • • • Es 0: La calcolatrice con lo switch Es1: max, min Es2: DNA Es3: Ordina caratteri Es4: Calcolo media di un vettore Es5: Ricerca sequenza Es6: Conta occorrenze 3 Lo switch DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Lo switch ci permette una alternativa al come selezionare la prossima istruzione da eseguire • Lo switch valuta una espressione, quindi cerca di confrontare un valore con diversi possibili cases switch ( expression ){ case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case ... } 4 Lo switch DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Ciascun case contiene un valore (value) e una lista di istruzioni (statement) • Il flusso di controllo si traferisce attraverso tutte le istruzioni, partendo dal primo case che “corrisponde” switch ( expression ){ case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case ... } 5 La calcolatrice con lo switch DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 6 La calcolatrice con lo switch: zoom DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 7 Piccolo problema… DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 8 Perche’??? DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Flusso 9 Lo switch ed il break DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 10 Zoom DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Flusso 11 Lo switch: default DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 12 Esercizi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • • • • • • • Es 0: La calcolatrice con lo switch Es1: max, min Es2: DNA Es3: Ordina caratteri Es4: Calcolo media di un vettore Es5: Ricerca sequenza Es6: Conta occorrenze 13 Exe 1: max, min DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma (no funzioni) che, ricevuti e salvati in un array N numeri interi positivi trovi: Il numero massimo e minimo nell’array Per ciascuno dei due numeri, stampi a video la posizione nell’array Esempio: a[]={3,4,1,56,23,28,17} Max: 56 in posizione: 3 min: 1 in posizione: 2 14 Exe 2: DNA DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma in C che, data una stringa inserita dall’utente di dimensione n, rappresentante una sequenza di DNA, dica quante A, T, C e G sono presenti nella sequenza • Si ricorda che: Il DNA può essere definito, in maniera semplificata, come una doppia catena polinucleotidica (A,T,C,G) Si deve quindi verificare che i caratteri inseriti siano solo A, T, C e G 15 Exe 3: Ordina caratteri DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma (no funzioni) che ricevuti e salvati in un array N caratteri, compresi tra ‘a’ e ‘z’, ordina tali elementi in ordine decrescente. 16 Exe 4: Calcolo media di una serie DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che, ricevuto in ingresso un vettore di lunghezza arbitraria N, calcoli la media dei suoi valori. Si ricorda che, dato un vettore v di lunghezza N, la media dei suoi valori è definita come: _ • Esempio: 1 v N N v i 1 i v = [1 2 3 4]: • La media è 2.5 17 Exe 5: Cerca sequenza DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma in C (NO funzioni) che, dati due array di interi, a1 e a2, rispettivamente di dimensione n e m, con n > m, dica se l’array di a2 è contenuto in a1. Gli array sono popolati dall’utente a2 deve comparire in a1 non solo con gli stessi elementi, ma deve essere perfettamente contenuto (valori, sequenza, etc.) • Esempio: a1 = [1 2 3 4]; a2 = [2 3]: a2 è contenuto in a1 a1 = [1 2 3 4]; a2 = [3 2}: a2 NON è contenuto in a1 18 Exe 6: Conta occorrenze DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Dato l’esercizio 5, si scriva un programma in C (NON si devono usare funzioni) che, dati a1 e a2, dice quante volte a2 è contenuto in a1. Non si ammettono sovrapposizioni in a1 • Esempio: a1 = [2 2 2 2]; a2 = [2 2]: a2 è contenuto 2 volte in a1 a1 = [2 2 2 4]; a2 = [2 2}: a2 è contenuto 1 volta in a1 19 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • BUON LAVORO! 20