25.04.08

Dojo Tarde – 04

Posted in DojoTarde, SmallTalk at 3:06 pm by flores

Participantes: Hugo, Mari, Flores, Breno
Problema: The Next Palindrome
Linguagem: Smalltalk
Ambiente: Squeak
Fonte: dojotarde04-palin

Por termos resolvido um problema muito fácil no Dojo anterior, resolvemos pegar um problema um pouco mais difícil.

Ao invés de criar uma classe com a implementação do Next Palindrome, o Hugo sugeriu criarmos um método NextPalindrome na classe de inteiros de Small Talk. O que no fim das contas se mostrou ser algo legal: nunca haviamos feito nada deste tipo em algum outro Dojo Tarde.

Uma estratégia sugerida pelo Hugo para resolvermos o problema foi irmos comparando os dígitos a partir da metade com seu correspondente e ir montando o próximo palíndromo.

Inicialmente começamos tratando os casos para um dígito: para números de 1 a 8 é trivial pois o próximo palíndromo é o próximo número. Prosseguindo: tentamos fazer o caso do 9, com resposta esperada 11, mas infelizmente sentimos que qualquer solução, mesmo não tão elegante, talvez precisasse de mais código. Colocamos então esse teste no Expected Failures e continuamos nossa programação para tratar os casos de dois dígitos. Decidimos converter o número para string, para assim acessar mais facilmente cada dígito. Para a solução de dois dígitos, utilizamos a idéia de que o próximo palíndromo seria o próximo múltiplo de 11 a partir do número. Para três dígitos, tentamos implementar o algoritmo pensado anteriormente tratando primeiro os casos que só necessitávamos mexer no número do meio (como 808), mas acabou nosso tempo de programação.

Achamos um “bug” no test Runner do Squeak: quando temos uma Expected Failure, um código sem “Failures” fica com cor amarela no Test Runner, enquanto um código com “Failures” fica com cor verde.

Coisas Boas: Implementação de Mensagem em classe “raíz”+, SmallTalk++, digitAt, Method Finder, raisedTo, Blog, “121 at: 2″.

Coisas Ruins: Pouca Gente++, Test Runner Bugado+++, Falta de Precedência Confunde, Sono++, Controlar o tempo com o celular é ruim, Fugimos do Algoritmo (?), Fugimos do Baby Step(?), Problema não tão complicado mas não terminamos, código feio, “String at: 2 asString asInteger”++.

A se pensar: Como trazer mais gente? Utilizar algoritmos já conhecidos de primeira ou ir construindo o algoritmo aos poucos?

10.04.08

Dojo Tarde – 03

Posted in DojoTarde, SmallTalk at 2:55 pm by flores

Participantes: Hugo, Mari, Flores, Mário
Problema: Tex Quotes
Linguagem: Smalltalk
Ambiente: Squeak
Fonte: dojotarde03-texquotes1

Como estávamos preocupados pelo fato de não estarmos conseguindo resolver problemas simples no Dojo Tarde, escolhemos um problema bem simples.

O principal desafio foi como resolver um problema inicialmente de programação procedural utilizando SmallTalk e conseqüentemente orientação a objeto.

Primeiramente, fizemos métodos que trocavam ” por “ ou ´´ dependendo de uma variável booleana denominada aspasAbertas. O Hugo, para deixar o problema mais orientado a objeto, sugeriu fazermos um substituidor esquerdo e um substituidor direito para substituir as aspas dependendo do caso. Em uma refatoração, foi sugerido que as duas classes de substituidor (direito e esquerdo) herdarem de uma classe substituidor. Também tivemos que aprender como funciona o escape de caracteres em Smalltalk.

Como estávamos tratando caracteres simples como strings, ao tentarmos fazer o teste da validação que quebrava uma string em caracteres, tivemos que passar os caracteres como string.

Coisas boas/aprendizados: Smalltalk, Orientação a Objeto, Polimorfismo, Herança, Terminamos um Problema, Tempo compatível, caracter a pode ser escrito como $a.

Coisas ruins: Pouca gente (3x), tela do Mac escurecendo, Responsabilidade Concentrada (escriba, encarregado do projetor, “abridor” de sala, moderador).

Coisas a se pensar: Como atrair mais gente ?, Kata no próximo Dojo!

Semana que vem tem Dojo no FISL!