h1

Para Practicar…

Diciembre 21, 2007

Bueno en esta oportunidad publico un ejercicio tomado de un examen final de la catedra Paradigmas de Programación de la carrera de Ing. en Sistemas – UTN

Espero que para el que necesite le sirva, y para el aficionado, le interese y lo resuelva.

^Saludos

_____________________________________________________________

Ejercicio Practico: SOLITARIO en Smalltalk

El planteo es definir una clase CARTA, la cual tenia las responsabilidades de generarCarta, y generarMaso, que seria una coleccion de cartas desordenadas.
Y despues te tendria que explicar con papel, pero bueno voy a hacer el intento…
La idea es que en tu mesa vas a tener “una matriz” compuesta por todas las cartas del maso, si? Una matriz, donde, cada fila represente un palo (espada, basto, oro y copa) y cada columna el numero de carta (1,2,3,….,12).
Entonces tomamos la primer carta de la primer columna de la primer fila, o sea,  si tu matriz se llama “mesa”, seria la carta que esta en mesa[1,1].

seguimos?
Despues, esa carta va a tener dos atributos que van a ser, palo y numero.
Bueno lo que tenes que hacer es: si esa carta por ejemplo era el 4 de copas (huy que fea carta…) tenes que ubicarla donde corresponde en la mesa, o sea, en la fila correspondiente a copas (si nos guiamos por mi enumeracion: espada, basto, oro y copa, seria la fila 4) y en la columna correspondiente al numero de la carta, como era 4 de copas, sera en la colmna 4.

Bueno, de mas esta decir que tenes que resguardar la carta que estaba ahi, porque la carta que estaba ahi la vas a tomar y vas a hacer lo mismo, o sea, ver que numero y palo es y con eso vas a ir a la posicion mesa[numero,palo] que te haya salido y vas a repetir el procedimiento, se entiende no?

ahhhhhhh, me estaba olvidando… Cuando sacas un 12, sea de cualquier palo, te termina la ronda y sacamos otra carta (hoy sacamos la carta que estaba en mesa[1,1] bueno ahora sacariamos la carta que esta en mesa[1,2] y repetiriamos la jugada…)

cuando termina?
Se termina cuando sacamos, o descubrimos los cuatro 12’s, y ganas el juego si ordenaste toda la matriz, sino no ganaste.

Se complica tal vez un poco en la clase CARTA, porque el generar cartas tenias que controlar que no se generen cartas repetidas, asi tambien en generar maso, tenes que controlar que no pongas 2 veces las mismas cartas…
Ahora bien, tenemos que generar las cartas ALEATORIAMENTE… O sea, tambien tenemos que “inventar” la funcion random que nos devuelva un numero aleatorio entre 1 y 12 para las cartas y entre 1 y 4 si queres asociar esos numeros a las cartas (espada, basto, oro y copas).

Preparados? Listos? YA! a Programar!

================================================================

h1

Ejemplo de Clases. Definición de la Clase: Persona

Noviembre 16, 2007

Bueno aca les dejo un paper, que incluye:

  • Una definición abstracta de clases: Definición de forma grafica de la clase que contiene un nombre, un conjunto de atributos, y un conjunto de metodos.
  • Una definición implementada en Smalltalk: Codigo Fuente de la implementación de dicha clase.
  • Una referencia al Programa principal: Es decir, una porción de programa donde se instancia la clase Persona (o lo que es lo mismo, la creación de un objeto Persona).

clase-persona.jpg

h1

Programación Orientada a Objetos & SMALLTALK

Noviembre 13, 2007

Como dijimos, Smalltalk es un lenguaje de programación que basado en el paradigma Orientado a Objetos (OOP: Object Oriented Paradigm). Actualmente existen diversos lenguajes orientados a objetos, por citar algunos lo son: Java (www.java.com), Python (www.python.org), Visual Basic.NET y C#.NET (www.microsoft.com), PHP (www.php.net) entre otros.

Una caracteristica de Smalltalk que diferencia a los demas lenguajes, es que este es puramente ortientado a objetos, es decir, “todo es un objeto”. Otros lenguajes suelen ser considerados como “hibridos” es decir, mantienen el paradigma de Objetos, pero permiten el uso de otras “filosofias” de Programación.

h1

IDE’s de Desarrollo con Smalltalk

Noviembre 13, 2007

Antes de hablar sobre IDE’s, podes investigar en la web oficial de smalltalk: http://www.smalltalk.org.

Una IDE (Integrated Development Enviroment) es un Entorno de Desarrollo, es decir, la herramienta con la cual escribiremos nuestro programa. Tambien contiene un compilador, y depurador del codigo.

Existen diversas IDE’s para Smalltalk, algunas tan pobres que nos dan sensacion de “rechazo” hacia el lenguaje, y otras mejores, con entornos graficos e IDE’s mas completas. Asi como tambien las hay Gratuitas y otras Comerciales.

En esta ocasión hago referencia a dos versiones:

1) Smalltalk Express

2) Visual Smalltalk

Ambas disponibles en internet, facultades (como material didactico), etc. Ventajas y desventajas? la primera, esta destinada a maquinas con poco potencial de procesamiento y bajos recursos. Como desventaja, cuando queremos correr esta versión, tenemos que reducir la configuración de colores a 256 colores. Cabe aclarar que para evitar este inconvenientes, existen parches para windows que permiten a la IDE correr sin problemas de incompatibilidad con resoluciones de colores mayores que esta.

En cambio la segunda, como ventaja consta de una IDE un poco mas avanzada. Esta incorpora objetos visuales, como formularios, botones, cuadros de textos, etc. Como requerimientos, no exige mucho poder de procesamiento ni una amplia memoria RAM. Otra ventaja es que no necesita reducir la configuración de colores, se adapta a la configuracion por defecto del Sistema Operativo.

Una IDE Comercial y creo la mas conocida es Visual Age Smalltalk de IBM (http://www.ibm.com), (http://www-306.ibm.com/software/awdtools/smalltalk/)

h1

Guias de Referencias, apuntes, etc…

Noviembre 13, 2007

Bueno, como para compartir un poco mas, pongo a disposicion presentaciones PowerPoint, PDF’s y texto, sobre sintaxis, primeros pasos y referencias varias sobre Smalltalk. Ante Cualquier duda, estoy aca, no se si respondere tus inquietudes pero hare el intento ;)

Saludos.

Smalltalk Express – Guia de Referencia

Smalltalk – Sintaxis [parte I]

Smalltalk – Sintaxis [parte II]

Sintaxis Basica