Está en la página 1de 25

Apunte Programación

Certamen 1
Python
Ayudante: Leonardo Ramírez

• Tipos de Datos y Operadores: • Ciclo While


-Números • Funciones
-Texto • Ruteo
-Lógicos
• Análisis de Algoritmo
• Interacciones
• Paltitas
• Condicionales
Números
Tipos de datos que representan a valores numéricos. Hay de tres tipos distintos,
dependiendo al conjunto matemático al que pertenecen:
Enteros int( ):Números positivos, negativos y el cero, todos sin valor decimal. Ej:
0, 1, 18, -4, 2018 .
Flotantes float( ):Todos los números Reales, teniendo parte decimal, la cual se
representa después de un punto (No con coma , ). Ej: 0.0 , -1.5 ,
2.718281828459045 ,10e7 .
Complejos complex( , ) : Corresponden a los números Complejos. La parte
imaginaria puede ser representada colocando una j al final. Ej: 0+0j , 7+1j,-
8.1+2.001j .
Operadores Aritméticos
Operador Comando Descripción/Observación Ejemplos
Suma x+y x más y 1+4>>>5; 3+2.4>>>5.4
Resta x-y x menos y 1-4>>>-3; 2--1.4>>>3.4
Multiplicación x*y x por y 3*-4>>>-12;0.2*10>>>2.0
División x/y x dividido en y 8/4>>>2; 3.0/4>>>0.75
15%4>>>3; 50%2>>>0
Módulo x%y Resto de la división entre x e y ;7.5%5>>>2.5
Exponente x**y x elevado a y 2**5>>>32;4**0.5>>>2.0
Valor Absoluto abs(x) Valor absoluto de x Abs(-2) >>> 2,

Aproxima x al valor con n decimales más round(5.5)>>>6


round(x) cercano. Si se omite el n, aproxima al round(7.456,2)>>>7.46
Redondear round(x,n) entero más cercano. round(1.55,8)>>1.55
División Entera x//y X dividido en y, truncando el decimal 8.5//4>>>2;3//2>>>1
Infinito float(“inf”) *Infinito negativo = -float(“inf”)
Texto str()
A los valores que representan texto se les llama strings; son representados entre
comillas ‘simples’ o “dobles”.

Esto quiere decir que un valor entre comillas no es el mismo que sin estas: 5 ≠
‘5’. A este último se le llama string de cinco, y representa al 5 como carácter
literal, en vez de valor numérico.

Todo carácter puede ser llevado a string: Letras ‘Aa’, números ‘123’ y símbolos
‘$#%’. Las letras pueden ser tanto en mayúscula como minúscula, y se diferencian
entre una y otra: ‘M’ ≠ ‘m’.

Los strings son un tipo de dato superior que también puede ser considerado como
una estructura de datos, por lo que se verá con detalle más adelante.
Booleanos bool( )
Valores de verdad propios de la lógica matemática binaria. Este tipo de dato solo
posee dos posibilidades: True o False (con mayúsculas y sin comillas); y es usado
principalmente en las condiciones de los ciclos while y en las selecciones if-elif-else.

Los datos del tipo booleano tienen sentido como el resultado de operaciones
relacionales o de verificación. Por ejemplo, cuando al programa se le “pregunta” si
x>y, este arrojará True o False como respuesta.

None: Tipo de dato utilizado para casos donde no hay ningún valor, o este no es
válido.
Operadores Lógicos
Operador Comando Descripción/Observación
Y lógico A and B Será True <=> A=B=True (Ver tabla)
O lógico A or B Será False <=> A=B=False (Ver tabla)
Negación not A Invierte el valor e verdad de A (Ver tabla)

Estos Operadores se utilizan en conjunto con los operadores relacionales, ya que el resultado de los
relacionales siempre será un booleano, lo cual es perfectos para los operadores Lógicos, que solo reciben
booleanos.
Operadores Relacionales
Operador Comando Observación Ejemplos
1==1.0 >>>True ;
Igual a A==B True si A es igual a B, de lo contrario False 1==2 >>> False
1!=1 >>>False ;
Distinto a A!=B True si A es distinto a B, de lo contrario False 1!=2 >>> True
3>2 >>> True ;
Mayor estricto A>B True si A es mayor a B, de lo contrario False 3>6 >>>False
3<2 >>> False ;
Menor estricto A<B True si A es menor a B, de lo contrario False 3<6 >>>True
4=<4 >>> True ;
Mayor o igual A>=B True si A es mayor o igual a B, de lo contrario False 4=<2 >>>False
4=>4 >>> True ;
Menor o igual A<=B True si A es menor o igual a B, de lo contrario False 4=>2 >>> True

Todos los resultados de estos operadores son booleanos, por lo que son excepcionales para crear
condiciones en ciclos while y condicionales if.
Interacciones
Para todo programa, es crucial interactuar con el operador (usuario) y los datos.

Asignación: Para guardar datos se requiere de variables literales, estás serán cruciales para manejar todo
tipo de información. Las variables deben estar compuestas por letras, números o simbolos; los números no
pueden ser el primer carácter de la variable, y hay símbolos que no se pueden ocupar (los símbolos de
operadores): Suma✓ perro_1✓ _ventas✓ torre+altaX 9reinasX .Para asignar un dato,
simplemente se pone: variable = valor (x=2 , y=y+1 , z=x==y)

Entrada input(mensaje): Esta función le pide al usuario por pantalla un dato a utilizar. Por default,
siempre será string, así que se debe ocupar un comando de tipeo para cambiar el tipo de dato, a int(),
float() o bool(). El mensaje debe estar sí o sí entre comillas. Nota=int(input(“Ingrese nota:
“))

Salida print (): Esta función permite mostrar elementos por pantalla al usuario . Se coloca print seguido
del mensaje a mostrar entre paréntesis. Si necesitas entregar texto y números, estos pueden ir separados por
comas (solo en el print). print (‘Su nota es’,Nota)
Condicional if (Si)
La sentencia if ejecuta las instrucciones sólo si se cumple una condición. Si la
condición es falsa, se continua hacia abajo sin entrar.
if condición:
sentencias cuando la condición es verdadera

Este condicional es usado comúnmente para añadir


secuencias únicas al momento de que se cumpla la
condición descrita dentro. Es la forma más básica
de elección o discernimiento para el programa.
Condicional if-else (Si-Si no)
La sentencia if-else decide qué instrucciones ejecutar dependiendo si una condición
es verdadera o falsa:

if condición:
sentencias cuando la condición es verdadera
else:
sentencias cuando la condición es falsa

Genera una elección binaria por parte del programa,


es decir, que siga uno de los dos caminos dependiendo de
la condición dada. Cabe destacar que el programa
siempre correrá solo uno de los dos caminos.
Condicional if-elif-else (Si-O bien-Si no)
La sentencia if-elif-else depende de dos o más condiciones, que son evaluadas en orden. La primera que
es verdadera determina que instrucciones se tomarán, descartando el resto.

if condicion1:
que hacer si la condicion1 es verdadera
elif condicion2:
que hacer si la condicion2 es verdadera
elif condicion3:
que hacer si la condicion3 es verdadera

else:
que hacer cuando ninguna de las anteriores es verdaderas

Similar al if-else, se genera a que el programa elija un camino, esta vez, entre muchos para elegir. Se hace
hincapié en el orden de las condiciones, ya que afectará directamente a la decisión que tomará el programa
(No es estrictamente necesario el uso del else). Si quiere “entrar” a más de una condición, ocupe simplemente
if, generando condiciones pertinentes.
Ciclo while (Mientras)
El ciclo while ejecuta una secuencia de instrucciones mientras la condición sea verdadera. Cada una de las
veces que la serie de secuencias es ejecutada se llama iteración. La condición es evaluada antes de cada
iteración. Si la condición es inicialmente falsa, no se ejecutara ninguna iteración.

while condición:
sentencias mientras la condición sea verdadera
El ciclo while se diferencia de los condicionales debido a su
carácter repetitivo; lo que lo hace crucial para programas donde
se debe ejecutar una acción una cantidad arbitraria o indefinida
de veces.

La elección de la condición es la parte más importante de la


implementación de esta estructura; debido a esto, existen
condiciones estándar para los distintos casos a ver.
Funciones
En programación, una función es similar a su homólogo matemático: se le entregan parámetros, operando
estos para llegar a una solución (return) de manera independiente al resto del programa global. Una función
tiene tres componentes importantes:

• Los Parámetros: Son los valores que recibe una función como entrada, variables mudas que se le
asignan a los valores reales con los que se llaman la función dependiendo del orden dispuesto.

• El Código de la función: Son las operaciones que hace la función, similar a un programa.

• El resultado o retorno: es el valor final que entrega la función, esta sentencia concluye la función.

Las funciones en Python son creadas mediante la sentencia def :

def nombre_de_la_función(parámetro1,parámetro2,…):
…código de la función…

return resultado_de_la_función
Funciones
Las variables que son creadas dentro de la Para llamar a una función simplemente debes
función (incluyendo los parámetros) se llaman escribir su nombre y los valores que ocuparás
variables locales, y sólo sirven dentro de la como parámetros. Al llamar una función, se
función, no el resto del programa. obtiene el valor del return de esta, ningún otro.
Recordar que los return no son equivalentes a los
Por otra parte, las variables creadas fuera de print. Uno es simplemente el resultado de una
alguna función se llaman variables globales, y son función, y el otro es “imprimir” por pantalla. Si
útiles desde cualquier parte del programa, incluso quieres mostrar un valor de return, pon:
dentro de las funciones. Ojo con modificar print(nombre_función(parámetro))
variables globales dentro de una función, porque
esta cambiará tanto dentro como fuera de ella. print (par(2))
print (par(3))

*Pantalla:*
>>>True
False
Ruteo
El ruteo consiste en anotar todas las asignaciones que genera un programa en una tabla, donde cada columna
representa una variable distinta y cada fila representa una asignación, por lo que se deberá anotar solo una
asignación por fila (Regla de oro).

Programa y Funciones: Esta es el “enunciado” del ruteo, el programa mismo, que decide como se distribuirán
los datos en la tabla, cuales datos y en que orden. Las asignaciones por función se debe hacer en la columna en
donde aparece su nombre en la tabla.

Caja-Pantalla: Esta caja muestra los prints del programa y/o funciones. Cada print se ejerce en una línea
distinta, por lo que debes escribir hacia abajo

Tabla):En esta tabla es donde van todas las asignaciones de datos de cualquieras de las variables
mencionadas. Cada variable en el programa y/o función aparece especificada, una por columna.

Por asignaciones se entiende todas las secuencias tipo variable=dato, todas las llamadas a función, que
asignan los parámetros a los valores dados F(4,7)=> parametro1=4, parametro2=7 , y los ciclos
for, donde la variable de este se asigna a todas los datos de la estructura: for i in [1,2,3]: =>i=1,
i=2, i=3.
Análisis de algoritmo
El análisis de algoritmo consiste en describir lo que realiza una función en breve palabras, o sea, debes
describir lo más objetiva y brevemente posible lo que realiza la función. Estas funciones siempre son
especiales, por lo que la función siempre tendrá un objetivo trivial. Cabe destacar que la función a analizar
puede ser la del ruteo.

Sus elementos son bastante simples. Corresponden a la función misma, y a un rectángulo, en el cual se debe
describir la función.

Otro análisis podría ser:


[La función] Recibe dos números n1 y n2,
retornando n1 elevado a n2.

Esta segunda versión resulta ser más genérica, ya


que al momento de hacer otro ejercicio se puede
usar la misma analogía explicativa (recibe …
retorna …)
Paltitas
[+ paltas, - pera]
Algoritmos comunes
Contador
El contador consiste en crear una variable con el propósito de saber cuántas veces se produjo
cierta acción o se cumplió cierta condición; como por ejemplo, cuantas veces se entró a un
condicional, a un ciclo o cuantas veces se ingresó cierto dato.

Usos: Sacar promedios, contar bajo alguna condición específica, manipular cantidades, sacar
porcentajes, etc.
Algoritmos comunes
Suma/Productoria
La suma consiste en crear una variable para ir sumando cifras que se necesiten acumular, como por ejemplo
montos, notas o puntajes. Análogamente, las productorias se utilizan para ir multiplicando distintos valores.

Usos: Promedios, porcentajes, compilación de información, sumatorias, etc.

En la gran mayoría de los casos las sumas debe partir de 0, y las productorias de 1 (neutro aditivo y
multiplicativo), y se debe posicionar bien en el programa para no provocar sumas/multiplicaciones erróneas,
como cuando se quiere generar distintas sumas con el mismo algoritmo o para cuando se necesita solo una
que sea la variable general para todas estas cantidades.
Algoritmos Comunes
Flag o Verificador
El Flag o verificador es una variable booleana para identificar si es que se a cumplido cierta condición
o requisito. En otras palabras, verifica si un suceso se produjo o no. A priori, el evento no a sucedido
(bandera abajo), y cuando se cumple, se invierte su valor de verdad (bandera arriba).

El Flag es excepcional para crear un menús y otros algoritmos mayores, ya que, al ser una condición
propiamente tal (un booleano) permite evitar generar mecanismos más complejos de verificación, los cuales
son poco ortodoxos o muy arbitrarios.
Algoritmos Comunes
Máximo/Mínimo
El máx(mín) es una variable que permite determinar entre múltiples datos cual es el de mayor(menor),
comparando uno a uno los datos con la variable, para finalmente entregar al mayor(menor). Existen dos tipos:
cuantitativo (¿cuánto es el máximo?) o cualitativo (¿quién es mayor?).

El cuantitativo es simple, se busca el mayor(menor) comparando directamente, cuando se encuentre uno, la


variable se modifica para las siguientes comparaciones, al final del programa el mayor(menor) será el último
valor de dicha variable (máx/mín). Notar que la variable para el máximo debe ser un valor ínfimo, y para el
mínimo debe ser muy grande, esto es, porque a la primera comparación, se desea cambiarlo al primer valor
encontrado.
Algoritmos Comunes
Máximo/Mínimo
En el caso cualitativo, se trabajan con pares de datos, uno cualitativo y otro cuantitativo; como por ejemplo un
alumno y su promedio en programación. Es muy similar al otro método, solo que en este no se busca al valor
máximo (mínimo) en sí, sino que al dueño de este.

Para esto, se hace una segunda variable, donde se guardará al “dueño” del dato (mayor, menor), así, conforme
se encuentre un nuevo máximo, se encontrará un nuevo “dueño”, para finalmente entregar este, y no el dato
en sí. No importa el valor a priori de la variable “dueño”, ya que esta se modificará de inmediato.
Menús
Un Menú consiste en un programa con opciones, dependiendo de la opción ingresada será la
operación a realizar por este; en otras palabras, una compilación de subprogramas.

En los enunciados saldrá explícitamente que debe hacer cada opción, por lo que serán muy fácil
identificar cuando se necesita hacer un menú y cómo.

En todos los Menús habrán 2 o más opciones, siendo una de estas la opción “Salir”. Esta termina
el ciclo del Menú. Por lo que la opción “Salir” será la que cambiará la variable Flag de True a
False.

Además, a veces, se pide que en caso de que se entregue una opción no listada, mostrar un
mensaje de error y volver a pedir una opción, esto se agrega como un else al final de la
cadena if-elif-else, donde la condición de cada uno es si la opción corresponde a un número
dado.
Primero se empieza con las variables que se
necesitarán alterar durante el ciclo, por lo
general serán otros Algoritmos comunes
como Máximos o sumas; y por supuesto el
Flag.

Después se procederá a pedir el número de


opción, e ir comprobando con if o elifs cuál de
estas fue escogida. De ser inválida, caería en
el else, mostraría el mensaje de opción
invalida, y regresaría al inicio del ciclo, donde
pedirá nuevamente una opción. De ser la
opción de salida, deberá cambiarse el valor de
Flag a False, para terminar con el ciclo while y
no pedir más opciones.

Lo que vaya dentro de cada opción depende


únicamente del contexto del programa, pero
existe una estructura determinada para la
mayoría de los casos:
Corrección de errores con prints
Al momento de hacer un programa y trabajar con distintas variables, estas puede que no se modifiquen
satisfactoriamente por algún motivo, que el programa simplemente termine en un punto no deseado, etc.

Para encontrar errores en el programa, uno de los mejores métodos es usando prints, donde se fuerza al
programa a generar un “ruteo” por si mismo, por lo que uno solo tendrá que analizar como evolucionan los
datos conforme el programa avanza, y localizar en donde está fallando.

Este método es eficaz debido a la naturaleza cíclica que suelen tener los programas, debido a que la mayoría
se basa en un loop con condiciones, por lo que alguna entrada indebida a un if o un ciclo terminado
inesperadamente (que son errores muy comunes), son fáciles de detectar y arreglar.

El método consiste en “printear” las variables conforme se modifican en el programa, intenta ocupar
solamente un print por variable, y corre un ejemplo fácil, para detectar el problema sin problemas.

A continuación se verá un ejemplo de un programa que no funciona y se espera arreglar.


Se hace la función factorial que recibe un número (x) y Lo que arroja como resultado es :
entrega su factorial (x!):
2
2
3
6
4
24

Se sabe que la información se recibe en pares, y,z.


Por lo que se descubre que z llega a 24 debido a que y llega a ser
Se tiene que el resultado para 3 es 24, lo que es erróneo.
4, un iteración demás.
Para identificar cual es el error se procede a poner prints
Por lo que en este caso el error es la condición de while que
en las variables que se modifican, en este caso y,z.
permite un ciclo extra. La corrección sería:

También podría gustarte