• Non ci sono risultati.

Esempio Analisi e Specifica Definizione del problema: Sviluppare un programma per il gioco: ’chi

N/A
N/A
Protected

Academic year: 2021

Condividi "Esempio Analisi e Specifica Definizione del problema: Sviluppare un programma per il gioco: ’chi"

Copied!
4
0
0

Testo completo

(1)

1 Elementi di Informatica a.a. 2018/19 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

1 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio Analisi e Specifica

Definizione del problema: Sviluppare un programma per il gioco: ’chi resta con l’ultimo cerino in mano?’.

Regole del gioco:

• Ci sono 30 cerini e 2 giocatori.

• Ciascun giocatore, a turno, prende minimo 3 cerini e massimo 7 cerini.

• Perde il giocatore che prende l’ultimo cerino.

2 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio Analisi e Specifica

Definizione dei dati del problema:

I: gli identificativi di ciascun giocatore;

la quantità di cerini presi da un giocatore

Pi: la quantità di cerini presi da un giocatore deve essere compresa tra 3 e 7, estremi inclusi

U: identificativo del giocatore che ha vinto

Pu: nessuna

(2)

2 Elementi di Informatica a.a. 2018/19 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

3 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio

Nome variabile Descrizione Tipo

presi N.ro cerini presi da un giocatore INT Nome1 Identificativo del primo giocatore Stringa Nome2 Identificativo del secondo giocatore Stringa

Tabella delle variabili di ingresso

4 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio

Nome variabile Descrizione Tipo

Vince Identificativo del giocatore vincente Stringa

Tabella delle variabili di uscita

Tabella delle variabili di algoritmo

Nome variabile Descrizione Tipo

TotCerini NumeroTotale dei cerini in gioco INT Gioca Identificativo del giocatore attuale Stringa

(3)

3 Elementi di Informatica a.a. 2018/19 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

5 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio

Progettazione

Descrizione del metodo di elaborazione:

1.È inizializzato a 30 il valore di TotCerini

2.Si immettono gli identificativi del primo e secondo giocatore (Nome1 e Nome2 rispettivamente)

3.Alla variabile Gioca è assegnato il valore di Nome1 (giocatore attuale)

4.Il giocatore attuale immette quanti cerini prende (ovvero si legge il valore della variabile

‘presi’); l’immissione di tale valore va ripetuta se è immesso un valore non compreso tra 3 e 7 o se si è immesso un valore maggiore dei cerini ancora in gioco

5.il valore di TotCerini è decrementato di’presi’

6.Se restano al più tre cerini (cioè 0< TotCerini <=3) il giocatore attuale ha vinto (Vince = Gioca); se TotCerini==0 ha vinto l’altro giocatore (ovvero Vince = Nome2 se

Gioca==Nome1, o Vince = Nome1 se Gioca==Nome2);

7.Se TotCerini è maggiore di 3 tocca all’altro giocatore (cioè alla variabile Gioca è assegnato il valore di Nome2, se Gioca==Nome1, o il valore di Nome1 se Gioca==Nome2)

8.Si ripetono le operazioni dal punto 4 fin quando restano più di tre cerini;

9.Si stampa il valore della variabile Vince.

6 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include <stdio.h>

#include <string.h>

main ()

{ // 30 cerini

char Nome1[20], Nome2[20], Vince[20], Gioca[20];

int presi, TotCerini;

printf ("Immetti identificativo primo giocatore\n");

gets(Nome1);

printf ("Immetti identificativo secondo giocatore\n");

gets(Nome2);

TotCerini=30;

strcpy(Gioca,Nome1); // Gioca = Nome1 printf(" Ci sono %d cerini\n", TotCerini);

Esempio - il programma C

(4)

4 Elementi di Informatica a.a. 2018/19 - Prof. G.A. Di Lucca

Dipartimento di Ingegneria – Università del Sannio - CdL Ingegneria Energetica

7 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

do { do

{puts(Gioca); printf ("Quanti cerini prende ?");

fflush(stdin); // svuota il buffer di input scanf ("%d", &presi); }

while ((presi<3) || (presi>7) || (presi>TotCerini));

TotCerini = TotCerini - presi;

printf(“\n Restano %d cerini\n", TotCerini);

if ((TotCerini > 0) && (TotCerini <= 3))

strcpy(Vince,Gioca); // Vince = Gioca else

if (strcmp(Gioca,Nome1)==0) //se Gioca == Nome1 strcpy(Gioca,Nome2); //Gioca = Nome2 else strcpy(Gioca, Nome1); // Gioca = Nome1 if (TotCerini == 0) strcpy(Vince, Gioca); // Vince = Gioca }

while (TotCerini > 3);

printf ("Ha vinto: "); puts(Vince);

system("Pause");

}

Riferimenti

Documenti correlati

[r]

[r]

La serie `e, invece, assolutamente divergente per x &lt; −2 e x &gt; 2 e, come conseguenza del criterio della radice, si ottiene anche che il termine generale non ` e infinitesimo,

[r]

Analogamente, sia End A ( Q) l’insieme degli endomorfismi di anello del campo Q dei razionali, anch’esso un gruppoide (associativo unitario) per l’operazione

Corso di Laurea in Ingegneria Informatica e dell'Automazione. Anno

[r]

[r]