2.2 Operaciones básicas matemáticas y lógicas en Python

Referencia: Rodriguez 5.6.3 p59, Van Rossum 10.6 p85,  Downey 2.6

Para los ejercicios inicales en programación se muestran algunas operaciones numéricas básicas a partir de algunas variables: asignación, cociente, residuo, lógicas, aleatorias, etc.


Asignación de valores

En algoritmos se usan las expresiones de asignación para denotar la intención de resolver operaciones y cuyo resultado se almacena en una variable simple, por lo que se expresan de la forma:

c ← a + b
d ← x2 + y2

Debe observar que las asignaciones no son expresiones de igualdad, como las usadas en matemáticas, por lo que su símbolo corresponde a una flecha que apunta el sentido donde se almacena el resultado.


Cociente ó división entera

Se usa solo la parte entera de una división. Ejemplo: Cinco manzanas para dos envases de desayunos

>>> a = 5
>>> b = 2
>>> c = a//b    
>>> c
2

division entera con manzanas

Residuo de a para b

El residuo representa las manzanas que no completan un envase de desayuno.

>>> a = 5
>>> b = 2
>>> c = a%b
>>> c
1

Exponente a^b

Operaciones de base y exponente

>>> c = a**b
>>> c    
25

Raiz cuadrada \sqrt{a^2 + b^2}

>>> import math
>>> c = math.sqrt((a**2) + (b**2))
>>> c
5.385164807134504

Operaciones Lógicas

Operación Python
y p and q
o p or q
negación not(p)

Suponga que p es verdadero y q es falso

>>> p = 1
>>> q = 0
>>> p and q
0
>>> p or q
1
>>> not(p)
False

Número Aleatorio entero

Número entero obtenido por ejemplo al lanzar un dado de seis caras

>>> import random as rnd
>>> dado = int(rnd.random()*6) +1
>>> dado
4

2.1 Tipos de datos numéricos en programación

Referencia: Van Rossum 3.2 p9, Rodríguez 5.6.1 p58, Downey 2.1
Los datos numéricos en programación se clasifican, semejante en matemáticas, entre:

Escalares o de un solo valor como enteros, reales, complejos o imaginarios, booleanos
Vectoriales y matriciales o de un conjunto de valores de una dimensión, dos dimensiones o varias dimensiones.

.. [ Escalares ] [ Vectoriales y matriciales ] [ Listas ]


1. Datos numéricos ESCALARES

Las variables numéricas de un solo valor o elemento utilizadas en un algoritmo se clasificarán en enteras, reales, complejas y lógicas.

1.1 Variables tipo entero

numero escalar una manzanaEs el tipo de variable usada para contar el número de estudiantes presentes en un aula de clases, pasajeros en un bus, barco o avión.

Indican la cantidad de elementos: una manzana, cuatro manzanas en un canasto, etc.

numero escalar varias manzanas

La única forma de variable posible a utilizar en estos casos es la tipo entera.

Ejemplo de tipo de datos numéricos enteros en Python: int()

>>> a = int(input('escriba un entero: '))
>>> b = 5
>>> c = a*b
>>> type(a)
<class 'int'>

1.2 Variables tipo Real

Este tipo de variable se usa para escribir por ejemplo el precio de un producto que incluye los centavos, el peso se producto en Kg, el número π.

En estos casos, al escribir con decimales, se los considera como variable tipo real. Ejemplos: $9.99, $89.32, 1.268Kg, 3.1416

Ejemplo de tipo de datos numéricos reales en Python: float()

>>> g = float(input('escriba un real')
>>> valor = 3.1415927
>>> type(valor)
<class 'float'>

1.3 Variables tipo Compleja

Ejemplo de tipo de datos numéricos complejos en Python: complex(,)

>>> w = complex(1,.5)
>>> w
(1+0.5j)
>>> type(w)
<class 'complex'>
>>> w.real
1.0
>>> w.imag
0.5
>>> w.conjugate()
(1-0.5j)

1.4 Variables tipo Booleana

Se usan en lógica matemática como valor verdadero 1 y falso 0.

Tienen aplicaciones como en asistencia a clases:
presente=0, presente=1,
y pueden sustituir símbolos como √ para asistencia y X para una ausencia.

>>> tarea = True
>>> leccion = False
>>> aprender = tarea and leccion
>>> aprender
False
>>> asiste = tarea or leccion
>>> asiste
True
>>> esperanza = not(leccion)
>>> esperanza
True
>>> examen = 1
>>> leccion = 1
>>> tarea = 0
>>> aprendizaje = leccion and tarea
>>> aprendizaje
0
>>> estudia = leccion or tarea
>>> estudia
1
>>> aprueba = examen and leccion and tarea
>>> aprueba
0

Para el desarrollo de algoritmos se describirán solo estos tipos numéricos como grupos principales. Para el caso de lenguajes de programación se definirán otros subtipos: entero, entero largo, real, real doble, etc.

.. [ Escalares ] [ Vectoriales y matriciales ]


2. VECTORES Y MATRICES en programación

Usados por ejemplo para tabular la cantidad e manzanas en los arboles de un huerto como control de producción por árbol.

La fila de un huerto es el vector, cada árbol es el índice del vector, la cantidad de manzanas producidas es el valor de cada casilla del vector.

huerto
árbol 1 2 3
manzanas 15 18 17

tamaño del vector=3

ARREGLOS

Arreglos de una dimensión o vectores, requieren importar numpy. Las librerías numpy incorporan muchas operaciones de vectores y matrices usadas en otros cursos como álgebra lineal (http://blog.espol.edu.ec/matg1049/)

2.1 Vectores – Arreglos de una dimensión

Por ejemplo: las notas de 1ra, 2da y 3ra evaluación se pueden escribir en un vector.

vector = \begin{pmatrix}7.2 \\ 8.4 \\ 9.23\end{pmatrix}
>>> import numpy as np
>>> vector = np.array([7.2, 8.4, 9.23])
>>> type(vector)
<class 'numpy.ndarray'>

los vectores pueden contener escalares de tipo entero, real o complejo, como se usan en matemáticas.

2.2 Matrices – Arreglos de dos dimensiones

matriz = \begin{pmatrix}1.2 && 2.45 && 5.3 \\ 0.3 && 1.75 && 4.89\end{pmatrix}

matrices requieren importar numpy

>>> matriz=numpy.array([[1.2, 2.45, 5.3],
                        [0.3, 1.75, 4.89]])
>>> type(matriz)
<class 'numpy.ndarray'>
>>> matriz
array([[ 1.2 , 2.45, 5.3 ],
       [ 0.3 , 1.75, 4.89]])

las matrices de igual manera pueden contener valores de de tipo entero, real o complejo, etc. acorde al problema a realizar.

.. [ Escalares ] [ Vectoriales y matriciales ] [ Listas ]


3. LISTAS

Otra forma de agrupar datos como en vectores y matrices son las listas.
Para uso de matemáticas, cálculo numérico o álgebra lineal se recomienda usar arreglos, pues las operaciones de las librerías (numpy) están optimizadas para el uso de arreglos.

Ejemplo de un vector como lista:

>>> vector = [1,4,2,1]
>>> type(vector)
<class 'list'>

Ejemplo de una matriz como lista:

>>> matriz = [[1,2,3,4],
              [5,6,7,8]]
>>> type(matriz)
<class 'list'>
>>> matriz[0][2]
3
>>>

En el caso de vectores y matrices numéricos es preferible usar arreglos por la disponibilidad de operaciones numéricas, algebraicas disponibles en la librería Numpy.

[ Escalares ] [ Vectoriales y matriciales ] [ Listas ]

1.3 Videos sobre algoritmos

Observe el siguiente video de 5 minutos sobre algoritmos, responda las preguntas mostradas y contraste sus respuestas con sus compañeros:

  1. ¿Para que usaron un algoritmo los entrevistados?
  2. ¿Conocía de alguno de ellos antes de ver el video? Si es afirmativo, de dónde o por qué?
  3. ¿Deberían las escuelas enseñar algoritmos?

Referencia: https://studio.code.org/courses

Observe los videos sobre algoritmos  y responda las preguntas mostradas y contraste sus respuestas con sus compañeros:


Algoritmos, las reglas secretas de la vida moderna

BBC 2017-Abril-19

Luego de observar los 5 primeros minutos.

  1. Escriba un parrafo que describa su concepto de algoritmo.
  2. Realice una lista de 5 algoritmos que conozca y que no se describan en el video.
  3. ¿Como ayudan los algoritmos en las actividades diarias?
    Puede usar la lista del item anterior.
  4. ¿Existe relación entre los algoritmos y las matemáticas? Justifique su respuesta
  5. ¿Moderno vs algoritmos? Describa la relación.

¿Qué son los algoritmos y cómo aprenden de nosotros?

BBC Mundo 2021-Mayo-05

1.2 Directorio de trabajo en Python

En Python cada ejercicio  se desarrolla en un algoritmo cuyas instrucciones se guardan en un archivo.py. El archivo.py de instrucciones se guarda en un «directorio de trabajo» conocido también como ruta de trabajo.

Para revisar la ubicación del directorio, se usa la librería os que se «carga» al inicio de la sesión con:

>>> import os

Se consulta el directorio de trabajo con la instrucción:

>>> os.getcwd()
'C:\\WPy64-31050\\notebooks'


para cambiar directorio de trabajo se usa la instrucción para un directorio de ejemplo:

>>> os.chdir('d:\\proyectos\python')
>>> os.getcwd()
'd:\\proyectos\\python'

Como buena práctica, use un directorio de trabajo para todas las actividades del curso. Así podrá almacenar y clasificar los algoritmos en subdirectorios por unidad, tarea, lección, taller, etc.

Los archivos realizados en clases serán de utilidad para consultas posteriores sobre temas y algoritmos anteriormente resueltos.


Cambiar directorio de trabajo predeterminado

Para cambiarlo, debe buscar en el directorio de Winpython/Settings, el archivo winpython.ini

Edite el archivo con el el bloc de notas, para quitar el # de la línea WINPYWORKDIR, escriba la ruta del directorio deseado,

[debug]
state = disabled
[environment]
#HOME = %HOMEDRIVE%%HOMEPATH%\Documents\WinPython%WINPYVER%
#JUPYTER_DATA_DIR = %HOME%
#WINPYWORKDIR = %HOMEDRIVE%%HOMEPATH%\Documents\WinPython%WINPYVER%\Notebooks

WINPYWORKDIR = D:\CCPG1001Ejemplos

Reinicie WinPython y observará que el directorio predeterminado de trabajo ha cambiado, use abrir o guardar para ver el directorio que abre directamente en su PC.

Recuerde realizar el ajuste cuando la versión que tiene es «portable» y a lleva en un USBdrive.

Por lo que es mejor realizar una nueva instalación en la computadora donde lo va a usar.

Realice una copia al disco duro del instalador para que el proceso sea más rápido que usando una memoria USB.

1.1 Introducción al curso

El curso de Fundamentos de Programación ”presenta a los estudiantes estrategias para resolver problemas comunes en diversas profesiones por medio del diseño e implementación de soluciones basadas en el uso de un lenguaje de programación. Cubre los principios básicos para que el estudiante pueda leer y escribir programas; haciendo énfasis en el diseño y análisis de algoritmos.” (Syllabus)

Syllabus

Se presentan varias fuentes de material de estudio, como evaluaciones/examenes  anteriores, propuestas de solución (ver el menú), libros digitales, etc.

Bibliografía

Para el desarrollo del curso, es conveniente disponer de algunos lineamientos generales:

Políticas del curso

Reglamento de Evaluaciones

Material de Revisión autónoma

Sesión01: Estructuras de Control en programación

Material de clases

  • Algoritmos. Conceptos y Propiedades
  • Entorno Python. Revisar sección Recursos/descarga, disponer de WinPython para iniciar la clase.

Nota: si en el laboratorio y computador asignado para la clase no dispone de Python, puede usar la versión portable de WinPython descrita en la sección de descargas. No se requiere permisos de administrador para poder usarla, solo debe copiar el directorio de WinPython a un directorio de trabajo. Se recomienda tener una copia descargada en una memoria USB.

Unidades

Unidades acorde al programa de estudio del curso, usando principalmente Python. El enfoque es práctico usando ejercicios de evaluaciones anteriores.