domingo, 10 de abril de 2011

FLISOL 2011!!!




El pasado sábado se realizó en el edificio de la Regional Norte de la UdelaR una nueva edición del Festival Latinoamericano de Instalación de Software Libre (FLISOL) contando con la participación de mucha gente que vino a escuchar las charlas y a realizar instalaciones en sus equipos. Pueden obtener más información en http://www.linuxsalto.org/.
Al igual que el año pasado CeibalJam participó del evento realizando una charla de difusión de las actividades de nuestra comunidad.
La charla tuvo como título "Sofware Libre y Comunidad en el marco del Plan Ceibal" y se presentó a la comunidad de CeibalJam como ejemplo práctico del funcionamiento y acción de una verdadera comunidad de S.L.
Al final de la charla se invitó a los participantes a involucrarse y colaborar con lo que puedan ya que se señaló que el desarrollo de software educativo no consiste solo en "programar" ya que se necesita del conocimiento de diferentes disciplinas del area pedagógica.
A partir de ahora el objetivo es trabajar, organizar un equipo de voluntarios de diferentes areas del conocimiento para lograr software educativo de calidad.
Así que... manos a la obra!!!
Por mi parte continuaré escribiendo posts para que el blog se convierta en una referencia a la hora de consular cuestiones de desarrollo de software educativo.
Cualquier consulta la puden hacer comentando en este post o escribiendo un mail a ceibaljam(punto)salto(arroba)gmail(punto)com.


Saludos a todos

martes, 20 de julio de 2010

Estructuras de control II

Bien, seguimos con algunas cosillas más, seguimos con estructuras de control.
En el post anterior vimos el uso del "if" y "else", consecuentemente estas palabras definen un "si"(if) tal cosa entonces esto, "sino"(else) esto otro.
Hasta aquí todo bien, pero que sucede si la condición debe evaluarse doblemente? Que sucede si tenemos tres opciones diferentes a evaluar?
Por ejemplo, consideremos esta situación: queremos hacer un script que si recibe un nombre nos diga una cosa y si recibe otro diga otra cosa y si recibe cualquier otro nombre diga algo diferente.
Veamos esto con seudocodigo...

Leer nombre
Si nombre = Gabriel entonces
Mostrar "Anda a trabajar"
Sino si nombre = Maria entonces
Mostrar "Te felicito"
Sino
Mostrar "No se quien sos"

Has notado la diferencia? Si es así bravo por vos, sino fijate bien. Te diste cuenta? Pues sí. La diferencia con la manera anterior de encarar el asunto es que tenemos el "sino si". Hasta ahora conciamos el "si"(if) y el "sino"(else). Como escribimos el "sino si" con Python? Vean el siguiente ejemplo:

>>>nombre = raw_input()
>>>if nombre == "Gabriel":
... print "Anda a trabajar"
... elif nombre == "Maria":
... print "Te felicito"
... else
... print "No se quien sos"
...

La linea "elif nombre == "Maria":" muestra el equivalente en Python.
Espero que quede claro, sino comenten

jueves, 1 de julio de 2010

Algunos ejercicios...

Aquí Julio nos da una mano poniendo a nuestro alcance una serie de ejercicios para que los conceptos expuestos estos sábados vayan tomando forma en nuestra memoria.
De más está decir que si alguien no entiende algo puede dejar un comentario para que Julio, yo u otro compañero despeje las dudas.
También pueden enviar las soluciones por mail para ser corregidas.
Bueno, pues aquí están los innombrables, a incarles los dientes (y el cerebro también!)

EJERCICIOS

Ejercicios Prácticos - Programación Python


manejo de variables: asignación de datos, secuencia y condicionales.


  1. Pedir un número y mostrar su duplo.

  2. Pedir dos números A y B y mostrar el cociente.

  3. Pedir dos números A y B y mostrar el resto de la divicion entera ( usando el operador % ).

  4. Idem al anterior, pero sin usar el operador % (crear el algoritmo que muestre el resto).

  5. Dado un número, determinar si es par o impar.

  6. Dados dos números A y B, intercambiar sus valores ( en A el valor de B y en B el valor de A).

  7. Pedir tres números A, B y C, y mostrar True si C esta entre A y B, de lo contrario False.

  8. Leer una palabra y compararla con “Salto”, si son iguales, mostrar True, de lo contrario False.

  9. Dado un valor de pesos $, mostrar su equivalente en dolares.

  10. Ingresar dos números enteros y se debe mostar todos los números enteros comprendidos entre estos ( si se ingresa 10 y 30 se debe mostrar 10, 11, 12, 13, ... 29, 30).

  11. Ingresar dos números enteros, y se debe mostrar todos los números pares comprendidos entre estos (si se ingresa 10 y 30 se debe mostar 10, 12, 14, ... 28, 30).

  12. Ingresar números hasta ingresar -1, mostrar el menor de los números ingresados.

  13. Ingresar números hasta ingresar -1, mostrar el mayor de los números ingresados.

  14. Ingresar un valor en grados celsius, y convertirlos a grados farenheit, segun la siguiente formula: Fh = (Ce * 1,8) + 32

  15. Diseñar un algoritmo que pida las tres longitudes de los lados de un triangulo (A, B y C) y muestre que tipo de triangulo es, de a cuerdo a los siguientes casos. Si A es el mayor de los lados y B y C correspondes a los otros dos:
    [ A > = B + C ] -> No es un triangulo
    [ A**2 = B**2 + C**2 ] -> Triangulo Rectangulo
    [ A**2 > B**2 + C**2 ] -> Triangulo Obtusangulo
    [ A**2 <> Triangulo Acutangulo

  16. Leer tres valores correspondientes a las calificaciones de alumnos, y calcular el promedio de dichos valores.

  17. Idem al anterior, pero suponiendo que no sabemos cuantos valores de calificaciones se van a ingresar.

  18. Crear un algoritmo de un juego, en el cual se pide un numero y la cantidad de intentos, y luego se le da la oportunidad a otra persona para tratar de adivinarlo.

sábado, 26 de junio de 2010

Nuevamente nos reunimos!



El día de hoy (sábado 26/6) nos hemos reunido nuevamente para seguir aprendiendo Python. Nuevamente contamos con un interesante número de participantes con muchas ganas de aprender.
En la jornada de hoy aprendimos el uso de condicionales, bucles, funciones y algo sobre listas. También tuvimos tiempo de hacer una breve introducción al paradigma de la orientación a objetos y como se realiza una clase.
En los proximos post tendremos una exposición detallada de cada uno de los temas dados y también algunos ejercicios para practicar lo visto hasta ahora.
También vale la pena recalcar que como Uruguay ganó y pasó a cuartos de final valió la pena terminar antes, no les parece?



Este video lo grabé inmediatamente luego de la victoria. Es calle Sarandí antes de llegar a Varela.
Festejaremos así el próximo viernes?

viernes, 25 de junio de 2010

Mañana nos reunimos!!!

Mañana nos veremos las caras nuevamente. Será a las 9 en CTC, Artigas 718. Recuerden que si invitan a alguien nuevo sería conveniente que lo inviten a dar una recorrida por el blog para que se ponga al día y no llegue en "frío" a la reunión, de esta manera el tiempo se podrá aprovechar de mejor manera.
Sobre lo que muchos me preguntaron (con mucha ansiedad) les respondo que terminaremos un rato antes (10:30) para que todos puedan ir a ver el partido.

Saludos a todos y arriba Uruguay!!!

Estructuras de control

Que son las estructuras de control? Son la forma que tenemos en programación de tomar decisiones y de alterar el flujo normal en un secuencia de instrucciones.
Hasta ahora no hemos realizado ningún código de tres o más lineas, pero para ir despejando la cabeza veamos el siguiente ejemplo:

>>>nombre = raw_input("Cual es tu nombre: - ")
Cual es tu nombre: - Gabriel
>>>#Primero nos pregunta el nombre luego hacemos print
>>>print "Tu nombre es: " + nombre
Tu nombre es Gabriel

Bien, aquí tenemos varias cositas. En primer lugar tenemos la instrucción raw_input() que lo que hace es ingresar en una variable (nombre) lo que ingresemos en el teclado, que se le llama "entrada estándar" (recordemos que otra entrada en el pc es el ratón, siempre refiriéndonos a la entrada de información). Entre los paréntesis ingresamos un string que será el texto que se mostrará al usuario.
Luego de ingresar esta linea damos enter y se ejecuta, se muestra el string que pusimos en los paréntesis y queda esperando a que ingresemos el dato pedido, una vez ingresado damos enter y el dato ingresado es guardado en la variable "nombre".
Que significa la linea con "#"? El numeral en python nos permite ingresar textos que el intérprete ignora, de tal manera que la linea ">>>#Primero nos pregunta el nombre luego hacemos print" es ignorada por python.
¿Entonces que sentido tiene colocarla? Tiene el sentido de agregar texto que ayuda a entender que cosa hace el código escrito. Es una aclaración para quién lee el código, inclusive si es el mismísimo autor del código en cuestión, no nos olvidemos que muchos programas llegan a tener cientos de lineas de código y quién escribe un programa necesita explicar su propio código por si olvida para que, o que hace cierta porción del código. Todo esto se llama "comentar", o sea que la linea con el numeral es un comentario, un comentario para aclarar alguna cosa.
Muchos a esta altura se estará preguntando: ¿Y no se iba a hablar de estructuras de control? Si, .... no desesperen :-P
Las estructuras de control son estructuras condicionales, que toman decisiones dependiendo de las condiciones que impongamos según nuestras necesidades.
En cuanto a la sintaxis de una estructura de control les puedo decir que es muy sencilla, como siempre lo veremos a partir de un ejemplo:

>>>i = 10
>>>if (i < 10):
...    print "Es menor a 10"
... else
...    print "Es mayor a 10"
...
Es menor a 10

Pienso que fácilmente se entiende, en seudocodigo sería algo así:

Si i es menor a 10 entoces
imprime "Es menor a 10"
sino
imprime "Es mayor a 10"

Empezamos la estructura con la palabra clave "if", luego entre parentesis colocamos la condición (i < 10), si la condición es evaluada como verdadera (el valor de i es menor que 10) entonces se ejecuta la instrucción anidada que le sigue inmediatamente. Ahora, si la condición es evaluada falsa, no se ejecuta la instrucción anidada siguiente (print "Es menor a 10"), sino que se ejecuta la instrucción alternativa "else" (sino) y su codigo anidado (print "Es mayor a 10").
Algo que tenemos que tener siempre en cuenta es que las estructuras de control (y otras que veremos mas adelante) llevan dos puntos (:) al final de la declaración inicial como vimos en el ejemplo:

>>>if (i < 10):

Como pueden ver es muy sencillo.
En el próximo post veremos unos ejemplos algo más complejos.

Nos vemos.

viernes, 18 de junio de 2010

REUNIÓN SUSPENDIDA

Hola a todos.

Lamentablemente me veo en la obligación de suspender la reunión de mañana sábado y trasladarla al día sábado 26.

Los motivos serán explicados en la próxima reunión ya que se los tengo que dar porque es probable que alguno quede desprevenido y madrugue y se traslade para nada el día de mañana.

También les pido que se mantengan en contacto con el blog pues seguirán nuevos post con nuevos temas.

Desde ya les ruego que me disculpen, principalmente por la hora en que les hago llegar el comunicado.

Saludos.