Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Directo al Código
AITEC
Asociación de Investigadores en Tecnología del Cusco
16 de abril de 2018
1
Prefacio
Los Autores.
i
Índice general
Prefacio i
Índice general ii
1 Conceptos básicos 1
1.1. La computadora . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Lenguajes de Programación . . . . . . . . . . . . . . . . . . . . 1
1.4. Instalación de Python . . . . . . . . . . . . . . . . . . . . . . . 2
1.5. Ejecutando un Programa Simple en Python . . . . . . . . . . . 2
2 Programas en Python 3
2.1. ¿Qué es un Programa? . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Variables y la Sentencia de Asignación . . . . . . . . . . . . . . 3
2.3. Tipos de Datos Básicos . . . . . . . . . . . . . . . . . . . . . . 4
2.4. Expresiones y Operaciones . . . . . . . . . . . . . . . . . . . . . 5
2.5. Sentencias Básicas . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.6. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Metodología de Programación 11
3.1. Una Metodología para Python . . . . . . . . . . . . . . . . . . 11
3.2. Estructura Secuencial . . . . . . . . . . . . . . . . . . . . . . . 12
3.3. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Estructuras selectivas 19
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2. Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3. Ejercicios propuestos . . . . . . . . . . . . . . . . . . . . . . . . 28
5 Estructuras Iterativas 31
5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2. Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3. Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . 43
6 Modularidad: Funciones 45
ii
ÍNDICE GENERAL iii
7 Notas 47
Bibliografía 49
1
Conceptos básicos
1.1. La computadora
Probablemente, la computadora, en especial el procesador, sea el artefacto
más sofisticado creado por el ser humano en toda su historia. Pero concep-
tualmente, no es más que una calculadora con esteroides. Sólo sabe efectuar
tareas simples como operaciones aritméticas y lógicas, y mover datos de un
lugar a otro. La gran ventaja de la computadora, a diferencia de una simple
calculadora, es que también pueden almacenar y ejecutar programas, es decir,
una secuencia precisa y ordenada de operaciones. Estas operaciones simples,
dispuestas de la forma correcta, una después de otra, dan lugar al sofisticado
mundo digital actual.
Organización básica
1.2. Algoritmo
Un algoritmo no es más que una secuencia de pasos bien definida para resol-
ver un problema. En este entender, incluso una receta de cocina, que detalla los
pasos para convertir un conjunto de ingredientes en una torta es un algoritmo.
Cuando decimos que un algoritmo es una secuencia de pasos bien definida, nos
referimos a que ambigüedades tales como “unas cuantas veces” o “más o menos”
no son tolerables....
1
2 CAPÍTULO 1. CONCEPTOS BÁSICOS
1 i = i + 1 ;
2 w = w +5;
3 j = j + 1 ; //ojo
4 k = k + 1 ;
Editores de texto
En instalador de Python trae un editor propio, IDLE. Anaconda también
trae varios editores. Puedes usar estos, u otro de tu elección. Ten en cuenta que
para escribir código fuente, debes usar un editor de texto, y no un procesador
de texto, como Microsoft Word o LibreOffice Writer, ya que éstos, además del
texto, también guardan el formato, generando archivos incomprensibles para
Python.
jugador Ronaldo
jugador Paolo
radio = 10
3
4 CAPÍTULO 2. PROGRAMAS EN PYTHON
radio −−−−−→ 10
Figura 2.1: Asociando un objeto a el nombre radio
radio = 30.5
10
Nota:
Las variables en Python tienen el mismo sentido que en las matemáticas,
es decir es algo cuyo contenido puede variar. En el resto del libro cuando
se diga o se de a entender que una variable guarda un valor, en realidad
no estamos refiriendo a que el nombre de esta variable está asociado a
un objeto en la memoria.
entero = 25
real = 3.1416
texto1 = "Juan Perez"
texto2 = "C"
logico1 = True
logico2 = False
1 a = 3.1416 * radio + 2
2 a = 3.1416 * (radio + 2)
3 x = 10 ** 3
4 y = 10 / 3
5 z = 10 // 3
6 m = 10 % 3
Sentencia de Salida
En Python la sentencia de salida o para imprimir en la pantalla es print y
su sintaxis es la siguiente:
Pantalla:
Bienvenidos a Python!
En la linea 2 del Algoritmo 2.1 podemos ver que la sentencia print muestra
en la pantalla la cadena de texto que está entre paréntesis. Ademas, vemos que
en la linea 1 aparece un mensaje después del símbolo #, vea que este mensaje
no es mostrado en la pantalla, esto es porque el interprete de Python descarta
cualquier símbolo que viene después de #. El símbolo # nos sirve para hacer
comentarios en nuestros algoritmos y de esta forma dejar claro la tarea están
realizando.
¿Y que tal si ahora queremos imprimir más lineas? pues simplemente usa-
mos varias veces la sentencia print, veamos el Algoritmo 2.2.
Pantalla:
Bienvenidos
a
Python!
En caso de que queramos imprimir varias lineas con una sola sentencia
print tenemos que usar los caracteres especiales \n los cuales representan el
carácter de nueva linea (ver Algoritmo 2.3).
2.5. SENTENCIAS BÁSICAS 7
Pantalla:
Bienvenidos
a
Python!
Pantalla:
El valor de la variable x es: 35
El valor de la expresión 2x + 10 es: 80
Sentencia de Entrada
En Python la sentencia para que el usuario pueda ingresar datos al compu-
tador es input y su sintaxis es la siguiente:
variable = input("mensaje")
Pantalla:
Ingresa un número: 12
El número ingresado por el usuario es: 12
Pantalla:
Ingresa un número: 10
Traceback (most recent call last):
File "main.py", line 2, in <module>
y = x + 20
TypeError: must be str, not int
Algoritmo 2.6: Leer un valor ingresado por el usuario y hacer un calculo simple.
Al ejecutar linea 3 del Algoritmo 2.6 vemos que el usuario ingresa el valor
de 10 el cual es guardado en la variable x, luego al ejecutar la linea 4 vemos que
en la pantalla aparece un error, pero ¿por que?. Básicamente cuando el usuario
ingresa un valor mediante la instrucción input, esta instrucción retorna una
cadena de texto, es así que la variable x guarda una cadena de texto. En la
linea 4 la expresión x + 20 intenta sumar una cadena de texto con un numero
y es por eso que en la pantalla aparece un error.
Para solucionar este error haremos uso de la función int. Las funciones
en Python trabajan de forma similar a las funciones en matemáticas, es decir
toman como entrada un valor y retornan otro. Veamos un ejemplo de como
usar la función int:
2.6. EJERCICIOS PROPUESTOS 9
Pantalla:
Ingresa un número: 10
El valor de la variable y es: 30
Algoritmo 2.7: Leer un valor ingresado por el usuario y hacer un calculo simple.
En la linea 4 del Algoritmo 2.7 la función int toma como entrada la cadena
de texto guardada en la variable x y luego retorna un número entero, el cual
es guardado nuevamente en la variable x.
Nota:
Ademas de int en Python existen otras funciones importantes como la
función float que transforma una cadena de texto en un número real,
también existe la función str que transforma un número en una cadena
de texto.
* *
* *
* * * * * * * * * * * * * *
* *
* *
Metodología de Programación
2. Especificar la solución.
Nota:
Algunas veces es más fácil describir el modelo usando las sentencias
de Python, para estos casos se puede obviar el paso 2 b), e ir directa-
mente a la etapa 3. Sin embargo, en la mayoría de casos se recomienda
fuertemente seguir la metodología propuesta en este libro.
11
12 CAPÍTULO 3. METODOLOGÍA DE PROGRAMACIÓN
Entrada Salida
numero1 numero2 suma
5 7 12
Nota:
Una recomendación importante es que, todos los programas escritos
en el lenguaje de programación Python empiecen con un encabezado
indicando la tarea que van a realizar. Por ejemplo:
Ingrese número 1: 23
Ingrese número 2: 15
La suma es: 48.0
Nota:
Otra recomendación importante es que los pasos de nuestros algoritmos
sean documentados con comentarios. Por ejemplo en el Algoritmo 3.1,
las lineas 2, 5, 8 y 10 documentan los pasos de la solución.
Ejemplo 3.2:
Entrada Salida
Radio Área
5 A = 3.1416 × 52 = 78.54
2. Especificar la solución:
Entrada Salida
Número Suma
456 4 + 5 + 6 = 15
Ejemplo 3.4:
2. Especificar la solución:
Entrada Salida
Número pares impares
4564 3 1
16 CAPÍTULO 3. METODOLOGÍA DE PROGRAMACIÓN
unidad = 4564 M OD 10 = 4
decena = (4564 DIV 10) M OD 10 = 456 M OD 10 = 6
centena = (4564 DIV 100) M OD 10 = 45 M OD 10 = 5
unM illar = 4564 DIV 1000 = 4
Una vez separado los dígitos del número tenemos que analizar se-
paradamente estos. Sabemos que el módulo MOD de un número
cualesquiera con 2, puede ser 0 o 1, de ser 1, podemos rápidamen-
te saber que ese número es impar. En otras palabras, para saber
cuantos números impares tenemos en el numero 4564 realizamos lo
siguiente:
unidad = abcd M OD 10 = d
decena = (abcd DIV 10) M OD 10 = abc M OD 10 = c
centena = (abcd DIV 100) M OD 10 = ab M OD 10 = b
unM illar = abcd DIV 1000 = a
Ejemplo 3.5:
Entrada Salida
Total Horas Total a pagar (S/.)
6 5.00
12 10.00
16 13.00
horasP ago = 12 − 2 = 10
Estructuras selectivas
4.1. Introducción
Todos los días de nuestra vida tenemos que tomar decisiones entre dos o
más opciones. Estas decisiones pueden ser muy simples y cotidianas que no
percibimos que lo hacemos, por ejemplo: “Sí el día está soleado, entonces
vestiré ropa ligera, sino vestiré ropa de abrigo”. Algunas veces estas decisiones
son más complejas porque dependen de muchas condiciones que pueden cambiar
según el contexto, por ejemplo: “Si llega el recibo de la luz y tengo dinero,
entonces iré a pagar el recibo”.
En el capitulo anterior aprendimos a programar usando estructuras secuen-
ciales. La secuenciación es un concepto fundamental de programación, pero no
es suficiente para resolver todos los problemas [1].
Así como en nuestra vida tomamos decisiones también en programación
existen estructuras que nos permiten seleccionar una opción u otra durante
la ejecución de un programa según determinadas condiciones. A este tipo de
estructuras se les conoce como estructuras selectivas y a la expresión que
nos indica qué camino tomar se le conoce como condición lógica.
Una condición lógica es una expresión booleana que cuando es evaluada nos
da un resultado de verdadero o falso (True o False en Python). Para formar
expresiones o condiciones que bifurquen la ejecución de un programa se utilizan
los operadores de comparación y lógicos, los cuales veremos a continuación.
19
20 CAPÍTULO 4. ESTRUCTURAS SELECTIVAS
Ejemplo 4.1:
número.
Determinar especificaciones:
• Entrada: Un número cualquiera "numero"
• Salida: Imprimir en pantalla la mitad del número sí es que es mayor
a 20
• Relacion entre la entrada y la salida: Es necesario comparar el "nu-
mero" ingresado con 20 si es mayor entonces debemos dividir el
número por la mitad y mostrar ese resultado. En este caso debe-
mos usar una estructura condicional simple ya que la operación se
ejecutará sólo cuando la evaluación sea verdadera o True.
Diseño e implementación en Python:
Ejemplo 4.2:
Ejemplo 4.3:
Nota:
Intenta resolver este problema usando otra estructura condicial. Tam-
bién puedes hacer una modificación para que el usuario ingrese una nota
mayor a 20 aparezca un mensaje que le indique .El valor ingresado para
nota es incorrecto". Buena suerte!
Ejemplo 4.4:
Ejemplo 4.5:
Determinar especificaciones:
Ejemplo 4.6:
Ejemplo 4.7:
5.1. Introducción
Hasta este punto hemos visto como utilizar sentencias básicas y selectivas
los cuales nos permitieron resolver muchos problemas, pero aun no vimos como
hacer frente a problemas que requieren tareas repetitivas. Por ejemplo, para
determinar si una persona es mayor de edad tendríamos que ejecutar el algo-
ritmo respectivo una sola vez y obtendríamos la respuesta, pero si queremos
obtener la misma respuesta para 5 personas? probablemente tendríamos que
ejecutar nuestro algoritmo 5 veces y esta actividad no nos demandaría demasia-
do esfuerzo verdad? y si queremos saber esa información para 10 000 personas?
o talvez 100 000? seria necesario ejecutar nuestro algoritmo 10 000 o 100 000
veces?. Es ahí que las estructuras repetitivas(iteraciones o bucles) toman un
papel importante.
Python ofrece dos sentencias para realizar iteraciones while y for a conti-
nuación veamos el uso de cada uno de ellos.
Sentencia While
El Algoritmo 5.1 muestra un simple conteo regresivo y muestra un mensaje
al finalizar el conteo.
31
32 CAPÍTULO 5. ESTRUCTURAS ITERATIVAS
Pantalla:
10
9
8
7
6
5
4
3
2
1
Fuera !!!
Pero calma, una forma de parar una iteración infinita es utilizando la sen-
tencia break para terminar la iteración cuando se desee, veamos un ejemplo
con esta sentencia:
5.1. INTRODUCCIÓN 33
Pantalla:
--> Esto
Esto
--> es
es
--> una prueba
una prueba
--> terminar
Termino!
Pantalla:
--> Esto
Esto
--> saltar
--> una prueba
una prueba
--> terminar
Termino!
Sentencia For
Otra forma de trabajar con iteraciones en Python es la sentencia for, es
utilizada generalmente cuando se tiene una lista de cosas u objetos para recorrer
y se le denomina “iteración definida” a diferencia de la sentencia while que se
le denomina “iteración indefinida” [4]. ¿Cuál es la diferencia? En una sentencia
for tenemos definidas las iteraciones anticipadamente mientras que en una
sentencia while se repite hasta que cierta condición se hace falsa.
Veamos un ejemplo de la sentencia for:
Pantalla:
0
1
2
3
4
5
6
7
8
9
Ejemplo 5.1:
Ejemplo 5.2:
Ejemplo 5.3:
Determinar Especificaciones:
Ejemplo 5.4:
Determinar Especificaciones:
38 CAPÍTULO 5. ESTRUCTURAS ITERATIVAS
Ejemplo 5.5:
Ejemplo 5.6:
Ejemplo 5.7:
Determinar especificaciones:
Nota:
• El símbolo “//” utilizado en la linea 5 devuelve la parte
solamente entera de la división.
• La razón por la que imprimimos contador + 1 en la linea
7 es porque las divisiones sucesivas que se ejecutaran es una
menos que el número de dígitos.
Ejemplo 5.8:
Determinar especificaciones:
42 CAPÍTULO 5. ESTRUCTURAS ITERATIVAS
• Entrada: un número n.
• Salida: factorial del número n.
• La relación existente entre la entrada y salida está dada por las n
multiplicaciones sucesivas comenzando por uno y terminando en el
número n
Diseño e implementación en Python: Intenta realizar el mismo
ejercicio con la sentencia while.
45
7
Notas
47
Bibliografía
49