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

UNIVERSIDAD DE SUCRE

FACULTAD DE INGENIERIA
PROGRAMACION DE
COMPUTADORES

1. Estructuras condicionales
II. ESTRUCTURAS DE CONTROL DE FLUJO 2. Estructuras iterativas
3. Ejercicios

"Programming is understanding”
-Kristen Nygaard

1
ESTRUCTURAS DE CONTROL DE FLUJO

Este capítulo presenta las bases de la programación. Lo que se conoce


como los fundamentos del lenguaje.

Primeramente discutimos como calcular un valor a partir de un conjunto


de operandos (Expresiones).

También estudiaremos como seleccionar entre un grupo de acciones,


conocido como Selección. Veremos la estructura if … else.

Así mismo miraremos como repetir un cálculo para una serie de


valores, conocido como Iteración. Veremos las estructuras for y while.
2
EXPRESIONES 1
La forma más básica de los programas es una expresión. Una expresión calcula un valor de varios
operandos. La expresión más sencilla es simplemente un valor literal, como 10, 'a', 3.14, o "Norah". Los
nombres de las variables son también expresiones. Una variable representa el objeto del cual es el
nombre. Considere:
ancho = 20
alto = 15
area = ancho*alto
Podemos hacer expresiones más complicadas combinando expresiones usando operadores, como + y *,
de la misma manera que estamos acostumbrados. Cuando sea necesario, podemos usar paréntesis para
agrupar expresiones:
perimetro = (ancho+alto)*2
Sin paréntesis, tendríamos que escribir:
perimetro = ancho*2 + alto*2
La primera regla para el uso de paréntesis es simplemente "En caso de duda, entre paréntesis", pero por
favor, haga lo suficiente sobre las expresiones para que no tenga dudas acerca de: a * b + c / d. El uso
excesivo de paréntesis, como en (a * b) + (c / d), disminuye la legibilidad.

3
EXPRESIONES 2
¿Por qué debería preocuparse por la legibilidad?

Porque usted y posiblemente otros leen su código, y el código confuso ralentiza


la lectura y la comprensión.

Código confuso no es sólo difícil de leer, también es mucho más difícil de tener
un código correcto. El código confuso suele ocultar errores lógicos. Es más
lento de leer y hace más difícil convencerlo a usted mismo – y a otros - de que
el código es correcto. No escriba expresiones absurdamente complicadas
como:
a*b+c/d*(e-f/g)/h+7
Siempre procure además, utilizar nombres de variables significativos

4
OPERADORES
Son elementos que relacionan de forma diferente,
los valores de una o mas variables y/o constantes.
Es decir, los operadores nos permiten manipular
valores.
1. Aritméticos
2. Relacionales
3. Lógicos
5
OPERADORES ARITMETICOS
Los operadores aritméticos son los mas sencillos de todos, se utilizan para realizar operaciones aritméticas básicas, es decir sumas,
restas, multiplicación división, modulo/residual, y exponenciales. En el siguiente ejemplo vemos el uso de cada operador con una
descripción.
a=10
b= 3
#realizar una suma de 2 numeros
resultado = a + b
#restar 10 - 3 = 7
resultado = a - b
#realizar una suma
resultado = a + b
#multiplicacion de 10*3 = 30
resultado = a * b
#division natural resultado = 10/3 que es aprox 3.333
resultado = a / b
#division con floor/piso, el resultado se redondea hacia abajo
resultado = a // b #resultado = 3, no 3.3333
#modulo/residuo, el residuo de una division
resultado = a % b #resultado es 1
#exponencial, eleva a la potencia de
resultado = a **3 #10 elevado a 3 = 1000

6
OPERADORES RELACIONALES
Los operadores de comparación se usan para evaluar expresiones que solo
pueden tener 2 resultados, estos resultados son verdadero o falso (true o false)
y son los siguientes.
 == , evalúa como verdadero si 2 variables son iguales
 != ,evalúa como verdadero si 2 variables son diferentes
 <> , lo mismo que !=
 > , verdadero si el operador a la izquierda es mayor que el de la derecha
 < , verdadero si el operador a la izquierda es menor que el de la derecha
 >= verdadero si el operador a la izquierda es mayor o igual al de la
derecha
 <= verdadero si el operador a la izquierda es menor o igual al de la
derecha

7
OPERADORES LOGICOS
Una variable booleana es una variable que sólo puede tomar dos posibles valores:
True (verdadero) o False (falso). En Python cualquier variable (en general,
cualquier objeto) puede considerarse como una variable booleana. En general los
elementos nulos o vacíos se consideran False y el resto se consideran True. Para
comprobar si un elemento se considera True o False, se puede convertir a su valor
booleano mediante la función bool().
print(bool(25))
Los operadores lógicos son unas operaciones que trabajan con valores booleanos.
 and: "y" lógico. Este operador da como resultado True si y sólo si sus dos
operandos son True:
 or: "o" lógico. Este operador da como resultado True si algún operando es
True:
 not: negación. Este operador da como resultado True si y sólo si su argumento
es False:
8
OPERADORESDE ASIGNACION
Los operadores de asignación se utilizan para basicamente asignar un valor a una
variable, así como cuando utilizamos el “=”.
Los operadores de asignación son “=,+=,-=,*=,/=,**=,//=”, a continuación algunos
ejemplos.
 = , igual a, es el mas simple de todos y asigna a la variable del lado izquierdo
cualquier variable o resultado del lado derecho.
 += , suma a la variable del lado izquierdo el valor del lado derecho. ej. si “a”
es igual a 5 y a+=10, entonces “a” será igual a 15
 -= , resta a la variable del lado izquierdo el valor del lado derecho. ej. si “a”
es igual a 5 y a-=10, entonces “a” será igual a -5
 *=, multiplica a la variable del lado izquierdo el valor del lado derecho. ej. si
“a” es igual a 5 y a*=10, entonces “a” será igual a 50

9
IDENTACIÓN
 Para hablar de estructuras de control de flujo en Python, es imprescindible
primero, hablar de identación.

 ¿Qué es la identación? En un lenguaje informático, la identación es lo que la


sangría al lenguaje humano escrito (a nivel formal). Así como para el
lenguaje formal, cuando uno redacta una carta, debe respetar ciertas
sangrías, los lenguajes informáticos, requieren una identación.

 No todos los lenguajes de programación, necesitan de una identación,


aunque sí, se estila implementarla, a fin de otorgar mayor legibilidad al
código fuente. Pero en el caso de Python, la identación es obligatoria, ya
que de ella, dependerá su estructura.

10
ENCODING
El encoding (o codificación) es otro de los elementos del lenguaje que no puede omitirse a la
hora de hablar de estructuras de control.

NOTA
El encoding no es más que una directiva que se coloca al inicio de un archivo Python, a fin de
indicar al sistema, la codificación de caracteres utilizada en el archivo.
# coding: utf-8
utf-8 podría ser cualquier codificación de caracteres. Si no se indica una codificación de
caracteres, Python podría producir un error si encontrara caracteres extraños, por ejemplo:
print "En el Ñágara encontré un Ñandú“

Producirá un error de sintaxis: SyntaxError: Non-ASCII character[...]


En cambio, indicando el encoding correspondiente, el archivo se ejecutará con éxito:
# coding: utf-8
print "En el Ñágara encontré un Ñandú“

11
ESTRUCTURAS DE CONTROL DE FLUJO CONDICIONALES
"[...] Los condicionales nos permiten comprobar condiciones y hacer que nuestro programa se
comporte de una forma u otra, que ejecute un fragmento de código u otro, dependiendo de esta
condición [...]“ (Raúl González Duque).
Las estructuras de control condicionales, son aquellas que nos permiten evaluar si una o más
condiciones se cumplen, para decir qué acción vamos a ejecutar. La evaluación de condiciones, solo
puede arrojar 1 de 2 resultados: verdadero o falso (True o False). Para describir la evaluación a
realizar sobre una condición, se utilizan operadores relacionales (o de comparación):

Símbolo Significado Ejemplo Resultado


== Igual que 5 == 7 False
!= Distinto que rojo != verde True
< Menor que 8 < 12 True
> Mayor que 12 > 7 True
<= Menor o igual que 12 <= 12 True
>= Mayor o igual que 4 >= 5 False

12
ESTRUCTURAS DE CONTROL DE FLUJO CONDICIONALES 2
Y para evaluar más de una condición simultáneamente, se utilizan operadores lógicos:

Operador Ejemplo Explicación Resultado


and 5 == 7 and 7 < 12 False and False False
and 9 < 12 and 12 > 7 True and True True
and 9 < 12 and 12 > 15 True and False False
or 12 == 12 or 15 < 7 True or False True
or 7 > 5 or 9 < 12 True or True True
xor 4 == 4 xor 9 > 3 True o True False
xor 4 == 4 xor 9 < 3 True o False True

Las estructuras de control de flujo condicionales, se definen


mediante el uso de tres palabras claves reservadas, del
lenguaje: if (si), elif (sino, si) y else (sino).

13
EJEMPLOS
http://www.mclibre.org/consultar/python/lecciones/python_if_else.html

14
EJEMPLO
Sentencias condicionales anidadas

15
Estructuras de control iterativas
http://librosweb.es/libro/python/capitulo_2/estructuras_de_control_de_flujo.html

A diferencia de las estructuras de control condicionales, las


iterativas (también llamadas cíclicas o bucles), nos
permiten ejecutar un mismo código, de manera repetida,
mientras se cumpla una condición.

En Python se dispone de dos estructuras cíclicas:

1. El bucle while
2. El bucle for

16
Bucle while
Este bucle, se encarga de ejecutar una misma acción "mientras que" una
determinada condición se cumpla. Ejemplo: Mientras que año sea menor o
igual a 2012, imprimir la frase "Informes del Año anio".

17
Bucle for
LISTAS Y TUPLAS

Hasta ahora, hemos visto que una variable normalmente contiene un solo
número. Se puede usar una lista de Python para representan un grupo de
números en un programa. Con una variable que se refiera a la lista, podemos
trabajar con todo el grupo a la vez, pero también puede acceder a elementos
individuales del grupo. La figura ilustra la diferencia entre un objeto int y un
objeto de lista. En general, una lista puede contener una secuencia de objetos
arbitrarios en un orden dado. Pitón tiene una gran funcionalidad para examinar
y manipular tales secuencias de los objetos, que se demostrará a continuación.

18
LISTAS
 Las listas son conjuntos ordenados de elementos (números, cadenas, listas, etc). Las listas
se delimitan por corchetes ([ ]) y los elementos se separan por comas.
 Las listas pueden contener elementos del mismo tipo:
primos = [2, 3, 5, 7, 11, 13]
diasLaborables = ["Lunes", "Martes", "Miércoles", "Jueves", "Viernes"]
 O pueden contener elementos de tipos distintos:
fecha = ["Lunes", 27, "Octubre", 1997]
 O pueden contener listas:
peliculas = [ ["Senderos de Gloria", 1957], ["Hannah y sus hermanas", 1986]]

Puede encontrar más sobre listas en:


http://www.mclibre.org/consultar/python/lecciones/python_listas.html

19
OPERACIONES BÁSICAS CON LISTAS 1
Hans Petter Langtangen:
“A Primer on Scientific Programming with Python, 2nd Edition”
Para crear una lista con números, simplemente ponemos todos los números
dentro de corchetes y separamos los números por comas:
C = [-20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40]
La variable C ahora se refiere a un objeto de lista que contiene 13 elementos
de lista. Todos los elementos de la lista, son en este caso objetos int.
Cada elemento de una lista se asocia con un índice, que refleja la posición del
elemento en la lista. El primer elemento tiene índice 0, el segundo índice 1 y
así sucesivamente. Asociados con la lista C anterior tenemos 13 índices,
comenzando con 0 y terminando con 12. Para acceder al elemento con índice
3, es decir, el cuarto elemento de la lista, podemos escribir C[3]. Como vemos
en la lista, C[3] se refiere a un objeto int con el valor -5.

20
OPERACIONES BÁSICAS CON LISTAS 2
Los elementos de las listas pueden eliminarse y los nuevos elementos se
pueden insertar en cualquier lugar. La funcionalidad para hacer esto se
construye en el objeto de lista y se accede mediante una notación de punto.
Dos ejemplos son C.append(v), que añade un nuevo elemento v al final de la
lista, y C.insert(i, v), que inserta un nuevo elemento v en la posición número i
en la lista. El número de elementos en una lista viene dado por len(C).
Ejemplos:
C = [-10, -5, 0, 5, 10, 15, 20, 25, 30] # create list
C.append(35) # add new element 35 at the end
print(C) # view list C
Dos listas pueden ser sumadas:
C = C + [40, 45] # extend C at the end

21
OPERACIONES BÁSICAS CON LISTAS 3
Nuevos elementos se pueden insertar en cualquier parte de la lista (no sólo al
final como hicimos con C.append):
C.insert(0, -15) # insert new element -15 as index 0
Con del C[i] podemos eliminar un elemento con índice i de la lista C.
Observe que esto cambia la lista, así que C[i] se refiere a otro (el siguiente)
elemento después de la eliminación:
print(len(C))
del C[2]
print(len (C))
El comando C.index(10) devuelve el índice correspondiente a la primera
elemento con valor 10 (este es el cuarto elemento de nuestra lista de muestras,
con índice 3):
print(C.index(10))
22
OPERACIONES BÁSICAS CON LISTAS 4
Para probar si un objeto con el valor 10 es un elemento de la lista, puede
escribir la expresión booleana 10 In C:
if 10 in C:
print("10 esta en la lista C")
else:
print("10 no esta en la lista C")
Python permite índices negativos, que "cuentan desde la derecha". Como se
demuestra a continuación, C[-1] da el último elemento de la lista C. C[-2] es el
elemento antes de C[-1], y así sucesivamente.
print("El ultimo de la lista es %d"%C[-1])

23
OPERACIONES BÁSICAS CON LISTAS 5
Construir listas largas anotando todos los elementos separados por comas es
un proceso tedioso que puede automatizarse fácilmente mediante un bucle.
Digamos que queremos construir una lista de grados de -50 a 200 en pasos de
2,5 grados. A continuación, comenzar con una lista vacía y utilizar un bucle
while para añadir un elemento a la vez:
C = []
C_value = -50
C_max = 200
while C_value <= C_max:
C.append(C_value)
C_value += 2.5

print (C) 24
Listas de números enteros: el tipo range() 1
http://www.mclibre.org/consultar/python/lecciones/python_range.html
En Python 3, range es un tipo de datos. El tipo range es una lista inmutable de
números enteros en sucesión aritmética.
 Inmutable significa que, a diferencia de las listas, los range no se pueden
modificar.
 Una sucesión aritmética es una sucesión en la que la diferencia entre dos
términos consecutivos es siempre la misma.
Un range se crea llamando al tipo de datos con uno, dos o tres argumentos
numéricos, como si fuera una función.
Nota: En Python 2, range() se consideraba una función, pero en Python 3 no se
considera una función, sino un tipo de datos , aunque se utiliza como si fuera
una función.

25
Listas de números enteros: el tipo range() 2
http://www.mclibre.org/consultar/python/lecciones/python_range.html
El tipo range() con un único argumento se escribe range(n) y crea una lista inmutable de n números
enteros consecutivos que empieza en 0 y acaba en n-1.
Para ver los valores del range(), es necesario convertirlo a lista mediante la función list().
x=range(10)
x=list(x)
print(x)
Si n no es positivo, se crea un range vacío.
x=range(-10)
La función len(). La función len() devuelve la longitud de una cadena de caracteres o el número de
elementos de una lista. El argumento de la función len() es la lista o cadena que queremos "medir".
x=len("mensaje secreto")
print(x)
El valor devuelto por la función len() se puede usar como parámetro de range().
x=list(range(len("mensaje secreto")))

26
Listas de números enteros: el tipo range() 3
http://www.mclibre.org/consultar/python/lecciones/python_range.html

El tipo range con dos argumentos se escribe range(m, n) y crea una


lista inmutable de enteros consecutivos que empieza en m y acaba
en n-1.
x=list(range(5, 10))
print(x)
Si n es menor o igual que m, se crea un range vacío.
x=list(range(5, 1))

27
Listas de números enteros: el tipo range() 4
http://www.mclibre.org/consultar/python/lecciones/python_range.html

El tipo range con tres argumentos se escribe range(m, n, p) y crea una lista
inmutable de enteros que empieza en m y acaba justo antes de superar o
igualar a n, aumentando los valores de p en p. Si p es negativo, los valores van
disminuyendo de p en p.
x=list(range(5, 21, 3))
print(x)
El valor de p no puede ser cero:
x=list(range(4, 18, 0))
Si p es positivo y n menor o igual que m, o si p es negativo y n mayor o igual
que m, se crea un range vacío.
x=list(range(25, 20, 2))
28
Listas de números enteros: el tipo range() 5
http://www.mclibre.org/consultar/python/lecciones/python_range.html
En los range(m, n, p), se pueden escribir p range distintos que generan el mismo resultado. Por
ejemplo:
x=list(range(10, 20, 3))
x=list(range(10, 21, 3))
x=list(range(10, 22, 3))
En resumen, los tres argumentos del tipo range(m, n, p) son:
 m: el valor inicial
 n: el valor final (que no se alcanza nunca)
 p: el paso (la cantidad que se avanza cada vez).
Si se escriben sólo dos argumentos, Python le asigna a p el valor 1. Es decir range(m, n) es lo
mismo que range(m, n, 1)
Si se escribe sólo un argumento, Python, le asigna a m el valor 0 y a p el valor 1. Es decir
range(n) es lo mismo que range(0, n, 1)
El tipo range() sólo admite argumentos enteros. Si se utilizan argumentos decimales, se
produce un errror:
29
Bucle for
http://www.mclibre.org/consultar/python/lecciones/python_for.html

En general, un bucle es una estructura de control que repite un bloque de instrucciones. Un


bucle for es un bucle que repite el bloque de instrucciones un número prederminado de veces.
El bloque de instrucciones que se repite se suele llamar cuerpo del bucle y cada repetición se
suele llamar iteración.
La sintaxis de un bucle for es la siguiente:
for variable in elemento iterable (lista, cadena, range, etc.):
cuerpo del bucle
No es necesario definir la variable de control antes del bucle, aunque se puede utilizar como
variable de control una variable ya definida en el programa.
El cuerpo del bucle se ejecuta tantas veces como elementos tenga el elemento recorrible
(elementos de una lista o de un range(), caracteres de una cadena, etc.). Por ejemplo:

Mas sobre bucles for en:


http://www.mclibre.org/consultar/python/lecciones/python_for.html

30
EJERCICIOS ESTRUCTURAS DE CONTROL DE FLUJO
UN SIMPLE PROBLEMA: CONSTRUCCION DE VENTANAS
Rob Miles CSharp Yellow Book 2012 © Rob Miles 2011 Department of Computer Science, The University of Hull.

PLANTEAMIENTO DEL PROBLEMA. Se requiere desarrollar un aplicativo que calcule los costos de materiales de un
fabricante de ventanas. El fabricante desea ingresar las dimensiones de la ventana a fabricar, en metros, y a partir de allí el
aplicativo deberá generar una salida de los costos para fabricar la ventana en términos de la cantidad de madera y vidrio
necesario. El fabricante compra la madera en pies de longitud (1 m=3.25”). El programa deberá dar la longitud de la madera
necesaria en pies de longitud.
PROBANDO EL PROGRAMA. Si deseo una ventana de 2 metros de alto y 1 metro de ancho, el programa debería decirme
que necesito 4 metros cuadrados de vidrio y 19.5 pies de madera.
PONIENDO MAS DETALLES. Se necesita que el programa decida cuando la información ingresada es válida. El fabricante
desea que el programa controle las siguientes restricciones:
1. El ancho de las ventanas, en metros deben ser entre 0.5 metros y 3.5 metros inclusive.
2. El alto de las ventanas, en metros deben ser entre 0.5 metros y 2.0 metros inclusive.
3. El área del vidrio requerido para la ventana debe ser en metros cuadrados.
4. Las ventanas son de doble vidrio, de modo que cada ventana requiere dos láminas.
5. La longitud de la madera requerida para el marco, debe ser dada en pies.

Desarrolle el aplicativo de tal modo que controle los anchos y los altos de la ventana según los siguientes criterios:
1. Si el usuario ingresa un ancho o alto menor que el mínimo que le notifique que se salió del mínimo y le informe que
tomará el valor mínimo. Igual con los valores que se salgan del máximo.
2. Si el usuario ingresa un ancho o alto menor que el mínimo o mayor que el máximo que lo rechace notificándolo y
solicitándolo nuevamente. (Sugerencia: Utilice una estructura while. Puede consultar sobre el bucle while en:
http://www.mclibre.org/consultar/python/lecciones/python_while.html)
31
EJERCICIOS SENTENCIAS DE CONTROL
1. Desarrolle una aplicación que lea dos números y determine si hay un mayor o si son iguales
2. Desarrolle una aplicación que lea tres números distintos y determine cuál es el menor
3. Desarrolle una aplicación que lea los tres lados de un triángulo y determine si éste es rectángulo.
4. Desarrolle una aplicación que lea los tres lados de un triángulo y determine si éste es Isósceles, Equilátero o Escaleno. Triángulo Isósceles:
Dícese del triángulo que tiene dos lados iguales. Triángulo Equilátero: Dícese del triángulo cuyos lados son todos iguales entre sí. Triángulo
Escaleno: Dícese del triángulo cuyos lados son todos desiguales.
5. Desarrolle una aplicación que lea un ángulo y lo clasifique según su abertura: Plano (=360º), Llano (=180º), Obtuso (90º<<180º), Recto
(=90º), Agudo (<90º).
6. Desarrolle una aplicación que lea dos ángulos y los clasifique según su suma: Complementarios (+ß=90º), Suplementarios (+ß=180º).
7. Desarrolle una aplicación que convierta coordenadas cartesianas a polares y muestre el ángulo en radianes y en grados y la magnitud. Para
cero grados, =0; Para el primer cuadrante =Atn(y/x); Para 90º, =Pi/2; Para el segundo cuadrante =Atn(y/x)+Pi; Para 180º, =Pi; Para el
tercer cuadrante, = Atn(y/x)+Pi; Para 270º, =3*Pi/2; Para el cuarto cuadrante, =Atn(y/x)+2*Pi.
8. Desarrolle una aplicación que obtenga todas las soluciones posibles de una ecuación cuadrática de la forma: ax²+bx+c=0. Las soluciones
dependerán del valor del Radicando= (b²-4*a*c) y son:
– Si (b²-4*a*c) = 0, entonces X = -b/(2*a)
– Si (b²-4*a*c) > 0, entonces X1 = (-b+sqrt(Radicando))/(2*a), X2 = (-b-sqrt(Radicando))/(2*a)
– Si (b²-4*a*c) < 0, entonces tiene dos soluciones complejas:
• X1 = -b/(2*a) + i *sqrt(-Radicando)/(2*a)
• X2 = -b/(2*a) – i * sqrt(-Radicando)/(2*a)
9. Desarrolle una aplicación que calcule la posición y velocidad de un cuerpo que se suelta y cae libremente, a intervalos regulares de tiempo. (y =
Vo * t – 0.5 * g * t²), (Vf = Vo + g * t). Implemente la solución para un intervalo de tiempo, por ejemplo, para t = 0 hasta t = 20 segundos, se sabe
que g = 9.80665 m/s² y como el cuerpo parte del reposo, su Vo = 0. NOTA: Limpiar pantalla en Python
para windows
import os
os.system('cls')
para linux 32
import os
os.system('clear')

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