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.

miércoles, 16 de junio de 2010

Las listas

Las listas son un tipo de dato que no vimos el otro día, sin embargo son muy sencillas de entender. Por ese motivo las voy a exponer ahora.
Las listas son un tipo de variable especial, porque pueden contener mas de un dato, por eso se llaman listas.
En la práctica, una lista es definida de la siguiente manera:

>>>lista = ["Mate","Bombilla","Yerba","Tortas"]

De esta manera definimos nuestra primera lista llamada "lista" (que original!).
Si luego hacemos print, obtenemos los valores que se encuentran dentro de la lista.

>>>print lista
["Mate","Bombilla","Yerba","Tortas"]

Ahora bien, que sucede si queremos acceder solamente a uno de los datos almacenados? Pues lo hacemos mediante el "indice" de la lista.
¿Que es el indice? El indice es aquel que indica que lugar dentro de la lista ocupa cada elemento. Por ejemplo, si quisieramos obtener el elementos "Yerba" tendríamos que hacer lo siguiente:

>>>print lista[2]
Yerba

¿Por que al acceder al indice numero 2 el valor devuelto es el tercero de la lista? Pues esto sucede porque el indice de todas las listas empieza en cero, osea que el primer elemento tiene el indice 0, el segundo el indice 1 y así sucesivamente.

Cabe aclarar también que las listas pueden contener todo tipo de datos y no solo eso, sino que también pueden contener datos de diferentes tipos en una misma lista por lo que el siguiente ejemplo es válido:

>>>empleado["Gabriel","Fernandez",28,32.50,true]

Como ven, esta lista contiene los datos de un empleado, podría ser un alumno o las medidas de una figura geométrica.

Mas adelante veremos como recorrer y obtener los datos guardados en las listas de una manera mas eficiente.

Cualquier duda comenten.

martes, 15 de junio de 2010

Otros materiales

Julio me acaba de enviar otra presentación, está muy buena, resume varias de las cosas que acabamos de ver en el blog, así que si quieren ver las cosas expuestas desde otra perspectiva esta presentación es excelente!


También les dejo un manual de Python y la "chuleta", esa deberían imprimirla, ambos documentos están en español.

Saludos.

lunes, 14 de junio de 2010

Instalacion de Python

Bueno, quizás esto tendría que estar en el principio, pero me llegó hoy.
Es una presentación sobre la instalación de Python en otros sistemas operativos (ms windows). La verdad es que no lo he ojeado todavía, este material es una contribución de Julio Irache, disfruten de ella.
Ahora, antes que nada, si usan MS Office no podrán ver la presentación, deberían tener OpenOffice instalado en su PC. Igualmente mañana la paso al formato ppt.


Mañana voy a colgar otros materiales.

Saludos.

Concatenacion de cadenas

Muchas veces en la programación necesitaremos manejar cadenas de caracteres, llamadas strings. En Python este manejo es bastante simple. Basta con tipear la cadena en cuestion entre comillas dobles o simples. Miremos este ejemplo en el que asignamos la cadena a una variable.

>>>cadena = "hola"
>>>string = 'mono'
>>>print cadena
hola
>>>print string
mono

Muy facil en verdad. Pero que si queremos juntar dos cadenas para mostrar un mensaje? Bien, simplemente "sumamos" las variables.

>>>print cadena + string

Otra posible situación es que deseemos añadir la variable a una cadena en vez de otra variable. En este ejemplo veremos como hacerlo.

>>>meses = 12
>>>print "El año tiene " , meses , " meses. "

Mediante la coma podemos "concatenar" cadenas y variables siempre y cuando el valor de la variable se pueda convertir en una cadena.
Esto no es todo lo que hay sobre cadenas, pero por el momento basta.

Notaciones compactas

Algo que no vimos este sábado pasado fue la notacion compacta, la veremos ahora porque es algo realmente sencillo.
La notación compacta es aquella que nos permite resumir ciertas expresiones y solo podemos realizarla en cierto contexto. La condicion del contexto se da cuando queremos modificar una variable a partir de su propio valor. Pero con unos ejemplos quedará muy claro.

>>>a = 5
>>>b = 7
>>>a = a + b

Aqui el valor final de "a" no es 5, sino 5 + 7 (a + b), o sea 12. ¿Y como usamos la notación compacta aqui? Lo hacemos así:

>>>a += b

El resultado final será equivalente al código visto anteriormente.
Para los demás operadores las equivalencias serían las siguientes:

  • a = a + b equivale a += b
  • a = a - b equivale a -= b
  • a = a * b equivale a *= b
  • a = a / b equivale a /= b
  • a = a % b equivale a %= b
  • a = a ** b equivale a **= b

En algún momento les serán utiles estas notaciones compactas

Los operadores

Los operadores permiten interacción entre los datos almacenado en las variables que hayamos definido.
De esta manera, podemos interactuar con los datos guardados y generar nuevos datos.
Imaginen que en una variable "saldo" tenemos el dato del dinero que nos sobró del mes anterior (si, convengamos que dije "imaginen" :-) y en la variable "sueldo" tenemos la información del valor del dinero recibido este mes. Veamos...

>>>saldo = 550
>>>sueldo = 10850
>>>total = saldo + sueldo
>>>print total
11400

Entonces mediante el operador "suma" (+) combinamos los datos y obtenemos uno nuevo que es asignado a "total", sin embargo las variables saldo y sueldo siguen manteniento la informacion contenida en ellas, de tal forma que si hicieramos print en ambas variables podriamos ver la informacion.

>>>print saldo
550
>>>print sueldo
10850

En fin, los operadores son los siguientes:
  • Adición (+), también sirve para concatenar cadenas como veremos mas adelante
  • Sustracción (-)
  • División (/)
  • Producto (*)
  • Resto (%), también conocido como mod
  • Potencia (**)
Ahora observemos lo siguiente, ¿que sucede si en el ejemplo anterior usamos solo dos variables? Veamos...

>>>saldo = 550
>>>sueldo = 10850
>>>saldo = sueldo + saldo

¿Que sucederá? Si hacemos print para ambas variables veremos el resultado

domingo, 13 de junio de 2010

Tipos de datos

Las variables que tratamos anteriormente almacenan datos, como dijimos, pero los datos no son todos iguales.
Por ejemplo un texto no es igual a un numero, y los numeros no son todos iguales.
Cuando queremos guardar un dato tipo texto, utilizamos comillas (dobles o simples), de esta manera:

>>>texto = "Hola"

Donde "texto" es el nombre de la variable por supuesto.
Si hacemos

>>>print texto

obtendremos

Hola

Que tipos de datos tenemos?
  • Strings o cadenas (>>>var = "cadena")
  • Enteros o Integers (>>>var = 126)
  • Reales o de coma flotante o float, son los famosos decimales (>>>var = 10.2)
  • Logicos o booleanos, verdadero o falso, true/false (>>>var = True)
  • Complejos o complex, este deficilmente lo utilicemos alguna vez (>>>var = 2.1+7.8j)

Existen otros tipos, pero los veremos mas adelante.

Las variables

Antes que nada, debemos ejecutar en iniciar Python en la terminal, de esta manera podremos practicar los ejemplos.
Si lo hicimos bien veremos algo así:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Las variables son "espacios" en la memoria del PC (memoria RAM) que guardan información.
Cuando escribimos codigo usamos referencias a estos "espacios de memoria" y les ponemos un nombre, y no solamente eso, sino que también agregamos la información a guardar, pero nada mejor que un ejemplo:

>>>variable = 10

En este caso "variable" es el nombre que damos al espacio de memoria y el signo "=" es el asignador. Asigna el valor "10" a la variable variable.
Sencillo no?
Ahora el valor "10" está guardado en "variable", como lo podemos comprobar?
Muy sencillo, con la instrucción "print" podemos mostrar el contenido mediante la salida estándar (el monitor del PC), veamos como:

>>>print variable

Que tal? Muy facil
Al final nuestro codigo completo sería el siguiente:

>>>variable = 10
>>>print variable

Bien, cualquier duda comenten.

Entrando en calor

Muy bien, manos a la obra.
En la mañana del sábado comenzamos con una breve introducción a Python, entre muchas cosas mencionamos algunas de singular importancia:
  • Python es multiplataforma
  • Es orientado a objetos
  • Es un lenguaje de interpretado
  • Posee una sintaxis sencilla
Multiplataforma significa que podemos escribir programas Python que funcionan en Linux, Windows, etc.
Orientado a objetos... mmh, que sea un misterio todavía.
Interpretado significa que se compila en el momento de ser ejecutado, y dejamos por ahí. La ventaja derivada de esta característica es la consola interactiva, que en la practica permite un rápido aprendizaje del lenguaje.
Bien, posee una sintaxis sencilla, sin llaves de apertura y clausura, sin puntos y comas y sin otras maravillas de los lenguajes de programación clásicos.
Evidentemente dejo varias cosas en el tintero, pero que las podrán leer en cualquier manual decente sobre Python.
En el proximo post veremos sobre las variables.
Saludos...

sábado, 12 de junio de 2010

Bienvenida



Hola y bienvenidos.
Doy las gracias a todos los que se animaron a participar de la reunión del sábado 12 de este mes y los animo a que por este medio sigamos aprendiendo y adentrándonos en el fabuloso mundo de Python.
También quiero animar a todos aquellos que no asistieron por diversos motivos a mantener una linea de contacto por intermedio de este blog que contendrá todo lo nec
esario para inciarse en Python y en la creación de actividades diversas y educativas (y también divertidas) para las XO.

Así que ahora comenzamos, espero que de esta aventura salgan muchas buenas cosas y muchas buenas amistades.

Aquí algunas fotos de la actividad...

Un abrazo a todos....