Giochi di parole. D Conta vocali

Documenti analoghi
Informatica 1. Prova di recupero 21 Settembre 2001

Algoritmi di Ricerca. Esempi di programmi Java

Soluzione/* PROGRAMMAZIONE IN C */ #include <stdio.h> #include <stdlib.h>

Array. Walter Didimo

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 18. Iterazione. Maggio Iterazione

Fondamenti di Informatica T-1

Algoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati

Stringhe: vettori di caratteri con terminatore

(Def. funzioni con parametri di tipo matrice)

Esercitazioni del Corso di Fondamenti di Informatica ARRAY. Prof. Giuseppe Manco. A cura di Ing. Andrea Tagarelli

Capitolo 16 Iterazione

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E06. C. Limongelli Dicembre 2011

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Esempio: quanto mi piace questo corso! qufuafantofo mifi pifiafacefe qufuefestofo coforsofo!

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 2 Dott. Michele Zanella Ing. Gian Enrico Conti

Esercizio 1: media di numeri reali (uso funzioni e struct)

Algoritmi di Ricerca. Esempi di programmi Java

Esistono alcune tipologie di problemi riconducibili a schemi di risoluzione standard

Esempio: quanto mi piace questo corso! qufuafantofo mifi pifiafacefe qufuefestofo coforsofo!

Introduzione al linguaggio C Dati aggregati

Esercizi su Scratch. Esegui la Somma e il Prodotto dei numeri inseriti in Input fino a che non inserisco la vocale e.

Esercizi su array di array

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Nella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi.

laboratorio di python

Fondamenti di Informatica T-1

Fondamenti di informatica T-1 (A K) Esercitazione 9: array

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Programmazione Assembly

Fondamenti di Informatica T-1

Dati aggregati. Violetta Lonati

Fondamenti di Informatica T-1 Modulo 2

Stringhe ed Array. Fondamenti di Informatica A-K

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double;

Fondamenti di Informatica T-1. Classi & vettori

12 Function Handles e Ricorsione in MATLAB

Ingresso ed Uscita in C. Informatica 1 / 15

come segue: data una collezione C di elementi e una un elemento che verifica la proprietà P

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Esempi di Problemi Iterativi

Corso di Laurea Ingegneria Elementi di Informatica. Iterazione. C. Limongelli. Iterazione

Gli array. impone al programma, in fase di esecuzione, di riservare dello spazio in memoria per 10 variabili di tipo int

Stringhe. Walter Didimo

ESERCIZIO: SHIFT ARRAY (1)

Esercitazione 4. Comandi iterativi for, while, do-while

Programmazione Procedurale in Linguaggio C++

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 17. A. Miola Gennaio 2012

Laboratorio 26/09/2000

Iterazione (introduzione)

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)

File ad accesso diretto funzioni Hash Parte1. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Algoritmi di Ricerca. Esempi di programmi Java

Istruzioni Ripetitive

Laboratorio di Informatica I

Fondamenti di Programmazione

Esercitazione 2. Espressioni booleane Il comando if-else

14 Function Handles in MATLAB

Laboratorio di Programmazione Laurea in Bioinformatica

15 Riepilogo di esercizi in MATLAB

Laboratorio di informatica Ingegneria meccanica

Struttura logica del computer (semplificata)

Stringhe in C. Alessandra Giordani Lunedì 23 aprile 2012

Esempi di Problemi Iterativi

Esercitazione Fondamenti di Informatica 2

Lezione 6: Array e puntatori

Laboratorio n 6 del Ing. Dario Cogliati

Esercizio 1 (15 punti)

Caratteri e stringhe Esercizi risolti

Array ( vettore/matrice Un dato strutturato. indice Accesso diretto

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI ARRAY

Stringhe e Array. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Fondamenti di Informatica T-1

Laboratorio di Programmazione Laurea in Bioinformatica

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Ingresso ed Uscita in C. Luca Abeni

Esercizi su strutture dati

Istruzioni Ripetitive

L AMBIENTE CODE BLOCKS E L IO

Lezione 6 programmazione in Java

Esercizio 1. (trasformazioni tra matrici) Pseudocodice

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Fondamenti di Informatica T-1

Informatica B, AA 2018/2019

Programmazione Procedurale in Linguaggio C++

Strutture fisiche e strutture di accesso ai dati

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2014

a.a Codice corso: 21012, 22010

Esercitazione di Reti degli elaboratori

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

Gestore di Stringhe 1

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Transcript:

Giochi di parole Si vuole giocare al gioco del reverse. Il conduttore del gioco propone parole al contrario (ad esempio ONALIM oppure LLIRGOTUA) ed il giocatore deve pronunciare le parole da sinistra verso destra (MILANO o AUTOGRILL). Si ipotizzi un dizionario di parole al contrario, memorizzato ed un programma modulare che visualizzi a monitor ogni parola da sinistra a destra. B Jpoon o qual è la parola? Si vuole giocare al gioco del jpoon avendo memorizzato un dizionario di parole. Il giudice del gioco riesce a valutare le corrette risposte ai quesiti posti dal conduttore ai giocatori: Qual è la parola più lunga che contiene tre P? Qual è la parola più breve che contiene tre A? Regole di gioco: scopo è trovare le parole che rispettano i criteri fissati dal conduttore e noti al giocatore Possibili modifiche: prevedere memorizzati altri quesiti ad esempio sotto elencati Altri quesiti: Qual è la parola più lunga che contiene due C e tre E? Qual è la parola più breve che contiene tre A e due F? Qual è la parola più lunga che contiene due T, due O ed una A? nell ipotesi che il dizionario contenga le parole elencate memorizzate in maiuscolo Ipotesi aggiuntive: il giocatore ha un limite di tempo (ad esempio 30 secondi) per trovare la parola che rispetta la richiesta prefissata Si concordano un numero massimo di tentativi per trovare la singola parola. Si imposta un punteggio per ogni parola corretta trovata, potendo prevedere un gioco a squadre ed, in caso di pareggio, il punteggio è assegnato a tutte le squadre. Si vuole giocare ad un gioco di parole memorizzate in un dizionario. Il conduttore del gioco scrive le parole (ad esempio anna o luca) ed il giocatore deve dire se la parola è palindroma cioè può essere letta sia da sinistra verso destra che viceversa. Specifiche aggiuntive: trovare la parola palindroma più lunga oppure più breve se nel dizionario sono presenti parole di lunghezza diversa come RADAR, ANILINA, INGEGNI, ONORARONO, OMMETTEMMO. Si vuole giocare ad un gioco di parole memorizzate in un dizionario. Il conduttore del gioco scrive le parole ed il giocatore deve contare quante vocali contiene ogni parola. Specifiche aggiuntive: il giocatore deve anche indicare, tra quelle proposte, la parola con maggior numero di vocali

Scelte implementative: si propone un unica applicazione che propone all utente la scelta del gioco. Tale scelta avviene digitando la lettera (interazione tipo CLI - Comand Line Interface) indifferentemente maiuscola o minuscola: B Jpoon Significativi tra gli attributi i diversi dizionari (memorizzati come array di String ed inizializzati per testare i singoli giochi): String [] dizvocali ="ciao", "xyz"; // tutte le lettere minuscole String [] dizreverse ="ONALIM", "LLIRGOTUA"; String [] dizpalindroma = "anna", "luca"; // tutte le lettere minuscole oppure tutte maiuscole String [] diz ="PIPPO", "PPP", "AAA", "ALTALENA", "PPPP"; // tutte le lettere maiuscole e, nel caso del gioco del jpoon, si memorizzano anche i due quesiti: String [] conduttore = "Qual è la parola più lunga che contiene tre P?", "Qual è la parola più breve che contiene tre A?" ; prevedendo una possibile soglia più generale nella ricerca del numero di lettere nelle parole, dizionari provvisori per contenere parole che rispondono a certi criteri ed eventuali risposte corrette. Si individuano alcuni metodi riutilizzabili - metodo per minimo: trova la parola più breve in un dizionario passato come parametro ritorna la parola trovata - metodo per massimo: trova la parola più lunga in un dizionario passato come parametro ritorna la parola trovata - metodo conta occorrenze: per contare nella parola (passata come primo parametro) le occorrenze della lettera (passata come secondo parametro ) in numero pari a soglia ritorna vero se la parola risponde al criterio - metodo per leggere da tastiera, estrarre il primo carattere e ritornarlo forzato in maiuscolo - metodo per visualizzare il contenuto di un dizionario (passato come parametro)

Analisi del singolo gioco: flusso del gioco: si scandisce un dizionario, per ogni parola contenuta si invoca il metodo elaborareverse passando come parametro tale parola individuata dal nome temp metodo elaborareverse: pone l ultimo carattere all inizio di un array temporaneo di caratteri, il penultimo in seconda posizione, e così via mentre ci sono caratteri in temp. Infine visualizza, scandendo dall inizio, l array temporaneo dim lunghezza_di_temp creo array di caratteri di nome parola i 0 mentre (ci sono caratteri in temp) iesimo_char contenuto in parola carattere con indice (dim-1 i) di temp i i+1 j 0 visualizza iesimo_char contenuto in parola j j+1 flusso del gioco: si scandisce un dizionario, per ogni parola contenuta se il metodo invocato elaborapalindroma (a cui si passa come parametro tale parola individuata dal nome temp), ritorna falso, significa che la parola non è palindroma e si stampa a monitor tale informazione, altrimenti si comunica che la parola è palindroma metodo elaborapalindroma: usando una variabile tipo flag inizializzata a falso, si scandisce fino a metà la parola confrontando via via il primo carattere con l'ultimo, il secondo con il penultimo etc. La scansione si interrompe appena i caratteri testati non sono uguali. Il flag viene settato a vero solo se tutti i caratteri confrontati sono uguali. b false dim lunghezza della parola temp i 0 mentre (i<dim/2) se (carattere_iesimo di temp diverso da carattere (dim-1 - i) ) esco altrimenti i i+1 b true

flusso del gioco: si scandisce un dizionario, per ogni parola contenuta si invoca il metodo elaboravocali passando come parametro tale parola individuata dal nome temp B Jpoon metodo elaboravocali: usando una variabile tipo contatore inizializzata a zero ed una stringa inizializzata con le vocali (in minuscolo) chiamata vocali, si scandisce la parola confrontando ogni suo carattere con le vocali memorizzate nella stringa. Il contatore si incrementa ogni volta che tale carattere è uguale ad una vocale (carattere della stringa vocali). Infine si comunica il numero di vocali trovato (anche se zero). cont 0 vocali "aeiou" dim lunghezza della parola temp i 0 mentre (ci sono lettere nella parola) j 0 mentre (ci sono vocali da confrontare) se (lettera uguale a vocale) cont cont + 1 j j +1 i i+1 visualizzo parola temp e numero di vocali cont contenute Nelle scelte implementative si è già ipotizzato: - di memorizzare i due quesiti: String [] conduttore = "Qual è la parola più lunga che contiene tre P?", "Qual è la parola più breve che contiene tre A?" ; - di prevedere una possibile soglia più generale nella ricerca del numero di lettere nelle parole, int soglia = 3; // numero occorrenze delle lettere nelle parole - di prevedere uso di dizionari provvisori per contenere parole che rispondono a certi criteri String []possibili = new String [diz.length]; // sovradimensionando: conterrà parole che rispondono // al I criterio indipendentemente dalla lunghezza String []possibilia = new String [diz.length]; // sovradimensionando: conterrà parole che rispondono // al II criterio indipendentemente dalla lunghezza - di inizializzare le risposte corrette noto un certo dizionario String trea="aaa"; String trep="pippo"; // risposte corrette nel gioco jpoon Per semplicità: note le domande (memorizzate in un array) vengono poste con la stessa sequenza quindi non si deve valutare quale proporre Si lascia allo studente analizzare nel dettaglio e implementare i metodi prima proposti come riutilizzabili

flusso del gioco (proposta di uno studente): si visualizzano le parole contenute nel dizionario si inizializza possibili: array delle stringhe con ricerca della lunghezza massima (anche vuota la stringa da inserire in tutte le posizioni) si inizializza possibilia: array delle stringhe con ricerca della lunghezza minima (trovando la dimensione della parola più lunga nel dizionario, costruendo di eguale lunghezza una parola con caratteri particolari (ad esempio *) da inserire in tutte le posizioni viene posta la prima domanda (visualizzando il primo elemento dell array conduttore) si scandisce il dizionario e, sfruttando il metodo che conta le occorrenze (passando come parametri la parola del dizionario e la lettera P) se tale metodo ritorna vero, la parola è inserita tra le possibili indipendentemente dalla lunghezza si invoca il metodo che trova la parola di lunghezza massima passando come parametro il dizionario possibili (da prevedere interazione con utente) e ritorna tale parola trovata se (la parola trovata è uguale a quella corretta trep) si comunica all utente tale successo viene posta la seconda domanda (visualizzando il secondo elemento dell array conduttore) si scandisce il dizionario e, sfruttando il metodo che conta le occorrenze (passando come parametri la parola del dizionario e la lettera A) se tale metodo ritorna vero, la parola è inserita tra le possibilia indipendentemente dalla lunghezza si invoca il metodo che trova la parola di lunghezza minima passando come parametro il dizionario possibilia (da prevedere interazione con utente) e ritorna tale parola trovata se (la parola trovata è uguale a quella corretta trea) si comunica all utente tale successo Implementazione Prevedere interazione con utente utilizzando finestre di dialogo: G iochi di parole: Jpoon Prevedere soluzione degli altri singoli giochi (Reverse, Palindroma e Conta vocali) progettando applicazioni che EREDITANO da una classe che rende disponibili metodi ed attributi scoperti riutilizzabili Possibile soluzione