You are on page 1of 32

1.

Mi primer programa

Sinclair ZX-81

Empecé a programar a los 15 años. Era un programa escrito en Basic para una Sinclair ZX-81, una
computadora personal, la más barata de ese tiempo, costaba unos 100 dólares.

El programa era muy sencillo, debía transformar desde grados Farenheit a Celsius.

Este es el programa más simple y útil que, se me ocurre, uno puede escribir como ejemplo para
aprender a programar, y con este programa vamos a partir nuestras clases de programación.

Cuando uno va a escribir un programa debe partir por declarar qué es lo que se espera del programa,
a esto lo llamamos especificación de requerimientos. En este caso es bastante simple:

"Escriba un programa que le solicite al usuario un número que representa la temperatura


en grados farenheit
y muestre en pantalla la temperatura expresada en grados celsius".

Esa era la primera tarea que tuve que cumplir como programador. Asumiré que ustedes no saben nada
de programación, tal como yo a los quince años, pero que si saben usar adecuadamente su
computador al nivel de ser capaces de operar con algún procesador de texto.

Vamos a solucionar este problema usando un lenguaje de programación moderno, vamos a escribir
una página web (en HTML) y un programa en JavaScript para resolverlo. Yo lo tuve que hacer
en BASIC, que es un lenguaje bastante antiguo, más adelante hablaremos de los lenguajes de
programación y por qué hay tantos, por ahora me gustaría que sigan los pasos que les voy a mostrar.
No se asusten, probablemente no entiendan mucho de lo que van a hacer, pero ya les voy a explicar
lo mejor que pueda, qué estamos haciendo.

Preparación
Nuestro programa será construido en JavaScript, que es un lenguaje que se encuentra habilitado en
todos los navegadores de internet. Ahora bien, para poder ejecutar un programa javascript debemos
colocarlo dentro de una página HTML. Vamos a hacer esto porque nos permite usar un lenguaje que
está disponible en la mayoría de los computadores personales del mundo conectados a internet.

Lo primero que vamos a hacer es construir una página web de soporte de nuestros programas, para
esto deben abrir un editor de texto (si usan windows está Notepad, o mejor aún les sugiero
descargar Notepad++, si usan Ubuntu les recomiendo GEdit, o lo que tengan a mano en tu sistema
operativo).

Vamos a abrir un archivo que llamaremos “js_tester.html“, que es un archivo de plantilla que usaremos
para probar los programas en javascript que vamos a empezar a escribir en este curso.

En el editor de texto escriban este código y guárdenlo en su disco duro como js-tester.html:

<head>

<script type="text/javascript">
<!--
// ACA COLOCAREMOS NUESTROS PROGRAMAS
//-->
</script>
</head>
<body>
<input type="button" onclick="programa()" value="probar programa" />
</body>

Acá está la imagen tomada en mi PC usando Notepad++ (click para agrandar):


js-tester.html editado en Notepad++ (click para agrandar)

Ustedes pueden visualizar esta página web desde su browser, en mi caso con Chrome:
Visualizando js-tester.html en un navegador web (click para agrandar)

Por supuesto si presionan el botón no sucederá nada pues no hemos escrito nuestro programa aún,
creamos esta página para poder probar el programa que escribiremos a continuación.

Programando
Según el diccionario un programa corresponde a “cada una de las operaciones que, en un orden
determinado, ejecutan ciertas máquinas¨. Bueno, eso es lo que vamos a hacer ahora, escribir una
secuencia de operaciones para que el computador las ejecute. El programa resultante nos permitirá
convertir números de grados farenheit a celsius.

Escribamos la secuencia de acciones que se precisan para poder cumplir con el requerimiento original
en nuestro lenguaje natural, el castellano:

1. Solicitar que se ingrese el valor en grados farenheit.

2. Convertir el valor de grados farenheit a grados celsius.

3. Mostrar el valor obtenido en la conversión en el paso 2.

Resulta que esta secuencia de acciones tiene la estructura de casi todos los programas:
Un programa típico toma un conjunto de datos de entrada, los procesa ejecutando una secuencia de
instrucciones y emite un conjunto de datos de salida. El paso 1 procesa la entrada, el paso 2 realiza el
cálculo de conversión y el paso 3 genera la salida del programa.

Ahora vamos a traducir todo esto en un programa en JavaScript:

function programa() {

// 1. Solicitar que se ingrese el valor en grados farenheit.


var F = prompt("Ingrese la temperatura en grados farenheit", "77");

// 2. Convertir el valor de grados farenheit a grados celsius.


var C = (F - 32) * 5 / 9;

// 3. Mostrar el valor obtenido en la conversión en el paso 2.


alert("La temperatura " + F + " expresada en grados celsius es: "+ C);
}

Lo que hicimos fue traducir los 3 pasos que expresamos en castellano al lenguaje de programación
javascript. El resultado es un programa con 11 lineas de código.

La primera linea declara lo que en JavaScript se conoce como función, una función en este lenguaje
agrupa una serie de instrucciones, el nombre de nuestra función es programa. Si recuerdan nuestra
página html tiene un botón (vean la linea 10 de js-tester.html), ese botón tiene una instrucción que dice
onclick=”programa()”, bueno cuando presionas el botón el browser busca una función en javascript
que se llame programa, que es precisamente la que acabamos de escribir arriba.

Después de declarar nuestra función colocamos las instrucciones entre dos paréntesis de llaves { y }.
Esa es la forma que tiene este lenguaje para agrupar un conjunto de sentencias, o instrucciones.

Notaran que transcribí los 3 pasos que habíamos escrito antes y les coloqué delante dos barras
diagonales (//), esa es la manera de insertar comentarios en un programa javascript. Los comentarios
son ignorados por el computador cuando ejecuta el programa, pero nos sirven a los programadores a
entender mejor el programa.
La instrucción en la linea 4 es bastante compleja:

var F = prompt("Ingrese la temperatura en grados farenheit", "77");

La palabra clave var nos permite declara una variable, en este caso la variable F. Ya hablaremos de
las variables en más detalle en futuros artículos, por ahora debes saber que una variable es como un
casillero en la memoria del computador donde guardaremos un valor,. El valor lo obtenemos al ejecutar
otra función llamada prompt(). Esta es una función que está disponible en JavaScript y que nos permite
mostrar una ventana donde el usuario puede ingresar un valor. Esta función recibe dos argumentos,
en este caso el texto “Ingrese la temperatura en grados farenheit” y el valor “77″, 77 es un valor que
usaremos por omisión en nuestro cálculo. La función prompt propone el valor 77 al usuario y este lo
puede cambiar.

Luego ejecutamos el cálculo de conversión a grados celsius usando la fórmula estándar para esta
conversión:

var C = (F - 32) * 5 / 9;

Acá nuevamente declaramos otra variable, la variable C en donde guardamos el resultado de la


derecha. Fíjense que en la ecuación participa la variable F que contendrá el valor solicitado al usuario
mediante la función prompt().

Por último manejamos la salida en la linea 10 del programa:

alert("La temperatura " + F + " expresada en grados celsius es: "+ C);

Para mostrar el resultado y generar la salida de nuestro programa, usamos la función javascript alert(),
que despliega una ventana con el mensaje. Fíjense que tenemos texto que se mezcla con las variables
F y C usando el operador +, esto corresponde a lo que se llama concatenación y es algo que
aprenderemos más adelante. Lo importante ahora es que no aparecen las letras F y C, sino que se
muestra los valores de las variables F y C.

Para poder probar todo esto debemos colocar el texto dentro del archivo js-tester.html, para esto
copien el código completo de programa() debajo de donde dice “// ACA VAN A IR NUESTROS
PROGRAMAS, el archivo js-tester.html debería quedar así:

<head>
<script type="text/javascript">
<!--
// ACA VAN A IR NUESTROS PROGRAMAS
function programa() {

// 1. Solicitar que se ingrese el valor en grados farenheit.


var F = prompt("Ingrese la temperatura en grados farenheit", "77");

// 2. Convertir el valor de grados farenheit a grados celsius.


var C = (F – 32) * 5 / 9;
// 3. Mostrar el valor obtenido en la conversión en el paso 2.
alert(“La temperatura ” + F + ” expresada en grados celsius es: “+ C);

}
//–>
</script>
</head>
<body>
<input type=”button” onclick=”programa()” value=”probar” />
</body>

Acá va una copia de la pantalla del editor en mi PC:

js-tester.html modificado para incluir mi primer programa (click para agrandar)

Ahora sí debería funcionar y ejecutarse el programa cuando presiones el botón. Les sugiero intentar
este ejercicio y si tienen dudas o problemas plantearlas en los comentarios.

Es probable que aún no entiendas mucho, te sugiero probar diversas alternativas y observar que pasa,
por ejemplo, ¿qué pasa si cambias los nombres a las variables?, ¿qué pasa si sacas las comillas en
los textos?, o si eliminas las dos barras // antes de los comentarios, y ¿ si ingresamos otra cosa en vez
de un número?, ¿qué pasa si le cambian el nombre a la función programa?, etc.

Experimenta con este programa y resuelve los ejercicios que vienen a continuación.

Ejercicios
1. Escribe un programa que convierta de celsius a farenheit.
2. Escribe un programa que sume 2 números.
3. Escribe un programa que diga “Hola mundo”.
4. Escribe un programa que solicite el nombre del usuario y lo salude.
2. Partir desde cero
Cuando nos enseñan a contar en la escuela lo hacen a partir del uno: 1, 2, 3… Si hay una hilera de
personas empezamos a contarlas desde 1. Por eso que los matemáticos tienen el conjunto de los
números naturales que empieza desde 0: N = {1, 2, 3, 4…..}. Pero en computación las cosas empiezan
desde cero.

Según Wikipedia: “La palabra «cero» proviene de la traducción de su nombre en sánscrito shunya
(vacío) al árabe sifr (‫)صفر‬, a través del italiano. La voz española «cifra» también tiene su origen en sifr.”

El cero, el valor nulo, la ausencia de algo, el origen, el primero de los números binarios, esa será
nuestra primera cifra. La segunda cifra será el 1. Y no necesitamos más. 0 y 1 son suficientes

Números Binarios
El gran matemático Leibnitz lo explicó así en 1703:

El ajuste de cuentas común de la aritmética está hecho de acuerdo a la progresión de las decenas.
Diez caracteres son usados, los que son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, los que denotan al cero, uno y los
números sucesivos hasta el nueve inclusive. Y luego, cuando alcanzamos diez, el uno empieza de
nuevo, escribiendo diez como “10″, diez veces diez, o cien, como “100″, diez veces cien, o mil, como
“1000″, diez veces mil como “10000″, y así.
Pero en vez de la progresión de diez, he usado por muchos años la más simple progresión de todas,
la que se incrementa por dos, habiendo encontrado que es útil para la perfección de la ciencia de los
números. Así que no uso otros caracteres que el 0 y el 1, y cuando llego al dos, empiezo de nuevo.
Esto es porque el dos es expresado por “10″, y dos veces dos, o cuatro, por “100″, dos veces cuatro,
u ocho, por “1000″, dos veces ocho, o dieciseis, por “10000″, y así. Aquí está la tabla de los números
de esta manera, la cual puede ser extendida tan lejos como se desee.

Aquí, de un vistazo se hace evidente la razón para una celebrada propiedad de la progresión
geométrica de los dos en todos los números, la que establece que si uno tiene sólo uno de esos
número por cada grado, se pueden componer todos los números por debajo del grado más alto. De
aquí, si uno ha dicho, por ejemplo, que 111, ó 7, es la suma de cuatro, dos y uno, y que 1101, ó 13,
es la suma de ocho, cuatro y uno. Esta propiedad permite a los ensayadore pesar todo tipo de masas
con pocos pesos y podría servir para acuñar de modo de obtener muchos valores con pocas monedas.

Estableciendo estas expresiones de número nos permiten hacer todo tipo de operaciones muy
fácilmente.

Y estas fascinantes propiedades aritméticas tienen la ventaja de que se pueden implementar muy bien
en un dispositivo electrónico, siendo el 0 y el 1 los estados de un interruptor (o es apagado, y 1 es
encendido).

En 1937 Claude Shannon escribió su tesis doctoral donde implementó el álgebra de Boole usando
relés y conmutadores por primera vez en la historia. Esta tesis es la base de los circuitos digitales.

Dominar y manejar los números binarios es esencial para un programador profesional. Hay varios
métodos para transformar números desde la base 10 (que es la que usamos) a la base binaria o 2.
La entrada de wikipedia sobre base binaria es bastante buena para aprender lo básico sobre esta
notación. Acá sólo vamos a agregar algunos comentarios.

Primero, un dígito binario se conoce como bit, por la contracción de las palabras en inglés binary digit.
Por lo tanto un bit sólo puede tener el valor 0 ó 1. En inglés bit significa, entre otras cosas, bocado.

Cuatro digitos binarios son un nibble (mascada en inglés), sólo hay 16 nibbles que mostramos en la
siguiente tabla.

Los 16 nibbles
Base 2 Base 10 Base 16
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 11 B
1100 12 C
1101 13 D
1110 14 E
1111 15 F

En la tabla he colocado los valores expresados en otra base, en este caso la base 16, o hexadecimal,
es decir, en esa base se usan 16 caracteres, los dígitos del 0 al 9 y las letras desde la A a la F.

La ventaja de usar estos nibbles es que facilita la transformación, y la visualización de números


binarios, es por esto que esta notación es usada en muchos lenguajes de programación (cómo C,
Java, JavaScript, C#).

Veamos, FF sería 15*16 + 15 = 255. Pero sabemos que F son cuatro unos seguidos, así que FF en
binario es 11111111. Otro ejemplo, A5A5, sería 1010 0101 1010 0101.

Matriz de 8 x 8 bits

Esto es usado como un modo de crear máscaras, o señales de ceros y unos. Imaginen que quieren
construir en pantalla una L dentro de un rectángulo de 8 x 8, eso se representaría como la matriz de
la figura en la derecha.

Entonces esa matriz la representariamos por 8 grupos de 8 bits. A un grupo de 8 bits se le conoce
como byte (que suena similar a mordida en inglés). Como un byte son dos nibbles concatenados es
relativamente fácil expresar los 8 bytes que representan la L en hexadecimal: 00, 40, 40, 40, 40, 40,
7E, 00.

Esta notación también es usada actualmente para designar los colores en el diseño de páginas web.
En este caso los colores se expresan como 3 bytes, el primer byte representa al color rojo (Red), el
segundo al verde (Green) y el tercero al azul (Blue), por esto se conoce como código RGB. Cada byte
representa la intensidad de cada color, donde 0 significa que no tiene ese color, y FF que el color
tendrá la intensidad máxima (255). Por ejemplo, el color rojo se expresa: #FF0000, el verde: #00FF00,
el azul #0000FF, todos los demás colores son combinaciones de estos tres, por ejemplo, el amarillo
es rojo + verde al máximo, es decir, amarillo: #FFFF00, el naranja es #FF8000.
Dominar la notación binaria y hexadecimal es uno de los conocimientos básicos fundamentales del
programador profesional, los invito a profundizar resolviendo los ejercicios.

Ejercicios
1. ¿A cuál número decimal corresponde el siguiente número binario: 101010101010?
2. cómo se suma, multiplica, resta y divide en base decimal y ejercita esas operaciones,
¿qué ventajas le ves a este método desde el punto de los primeros creadores del
computador?
3. Averigua que es el sistema octal y que ventajas podría tener para un programador.

3. Código
Tienes unos 10 años y tu mejor amigo vive a unos pocos metros de distancia tuya, su ventana y la
tuya se enfrentan, así que en la noche puedes conversar con él, hasta que los padres avisan que hay
que “apagar la luz y acostarse”. ¡Qué lata! No sería genial tener una manera ideal de comunicarse con
tu amigo? Bueno, hoy en día los chicos de esa edad tienen un teléfono móvil, pero no muchos padres
les permiten gastarse mucho dinero en mensajes SMS, pero imaginen que estamos hablando de
chicos de hace unos años atrás, de esos que tenían que ingeniárselas para seguir conversando con
sus amiguitos en la noche. Una forma de hacerlo es con linternas.

A los 10 años ya sabes escribir, así que un modo de hacerlo es dibujando las letras en el aire con la
linterna. Un círculo grande para la O, una raya vertical para la I, dibujas la L trazando una raya hacia
abajo y otra hacia la derecha. Pero este sistema tiene un problema, al poco rato te das cuenta que es
muy difícil de seguir. Pero seguramente has visto en alguna película, o sabes que los marinos usan
unos faros, en que prenden y apagan las luces para dar señales. Se puede armar un alfabeto, si
prendes y apagas la linterna una vez entonces tienes una A, si prendes y apagas 2 veces tienes una
B, la C son 3 destellos de tu linterna, 4 destellos la D, y así, hasta la Z que serían 27 destellos. Tienes
que hacer una pausa entre letra y letra, y una pausa más larga entre palabras. De este modo, si quieres
decir “HOLA AMIGO COMO ESTAS” vas a necesitar 198 destellos (sin incluir ningún signo de
puntuación, que hemos olvidado incluir en nuestra tabla).
¿Debe haber una manera más astuta de hacer esto?, te preguntarás, y claro, la hay, alguien ya
propuso una manera de resolver el problema se conoce como Código Morse, donde se usan dos tipos
de destellos de luz, uno corto, y otro largo. Para poder escribirlo en papel se sigue la convención de
que el destello corto es un punto “.”, y el largo una raya “-”. En el Código Morse permitiría la frase
HOLA AMIGO COMO ESTAS se escribiría así:

.... — .-.. .- .- – .. –. — -.-.

Esos son 47 destellos, lo que constituye un increible ahorro. Este código tan compacto fue una
revolución en su tiempo, y era el que se usaba en el telégrafo. La sigla SOS, usada universalmente
como señal de socorro viene de que esas tres letras son las más simples de memorizar, 3 puntos, 3
rayas, 3 puntos. Hasta hace pocos años era necesario saber el código morse para sacar licencia de
radio aficionado.

Bueno, este es un ejemplo de código, y precisamente con esta historia Charles Petzold introduce el
concepto en su notable libro Code: The Hidden Language of Computer Hardware and
Software (Código: El Lenguaje Oculto del Hardware y Software del Computador).

El código es un sistema para transferir información entre las personas y entre estas y las máquinas.
Nuestro vocabulario es un tipo de código. Los sonidos que hacemos con nuestras bocas son
entendibles por quienes nos escuchen y entiendan nuestro lenguaje. Tenemos la capacidad transcribir
nuestras palabras a letras en textos impresos, como libros, blogs, incluso tweets.

Hay códigos que permiten a la gente sordomuda comunicarse, a los ciegos leer (el Braille), hay códigos
de banderas, hasta códigos que usan señales de humo.
Los computadores usan distintos tipos de códigos. Hay códigos para almacenar información, hay
códigos para transmitir información, hay códigos para ejecutar instrucciones. Y hay códigos que nos
permiten entender los códigos usados por el computador. Los lenguajes de programación son ese tipo
de códigos, son una manera de transcribir operaciones, o instrucciones que queremos darle al
computador para que ejecute.

Cuando hablamos de computadores, todo es código, en el hardware y en el software. En este blog nos
vamos a dedicar a explorar un tipo de código, el de los lenguajes de programación, cuando usemos la
palabra código nos referiremos a ese tipo de códigos, a menos que explicitemos lo contrario. Pero
codificar, es decir, escribir el código, los símbolos, es sólo una parte del arte de programar. En inglés
codificar se dice “coding”, y se usa como una suerte de sinónimo de “programming”, para mi programar
es mucho más que codificar en algún lenguaje de programación. Espero que ustedes lleguen a
apreciar la diferencia.

Ejercicios
1. Asume que un punto en código morse se representa con el número 0 (cero) y la raya con
el número 1, transcribe el mensaje en código Morse de más arriba a la representación
binaria. Usa la tabla de nibbles que mostramos en 2. Partir desde cero, y expresa el
mensaje en hexadecimal.
2. Si usamos la regla de representar el punto como un cero, y la raya como un 1, ¿cuantos
bits se necesitan para representar cada letra? ¿Qué problemas tiene esta codificación?
¿Cómo los solucionarías?
3. un código que representen las letras del alfabeto, los 10 dígitos, y algunos símbolos y
codifícalos en grupos de 6 bits.
4. El lenguaje apropiado
Elegir el lenguaje apropiado para aprender a programar no es tarea fácil. Cualquier decisión puede ser
objetada por diversas razones. En 1. Mi primer programausamos javascript pues es, probablemente,
el lenguaje de programación más difundido al estar disponible en todo navegador de internet. Sin
embargo, aunque javascript es un lenguaje poderoso y se puede desarrollar perfectamente con él (a
niveles que muchos programadores profesionales no sospechan), puede no ser el más apropiado para
dar nuestros primeros pasos en la programación. Por otro lado, mi objetivo es enseñar buenas
prácticas, y tecnologías modernas que están disponibles al programador.

Por experiencia sé que no existe el lenguaje de programación perfecto. La elección de un lenguaje


para resolver un problema dependerá de un montón de factores, incluso algunos ni siquiera son
razones técnicas. No quiero cortarles las alas a nadie, y me gustaría que lo que aprendan en este blog
sirva a aquel profesional que trabaja en ambientes corporativos, como en una startup, usando el stack
de Microsoft, o Java, e incluso para el aspirante a hacker que desea contribuir al kernel de linux
programando C.

En este blog no hay lenguaje superior al otro, son todos distintos, y todos presentan oportunidades y
desafíos interesantes de abordar. Así que este blog irá progresivamente seleccionando diversos
lenguajes de programación según los proyectos en los que nos embarquemos.

Pero debemos partir con lo básico, y debemos elegir un lenguaje para dar nuestros primeros pasos.
C# y Java son muy buenos candidatos, pero tienen ciertas complejidades que pueden ser distractivas
para una persona que está dando sus primeros pasos en la programación.

Un lenguaje dinámico es una buena alternativa para empezar a programar, y consideré Groovy, Ruby
y Python. La elección es este último, por la simple razón de que es el que más domino de los tres.
Pero no se preocupen, en este blog exploraremos muchos de los miles de lenguajes de programación
que existen, porque los fundamentos de la programación son esencialmente los mismos.

Ahora, ¿cómo acceder a Python? Es probable que si usas alguna variable de Linux, y en particular
Ubuntu ya cuentes con Python. Si usas Windows deberás instalarlo. La versión oficial de Python se
puede obtener de www.python.org.

No voy a escribir un tutorial sobre cómo instalar y configurar python, eso es un ejercicio para tí lector.
Una de las habilidades de un buen programador es aprender a buscar los recursos adecuados en la
red sobre estas cosas, y saber leerlas y ejecutarlas. Les voy a dejar este enlace donde explican como
instalar Python en distintos ambientes.

Otra cosa, muy importante, actualmente hay 2 versiones vigentes de Python, la 2.7 y la 3.2. Este curso
está orientada a la versión 3.2 de Python, que es la versión estable en este momento (marzo de 2011).
Así que adelante, instalen y configuren su ambiente Python, que se acerca el momento de aprender
verdaderamente a programar.

Ejercicios
1. Descarga e instala python 3.2 en tu sistema.
2. Una vez que hayas instalado python en tu sistema escribe el siguiente programa en python:
3. print "Hola Mundo";

Si todo está bien deberías ver el mensaje “Hola Mundo” en tu pantalla.

4. Averigua un poco de la historia de Python y en qué tipo de aplicaciones es usado.


5. Primeros pasos en Python
Vamos a empezar a usar python como nuestro entorno de programación. Python provee un ambiente
interactivo llamdo IDLE y es el que vamos a usar en nuestros primeros pasos.

Yo usaré Linux (Ubuntu o Fedora) y Windows 7 como mis sistemas operativos para este curso. En
todos ellos voy a instalar Python 3.2.

En Ubuntupuedes instalar Python IDLE usando el Ubuntu Software Center. En Windows descargas el
instalador de Python 3 en www.python.org/download.

Se puede invocar IDLE directamente desde el menú del sistema operativo.

En Ubuntu:

Invocando IDLE en Ubuntu (click para agrandar)


En Windows 7:

Invocando IDLE en Windows 7 (click para agrandar)

Bien, IDLE provee una consola en blanco, en las primera linea nos muestra información sobre la
versión de python disponible.

En mi ambiente linux sale lo siguiente:

Python Python 3.1.2 (release31-maint, Sep 17 2010, 20:34:23)


[GCC 4.6.0 20110212 (Red Hat 4.6.0-0.7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

En mi ambiente windows sale:

Python 3.2 (r32:88445, Feb 20 2011, 21:30:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>

El símbolo >>> es el prompt, y nos indica que está esperando que ejecutemos una instrucción.

Python como calculadora


Ahora vamos a usar este ambiente IDLE como una calculadora.

Escribe 2 + 2 después del prompt y luego presiona la tecla enter (la que aparece destacada en la
imagen).:

>>> 2 + 2

Si todo sale bien tu pantalla se verá así:

>>> 2 + 2
4
>>>

IDLE ejecuta la expresión que viene después del prompt y entrega el resultado en la linea siguiente.
Si recuerdas al principio decíamos que un programa procesa una entrada (INPUT) para producir una
salida (OUTPUT), pues bien, IDLE es un programa que procesa las entradas que corresponden a los
comandos que ingresamos después del prompt (>>>) y entrega la salida a continuación, que en este
caso es el resultado de convertir esos comandos a expresiones python.

Probemos otras expresiones:

>>> 2 * 3
6
>>> 2*3+4
10
>>> (2*3)+4
10
>>> 2*(3+4)
14

A estas alturas ya debería haber descubierto que el signo ‘*’ (asterisco) corresponde a la multiplicación,
a diferencia de la notación matemática en que se usa una x o un punto (‘.’).
La razón por la que no se usa el punto para multiplicar es simple, el punto se usa para designar los
decimales:

>>> 2 * 3.1415
6.283
>>> 2000 * 3.1415
6283.0

Fíjense 2 cosas, los números por sobre el mil no se separan con ningún caracter especial (como el
punto, o la coma), es decir, “un millón quinientos mil cuatrocientos treinta y dos con veintitres
centésimos” se escribe “1500432.23″.

La segunda cosa es más sutil, pero más importante, cuando multiplicamos por un número con
decimales el resultado aparece siempre expresado cómo un numero con decimales (es decir, lleva el
punto ‘.’).

Veamos:

>>> 2 * 3
6
>>> 2 * 3.0
6.0

En el primer caso tenemos dos números enteros y el resultado es otro número entero. En el segundo
caso tenemos un número entero multiplicado por un número real y el resultado es un número real.

Veamos la división:

>>> 2 / 3
0.6666666666666666
>>> 12 / 4
3.0

Fíjense en este caso, el resultado de 2/3 es un número real y aparece como tal, lo que está bien, pero
en el caso de 12 / 4, tenemos 2 números enteros y sabemos que el resultado es un número entero,
pero python entrega cómo resultado un número real. La razón es que python tiene 2 tipos de divisiones,
la división real que se expresa con el símbolo ‘/’ y la división entera que se expresa con el símbolo ‘//’.

>> 2 // 3
0
>>> 12 // 4
3

La división entera trunca el resultado “redondeando hacia abajo”. Hay otros detalles con la división,
pero los vamos a dejar para que los averigüen en los ejercicios.

A los símbolos +, /, // y * los llamamos operadores.


Toda calculadora decente tiene una o más teclas con una M, se le llama la memoria, y la usamos para
almacenar resultados intermedios cuando hacemos cálculos más complicados. Los lenguajes de
programación tienen esta facilidad, pero es mucho mejor, porque tienen la capacidad de crear todas
las “memorias” que necesitemos.

Para almacenar valores tenemos lo que llamamos variables.

Veamos el siguiente ejemplo.

>>> pi = 3.1415
>>> 2 * pi
6.283
>>> 3 * pi
9.4245
>>> pi + pi
6.283
>>> pi - pi
0.0
>>> pi
3.1415

La expresión pi = 3.1415 corresponde a lo que llamamos una asignación. Con esto estamos creando
una variable que se llama pi cuyo valor será 3.1415. Una vez establecida esta variable la podemos
usar una y otra vez en nuestra sesión en IDLE. A diferencia de algunas calculadoras la variable se
pierde al salir de IDLE. Fíjense que cuando se declara una variable python no responde nada después
del prompt.

Acumuladores

Las calculadoras tienen unas teclas marcadas M+ ó M-. M+ suma el valor ingresado a lo que ya hay
en memoria, en el caso de M- se resta de lo que hay en memoria.

Podemos usar las variables para hacer esto, podemos crear una variable donde vamos acumulando
los resultados.

>>> suma = 0
>>> suma += 10
>>> suma += pi
>>> suma += pi * 2
>>> suma
19.424500000000002

Fíjense que después de declarar la variable suma usamos el símbolo ‘+=’, esto es equivalente a apretar
la tecla M+ en nuestra calculadora, hay otra manera de hacer lo mismo:

>>> suma = 0
>>> suma = suma + 10
>>> suma = suma + pi
>>> suma = suma + pi * 2
>>> suma
19.424500000000002

Pero el símbolo += es más comodo ;) .

Hagamos restas:

>>> saldo = 1000


>>> saldo = saldo - 10
>>> saldo -= 50
>>> saldo
940

Ahora recordarás que existen los números negativos. Estos se denotan igual que en matemáticas,
colocando un guión delante del número:

>>> -4
-4
>>> -saldo
-940

Como ves, una variable puede ser usada donde colocas un número, en este caso -saldo es lo mismo
que -940 (que es el último valor que tenía la variable saldo).

Cuando usamos estas variables para sumar (o restar) varios valores de una serie las llamamos
acumuladores, saldo y suma son acumuladores.

Las calculadoras tienen una tecla MC que limpia el valor de la memoria.

En python podemos dejar la variable en 0, simplemente asignando un 0, pero también podemos


eliminar totalmente la variable usando la instrucción del:

>>> saldo
940
>>> saldo = 0
>>> saldo
0
>>> del saldo
>>> saldo

Traceback (most recent call last):


File "<pyshell#58>", line 1, in <module>
saldo
NameError: name 'saldo' is not defined

Lo que hace la instrucción del es eliminar totalmente una variable, por esto que al tratar de visualizar
su valor genera un error en python.

Suficiente por hoy, con esto hay bastante para practicar. Has aprendido sobre las expresiones en
python, como usar IDLE como una calculadora interactiva, como declarar variables y aprendimos que
hay una clase especial de variables que se llaman acumuladores.

Ejercicios
1. Averigua que pasa cuando usas el operador de división entera (//) con números reales (por ejemplo 1.0
// 3.0).
2. Calcula el promedio de 3 ramos o materias (por ejemplo, matemáticas, lenguaje e historia) en 3
acumuladores distintos, luego calcula tu promedio general.
3. Si tienes acceso a python 2 prueba los ejemplos de este capítulo e investiga por qué hay diferencias.
4. Prueba el operador ** (por ejemplo 2 ** 3) y averigua qué hace.
5. Prueba el operador % (por ejemplo, 12 % 10, o 23 % 15) y averigua para que sirve.
6. Así como existen los operadores += y -= que usamos en nuestros acumuladores existen los
operadores *=, /=, **=, //=. Pruébalos.
6. Comparaciones y expresiones lógicas
Volvamos a IDLE y hagamos algunos experimentos.

>>> n = 10
>>> n
10
>>> n > 0
True
>>> n < 0
False

La primera expresión es familiar, corresponde a la asignación de una variable, en este caso n, con el
valor 10. La segunda expresión nos permite ver el valor de n. Luego comparamo n con 0, es decir,
queremos ver si n es mayor que 0, lo que es cierto, python responde con el valor True (verdadero en
inglés). Por el contrario, al escribir n < 0 obtenemos el valor False (falso en inglés).

Con esto podemos practicar expresiones lógicas, como la comparación de números. Veamos más
ejemplos:

>>> a = 10
>>> b = 20
>>> a > b
False
>>> a < b
True
>>> a <= 10
True
>>> a >= 10
True
>>> a+b <= 30
True
>>> a <= 30 - b
True
>>> a -b >= 30
False
>>> a == b
False
>>> a == 10
True
>>> b == 10
True
>>> a != b
True

Notarán que podemos tener expresiones a ambos lados del operador de comparación. En los ejercicios
de arriba hemos introducido dos operadores más: ‘==’ y ‘!=’. El operador ‘==’ es comparación de
igualdad, ‘a == b’ se lee ‘a es igual a b’. A diferencia de las matemática usamos el símbolo == porque
ya usamos el signo = para asignar variables. El símbolo != es el de desigualdad, ‘a != b’ se lee ‘a es
distinto a b’.
Las expresiones de este tipo se conocen como expresiones lógicas, o expresiones booleanas. Las
expresiones lógicas sólo tienen dos valores: verdadero (True) o falso (False). Al igual que las
expresiones aritméticas las podemos almacenar en variables:

>>> a = 10
>>> b = 20
>>> c = a > b
>>> c
False

Esta posibilidad de almacenar valores booleanos en variables es poderosa pues nos habilita para
poder hacer cosas más complejas que iremos aprendiendo en las próximas lecciones, por ahora
sigamos experimentando con nuestras variables. Prueba lo siguiente:

>>> a = 10
>>> b = 20
>>> c = a > b
>>> d = a < b
>>> c, d
(False, True)
>>> not c
True
>>> not d
False

El operador ‘not’ niega el valor de una variable booleana, si la variable x es True entonces ‘not x’
devolverá False.

Volvamos a las comparaciones:

>>> i = 10
>>> j = 20
>>> k = 30
>>> i < j < k
True

En python podemos escribir una cadena de comparaciones como la de arriba sin ningún problema, en
otros lenguajes esto no es posible y la expresión anterior se debe escribir de la siguiente forma:

>>> i = 10
>>> j = 20
>>> k = 30
>>> i < j and j < k
True
>>> (i < j) and (j < k)
True

Esto es equivalente, el operador ‘and’ (y) nos permite unir dos expresiones lógicas.

Fíjense en esto:
>>> llueve = True
>>> esta_mojado = True
>>> llueve and esta_mojado
True

Esta es la forma en que escribimos en python la frase “llueve y está mojado”.

Nota

Algo que no mencioné anteriormente es que los nombres de las variables deben seguir ciertas reglas,
los nombres de las variables deben contener una combinación de letras (‘a’..’z’ o ‘A’..’Z’), el signo ‘_’ y
los dígitos ‘0’ al ‘9’, pero no deben comenzar con un dígito.

Ejemplos de variables: suma, monto, neto, llueve, esta_mojado, ya_no_llueve, matadero5, _nombre.
Estos no son nombres de variables válidos: 60minutos, 1hora, 0_variable.

Python considera como distintas a las variables dependiendo si se escriben con mayúsculas o
minúsculas. Es decir, la variable A es distinta a la variable a.

Otro operador boolean es or, veamos su uso:

>>> esta_despejado = True


>>> esta_lloviendo = False
>>> esta_despejando or esta_lloviendo
True

Tanto and como or cumplen ciertas reglas definidas en algo que se llama el álgebra de bool, algo que
estudiaremos más adelante (no se asusten, no es tan terrible a pesar de que se llama algebra).

Una cosa interesante es que el valor True se comporta como el valor 1, y el valor False se comporta
como el valor 0.

Es decir, podemos usarlos en expresiones aritméticas.

>>> a = 2
>>> b = 4
>>> c = a < b
>>> d = a > b
>>> (a+b) * c + (a-b) * d
6

En este caso, c == True y d == False, (a+b) == 6 y 6 * True == 6 * 1 == 6. Por otro lado, d == False y
(a-b) == -2 y -2 * False == -2 * 0 == 0.

Ahora vienen los ejercicios, hazlos y experimenta que pasa con todos ellos.

Ejercicios
1. ¿Qué pasa cuando ingresas las siguientes expresiones en IDLE?:
2. >> 2 + 3 < 2 * 3 or 6 < 10
3. ?????
4. >>> (2+3 < 2) * (3 or 6 < 10)
5. ?????
6. >>> a = 2 < 4
7. ?????
8. >>> b = 2 >= 4
9. ?????
10. >>> a * b

?????

11. Prueba todas las combinaciones que siguen y anótalas en una tabla:
12. >>> True and True
13. ?????
14. >>> True and False
15. ?????
16. >>> False and True
17. ?????
18. >>> False and False
19. ?????

20. Prueba todas las combinaciones que siguen y anótalas en una tabla:
21. >>> True or True
22. ?????
23. >>> True or False
24. ?????
25. >>> False or True
26. ??????
27. >>> False or False
28. ?????

29. ¿Qué pasa si hace False < True o True >= False?
30. ¿Qué pasa cuando comparas False con distintos números? ¿y cuando comparas True con
distintos números?
31. En la lección anterior aprendimos que hay números enteros y números reales. Los números
enteros en python pertenecen a una clase de números llamada int, los números reales
pertenecen a otra clase de números llamada float. True y False pertenecen a la clase bool. Para
determinar la clase de un número o variable se usa la función type(), úsala en los siguientes
experimentos:
32. >>> type(10)
33. ?????
34. >>> type(10.0)
35. ?????
36. >>> type(False)
37. ?????
38. >>> type(True)
39. ?????
40.
41. El resultado de la función type(expresión) es conocida como el tipo de la expresión.

42. Prueba estas expresiones:


43. >>> type(10) == type(10.0)
44. >>> type(10+20) == type(10)
45. >>> type(10+20) == type(10<20)
46. Una forma alternativa de probar el tipo de una expresión es usando el operador ‘is’. Prueba
estas expresiones:
47. >>> type(10) is int
48. ?????
49. >>> type(10.0) is float
50. ?????
51. >>> type(10<20) is bool
52. ?????
53. >>> type(False) is bool
54. ?????
55. >>> type(False) is int

?????
7. Cadenas de caracteres
Los 140 caracteres que usas para escribir un tweet, el texto que escribes en tu estado en facebook,
un mensaje de texto enviado desde tu teléfono móvil, un correo elestrónico, el texto de este post, una
novela, una entrada en wikipedia, este mismo párrafo, todos esos son cadenas de caracteres. A una
cadena de texto los programadores las llamamos string. Cada uno de los elementos de la cadena es
un carácter.

Considera la cadena “PYTHON”, contiene 6 caracteres. El primer carácter es la P, el último carácter


es la N. En python los caracteres se escriben entre comillas, para diferenciarlos de las variables y los
números.

Vamos a IDLE:

>>> 'hola'
'hola'
>>> "mundo"
'mundo'
>>> 'hola' "mundo"
'holamundo'

Cuando colocamos dos strings uno junto a otros python los concatena, es decir, junta ambos textos
para formar un único string. Fíjense que aunque hay un espacio entre medio de ‘hola’ y “mundo”,
python sólo considera lo que está entre comillas.

Notarán que se puede usar indistintamente las comillas dobles (“”) o las comillas simples (”). Esta
posibilidad sirve mucho cuando uno es irlandés ;) , veamos:

>>> 'hello Dolores O'Riordan'


SyntaxError: invalid syntax (<interactive input>, line 1)
>>> "hello Dolores O'Riordan"
"hello Dolores O'Riordan"
>>> 'La princesa dijo "¡No!"'
'La princesa dijo "¡No!"'

Pero también puedes escribir las comillas dentro de un string de otra forma:

>>> "hello Dolores O\'Riordan"


"hello Dolores O'Riordan"
>>> "La princesa dijo \"¡No!\""
'La princesa dijo "¡No!"'

El símbolo ‘’ (backslash) se conoce como carácter de escape, y nos permite escribir algunos caracteres
no visibles. Ya volveremos a esto más adelante.

Los strings pueden ser asignados a variables, y tienen sus propios tipos de expresiones:

>>> cantante = "Dolores O'Riordan"


>>> grupo = "Cranberries"
>>> pais = "Irlanda"
>>> cantante + ' es la vocalista del grupo ' + grupo + ' y vienen de '+pais
"Dolores O'Riordan es la vocalista del grupo Cranberries y vienen de Irlanda"

Cuando aplicamos el operador ‘+’ a los strings hablamos de la operación de concatenación.

Otra operación posible con los strings es la repetición:

>>> 'zombie ' + 'eh '*3


'zombie eh eh eh '

Al partir hablamos de que ‘P’ era el primer carácter del string ‘PYTHON’. Como es una cadena de
caracteres podemos acceder a cada uno de sus ‘eslabones’ usando el operador de indexación [], del
siguiente modo:

>>> 'PYTHON'[0]
'P'
>>> cantante[0]
'D'

Del mismo modo podemos acceder a segmentos del string (substrings) usando el operador [] del
siguiente modo:

>>> 'PYTHON'[0:3]
'PYT'
>>> cantante[2:4]
'lo'

Hay que entender que el operador indice nos permite acceder al elemento cuya posición es la que
indicamos entre paréntesis, el índice parte desde 0, así que [0] accede al primer elemento del string,
[1] al segundo, y así.

Cuando entregamos un rango [a:b], solicitamos que se acceda al substring que parte en la posición a
hasta antes de la posición b, por eso al hacer cantante[2:4] obtenemos el tercer y cuarto caracteres
del string cantante (para que se entienda, he encerrado entre [] los caracteres obtenidos: “Do[lo]res
O’Riordan”).

Existe un string especial, es el string vacío, que no tienen caracteres, se designa colocando dos
comillas juntas: “” o ”. Veamos si podemos “acumular strings”:

>>> cancion = ""


>>> cancion += "When the violence "
>>> cancion += "causes silence, "
>>> cancion += "we must be mistaken "
>>> cancion
Bien, todo esto es muy interesante, pero es tu turno de explorar. La mejor forma de aprender a
programar es practicando, así que haz los siguientes

Ejercicios
1. Escribe distintos strings y asígnalos a variables, luego concaténalos entre sí, prueba
acumulando strings. Puedes partir con estos ejemplos:
2. >>> estrofa = ""When the violence causes silence ">>>
3. estribillo = ""What's in your head, in your head ">>>
4. estribillo += "zombie "*4
5. >>> cancion = estrofa + estribillo

6. Prueba expresiones de comparación entre strings, por ejemplo:


7. >>> a = 'PYTHON'
8. >>> b = 'python'
9. >>> a == b
10. ?????
11. >>> a != b
12. ?????
13. >>> a != b
14. ?????
15. >>> a <= b
16. ???

17. ¿Qué pasa si concatenas strings con números?


18. >>> 'PYTHON' + 3
19. ?????
20. >>> 'PYTHON' + 3.1415
21. ?????

22. Luego prueba con lo siguiente:


23. >>> 'PYTHON' + str(3)
24. ?????
25. >>> 'PYTHON' + str(3.1415)
26. ?????

27. ¿Qué puedes concluir que hace la función str()?


28. Que ocurre al ejecutar estas instrucciones?
29. >>> "3" + 3
30. ?????
31. >>>int("3")+3
32. ?????
33. >>>"3"+str(3)
34. ?????

35. ¿Qué pasa cuando usas indices negativos? Ejemplo: ‘PYTHON’[-1]. Prueba omitiendo parte del
rango, por ejemplo, ‘PYTHON’[3:] o ‘PYTHON’[:3]

You might also like