Categoría: Unidades

Unidades de Estudio

  • 2.5 Acumuladores ejemplo - Algoritmo de la secuencia de Fibonacci

    Referencia: Van Rossum 3.2 p16, Rodriguez 6.10.1 p176, Downey 18.4

    Un ejemplo del uso del acumulador en programación es el algoritmo para generar la secuencia de Fibonacci. En la actividad se deberán identificar el valor inicial y el valor de cambio (aumento o disminución) del nuevo valor de la secuencia. Se plantea responder algunas preguntas para seguimiento de aprendizaje.

    1. Para esta actividad, observe el video desde el minuto 3:50 hasta 6:40:
      El misterio de las matemáticas. Video NOVA
    2. Describa la secuencia de Fibonacci en un párrafo.
    3. ¿Puede programar la secuencia de Fibonacci? usando solo las operaciones básicas de suma y/o resta.
    4. Describa las operaciones en Python y compruebe sus resultados.

    MatemáticasTV. El gran misterio de las Matemáticas. 28 may 2016. YouTube

    Ejemplo de desarrollo

    Se adjunta otro ejercicio resuelto usando acumuladores en programación con la secuencia de Fibonacci como referencia de lo que se puede continuar aplicando en un tema.

    1Eva_IIT2002_T4 cociente de Fibonacci

    Solución propuesta: s1Eva_IIT2002_T4 cociente de Fibonacci

    Conceptos: Contadores y Acumuladores en programación


    ¿Qué es la serie de Fibonacci? y ¿qué tiene que ver con el número áureo?

    BBC Mundo 2021-Abril-21

     

  • 2.3 Contadores y Acumuladores en programación



    Referencia: Rodríguez 3.3.1 p24, Van Rossum 9.3.3 p73,  Downey 22.9

    ¿Qué es un contador  en programación? ¿Qué es un acumulador en programación? Son conceptos de uso cotidiano que son el resultado de la suma de una serie de números. Los conceptos se puede explicar con los siguientes ejemplos:



    ¿Qué es un contador en programación?

    Al visitar el departamento de servicio al cliente en una empresa, los clientes para obtener un turno deben tomar un ticket. Un letrero electrónico indica el número del cliente que se está atendiendo, luego éste número cambia incrementándose en 1 para anunciar el siguiente turno a ser atendido.

    contadores y acumuladores en programación


    El ejemplo de uso práctico de un contador permite observar dos características:

    • Siempre tienen un valor inicial
    • El valor nuevo del contador es el resultado del valor anterior más una constante.

    Al inicio del día, el contador de tickets debe ser inicializado, de preferencia con 0. Cuando un puesto de atención está listo para atención, el contador se incrementa en uno, se escucha una alerta y el cliente se puede acercar con el ticket del primer turno.

    Las características descritas en forma algorítmica se escriben como:

    contador ← 0
    contador ← contador + 1

    La expresión de la segunda línea se puede leer como: "valor nuevo” de contador es el resultado del "valor anterior" incrementando en 1.

    contador decreciente en programación

    Desde luego que los contadores  puede sumarse un valor diferente a 1, pero siempre será un valor constante, como cuando se cuenta de dos en dos.

    La variable contador también pueden tener cambios de forma ascendente, o disminuir desde un valor inicial (decreciente).

    Un ejemplo de contador decreciente se observa en cronometro del microondas para calentar alimentos. El valor inicial son los segundos que permanecerá encendido. El contador de tiempo disminuye en uno cada segundo y al llegar a 0 se apaga el microondas.

    Ejemplo de contador con instrucciones en Python:

    >>> contador = 0
    >>> contador = contador + 1
    >>> contador
    1


    ¿Qué es un acumulador en programación?

    acumulador en programación como ahorro

    Un acumulador en programación es una versión ampliada de un contador. El acumulador  tiene las mismas características que un contador excepto el valor de incremento que es un valor variable.

    Por ejemplo, una cuenta de ahorros puede representarse en un algoritmo mediante un acumulador, pues quien ahorra no siempre lo hará con una cantidad fija en la cuenta: un día deposita 10, otro día deposita 30, otro deposita 5.

    Con el ejemplo de ahorro, se puede determinar que en el acumulador no siempre se añade un valor positivo, pues cuando se hace un retiro, se puede interpretar como que el valor añadido es negativo.

    Las características descritas para forma algorítmica se escriben como:

    acumulador ← 0
    acumulador ← acumulador + X

    La expresión del literal b se para una cuenta puede leer como: "saldo nuevo” de acumulador es el "saldo anterior" de acumulador considerando el deposito (+x) o retiro (-x).

    Recuerde que:

    El concepto de asignar es usado en algoritmos “=” carece de sentido matemático.

    Si tomamos como ejemplo el acumulador, si se expresa como una igualdad, se interpretaría como:

    acumulador = acumulador + X
    acumulador - acumulador = X
    0 = X

    Cuando en el algoritmo se quiere expresar en realidad es una asignación, por lo que se utiliza el símbolo “←”

    acumulador ← acumulador + X

    Esta aclaración permite formalizar la diferencia de comparación de igualdad “=” usada dentro de los condicionales.

    Ejemplo de acumulador en Python:

    >>> acumulador = 0
    >>> acumulador = acumulador + 4.5
    >>> acumulador
    4.5
    >>> acumulador = acumulador - 1.3
    >>> acumulador
    3.2

    En la siguiente página se presentan algunos ejemplos y ejercicios resueltos sobre contadores y acumuladores de exámenes anteriores.



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

    Referencia: Rodríguez 5.6.3 p59, Van Rossum 10.6 p85,  Downey 2.6

    Para los ejercicios iniciales 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 ] [ cociente ] [ residuo ] [ lógicas ] [ aleatorio ] || [ tipos de datos ] [ contador ] [ acumulador ]

    ..


    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.

    [ asignación ] [ cociente ] [ residuo ] [ lógicas ] [ aleatorio ] || [ tipos de datos ] [ contador ] [ acumulador ]

    ..


    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

    [ asignación ] [ cociente ] [ residuo ] [ lógicas ] [ aleatorio ] || [ tipos de datos ] [ contador ] [ acumulador ]

    ..


    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

    Raíz cuadrada \sqrt{a^2 + b^2}

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

    [ asignación ] [ cociente ] [ residuo ] [ lógicas ] [ aleatorio ] || [ tipos de datos ] [ contador ] [ acumulador ]

    ..


    Operaciones Lógicas

    Operación Python
    y p Λ q p and q
    o p V q p or q
    negación ⌉p 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
    

    [ asignación ] [ cociente ] [ residuo ] [ lógicas ] [ aleatorio ] || [ tipos de datos ] [ contador ] [ acumulador ]
    ..


    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

    [ asignación ] [ cociente ] [ residuo ] [ lógicas ] [ aleatorio ] || [ tipos de datos ] [ contador ] [ acumulador ]


    Comentarios, preguntas o consultas:

    youtubelogo @EdisonDelRosariofacebooklogoedelrosespolinstagram logo @edelrosespol

  • 2.1 Tipos de datos numéricos en programación

    [ Escalares ] [ Vectores ] [ Matrices ] [ Listas ] || [ Operaciones ]
    ..


    Referencia: Van Rossum 3.2 p9, Rodríguez 5.6.1 p58, Downey 2.1

    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 numéricas 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.

    Los datos numéricos enteros indican la cantidad de elementos: una manzana, cuatro manzanas en un canasto, etc.

    numero escalar varias manzanas

    La variable numérica recomendada a usar en los casos es la tipo entera, pues siempre los decimales serían cero.

    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 de un 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'>

    Float Double Int Tómalo o Déjalo

    1.3 Variables tipo Compleja

    El tipo de dato numérico usado usado para representar números complejos, aquellos que tienen parte imaginaria (raiz(-1)). En Python se definen en dos partes como: complex(real,imaginaria)

    >>> 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 de una clase.

    >>> tarea = True
    >>> type(tarea)
    <class 'bool'>
    >>> 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  básicos 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. que se describirán durante el desarrollo del curso

    [ Escalares ] [ Vectores ] [ Matrices ] [ Listas ] || [ Operaciones ]
    ..


    2. VECTORES 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

    Por ejemplo, en el huerto, el árbol con la etiqueta 2 tiene 18 manzanas.

    huerto = [15,18,17]
    huerto[2] = 18

    En realidad en programación el primer índice será el cero, asunto a tomar en cuenta cuando se usan los índices entre la programación y el uso diario de identificadores. Es semejante cuando culturalmente se numeran los pisos de un edificio como planta baja, primer piso, segundo piso

    índices = [0,1,2,..]
    huerto = [15,18,17]
    huerto[1] = 18

    en el ejemplo el vector se encuentra formado por números enteros.

    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 (https://blog.espol.edu.ec/matg1049/)

    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'>

    Para el caso de calificaciones, se pueden usar números reales como elementos del vector.

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

    El tema se desarrolla en la Unidad 4 con ejemplos y ejercicios.

    [ Escalares ] [ Vectores ] [ Matrices ] [ Listas ] || [ Operaciones ]

    ..


    2 Matrices - Arreglos de dos dimensiones

    Una matriz Matriz o arreglo puede ser desde un sistema de ecuaciones, una tabla de goles de un campeonato o una hoja de calendario.

    Se usan índices para filas y columnas. Para ele ejemplo las filas representan las semanas y las columnas el nombre del día.

    El valor de una casilla se determina por el nombre de la matriz y sus correspondientes fila y columna.

    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.

    El tema se  desarrolla mucho más en la unidad 4  en el enlace:

    4.2 Matrices en programación – Arreglos de dos dimensiones en Python

    [ Escalares ] [ Vectores ] [ Matrices ] [ Listas ] || [ Operaciones ]

    ..


    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 de números enteros 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 ] [ Vectores ] [ Matrices ] [ Listas ] || [ Operaciones ]

  • 1.3 Videos sobre algoritmos

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

    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.

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]


    Algoritmos, las reglas secretas de la vida moderna

    BBC 2017-Abril-19

    Luego de observar los 5 primeros minutos.

    1. Escriba un párrafo 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 ítem anterior.
    4. ¿Existe relación entre los algoritmos y las matemáticas? Justifique su respuesta
    5. ¿Moderno vs algoritmos? Describa la relación.

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]


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

    BBC Mundo 2021-Mayo-05

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]


    ¿Qué es el Número de Euler? Y la ecuación más hermosa del mundo

    CuriosaMente. 6 jun 2021

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

  • 1.2 Directorio de trabajo en Python

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

    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.

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]


    Cambiar el directorio de trabajo predeterminado en WinPython

    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.

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

  • 1.1 Introducción al curso

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]

    El curso de Fundamentos de Programación presenta 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

    Se presentan varias fuentes de material de estudio, como evaluaciones/exámenes  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

    Material de Revisión autónoma

    ¿Cómo empezar? Revisando ejercicios simples y prácticos que explican la forma de escribir algoritmos.  También con las actividades sugeridas por semana.

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluació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.

    Actividades:  [ 1ra Evaluación ] [ 2da Evaluación ]