Вы находитесь на странице: 1из 28

1 De 29

1. Introduccin como obtener el


lenguaje Python
Computadores
El diccionario de la Real Academia define computador electrnico como
Maquina electrnica, analgica o digital, dotada de una memoria de gran
capacidad y de mtodos de tratamiento de la informacin, capaz de resolver
problemas maten ticos y lgicos mediante la utilizacin automtica de
programas informticos.La propia definicin nos da indicaciones acerca de
algunos elementos bsicos del computador:
la memoria,
y algn dispositivo capaz de efectuar clculos maten ticos y lgicos.

La memoria es un gran almacn de informacin. En la memoria almacenamos todo tipo de
datos: valores numricos, textos, imgenes, etc. El dispositivo encargado de efectuar
operaciones maten ticas y lgicas, que recibe el nombre de Unidad Aritmetico-
Logica(UAL), es como una calculadora capaz de trabajar con esos datos y producir, a partir
de ellos, nuevos datos (el resultado de las operaciones). Otro dispositivo se encarga de
transportar la informacin de la memoria a la UAL, de controlar a la UAL para que
efectelas operaciones pertinentes y de depositar los resultados en la memoria: la Unidad
de Control. El conjunto que forman la Unidad de Control y la UAL se conoce por Unidad
Central de Proceso (o CPU, del inglesCentral Procesan Unir).Podemos imaginar la
memoria como un armario enorme con cajones numerados y la CPU como una persona
que, equipada con una calculadora (la UAL), es capaz de buscaroperandos en la memoria,
efectuar clculos con ellos y dejar los resultados en la memoria.
2 De 29
1. Introduccin como obtener el
lenguaje Python
Codificacin de la informacin
Una codificacin asocia signos con los elementos de un conjunto a los que denominamos significados.
En occidente, por ejemplo, codificamos los nmeros de cero a nueve con el conjunto de signos {0 1 2
3 4 5 6 7 8 9}. Al hacerlo, ponemos en correspondencia estos smbolos con cantidades, es decir, con
su significado: el smbolo 6 representa ala cantidad seis. El conjunto de signos no tiene por que
ser finito. Podemos combinarlos dgitos en secuencias que ponemos en correspondencia con, por
ejemplo, los nmeros naturales. La sucesin de dgitos 99 forma un nuevo signo que asociamos a
la cantidad noventa y nueve. Los ordenadores solo tienen dos signos bsicos, {0 1}, pero se pueden
combinar en secuencias, as que no estamos limitados a solo dos posibles significados. Una variable
que solo puede tomar uno de los dos valores binarios recibe el nombre de bit (acrnimo del ingles
binar digita). Es habitual trabajar con secuencias de bits de tamao fijo. Una secuencia de 8 bits
recibe el nombre de byte (aunque en espaol extermino correcto es octeto, este no acaba de
imponerse y se usa la voz inglesa). Con una secuencia de 8 bits podemos representar 256 (28)
significados diferentes. El rango [0 255]de valores naturales comprende 256 valores, as que podemos
representar cualquiera de ellos con un patrn de 8 bits. Podramos decidir, en principio, que la
correspondencia entre bytes y valores naturales es completamente arbitraria. As, podramos decidir
quela secuencia 00010011 representa, por ejemplo, el numero natural 0 y que la secuencia01010111
representa el valor 3. Aunque sea posible esta asociacin arbitraria, no es deseable, pues complica
enormemente efectuar operaciones con los valores. Sumar, por ejemplo, obligara a tener memorizada
una tabla que dijera cual es el resultado de efectuarla operacin con cada par de valores, y hay 65536
pares diferentes!
3 De 29
1. Introduccin como obtener el
lenguaje Python
Programas y lenguajes de programacin
Antes de detenernos a hablar de la codificacin de la informacin estbamos comentando que la
memoria es un gran almacn con cajones numerados, es decir, identificables con valores
numricos: sus respectivas direcciones. En cada cajn se almacena una secuenciada bits de
tamao fijo. La CPU, el cerebro del ordenador, es capaz de ejecutar acciones especificadas
mediante secuencias de instrucciones. Una instruccin describe una accin muy simple, del
estilo de suma esto con aquello, multiplica las cantidades que hay en tal y cual posicin
de memoria, deja el resultado en tal direccin de memoria, hazaa copia del dato de
esta direccin en esta otra direccin, averigua si la cantidad almacenada en determinada
direccin es negativa, etc. Las instrucciones se representan mediante combinaciones
particulares de unos y ceros (valores binarios) y, por tanto, se pueden almacenar en la
memoria. Combinando inteligentemente las instrucciones en una secuencia podemos hacer que
la CPU ejecute clculos ms complejos. Una secuencia de instrucciones es un programa. Si hay
una instruccin para multiplicar pero ninguna para elevar un numero al cubo, podemos
construir un programa que efectu este ultimo calculo a partir de las instrucciones disponibles.
He aqu, grosso modo, una secuencia de instrucciones que calcula el cubo apartar de productos:
1. Toma el nmero y multiplcalo por s mismo.
2. Multiplica el resultado de la ultima operacin por el numero original.
4 De 29
1. Introduccin como obtener el
lenguaje Python
Hay una solucin intermedia: podemos disear lenguajes de programacin que, sin ser tan
potentes y expresivos como los lenguajes naturales, eliminen buena parte de la complejidad
propia de los lenguajes ensambladores y estn bien adaptados al tipo de problemas que
podemos resolver con los computadores: los denominados lenguajes de programacin de alto
nivel. El calificativo de alto nivel seala su independencia de un ordenador concreto. Por
contraposicin, los cdigos de maquina y los lenguajes ensambladores sede nominan
lenguajes de programacin de bajo nivel. He aqu el programa que calcula la media de tres
nmeros en un lenguaje de alto nivel tpico (Python):



Las tres primeras lneas definen los tres valores y la cuarta calcula la media. Como puedes
ver, resulta mucho ms legible que un programa en cdigo de maquina o en un lenguaje
ensamblador. Para cada lenguaje de alto nivel y para cada CPU se puede escribir un programa
queso encargue de traducir las instrucciones del lenguaje de alto nivel a instrucciones de
cdigo de maquina, con lo que se consigue la deseada independencia de los programas con
respecto a los diferentes sistemas computadores. Solo habr que escribir una versin del
programa en un lenguaje de programacin de alto nivel y la traduccin de ese programaal
cdigo de maquina de cada CPU se realizar automaticamente.

5 De 29
2. Una calculadora avanzada
Cuando programamos utilizamos un conjunto de herramientas al
que denominamos entorno de programacin. Entre estas
herramientas tenemos editores de texto (que nos permiten escribir
programas), compiladores o interpretes (que traducen los
programas a cdigo de maquina), depuradores (que ayudan a
detectar errores), analizadores de tiempo de ejecucin (para
estudiar la eficiencia de los programas), etc. Los lenguajes
interpretados suelen ofrecer una herramienta de ejecucin
interactiva. Con ella es posible dar ordenes directamente al
interprete y obtener una respuesta inmediata para cada una de
ellas. Es decir, no es necesario escribir un programa completo para
empezar a obtener resultados de ejecucin, sino que podemos
dialogar con el interprete de nuestro lenguaje de programacin:
le pedimos que ejecute una orden y nos responde con su resultado.
El entorno interactivo es de gran ayuda para experimentaron
fragmentos de programa antes de incluirlos en una versin
definitiva. En esta seccin veremos como realizar sesiones de
trabajo interactivo con Python.1
6 De 29
2.1 Tipos de datos
Enteros y flotantes
Cada valor utilizado por Python es de un tipo determinado. Hasta el
momento solo hemos utilizado datos de tipo entero, es decir, sin
decimales. Cuando se efecta una operacion,Python tiene en cuenta
el tipo de los operando a la hora de producir el resultado. Silos dos
operando son de tipo entero, el resultado tambin es de tipo entero,
as que la divisin entera entre los enteros 3 y 2 produce el valor
entero 1.Si deseamos obtener resultados de tipo real, deberemos usar
operando reales. Losoperandos reales deben llevar, en principio, una
parte decimal, aunque esta sea nula.
7 De 29
2.1 Tipos de datos
Hay tres operadores lgicos en Python: la y
lgica o conjuncin (and), la o lgica o
disyuncin (ir) y el no lgico o negacin
(nota).El operador and da como resultado el valor
cierto si y solo si son ciertos sus despernados.
Esta es su tabla de verdad:
El operador ir proporciona True si cualquiera
de sus operando es True, y False solaceando
ambos operando son Falses. Esta es su tabla
de verdad:
El operador nota es unario, y proporciona el
valor True si su operando es False y
viceversa. He aqu su tabla de verdad:
8 De 29
2.2 Funciones predefinidas
Hemos estudiado los operadores aritmticos bsicos. Python
tambin proporciona funciones que podemos utilizar en las
expresiones. Estas funciones se dice que estn predefinidas. La
funcin ABS, por ejemplo, calcula el valor absoluto de un
numero. Podemos usarla como en estas expresiones:


El numero sobre el que se aplica la funcin se denomina
argumento. Observa que el argumento de la funcin debe ir
encerrado entre parntesis:
9 De 29
3. Entrada y salida de datos,
print, formatos, grficos
Los programas que hemos visto en la seccin anterior adolecen
de un serio inconveniente:
cada vez que quieras obtener resultados para unos datos
diferentes debers editar el fichero de texto que contiene el
programa.
Por ejemplo, el siguiente programa calcula el volumen de una
esfera a partir de su radio, que es de un metro:





Aqu tienes el resultado de ejecutar el programa:
10 De 29
4. Estructuras de control
Los programas que hemos aprendido a construir hasta el
momento presentan siempre una misma secuencia de
acciones:
Se piden datos al usuario (asignando a variables valores
obtenidos con raw_input).
Se efectan clculos con los datos introducidos por el
usuario, guardando el resultado en variables (mediante
asignaciones).
Se muestran por pantalla los resultados almacenados en
variables (mediante la sentencia print).

11 De 29
4.1 Sentencias condicionales
Veamos un ejemplo. Diseemos un programa para resolver cualquier
ecuacin de primer grado de la forma
ax + b = 0
donde x es la incgnita.

Antes de empezar hemos de responder a dos preguntas:
1. Cuales son los datos del problema? (Generalmente, los datos del
problema se pedirn al usuario con raw_input.)
En nuestro problema, los coeficientes y son los datos del problema
2. Que deseamos calcular? (Tpicamente, lo que calculemos se mostrar 'a al
usuario mediante una sentencia print.)Obviamente, el valor de x.

Ahora que conocemos los datos de entrada y el resultado que hemos
de calcular, es decir, los datos de salida, nos preguntamos: cmo
calculamos la salida a partir de la entrada? En nuestro ejemplo,
despejando x de la ecuacin llegamos a la conclusin de que x se
obtiene calculando b/a.

12 De 29
4.1 Sentencias condicionales
Siguiendo el esquema de los programas que sabemos hacer,
procederemos as:
1. Pediremos el valor de a y el valor de b (que supondremos de tipo
flotante).
2. Calcularemos el valor de como b/a.
3. Mostraremos por pantalla el valor de x.
Escribamos el siguiente programa en un fichero de texto llamado
primer- grado.py:




Las lneas se ejecutan en el mismo orden con el que aparecen en
el programa.
13 De 29
4.2 Sentencias Iterativas
A 'un vamos a presentar una ultima reflexin sobre el programa de
los mens. Cuando el usuario no escoge correctamente una opcin
del men el programa le avisa, pero finaliza inmediatamente. Lo ideal
seria que cuando el usuario se equivocara, el programa le pidiera de
nuevo una opcin. Para eso seria necesario repetir la ejecucin de las
lneas 1121.
Una aproximacin naif consistira, bsicamente, en aadir al final una
copia de esas lneas precedidas de un if que comprobara que el
usuario se equivoco. Pero esa aproximaciones muy mala: que
pasara si el usuario se equivocara una segunda vez? Cuando decimos
que queremos repetir un fragmento del programa no nos referimos a
copiarlo de nuevo, sino a ejecutarlo otra vez. Pero, es posible
expresar en este lenguaje que queremos queso repita la ejecucin de
un trozo del programa?
Python permite indicar que deseamos que se repita un trozo de
programa de dos formas distintas: mediante la sentencia chile y
mediante la sentencia for. La primera de ellas es ms general, por lo
que la estudiaremos en primer lugar.
14 De 29
4.2 captura y tratamiento de
excepciones
15 De 29
4.4 Algunos ejemplos grficos
Nuestro objetivo ahora es utilizar las funciones graficas
predefinidas para representar la funcin seno entre 2 y
2. Vamos a empezar definiendo el nuevo sistema de
coordenadas con una llamada a window_coordinates(x1, y1,
x2, y2). Esta claro que x1 valdr 2 y x2 valdr 2. Que
valores tomaran y1 e y2? La funcin seno toma valores
entre 1 y 1, as que esos son los valores que asignaremos
a y1 e y2, respectivamente.

Recuerda que, en el sistema de coordenadas del lienzo, la
esquina inferior izquierda es el punto (0,0) y la esquina
superior derecha es el punto (1000,1000). Si dibujamos
directamente valores de la funcin seno, no apreciaremos el
aspecto ondulado que esperamos: el valor mximo del seno
es 1, que sobre 1000 es un valor muy pequeo, y el valor
mnimo es 1, que ni siquiera se mostrar en pantalla.
16 De 29
4.4 Algunos ejemplos grficos
Hay una funcin predefinida que
nos permite cambiar el sistema de
coordenadas, window_coordinates,
y otra que nos permite cambiar el
tamao del lienzo, window_size.
window_coordinates(x1, y1, x2, y2):
Cambia el sistema de coordenadas
del lienzo. La esquina inferior
izquierda pasa a tener coordenadas
(x1,y1) y la esquina superior
derecha pasa a tener coordenadas
(x2, y2).
window_size(x , y): Cambia el
tamao del lienzo, que pasa a tener
una anchura de pxeles y una altura
de pxeles.
Empezaremos ajustando las
dimensiones del lienzo, su sistema de
coordenadas y dibujando algunos
puntos de la funcin seno:

17 De 29
5. Tipos de estructurados:
cadenas, listas, matrices
Longitud de una cadena: numero de caracteres
que la forman.


Hay una cadena que merece especial atencin,
la cadena que denotamos abriendo y cerrando
inmediatamente las comillas simples, , o
dobles, "", sin ningn carcter entre ellas.
Qu valor devuelve len()?
La cadena se denomina cadena vaca y tiene
longitud cero. No confundas la cadena vaca, ,
con la cadena que contiene un espacio en
blanco, , pues, aunque parecidas, no son
iguales. Fjate bien en que la segunda cadena
contiene un carcter (el espacio en blanco) y,
por tanto, es de longitud 1. Podemos
comprobarlo fcilmente:
18 De 29
5. Tipos de estructurados:
cadenas, listas, matrices
El concepto de secuencia es muy potente y no se limita a las cadenas.
Python nos permite definir secuencias de valores de cualquier tipo. Por
ejemplo, podemos definir secuenciase nmeros enteros o flotantes, o
incluso de cadenas. Hablamos entonces de listas. Enana lista podemos, por
ejemplo, registrar las notas de los estudiantes de una clase, la evolucin de
la temperatura hora a hora, los coeficientes de un polinomio, la relacin de
nombres de personas asistentes a una reunin, etc.
Python sigue una notacin especial para representar las listas. Los valores
de analista deben estar encerrados entre corchetes y separados por comas.
He aqu una lista con los nmeros del 1 al 3:

Podemos asignar listas a variables:


Los elementos que forman una lista tambin pueden ser cadenas.
19 De 29
5. Tipos de estructurados:
cadenas, listas, matrices
Las matrices son disposiciones bidimensionales de valores. En notacin maten
tica, una matriz se denota encerrando entre parntesis los valores, que se
disponen en filas y columnas. He aqu una matriz M:




Esta matriz tiene 4 filas y 3 columnas, lo cual abreviamos diciendo que es una
matriz redimensin 4 3.Las listas permiten representar series de datos en
una sola dimensin. Con una listada nmeros no se puede representar
directamente una matriz, pero si con una lista de listas.
20 De 29
5. Tipos de estructurados:
cadenas, listas, matrices
En la notacin maten tica el elemento que ocupa la fila i-sima y
la columna j-sima una matriz M se representa con M . Por
ejemplo, el elemento de una matriz que ocupa la celda de la fila 1
y la columna 2 se denota con M12. Pero si deseamos acceder a
ese elemento en la matriz Python M, hemos de tener en cuenta
que Python siempre cuenta desde cero, as que la fila tendr
ndice 0 y la columna tendr ndice 1:


Observa que utilizamos una doble indexacin para acceder a
elementos de la matriz. Por que? El primer ndice aplicado sobre
M devuelve un componente de M, que es una lista:



21 De 29
6. Funciones
En captulos anteriores hemos aprendido a utilizar
funciones. Algunas de ellas estn predefinidas (ABS, round,
etc.) mientras que otras deben importarse de mdulos
ntese poder ser usadas (por ejemplo, sin y coz se
importan del modulo match). En este tema aprenderemos a
definir nuestras propias funciones. Definiendo nuevas
funciones estaremos enseando a Python a hacer
clculos que inicialmente no sabe hacer y, incierto modo,
adaptando el lenguaje de programacin al tipo de
problemas que deseamos resolver, enriquecindolo para que
el programador pueda ejecutar acciones complejas de un
modo sencillo: llamando a funciones desde su programa. Ya
has usado mdulos, es decir, ficheros que contienen
funciones y variables de valor predefinido que puedes
importar en tus programas. En este capitulo aprenderemos
a crear nuestros propios mdulos, de manera que reutilizar
nuestras funciones en varios programas resultara
extremadamente sencillo: bastara con importarlas.
22 De 29
6. Funciones
Denominaremos activar, invocar o
llamar a una funcin a la accin de
usarla. Las funciones que hemos
aprendido a invocar reciben cero, uno
o ms argumentos separados por
comas y encerrados entre un par de
parntesis y pueden devolver un
valor o no devolver nada.

Podemos llamar a una funcin desde
una expresin. Como el resultado
tiene un tipo determinado, hemos de
estar atentos a que este sea
compatible con la operacin y tipo de
los operando con los que se combina:

Ves? En el ultimo caso se ha
producido un error de tipos porque se
ha intentado sumar una cadena, que
es el tipo de dato del valor devuelto
por str, a un entero. Observa que los
argumentos de una funcin tambin
pueden ser expresiones:
23 De 29
6. Funciones
Empezaremos definiendo una funcin
muy sencilla, una que recibe un
numero y devuelve el cuadrado de
dicho numero. El nombre que
daremos a la funcin es cuadrado.
Observaste fragmento de programa:

Ya esta. Acabamos de definir la
funcin cuadrado que se aplica sobre
un valor al que llamamos y devuelve
un numero: el resultado de elevar al
cuadrado. En el programa aparecen
dos nuevas palabras reservadas: def
y return. La palabra def es
abreviatura de define y return
significa devuelve en ingles.
Podramos leer el programa anterior
como define cuadrado de como el
valor que resulta de elevar al
cuadrado.En las lneas que siguen
a su definicin, la funcin cuadrado
puede utilizarse del mismo modo que
las funciones predefinidas:
24 De 29
7. Tipos estructurados: registros
El conjunto de tipos de datos Python que hemos
estudiado se divide en tipos escalares(enteros y
flotantes) y tipos secuenciales (cadenas y listas). En
este tema aprenderemos a definir y utilizar tipos de
datos definidos por nosotros mismos agregando tipos de
datos de diferente o igual naturaleza. Por ejemplo,
podremos definir un nuevo tipo que rena un entero y
dos cadenas o uno diferente con una lista y un flotante.
Los datos de estos nuevos tipos reciben el nombre de
registros. Los registros nos permiten modelar objetos del
mundo real que deben describirse mediante una
coleccin de informaciones, como personas (descritas
por nombre, apellidos, DNI, edad, etc.), canciones
(descritas por titulo, autor, interprete, estilo, etc.),
fechas (descritas por da, mes y ao), etc.
25 De 29
7. Tipos estructurados: registros
Supn que en un programa utilizamos el nombre, el DNI
y la edad de dos personas. En principio, necesitaremos
tres variables para almacenar los datos de cada
persona: dos variables con valores de tipo cadena (el
nombre y el DNI) y otra con un valor de tipo entero (la
edad):
Los datos almacenados en nombre, DNI y edad corresponden a la primera
persona los datos guardados en otro nombre, otro ni u otra edad corresponden a
la segunda persona, pero nada en el programa permite deducir eso con
seguridad: cada dato est almacenado en una variable diferente y completamente
independiente de las dems.
26 De 29
7. Tipos estructurados: registros
El programador debe
recordar en todo
momento que
variables estn
relacionadas entre s
para utilizarlas
coherentemente.
Diseemos un
procedimiento que
muestre por pantalla
los datos de una
persona y usmoslo:
Al ejecutar el programa,
por pantalla parecer 'a:
27 De 29
8. Archivos
Desde el punto de vista de la programacin, los ficheros son objetos en los que
podemos escribir y/o leer informacin. El trabajo con ficheros obliga a seguir siempre
un protocolo de tres pasos:
1. Abrir el fichero indicando su ruta (relativa o absoluta) y el modo de trabajo. Hay varios
modos de trabajo:
Lectura: es posible leer informacin del fichero, pero no modificarla ni aadir nueva informacin.
Escritura: solo es posible escribir informacin en el fichero. Por regla general, la apertura de un
fichero en modo escritura borra todo el contenido previo del mismo.
Lectura/escritura: permite leer y escribir informacin del fichero.
Adicin: permite aadir nueva informacin al fichero, pero no modificar la ya existente.

2. Leer o escribir la informacin que desees.
3. Cerrar el fichero.

Es importante que sigas siempre estos tres pasos. Es particularmente probable que olvides cerrar
el fichero, pues Python no detectara esta circunstancia como un fallo del programa. A 'un as, no
cerrar un fichero se considera un grave error de programacin. Lee el cuadro Y por que hay que
cerrar los ficheros? si quieres saber por que.


28 De 29
8. Archivos
Puede interesarte en ocasiones leer una sola lnea de un fichero de texto. Pues
bien, el mtodo readline hace precisamente eso. Este programa, por ejemplo,
lee un fichero lnea lnea y las va mostrando por pantalla, pero haciendo uso de
readline:





Observa cuando finaliza el bucle: al leer la cadena vaca, pues esta indica que
hemos llegado al final del fichero. Como ves, es algo ms complicado que este
otro programa equivalente:




De todos modos, no esta de ms que comprendas bien el mtodo ms
complicado: es muy parecido al que usaremos cuando accedamos a ficheros con
el lenguaje de programacin C.

Вам также может понравиться