Capa para posts sobre Coding Dojo

1º Dojo da disciplina de AP (2º sem. de 2013)

  • Data: 07/11/2013
  • Horário: 21:15
  • Linguagem: C#
  • Problema: O problema proposto foi o Nuvem de Cinzas:

Um vulcão acaba de entrar em erupção, provocando uma nuvem de cinzas que se alastra impedindo a circulação aérea. O governo está muito preocupado e deseja saber quando que a nuvem de cinzas irá atingir todos os aeroportos do país.

Está disponível um mapa detalhando a situação atual. O mapa é retangular, dividido em pequenos quadrados. Neste mapa existem três tipos de quadrados: nuvem (indicando que esta região do mapa já está coberto por nuvens), aeroportos (indicando a localização de um aeroporto) e todas as outras (indicando locais onde a nuvem ainda não chegou).

A cada dia, a nuvem expande-se um quadrado na horizontal e um quadrado na vertical. Ou seja, ao fim de cada dia, todos os quadrados adjacentes (vertical ou horizontalmente) a uma nuvem, também passam a conter nuvens. Por exemplo:

. . * . . . * *      . * * * . * * *     * * * * * * * *
. * * . . . . .      * * * * . . * *     * * * * * * * *
* * * . A . . A      * * * * A . . A     * * * * * . * *
. * . . . . . .  ->  * * * . . . . .  -> * * * * . . . .
. * . . . . A .      * * * . . . A .     * * * * . . A .
. . . A . . . .      . * . A . . . .     * * * A . . . .
. . . . . . . .      . . . . . . . .     . * . . . . . .
     Dia 1                Dia 2               Dia 3

Para preparar os planos de contingência, o governo necessita saber: quantos dias demorará para ao menos um aeroporto ficar coberto pelas nuvens e daqui quantos dias todos os aeroportos estarão cobertos pelas nuvens.

Dados um quadriculado com L linhas e C colunas, além da indicação inicial das nuvens e dos aeroportos, desenvolva uma programa que informe o número de dias até um primeiro aeroporto ficar debaixo da nuvem de cinzas e o número de dias até que todos os aeroportos ficarem cobertos pelas cinzas.

  • Formato: Randori
  • Participantes: Alexandre José da Conceição, André Luis de Souza Futro, Andréia Apolinario da Silva, Arthur de Barros, Disney Andrade da Silva, Eliane Ferreira De Matos Goma, Franklin Costa Ferreira, Gabriel Dantas De Souza, Gabriel Mazzi Ferreira Franco, Guilherme Domingues Alves, Heitor Teixeira Ramalho de Souza, Helenilson Figueredo Rocha, Hernani Luiz de Mattos Silva, Ivan Davidsom Bardini Vaz, Jaiane Fernandes de Oliveira, José Rodrigo da Costa Takashima, Joveni Fatima Piltz Bogner, Lucas Teixeira dos Santos, Luiz Fernando de Oliveira, Maria Thayna Pereira Rocha, Nelson Manuel de Azevedo, Rafael Feitoza Torres, Ramon Chiara, Regis Fernando Marques Maia, Ronaldo Moura De Jesus, Ronny Moraes Amarante, Stephan Renato Alves da Silva, Thais Nunes de Souza, Vinicius Azevedo de Lima, Wesley Gonzaga de Melo
  • Código: GitHub

Narrativa

Esse foi o primeiro Dojo da turma. O professor fez uma apresentação sobre o que é um Coding Dojo e levantou os seguintes pontos:

  • A turma é grande (aproximadamente 30 pessoas), o que faria com que o tempo fosse muito curto para todos participarem; isso foi minimizado usando-se o tempo de 5 minutos para cada par programar.
  • Seria a primeira vez que ele faria um Dojo usando o Paradigma Procedimental (normalmente usa-se o Paradigma Orientado a Objetos) e que isso seria um aprendizado para ele, também; essa observação rendeu uma breve explicação sobre as diferenças entre os Paradigmas Estruturado e Procedimental.

O problema foi escolhido de forma a se praticar os conceitos de matrizes e funções. Antes de começar a sessão de codificação, foi feita uma análise do problema e chegou-se à conclusão de que deveria haver, pelo menos, as seguintes funções: uma para contagem de aeroportos em um mapa e outra para a expansão das nuvens em um mapa. Essa análise guiou os testes.

public static int ContarAeroportos(char[,] Mapa): dada uma matriz de caracteres, deve retornar um número inteiro indicando a quantidade de aeroportos (caractere 'A') encontrados.

public static char[,] Expandir(char[,] Mapa): dada uma matriz de caracteres, deve retornar outra matriz de caracteres de mesmo tamanho, mas com as nuvens (caractere '*') expandidas.

Os primeiros testes foram feitos pelo professor, pois, nos Dojos da outra turma, foi constatado que isso deu certo. Mas, a título de experimentação, alguns testes também foram feitos por alunos. A experiência deu certo e será repetida nos próximos.

Após quase uma hora de codificação, o tempo se esgotou e uma retrospectiva foi feita.

Fotos

Retrospectiva

  • O que deu certo? / O que aprendemos?
    • Trabalho em equipe e interatividade, todos juntos para resolver um problema x16 (!!!).
    • Maneira divertida de aprender x5. Em um dos post-its: “A solução Ronny F*d*”.
    • Estimula o desenvolvimento pessoal e do conhecimento x4.
  • O que pode melhorar? / O que dificultou o aprendizado?
    • Mais tempo para todos participarem x8. Sugestão dada: fazer equipes diferentes; o professor comentou sobre um outro formato de Dojo em que isso pode ser feito.
    • Comentar o código x2.
    • Fazer mais Dojos / Usar o Git. Com certeza para ambas as “requisições”! 😉
    • Nível heterogêneo da turma.
    • Maior participação da sala x5.

Se você gostou do post, tem alguma dúvida ou encontrou algum erro, por favor, deixe uma mensagem! Seu feedback é muito importante!