Add new comment

25
Apr

1º Codingo DoJo - Aprendendo a Programar

Convidamos você a participar do 1º Coding DoJo do PoliGNU - parte da programação da 1ª Semana de Software Livre da USP.

Data: 25/04/2012

Horário: das 11h às 13h

Local: C1-04, prédio do Biênio, Poli-USP

 

O que é um "Dojo"?

Dojo é o local onde se treinam artes marciais japonesas. Mas não é deste dojo que estamos falando aqui. Esta atividade será um Dojo de programação - ou Coding Dojo.

Segundo o http://codingdojo.org/: “Um Coding Dojo é um encontro onde um grupo de programadores se reúne para trabalhar em conjunto em um desafio de programação. Eles estão lá para se divertir, e, através de uma metodologia pragmática, melhorar suas habilidades de programação e de trabalho em grupo.”[1]

Ele é feito baseado em alguns princípios e regras bem simples.

Princípios

  • Você não precisa saber programar para participar;
  • Você só precisa de vontade de aprender (e um pouquinho de calma);

Regras

  • Pair programming: A programação é feita em duplas. Cada dupla tem um piloto e um co-piloto. Ambos pensam juntos, mas só o piloto digita. Cada par tem um tempo fixo no seu turno (definido no começo do dojo, mas são alguns minutos). Quando esse tempo acaba:
        * O piloto volta para a platéia

        * O co-piloto assume o lugar do piloto
        * Um novo co-piloto vem da platéia
  • Todos devem entender: O piloto e o co-piloto devem sempre explicar em voz alta o que estão tentando fazer para solucionar o problema. Qualquer um na platéia pode pedir explicações se não entender algum raciocínio.

Não é preciso trazer computador (mas é preciso se inscrever previamente!).

Neste dojo utilizaremos a linguagem de programação C.

O problema - mastermind

O MasterMind é um jogo cujo objetivo é descobrir um número de 5 dígitos em 10 tentativas. A cada tentativa, o jogador é informado quantos dígitos estão corretos e quantos dígitos estão na posição certa. Usando lógica, o jogador pode eliminar erros com uma nova tentativa. Mas também ocorre que depois de várias tentativas o seu subconsciente permite ver o número completo em sua mente. Por isso, esse jogo é útil para exercitar os dois lados do seu cérebro.

Inicialmente, um número inteiro de 5 dígitos é sorteado pelo programa, um número entre 0 e 99999. A tarefa do jogador é adivinhar o número que foi sorteado. A cada passo, o jogador digita um número e o programa revela quantos dígitos estão certos e, dentre estes, quantos estão na posição certa. O jogador ganha se acertar o número sorteado em 10 ou menos tentativas.

O objetivo é fazer um programa em C para o jogo MasterMind que:

  • pergunte ao jogador se ele prefere digitar o número a ser adivinhado ou se prefere que o programa sorteie o número;
  • se o jogador desejar que o programa sorteie o número, o seu programa peça ao jogador para digitar um número que será usado como semente para gerar "aleatoriamente"o número a ser adivinhado (veja seção ??); suponha que o número gerado seja armazenado na variável sorteado;
  • peça, no máximo 10 vezes, para o jogador digitar um número chute, 0 < chute < 99999;
  • informe quantos dígitos de chute aparecem em sorteado na posição certa e quantos dígitos de chute aparecem em sorteado;
  • imprima, no final, uma mensagem indicando se o jogador adivinhou ou não o número e, no caso de o jogador não ter resolvido, o número sorteado deverá ser informado.

A seguir estão disponíveis os arquivos:

  • mastermind.pdf que contém o enunciado
  • mastermind.c que contém o que foi desenvolvido no DoJo, em C

 

Aqui há uma solução em ruby que nos foi enviada por Caso você tenha alguma resolução, seja em C ou em outra linguagem para este problema, nos envie pelo email contato@polignu.org.

 

Referências

[1] http://pet.inf.ufsc.br/dojo/o-que-eh-dojo/

[2] http://henriquebastos.net/2011/03/02/trote-na-uff-dojorio-educacao-2-0/

Portuguese, Brazil
Atividade: