Prog Metnum 2020-1 Apuntes Unidad 1
Prog Metnum 2020-1 Apuntes Unidad 1
Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas, que definen una forma
codificada de realizar programas. Un programa es un conjunto de instrucciones que le indican que
acciones debe ejecutar una computadora. Los lenguajes de programación nos ayudan a hacer mas fácil
la tarea de especificarle a la computadora que acciones debe realizar.
La evolución de los lenguajes de programación ah servido para hacerle mas fácil la vida al
programador, para que en menor tiempo y con menor esfuerzo pueda llevar a cabo tareas complejas en
sus programas que codifica.
Lenguajes Compilados.
Son aquellos donde el programador escribe el programa en un cierto lenguaje en un archivo de texto
llamado código fuente y este tiene que ser convertido a un archivo ejecutable, que contiene
instrucciones en lenguaje maquina que la computadora puede entender, por una entidad llamada
compilador. Como por ejemplo el Lenguaje C/C++.
Lenguajes Interpretados.
Son aquellos en donde existe un programa ejecutándose en el sistema operativo llamado interprete
quien se encarga de ejecutar directamente las lineas de código que pueden ser introducidas a este o
quien puede ejecutar un archivo de código de dicho lenguaje. En este caso el programador realiza su
codigo en un archivo de texto y este es directamente interpretado por el programa antes mencionado, y
la computadora realiza las ordenes del archivo de texto. Este archivo de texto que contiene el código
generalmente se conoce como script. Python es un lenguaje interpretado y es el lenguaje que usaremos
en el curso.
El cual surge ante la necesidad de tener en un solo programa todas las utilerias necesarias para el
desarrollo de software.
Durante el curso vamos a utilizar el lenguaje de programación de Python, para realizar nuestros
programas y utilizaremos el ambiente de desarrollo Spyder que viene incluido en la plataforma de
anaconda.
Un programa de python puede ser tan simple como una sola linea de código.
print(“Hola Mundo”)
"""
Un comentario con la descripción de lo que hace el programación
Esto es un comentario de múltiples lineas
Esto es ignorado por el interprete de Python
"""
def mifuncion2():
print("Esta es mi segunda funcion")
return
Programación y Métodos Numéricos Marco Cabrera Ver. 0.1
Universidad Autónoma de Baja California Apuntes
Facultad de Ciencias Químicas e Ingeniería Unidad 1
def main():
print("Aqui esta todo el codigo de lo que hace el programa")
#mandar llamar las funciones
mifuncion1()
mifuncion2()
return
if __name__ == '__main__':
main()
Boolean: Tipo de dato que define los valores que se utilizan para realizar operaciones lógicas. Los
valores booleanos son dos unicamente, True(Verdadero) y False(Falso).
Int: Tipo de dato que define valores enteros positivos y negativos. Dependiendo de la plataforma este
valor pude ser de cierta cantidad de bytes y el rango estará definido por el tamaño en bytes del entero
que si por ejemplo es de 32 bits el rango sera aproximadamente de -2 mil millones a 2 mil millones.
Float: Tipo de dato que define valores positivos y negativos con punto decimal, como por ejemplo el
famoso valor de pi, 3.1415….. o cualquier valor negativo con punto decimal como -12.94834.
String: Tipo de dato que define caracteres y cadenas de caracteres para utilizarse en un contexto de
comunicación escrita. La forma de como se define una cadena de caracteres en python, es utilizando
comillas, por ejemplo. "Esta es una cadena de caracteres".
Listas: Tipo de dato que define una secuencia ordenada de elementos que pueden ser de cualquier tipo
que soporte el lenguaje. Como por ejemplo:
lista = [True, 7,3.1416,"Esta es una cadena de caracteres"]
Tuplas: Tipo de dato que define una secuencia ordenada de elementos que pueden ser de cualquier tipo
que soporte el lenguaje, pero que a diferencia de las listas estas son inmutables. Es decir, no se puede
modificar una vez que se define.
Diccionarios: Tipo de dato que define un par ordenado(python 3) de elementos. Donde dentro de cada
par, uno de los elementos se conoce como “la llave”(el cual tiene que ser un valor que no se repite y
que identifica a ese par entre todos los otros pares) y el otro como “el valor”. Se utilizan las llaves{}
para definir el diccionario y para separar en cada par la llave del valor se utilizan dos puntos :, y se
utiliza la coma , para separar cada par. Cada par es un elemento dentro del diccionario:
{llave:valor, llave:valor, llave:valor}, la llave y el valor pueden ser de cualquier tipo de dato, teniendo
en cuenta que la llave no debe de repetirse y debe ser un elemento único para cada par.
Como por ejemplo un diccionario podría servir para almacenar la calificación de un alumno y su
matricula:
Por buenas practicas de programación, el identificador de una variable debe de hacer referencia a su
contenido, debemos de usar palabras cortas en la medida de lo posible, si necesitamos poner mas de
una palabra en un identificador, debemos procurar separar las palabras con un guion bajo o empezando
la segunda palabra con mayúscula, existe todo un tema al redor de esto, que se conoce como estilos de
programación.
El lengua de programación de python es un lenguaje fuertemente tipado, es decir, hay operaciones que
son especificas para un tipo de dato y si quieres hacer la operación con un tipo de dato diferente
necesitas realizar un cambio de tipo antes de hacer la operación.
Lógicos:
Los operadores lógicos son aquellos que nos permiten realizar operaciones lógicas.
AND el operador and , nos sirve para realizar operaciones lógicas de tipo and, que siguen la regla de la
tabla de verdad and.
Tabla de verdad -AND:
Operando 1 and operando 2 = Resultado
False False False
False True False
True False False
True True True
OR el operador or, nos sirve para realizar operaciones lógicas de tipo or, que siguen la regla de la tabla
de verdad or.
Tabla de verdad -OR:
Operando 1 or operando 2 = Resultado
False False False
False True True
True False True
True True True
NOT el operador not, nos permite realizar operaciones lógicas de tipo not, que es la negación o
complemento. Y que funciona de la siguiente manera.
Relacionales:
Son aquellos que nos permiten realizar operaciones de relación.
Ademas de esto podemos incluir una cadena de caracteres como parámetro a la función y esta cadena
se mandara a imprimir en pantalla.
Por ejemplo si quisiéramos capturar el nombre de una persona, en una variable llamada nombre,
podríamos hacer lo siguiente:
Por defecto, print the imprime los elementos separados con coma, con un espacio, pero si al mandar
llamar la función de print tu quieres cambiar eso, solamente tendrías que redefinir el parámetro sep, por
ejemplo si quisiera separar el valor de x=3 y z=5 con dos puntos : en lugar de un espacio, se haría lo
siguiente.
Por defecto print termina con un salto de linea ( \n ), si no deseas que termine con ese salto de linea
solo hay que modificar el parámetro end. Por ejemplo si mando llamar dos veces la función print y la
primera vez imprimo “Hola” y la segunda imprimo “UABC” en pantalla quedaría una en una linea y la
otra en otra linea.
print(“HOLA ”)
print(“UABC”)
Hola
UABC
Si queremos que estén la misma linea, hay que modificar end = “”.
Hola UABC
Programación y Métodos Numéricos Marco Cabrera Ver. 0.1
Universidad Autónoma de Baja California Apuntes
Facultad de Ciencias Químicas e Ingeniería Unidad 1
Las estructuras de control selectivas son aquellas que nos ayudan a realizar un conjunto de
instrucciones, cuando se cumple o no una o varias condiciones especificas.
Selección Simple:
Esta es cuando se ejecuta un conjunto de código siempre y cuando se cumpla la condición, es decir,
siempre y cuando la condición sea verdadera.
La condición tendrá como resultado, falso o verdadero (True/False), si es True, se ejecutara el código,
si es False, no se ejecutara el código, es decir, si se cumple la condición se ejecutara el código y de lo
contrario no.
La selección Doble:
Es utilizada cuando queremos ejecutar un conjunto de código cuando se cumple la condición y otro
conjunto cuando no se cumple, es decir, para ambos casos tenemos ciertas instrucciones a ejecutarse
dependiendo de, si se cumple o no la condición.
Para implementar la selección doble se utilizan las palabras reservadas “if” y “else”.
Sintaxis:
if (condicion) :
#código
# a realizar cuando
#se cumple la condición
else:
#código
#a realizar cuando
#NO se cumple la condición
Ejemplo. Imprime “Eres mayor de edad”, si el usuario es mayor de edad, imprime “No eres mayor de
edad” si el usuario No es mayor de edad.
En Python:
Seleccion Multiple:
Se utiliza cuando evaluamos múltiples condiciones, y queremos ejecutar un conjunto de instrucciones
cuando se cumple una de ellas y/o cuando no se cumple ninguna.
Para implementar la selección múltiple en Python podemos utilizar la anidación de la palabra reservada
dentro de la estructura else o podemos hacer uso de la palabra reservada “elif”
if opcion == “d”:
print(“¿Maruchan o Ramen?”)
else:
if opcion == “e”:
print(“¿Con o sin orilla de queso?”)
else:
if opcion == “f”:
print(“Adiós!!!”)
else:
print(“Opción invalida!!!”)
Las estructuras de control repetitivas también conocidas como ciclos o bucles, son aquellas que nos
permiten ejecutar un conjunto de instrucciones de manera repetitiva siempre y cuando se cumpla la
condición especifica que controla el ciclo.
La estructura “for”:
Esta estructura generalmente se utiliza cuando se sabe de antemano cuantas veces se van a realizar las
instrucciones. “for” en python nos puede ayudar a recorrer elementos dentro de una variable que cuenta
con mas de un elemento.
Sintaxis.
for (condicion):
#Código
#a ejecutarse
#de acuerdo a la condición
for i in range(0,100,1):
print(“UABC”)
for i in range(0,100):
print(“UABC”)
for i in range(100):
print(“UABC:”)
La estructura for nos puede servir para iterar sobre variables de múltiples elementos.
Ejemplo. Determinar cuantas vocales y cuantas consonantes tiene una cadena de caracteres.
escuela = “UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA”
vocales = 0
consonantes=0
#iterar sobre la cadena
for letra in escuela.upper().replace(“ ”,””):
if letra == “A” or letra == “E” or letra == “I” or letra == “O” or letra == “U”:
Programación y Métodos Numéricos Marco Cabrera Ver. 0.1
Universidad Autónoma de Baja California Apuntes
Facultad de Ciencias Químicas e Ingeniería Unidad 1
vocales+=1
else:
consonantes+=1
print(“La cadena de caracteres cuenta con ”,vocales,”vocales y con ”,consonantes,”consonantes!”)
La estructura “while”:
El ciclo while se utiliza mayormente cuando no se sabe de antemano cuantas veces se llevara acabo el
ciclo y que este puede estar controlado por una variable tipo centinela. Las instrucciones se repetirán
siempre y cuando la condición verdadera se cumpla.
Sintaxis.
while (condicion):
#Código a ejecutarse
#mientras la condición se cumple
#Aquí se tiene que modificar la variable que esta involucrada en la condición
#(con la excepción de los ciclos infinitos)
opcion = 0
while opcion != “f”:
#Presentar el menu al usuario
print(“Menu de comida”)
print(“a)Tacos”)
print(“b)Papas”)
print(“c)Lasagna”)
print(“d)Sopa”)
print(“e)Pizza”)
print(“f)Salir”)
1.3. Funciones.
Las funciones son un conjunto de instrucciones agrupadas que realizan una tarea especifica, que se
definen y se mandan llamar. Una función tiene un nombre, puede o no recibir parámetros de entrada y
puede o no regresar valores.
Son aquellas que nos ayudan a realizar operaciones matemáticas complejas como raíces, exponentes,
logarítmicas, trigonométricas, etc.
#Funciones trigonometricas
print(math.sin(10))
print(math.cos(42))
#Potencia
print(math.pow(12,7))
#copiar signo
print(math.copysign(-3,4))
#Exponente de e^x
print(math.exp(8))
#factorial
print(math.factorial(7))
Programación y Métodos Numéricos Marco Cabrera Ver. 0.1
Universidad Autónoma de Baja California Apuntes
Facultad de Ciencias Químicas e Ingeniería Unidad 1
#Raiz Cuadrada
print(math.sqrt(25))
#Logaritmo natural
print(math.log(45))
#Logaritmo base 10
print(math.log10(45))
print(math.log(45,10)
Son aquellas funciones donde el programador especifica el nombre, los parámetros de entrada, el
cuerpo de la función y los valores de retorno.
Sintaxis:
def NOMBRE_DE_LA_FUNCION(PARAMETROS_DE_ENTRADA):
#El cuerpo de la función,
#es decir el código
#de lo que la función realiza
if condición: #la función puede contener estructuras selectivas
#Aquí el código del if
for i in range(100): #la funcion puede contener estructuras cíclicas
#Aquí el código del for
#En cualquier momento dentro de la función se puede regresar un valor y con ello
#la ejecución de la función terminaría
return VALOR_O_VALORES_DE_RETORNO
#Ejemplo
x=0 # Variable global x
y=0 # Variable global y
z=0 # Variable global z
def funcionX(x,y,z):
x = 10 #Variable local x
y = 20 #Variable local y
z = 30 #Variable local z
return x,y,z
valores = funcionX(x,y,z)
print(x,y,z) #imprimira el valor de las variables globales los cuales son 0,0 y 0
#Ejemplo
x=0 # Variable global x
y=0 # Variable global y
z=0 # Variable global z
def funcionX():
global x
global y
global z
x = 10 #Variable global x
y = 20 #Variable global y
z = 30 #Variable global z
return x,y,z
valores = funcionX(x,y,z) #en valores se almacena una copia de los 3 valores 10,20 y 30
print(x,y,z) #imprimira el valor de las variables globales los cuales son 10,20 y 30
def vocales(nombre):
vocal = 0
for letra in nombre.lower():
if letra == “a” or letra == “e” or letra == “i” or letra == “o” or letra == “u”:
vocal+=1
return vocal
def iguales(primer_nombre,segundo_nombre):
if vocales(primer_nombre) == vocales(segundo_nombre):
return True
else:
return False
if iguales(primero,segundo):
print(“Ambos nombres tienen la misma cantidad de vocales!!! vocales: “,vocales(primero))
else:
print(“El primer nombre tiene:”,vocales(primero),”vocales!”)
print(“El segundo nombre tiene:”,vocales(segundo),”vocales!”)
lista = [1,2,3]
def suma(lista):
if len(lista)>1:
return lista[0] + suma(lista[1:])
else:
return lista[0]
print(suma(lista))
#Resumen del retorno de la función después de ser llamada a si misma dos veces
return 1 + suma([2,3])
return 2 + suma([3])
return 3
return 1 + 2 + 3
Las bibliotecas de funciones son un compendio de funciones que se requieren utilizar con frecuencia y
fuera del ámbito donde están definidas.
MAX_VALUE = 255
Una vez que tenemos ese archivo con las funciones deseadas, existen varias formas de cargar el modulo
o las funciones requeridas dentro de otro archivo .py
otra forma:
otra forma:
1.4. Arreglos.
Son un conjunto de elementos del mismo tipo, es una estructura que se utiliza para almacenar datos de
un mismo contexto.
1.4.1 Vectores.
Son un arreglo unidimensional, al cual podemos acceder a todos sus elementos a través de un solo
indice.
#calcula el promedio
suma=0
promedio = 0
for calificacion in calif_gpo1:
suma+=calificacion
promedio = suma/cant_alumnos
#Imprimir el promedio
print(“El promedio las calificaciones capturadas es:”,promedio)
Si no tuviéramos arreglos, para implementar el ejemplo anterior tendríamos que hacer referencia
individualmente a cada elemento por su identificador.
#calcula el promedio
Como podemos apreciar con los arreglos es mas sencillo y legible el codigo, y nos podemos ayudar en
el caso de python de que el ciclo for puede iterar sobre todos los elementos. Aunque la idea principal es
que un elemento se puede modificar, o se puede leer simplemente, con el nombre del arreglo y el indice
que corresponde al elemento a modificar, por ejemplo si quisiera modificar la calificación del primer
elemento, bastaría con usar → calif_gpo1[0] = 100 o si se quiera imprimir en pantalla, bastaria con
poner → print(calif_gpo1[0])
1.4.2 Matrices.
Son arreglos bidimensionales, a los cuales podemos acceder a sus elementos a través de dos indices.
El primer indice es para el renglón, y el segundo indice es para la columna.
matrix = [[1,2,3],[4,5,6],[7,8,9]]
Si para la matriz anterior quisiéramos modificar el elemento que se encuentra al centro de los renglones
y al centro de las columnas con el valor 100, tendríamos que hacer lo siguiente:
matrix[1][1] = 100
Las matrices son estructuras muy útiles, para manipular grandes cantidades de valores que están en un
mismo contexto, por ejemplo la representación de una imagen en pantalla, que esta constituida por un
arreglo matricial de pixeles, donde cada pixel a su ves es un conjunto de 3 valores de intensidad de
color Rojo, Verde y Azul (Formato RGB).
Arreglos en Python:
Comúnmente cuando manejamos arreglos en python, se utiliza un modulo llamado Numpy, debido a
que python no maneja nativamente el concepto convencional de arreglos.
Hasta el momento en los ejemplos anteriores hemos utilizado lista y no arreglos, propiamente.
Pero a continuación veremos como utilizar arreglos de numpy.
import numpy as np
vector = np.array([1,2,3,4,5,6,7,8,9])
#imprimir todos los elementos haciendo referencia a cada uno de los elementos del arreglos
for i in range(9):
print(vector[i])
import numpy as np
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
Un arreglo n-dimensional requiere de n cantidad de indices para hacer referencia individual a cada uno
de sus elementos.
Volviendo a la analogía del cuaderno cuadriculado, cada elemento es un “cuadrito”, un vector seria una
estructura que nos ayudaría a identificar con un indice, un elemento dentro de un renglón de la pagina
cuadriculada, una matriz seria una estructura que nos ayuda a identificar un elemento en una pagina del
cuaderno, una matriz tridimensional seria una estructura que nos ayuda a identificar un elemento dentro
de un cuaderno, es decir, tendríamos un indice para el renglón, otro indice para la columna y otro indice
para la pagina, así que de esta manera podríamos identificar cada elemento(“Cuadrito”), de todo el
cuaderno, sabiendo que renglón, que columna y que pagina.
Para arreglos de mas dimensiones, imaginemos que queremos identificar cada “cuadrito”, sabiendo que
cada cuaderno esta en una caja, y que cada caja esta en un cuarto y cada cuarto esta dentro de un
edificio y que hay varios edificios, entonces un indice para el edificio, otro indice para el cuarto, otro
indice para la caja y otro indice para el cuaderno y otro indice para la pagina y otro indice para la
columna y otro indice para el renglón. De esta manera ocuparíamos 7 indices para identificar cada
“cuadrito” de todas las paginas de todos los cuadernos que están en cajas en todos los cuartos de todos
los edificios. Es decir esta seria una estructura de 7 dimensiones.
El formato RGB de 24 bits, maneja un rango de valores de 8 bits para cada color, donde esos 8 bits
estan destinados a representar valores unicamente positivos. Entonces cada color maneja un rango de
valores de 0 a 255. Lo cual nos permite manejar una gamma de 16,777,216 colores.
Una imagen a color de RGB de 24 bits esta compuesta por un conjunto de renglones y
columnas(matriz), de cada uno de los colores, es decir, esta compuesto de una matriz tridimensional,
donde la primer dimensión son los renglones, la segunda son las columnas y la tercera es el color. En
otras palabras esta compuesta de 3 matrices, una matriz para las intensidades del rojo, otra matriz para
las intensidades del verde y otra matriz para las intensidades del azul.
Una imagen a color esta compuesta por un conjunto de renglones y columnas donde cada elemento es
in pixel. En un formato RGB cada pixel esta compuesto de tres valores, un valor de intensidad para el
rojo (0-255) , un valor de intensidad para el verde (0-255) y un valor de intensidad para el azul(0-255).