Comments
Description
Transcript
Documentazione Classe Terza Informatica
Documentazione Classe Terza Informatica E’ una descrizione, scritta, di come il programma dovrebbe lavorare e come dovrebbe essere usato. Esterna (destinata all’utente finale) Descrive, accuratamente il modo in cui si deve usare il programma, deve essere scritta in maniera non tecnica e non deve contenere nessun particolare sul modo in cui opera. 1. INTESTAZIONE • Finalità del programma. • Indovinare il numero generato dal computer che simula il lancio di due dadi. Il giocatore ha al massimo tre possibilità per indovinare il risultato • Autore/i : Pinco – Pallino, Gruppo : grp3 A.S. : 2010/2011 • Data inizio :25/11/2011 Data Consegna: 27/11/2011 • Tempo stimato (ore) : 4 Tempo effettivo (ore): 2 • Responsabile del progetto: Pinco 2. Istruzioni d’uso. • Modalità d’uso : • Inserire il numero da indovinare considerando che si avranno al massimo tre tentativi. • Limitazioni dati d’ingresso: • Il numero inserito dovrà essere compreso tra 2 e 12 ( somma massima e minima che si può ottenere dal lancio dei due dadi. • Interpretazione dell’output: • Verrà visualizzato un messaggio che indicherà l’esito della scelta. Interna (ad uso del programmatore) In particolare avremo una documentazione interna che conterrà una descrizione accurata del modo in cui operano i vari moduli del programma al fine di effettuare delle prove o modificarlo successivamente.Tale tipo di documentazione può essere schematizzata nel modo seguente: 1. Comprensione del problema : • Lanciando due dadi e facendo la somma dei valori usciti, questa non può essere minore di 2 o maggiore di 12. • Confrontare il numero inserito dall’utente con la somma dei dadi. • Dare al massimo tre possibilità di soluzione. 2. Informazione I/O (Identificatore variabile,costanti,..,ecc., Tipo, Finalità) Nome Dado1 Dadao2 scelta somma trovato cont Tipo Int Int Int Int Int Int Descrizione Contiene il valore del primo dato Contiene il valore del secondo dato Numero inserito dall’utente Somma del Valore dei due dadi Per interrompere esecuzione prima dei 3 tentativi Conta il numero di tentativi 3. Formulazione dell’algoritmo.(descrizione discorsiva, concisa e schematica) : si generano due numeri casuali e li si assegnano alle variabili dado1,dado2 corrispondenti al lancio dei dadi e si effettuerà la loro somma, all’interno di un ciclo si chiederà di inserire il numero da indovinare(scelta), gestendo la variabile cont potremo avere al massimo tre tentativi mentre la variabile trovato ci farà uscire dal ciclo, nel caso si indovini il risultato prima dei tre tentativi Start Trovato = 0 Cont = 0 Caricamento Dado1 casuale Caricamento Dado2 casuale Somma = Dado1+Dado2 Inserimento Scelta YES Scelta < 2 or Scelta > 12 NO do NO YES Scelta = Somma Incremento Cont Incremento Trovato Hai sbagliato ritenta Complimenti hai indovinato YES Cont < 3 and Trovato ==0 NO End 4. Test (utilizzare dati prova che mettano in difficoltà il normale svolgimento del programma. Verificando in modo manuale se l’algoritmo formulato elabora nel modo giusto i dati in ingresso restituendo in uscita dati corretti) Step 1 2 3 4 Dado1 3 Step 1 2 3 4 Dado1 3 Step 1 2 3 4 Dado1 3 Dado2 3 somma 6 Dado2 3 Dado2 3 scelta trovato 0 13 0 4 0 6 1 somma 6 somma 6 cont 0 0 1 2 output Scelta sbagliata Sbagliato Indovinato scelta trovato 0 8 0 4 0 6 1 cont 0 1 2 3 output scelta trovato 0 8 0 6 1 cont 0 1 2 output Sbagliato Sbagliato Indovinato Sbagliato Indovinato 5. Codifica con commenti (solo le parti essenziale dell’algoritmo). srand(time(NULL)); Trovato=0; Cont=0; Dado1=1+rand()%6; Dado2=1+rand()%6; Somma=Dado1+Dado2; /* genera i numeri casuali tra 1 e 6 e li assegna al singolo dado */ /* somma i dadi */ do { printf("Inserire la scelta : "); gets (Frase); Num=atoi(Frase); } while(Num<2||Num>12); if (scelta==Somma) Trovato++; /* non permette di inserire numeri <2 o >12 /* gestione della variabile trovato e del numero max di tentativi */ else { Cont++; if (Cont<=2) printf("\nHai sbagliato ritenta\n\n"); } 6. Prova di esecuzione (Inserire i dati selezionati nella sezione test e verificare i risultati) 7. Data consegna progetto Prova di accettazione Viene eseguita dall’insegnante ed è finalizzata alla verifica del corretto funzionamento del programma,cercando di mettere in crisi i vari moduli con casi complicati o con dati inesatti. Il programma, dovrà essere modificato fino a quando non sarà superata questa prova. Ringraziamenti. Si ringrazia l’alunno Terzo Manuel della classe 3 A Inf. A.s. 2011/2012 per la fattiva e sollecite collaborazione alla stesura di questo esempio, in particolare il grafo di flusso ed il codice scritto in c hanno reso più esaustivo l’elaborato stesso. #include <stdio.h> #include <time.h> #include <math.h> #include <conio.h> #include <windows.h> /* API di windows */ #define ESC 27 #define INVIO 13 void Clrscr (void); void Gotoxy (int x, int y); void TextColor (unsigned short Colore); main() { int Dado1, Dado2, Somma, scelta, Trovato, Cont, Tasto; char Frase [200]; srand(time(NULL)); do { Trovato=0; Cont=0; Dado1=1+rand()%6; Dado2=1+rand()%6; Somma=Dado1+Dado2; TextColor(0x0b); Clrscr(); do { do { printf("Inserire la scelta : "); gets (Frase); scelta=atoi(Frase); } while(scelta<2||scelta>12); if(scelta==Somma) Trovato++; else { Cont++; if (Cont<=2) printf("\nHai sbagliato ritenta\n\n"); } } while(Cont<3 && Trovato==0); if(Cont==3) { printf("\n Game Over"); printf("\n\nLa somma dei dadi era :%d\n", Somma); } else printf("\nComplimenti hai indovinato\n"); printf("\nDigitare INVIO per concludere\n\nPremere un tasto qualsiasi per ripetere"); Tasto=_getch(); } while(Tasto!=INVIO); do { Clrscr(); Gotoxy(19,10); printf(" Created by : Terzo Manuel"); Gotoxy(22,13); printf("Digitare ESC per terminare l'applicazione"); Tasto=_getch(); Clrscr(); } while (Tasto!=ESC); } /*========================================== Cancella lo schermo. -------------------------------------------------------------------------*/ void Clrscr (void) { COORD coord; DWORD written; CONSOLE_SCREEN_BUFFER_INFO info; coord.X = 0; coord.Y = 0; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info); FillConsoleOutputCharacter (GetStdHandle(STD_OUTPUT_HANDLE), ' ', info.dwSize.X * info.dwSize.Y, coord, &written); Gotoxy (1, 1); } /*=========================================== Posiziona il cursore di console alle coordinate x,y. ----------------------------------------------------------------------------*/ void Gotoxy ( int x, // indice di colonna int y // indice di riga ) { COORD Cur = {x, y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cur); } /*=========================================== Utilizzando la funzione SetConsoleTextAttribute(HANDLE,WORD) cambia il colore del testo da stampare in console. ----------------------------------------------------------------------------*/ void TextColor ( unsigned short Colore // codice numerico del colore ) { HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE ); SetConsoleTextAttribute ( h, Colore ); }