Categoría: Unidades

Unidades de Estudio

  • 3.3.2 Bucles o Ciclos - Ejercicios y Tarea

    Ejercicios para Actividades independientes con lazos

    1Eva_IT2003_T2 Verificar una inducción matemática

    1Eva_IIT2013_T1 Verificar Bisiesto

    1Eva_IT2013_T1 Primos gemelos

    1Eva_IT2014_T2 Verificar EAN

    2Eva_IT2008_T2 Validar cédula ecuatoriana


    Tarea - Ejercicios

    Para cada ejercicio, describa un algoritmo en seudo-código, dibuje un diagrama de flujo y realice dos pruebas de escritorio.

    1. Un bote tiene capacidad de llevar X kilos. Se tiene una lista con los pesos en kilos ordenados en forma creciente de las personas que desean subir al bote.
    Determine cuantas personas puede llevar el bote.

    Bote paseo acuatico
    Bote paseo control de carga maxima

    2. Repita la lectura de un número entero hasta que sea positivo, entonces, determine cuantas cifras tiene. El método que debe usar es contar cuantas veces es divisible para 10.

     

    3. Dado un número entero positivo, determine la suma de sus dígitos.

    Ejemplo: 7258 -> 7+2+5+8 = 22

    4. Dado un número entero positivo, muéstrelo con las dígitos en orden opuesto.

    Ejemplo. escribe 7258 y el resultado será 8527

    5. Dados dos números enteros muestre su MCD y su MCM.

    Ejemplo. escribe 25 y 20. obtiene como resultado 5 y 100

    Nota: si a, b son los datos y MCM es su mínimo común múltiplo y MCD es su máximo común divisor, se tiene que MCD * MCM = a * b

    6. Dado un número entero positivo determine su equivalente en el sistema binario con el siguiente procedimiento:

    - divida el número para 2 sucesivamente hasta que el cociente sea 0.

    - Entonces, los residuos que se obtienen son los dígitos del número binario, pero en orden opuesto.

    - Forme el número con estos residuos mientras los obtiene y muestre su valor

    7. Modifique el algoritmo anterior para invertir el número obtenido y mostrar el número binario con los dígitos en la posición correcta.

    8. El siguiente procedimiento genera una secuencia de números enteros:

    a) Dado un número entero

    b) Sume los cuadrados de los dígitos del número y forme un nuevo número con el residuo entre la suma y 9

    c) Repita sucesivamente el paso b) con cada nuevo número obtenido, hasta que el resultados sea el número 1, o hasta que se hayan realizado mas de 10 repeticiones.

    d) Si se obtuvo el resultado 1, muestre el número inicial, la cantidad de repeticiones realizadas, y el mensaje "número suertudo"

    9. Modifique el algoritmo anterior para encontrar los "números suertudos" existentes entre 10 y 99

    10. Describa un algoritmo para realizar el control de la anotación de un encuentro de tenis de mesa.

    - En este juego intervienen 2 jugadores identificados como 1 y 2 .

    - A cada uno se le agrega un punto cada vez que realiza una jugada a su favor si es que tiene el servicio a su favor, si no únicamente pasa el servicio a su favor.

    - El juego termina cuando un jugador llega a 15 puntos teniendo por lo menos dos puntos de diferencia con respecto al otro jugador.

    - Al inicio debe ingresar el número 1 o 2 indicando cual jugador comienza con el servicio a su favor, y luego sucesivamente ingrese el resultado de cada jugada ( 1 o 2).

    - Al terminar debe mostrar un mensaje indicando cuál es el ganador.

    11. Encuentre todos los números naturales entre 1 y 100 tales que la suma de sus dígitos de como resultado un numero primo.

    Ejemplo : 34: 3+4 = 7 debe mostrar el 34 pues 7 es un número primo

    12. Muestre los primeros n números de la secuencia de Fibonacci, siendo n un número entero.

    Los términos de la secuencia de Fibonacci son: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

    Note que a partir del tercer término cada nuevo término es igual a la suma de los dos anteriores.

    13. Repita la lectura de un número entero hasta que sea par. Luego encuentre dos números primos tales que la suma sea igual al número par dado.

    14. Dado el radio r de una circunferencia, encuentre el polígono regular de menor número de lados inscrito en la circunferencia, de tal manera que la suma de sus lados difiera de la longitud de la circunferencia en no mas de 0.0001.

    Sugerencia: repita los cálculos con polígonos regulares incrementando su número de lados con n = 3, 4, 5, 6,.....

    poligono dentreo de circulo

  • 3.3.1 Bucles o Ciclos - Ejercicios resueltos con Python

    Ejercicios resueltos de bucles que combinan estructuras de control básicas, acumuladores y contadores, cocientes y residuos, etc.

    Ejercicios resueltos con Acumuladores y Contadores

    1) 1Eva_IT2009_T1 Suma de Serie con signo alternado

    Solución propuesta: s1Eva_IT2009_T1 Suma de Serie con signo alternado

    2) 1Eva_IIT2003_T2 Sumar términos de progresión geométrica

    Solución propuesta: s1Eva_IIT2003_T2 Sumar términos de progresión geométrica

    Ejercicios resueltos sobre Cocientes y Residuos

    3) 3Eva_IT2009_T2 Seleccionar billetes de cajero automático

    Solución propuesta: s3Eva_IT2009_T2 Seleccionar billetes de cajero automático

    4) 1Eva_IT2014_T1 Cuadrado de Cinco

    Solución propuesta: s1Eva_IT2014_T1 Cuadrado de Cinco

    5) 1Eva_IT2004_T2 Verificar ISBN

    Solución propuesta: s1Eva_IT2004_T2 Verificar ISBN

    Lazos/Bucles/Ciclos "While" - Ejercicios resueltos

    Mientras_Repita o Repita_Hasta

    6) 1Eva_IIIT2003_T2 Verificar números triangulares

    Solución propuesta: s1Eva_IIIT2003_T2 Verificar números triangulares

    7) 2daEva_IIT2004_T3 Reciclar vasos

    Solución Propuesta: s2daEva_IIT2004_T3 Reciclar vasos

    8) 1Eva_IT2001_T5 Verificar divisibilidad para 9

    Solución propuesta: s1Eva_IT2001_T5 Verificar divisibilidad para 9

    9) 1Eva_IIT2006_T2 Dígito verificador de cuenta

    Solución propuesta: s1Eva_IIT2006_T2 Dígito verificador de cuenta

    10) 1Eva_IT2010_T2 Número Omirp

    Solución propuesta: s1Eva_IT2010_T2 Número Omirp

    11) 1Eva_IIT2012_T1 Sucesión de Padovan

    Solución propuesta: s1Eva_IIT2012_T1 Sucesión de Padovan

    12) 1Eva_IT2011_T1 Ahorros de Juan vs Pedro

    Solución propuesta: s1Eva_IT2011_T1 Ahorros de Juan vs Pedro

    13) 1Eva_IIT2010_T2 Venta de pasajes tren turístico

    Solución propuesta: s1Eva_IIT2010_T2 Venta de pasajes tren turístico

    14) 1Eva_IIT2002_T4 Cociente de Fibonacci

    Solución propuesta: s1Eva_IIT2002_T4 Cociente de Fibonacci

    15) 1Eva_IIT2012_T2 Número camiseta equipo

    Solución propuesta: s1Eva_IIT2012_T2 Número camiseta equipo

    16) 1Eva_IIT2005_T2 Negocio piramidal

    Solución propuesta: s1Eva_IIT2005_T2 Negocio piramidal

  • 3.3 Bucles o Ciclos "while" - Estructuras para Repetir o iterar



    Lazo/Bucle/Ciclo: Repita-Hasta (do-while/while not)

    Referencia: Van Rossum 4.4 p21, Rodríguez 3.4.3.a p33, Downey 7.4

    diagrama de flujo de un lazo repita hasta

    En algunos problemas existen bloques de operaciones que se repiten. Estas operaciones se pueden repetir hasta que se cumpla una condición o repetir mientras se cumpla una condición. Las estructuras de control incorporan lazos, bucles o ciclos para repetir: repita-hasta, mientras-repita (while) y "para"(for).

    Ejemplo: Para aprobar un curso o materia de estudio  se debe superar la nota mínima para aprobar (60/100).

    La condición para continuar al siguiente curso que se aplica en el Bucle se escribe como nota<60/100. En el diagrama de flujo la condición se presenta al final del bloque de operaciones, en el algoritmo en Python se escribe al inicio.

    nota = 0 # nota inicial
    while (nota<60/100):
        print('tomar el curso')
        print('hacer el examen')
        nota = input('nota final:'


    Lazo/Bucle/Ciclo: Mientras- Repita (while-do)

    Estructura Mientras Repita
    Estructura Mientras Repita

    Ejemplo: Es el procedimiento usado en las evaluaciones para nivel o curso de idiomas (inglés).

    El estudiante primero realiza un examen, si no obtiene la calificación mínima debe tomar el nivel/curso A, caso contrario puede pasar al nivel/curso B.

    La condición para continuar en el lazo o bucle nota<60/100, se evalúa antes de usar el bloque de operaciones, tanto en el diagrama de flujo como en el algoritmo.

    nota = 0 # nota inicial
    print('hacer el examen de ingles')
    nota = input('nota final:')
    while not(nota<60/100):
        print('tomar el curso de ingles')
        print('hacer el examen de ingles')
        nota = input('nota final:')
    

    Para el planteamiento del ejercicio o problema  al escribir el algoritmo, se selecciona el lazo “repita-hasta” o “mientras-repita” según sea más sencillo de expresar o leer en el planteamiento del ejercicio. Sin embargo, se puede intercambiar la forma del lazo usando la negación del condicional y cambiando la posición del condicional (inicio o al final).

    Por ejemplo en matemáticas la expresión se lee:

    f(n) \sum_1^n 1/n

    "sumatoria desde 1 hasta n de la expresión matemática 1/n". En el algoritmo, se establecen los límites como desde i=1 hasta que i llegue a n,evitando que se hagan cálculos para i>n.

    fn = 0
    n = 4
    i = 1 # desde i=1
    while not(i>n): # hasta i llege a n, evite i>n
        fn = fn + 1/i
        i = i+1
    print(fn)
    

    referencia del ejercicio: 1Eva2009TI_T1 Suma de serie con signo alternado

    Recomendación: De ser necesario para continuar, revisar la sección de Conceptos Básicos, contadores y acumuladores.



    Ejemplo 1

    Referencia: 1Eva2003TIII_T2 Números triangulares

    Realice un algoritmo para encontrar el término n-ésimo de la secuencia de números triangulares.

    Un número triangular puede entenderse como el número de elementos usados para formar una pirámide plana, como se muestra en la figura.

    Diagrama de Flujo - números triangulares

    Desarrollo:
    Usando la analogía de la construcción de una pirámide, se observa que para construir un piso se usa un bloque, para añadir el piso 2 se usan 2 bloques, para añadir el piso 3 se usan 3 bloques, etc.

    Cuántos es la variable de ingreso que indica el número de pisos que se construirán.

    Para iniciar los trabajos, se anuncia la construcción del primer piso y que se han usado 0 bloques.

    En el procedimiento de construcción de la pirámide, piso es una variable tipo contador; usados es una variable tipo acumulador que registra los bloques usados en la construcción de cada piso. Se construye un nuevo piso, acumulando los bloques usados hasta que se hayan construido los pisos de la variable cuántos.

    La variable de salida que muestra el valor resultante es: usados.

    # Ejemplo 1. Numeros triangulares
    
    # INGRESO
    cuantos = int(input('cuantos pisos: '))
    
    # PROCEDIMIENTO
    usados = 0
    piso = 1
    while not(piso>cuantos):
        usados = usados + piso
        piso = piso + 1
        
    # SALIDA
    print(usados)
    
    cuantos pisos: 4
    10
    >>>
    Diagrama de Flujo - Números triangulares con Mientras-Repita

    El ejemplo se desarrolló usando el lazo Repita-Hasta.

    Sin embargo, si se quiere cambiar el estilo usando el lazo Mientras-Repita, se lo expresa cambiando el condicional al inicio y negando la expresión:

    Repita-Hasta: (pisos>cuántos)
    // construir pisos hasta que 
    // se completen los pedidos 
    // en la variable cuántos
    
    while not(pisos>cuántos)
    while (pisos≤ cuántos)
    //Construir pisos mientras 
    //sean menores e iguales a 
    //los pedidos en la variable cuántos.


    Ejemplo 2

    Diagrama de Flujo - Números triangulares con Repita-Hasta

    Extendiendo el ejercicio anterior, construya un algoritmo para determinar si un número t es triangular.

    Para esto el lazo se debe controlar mediante el número de bloques usados comparados con el número t.

    Si los usados son iguales o mayores a t, no es necesario continuar el proceso pues se obtuvo un resultado afirmativo, o los usados superan lo requerido y el número t no es triangular.

    Puede mostrarse la respuesta como un valor verdadero (1) o falso (0) al comparar la igualdad entre t y usados.

    La diferencia de las estructuras se puede observar entre el diagrama de Flujo anterior y el presentado.

    Instrucciones en Python

    # Ejemplo 2. Numero triangular
    
    # Ingreso
    t = int(input('número a revisar: '))
    
    # Procedimiento
    usados = 0
    piso = 1
    while not (usados>=t):
        usados = usados + piso
        piso = piso + 1
    
    if (t==usados):
        respuesta = 1
    else:
        respuesta = 0
    
    # Salida
    print(respuesta)
    
    >>> 
    número a revisar: 10
    1
    >>> 
    número a revisar: 7
    0
    >>>

    Propuesta: Realizar el ejercicio usando la forma mientras-repita.

    Referencia: Elementos esenciales para programación: Algoritmos y Estructuras de Datos Latin Project. Primera Edición 2014. Sección 4.2. p.69



    Bucles o Ciclos "for" - Estructuras para Repetir o iterar

    Referencia: Van Rossum 4.2 p19, Rodríguez 3.4.3.b p36, Downey 7.3

    bucle o ciclo mientras en diagrama de flujo

    En algoritmos es frecuente encontrar lazos, bucles  o ciclos controlados por solamente un contador, por lo que, los lazos y el contador se pueden integrar y resumir en una forma de representación conocida como el lazo “Para” o "for".

    Usamos un diagrama de flujo para mostrar el concepto con un lazo Mientras-Repita.

    El contador i, con valor de inicio, permite el control de operaciones de un bloque mediante el lazo mientras con la expresión i menor o igual que fin.

    Luego del bloque de operaciones, se incrementa el valor de i para revisar la condición del lazo y repetir si es necesario.

    Integrando las operaciones del contador y el lazo, en un diagrama de flujo se pueden simplificar en una estructura de control conocida como “Para”:

    bucle o ciclo "para" en diagrama de flujo

    Se puede leer también: “Para los valores de i empezando en inicio, avanzando en pasos de incremento hasta llegar al valor de fin, repita el siguiente bloque de operaciones”.

    Para lazos con expresiones de repetir más complejas (i>n y j<k) será más práctico usar las formas repita-hasta o mientras-repita, como se mostrará en la sección de ejemplos.

    Referencia: Elementos esenciales para programación: Algoritmos y Estructuras de Datos Latin Project. Primera Edición 2014. Sección 4.2. p.77



  • 3.2.3 Condicionales "if-else" - Ejercicios para Tarea

    Instrucciones: Para cada uno de los siguientes ejercicios sobre Algoritmos secuenciales y decisiones, describa un algoritmo en diagrama de flujo o seudocódigo y realice dos pruebas de escritorio.

    Los ejercicios son básicos para estructuras de control con condicionales "If-else". Para resolver los ejercicios se recomienda enfocarse en la parte de casos o condiciones del problema.



    1. Un comerciante compra un artículo a un costo dado. Determine el precio al cual debe venderlo si desea ganar el 15%.


    2. Un alumno desea saber cual será su calificación final en cierta materia. Dicha calificación se compone de lo siguiente:

    60% corresponde al examen escrito.
    20% corresponde a las lecciones
    15% corresponde a las tareas.
    5% corresponde a las prácticas en el laboratorio

    El dato del examen escrito es un valor entre 0 y 100 y los otros datos son valores entre 0 y 10. La calificación final debe ser un valor entre 0 y 20.


    3. En un almacén se descuenta 20% del precio al cliente si el valor a pagarse es mayor a $200. Dado un valor de precio, muestre lo que debe pagar el cliente.


    4. En un almacén se rebaja 10% del precio al cliente si compra mas de 20 artículos y 5% si compra hasta 20 artículos pero más de 10. Dado el precio unitario de un artículo y la cantidad adquirida, muestre lo que debe pagar el cliente .


    5. Una frutería ofrece las manzanas con descuento según la siguiente tabla:

    Dado el precio por kilo, y el peso, determinar cuánto pagará una persona que compre manzanas es esa frutería.

    kilos compradosDescuento %
    0 - 20%
    2.01 - 510%
    5.01 - 1015 %
    10.01 en adelante20%

    6. En un circuito eléctrico hay tres interruptores, los cuales pueden estar en estado cerrado(1) o abierto(0).

    interruptores como lógica para encender foco
    Interruptores de focos

    Para que un equipo funcione, se requiere que al menos dos estén cerrados. Si los datos son el estado de los interruptores, determine si el equipo funcionará.

     


    7. Ingrese tres números correspondientes a un conjunto y tres números correspondientes a otro conjunto.

    Muestre los números que corresponden a la intersección de los dos conjuntos.

    Sugerencia: Usa una variable para cada elemento del conjunto

    conjunto A = [4 5 7 ]
    conjunto B = [2 7 9]
    intersección A ∩ B = 7

    8. Dados los 9 elementos de una matriz cuadrada, encuentre el valor de su determinante sea diferente de cero.

    matriz = \begin{pmatrix}a & b & c \\ d & e & f \\ g & h & i \end{pmatrix}

    10. En el ejercicio anterior, suponga que la matriz está asociada a un sistema de tres ecuaciones lineales. Ingrese las constantes de las tres ecuaciones y encuentre el valor de las variables.


    Triángulo simple
    Triángulo simple

    11. Lea los valores de los lados de un triángulo. Determine y muestre un mensaje correspondiente a su tipo (1. EQUILÁTERO, 2. ISÓSCELES, O 3. ESCALENO)

     


    12. Lea las tres dimensiones de un bloque rectangular.

    Bloque y circulo
    Bloque y circulo

    Encuentre las tres diagonales de sus caras diferentes y determine si pudiera atravesar por un orificio circular de diámetro dado.



  • 3.2.2 Condicionales "if-else"- Ejercicios resueltos



    Ejercicios resueltos en Python y diagramas de flujo como ejemplos de las estructuras de control para condicionales if else (selección).

    1. Ejercicio 6. interruptores para encender un foco

    En un circuito eléctrico hay tres interruptores, los cuales pueden estar en estado cerrado(1) o abierto(0).

    interruptores

    Para que un equipo funcione, se requiere que al menos dos estén cerrados. Si los datos son el estado de los interruptores, determine si el equipo funcionará.

    Desarrollo:
    Al inicio, supone que el foco no está encendido (0) .

    diagrama de flujo ejercicio resuelto condicional

    Instrucciones en Python

    # Ejercicio 6. Interruptores y un foco
    
    # INGRESO
    a = int(input('interruptor a: '))
    b = int(input('interruptor b: '))
    c = int(input('interruptor c: '))
    
    # PROCEDIMIENTO
    encendido = 0
    if (a==1):
        if (b==1 or c ==1):
            encendido = 1
    else:
        if (b==1):
            if (c==1):
                encendido = 1
    # SALIDA
    print('estado del foco: ',encendido)
    

    Escriba otras propuestas de solución.



    2. Ejercicio 12. Bloque rectangular pasa por orificio en pared.

    Bloque y circulo
    Bloque y circulo

    Lea las tres dimensiones de un bloque rectangular.

    Encuentre las tres diagonales de sus caras diferentes y determine si pudiera atravesar por un orificio circular de diámetro dado.

    Nota: Para el desarrollo considere usar la diagonal de cada lado, que es la parte de mayor longitud que debe pasar por el diámetro del círculo.

     

    Instrucciones en Python

    # Problema de la caja y el orificio en la pared
    import numpy as np
    
    # INGRESO
    a = float(input("lado a: "))
    b = float(input('lado b: '))
    c = float(input('lado c: '))
    d = float(input('lado d: '))
    
    # PROCEDIMIENTO
    diagonal1 = np.sqrt(a**2 + c**2)
    diagonal2 = np.sqrt(a*a + b*b)
    diagonal3 = np.sqrt(b*b + c*c)
    
    pasa = 0
    if (diagonal1<d):
        pasa = 1
    if (diagonal2<d):
        pasa = 1
    if (diagonal3<d):
        pasa = 1
    
    # SALIDA
    print(pasa)
    

    Tarea: Realizar diagrama de Flujo. Desarrollado en Pizarra durante la clase




    3. Ejercicio: 1Eva2007TI_T1 Tiro al blanco con dardos

    Desarrollado para la primera semana de clases.

    Considere solo la parte de condicionales, a partir del ingreso de las coordenadas x,y donde cae el dardo.

    diagrama de flujo ejercicio resuelto

    Instrucciones en Python

    # Un dardo en tablero
    # 1ra Evaluación I Término 2007. Tema 1
    import numpy as np
    
    # INGRESO
    x = float(input('coordenada x: '))
    y = float(input('coordenada y: '))
    
    # PROCEDIMIENTO
    distancia = np.sqrt(x**2 + y**2)
    premio = 0
    if (distancia <= 10):
        premio = 50
    if (distancia>10 and distancia<=40):
        premio = 40
    if (distancia>40 and distancia<=80):
        premio = 30
    
    # SALIDA
    print('el premio obtenido es: ', premio)
    


    4. Ejercicio 1Eva_IT2005_T4 Lanza penales

    Desarrollado para un solo penal.
    Dado el sector del arco [1,6] donde un jugador lanza el balón y el sector donde el arquero protege, determinar:

    a) si hubo gol (1 ó 0)

    b) si hubo gol, indicar si fué por izquierda (1), centro(2), derecha(3)

    Se inicia considerando que no hubo gol, por lo que la sección=0 para el área donde entró el gol. Hay gol si jugador ≠ jugador.

    Diagrama de Flujo

    diagrama de flujo ejercicio resuelto

    Instrucciones en Python

    # analizar un penal
    # Parcial I Término 2005. Tema 4.
    
    # INGRESO
    jugador = int(input('sector del jugador:'))
    arquero = int(input('sector del arquero:'))
    
    # PROCEDIMIENTO
    seccion = 0
    if not(jugador==arquero):
        gol = 1
        if (jugador==3 or jugador==4):
            seccion = 1
        if (jugador==2 or jugador==5):
            seccion = 2
        if (jugador== 1 or jugador==6):
            seccion = 3
    else:
        gol = 0
    
    # SALIDA
    print('Hubo gol: ',gol)
    print('seccion: ', seccion)
    


    5. Ejercicio Tarea 1 ejercicio 3. Ganancia sobre costo

    En un almacén se descuenta 20% del precio al cliente si el valor a pagarse es mayor a $200.

    Dado un valor de precio, muestre lo que debe pagar el cliente.

    diagrama de flujo condicional if ejercicio resuelto

    ejercicios resueltos Python Tarea1Ejercicio1y3 pdf

     



    6. Ejercicio Tarea 1 ejercicio 5. Aplicar descuentos en compras al por mayor

    Una frutería ofrece las manzanas con descuento según la siguiente tabla:

    Dado el precio por kilo, y el peso, determinar cuánto pagará una persona que compre manzanas es esa frutería.

    kilos compradosDescuento %
    0 - 20%
    2.01 - 510%
    5.01 - 1015 %
    10.01 en adelante20%
    condicionales if ejercicio resuelto

    ejercicios resueltos Python tarea1ejercicio5 pdf



  • 3.2.1 Condicionales "if-else" múltiple o con varios casos



    Condicionales "if-else" múltiple o con varios casos

    Referencia: Van Rossum 4.1 p19, Rodríguez 3.5 p42, Downey 5.7

    condicionales multiples en serie

    Existen problemas en los que una variable puede tomar diferentes valores conforme al cumplimiento de diferentes condiciones o casos.

    Un ejemplo es cuando se realizan ventas por volumen, el descuento depende de la cantidad del producto que se vende.

    Cuando la variable resultado del condicional puede tener varios valores, se puede adoptar una forma simple del problema al dividirla por casos, empezando por el caso básico y se modifica la variable resultado lo modifica cuando se revisan los casos siguientes.

    Para estos casos se usan estructuras de control para selección en forma anidada en forma de serie o en forma de árbol.



    Condicionales múltiples en serie

    condicionales en serie

    Ejemplo 3. Un almacén rebaja 10% del precio de un producto si se adquieren más de 20 unidades y 5% si adquieren hasta 20 unidades pero más de 10, no hay descuento para cantidades menores o iguales a 10 unidades.

    Con el precio unitario del producto y la cantidad adquirida, realice un algoritmo para mostrar el valor a pagar.

     

     

    Desarrollo:

    Para seguir una forma ordenada del problema, se dividen los casos de cantidad en segmentos de recta numérica.

    El aplicar los descuentos consiste en evaluar los intervalos de cantidad y escribirlos como casos con condicionales.

    Las instrucciones de condicionales en Python se muestran como:

    # Ejemplo 3.Descuentos en productos por precio y cantidad.
    
    # Ingreso
    valor = float(input('Valor del producto: '))
    cantidad = float(input('cantidad del producto: '))
    
    # Procedimiento
    descuento = 0
    if (cantidad > 10 and cantidad<=20):
        descuento = 0.05
    if(cantidad > 20):
        descuento = 0.10
    
    pagar = valor*cantidad*(1-descuento)
    
    # Salida
    print(pagar)
    


    Condicionales múltiples en árbol

    condicionales en árbol, estructuras de control

    Otra forma de resolver el problema del ejemplo anterior, consiste en generar un camino por cada caso para asignar el valor a la variable de salida.

    Cada camino es parte de un condicional.

    Siguiendo ésta idea, el diagrama de flujo anterior se reorganiza y muestra como:

    condicionales en árbol, estructuras de control

    Las instrucciones en Python sobre condicionales para el ejercicio son:

    # Ejemplo 3.Descuentos en productos por precio y cantidad.
    
    # Ingreso
    valor = float(input('Valor del producto: '))
    cantidad = float(input('cantidad del producto: '))
    
    # Procedimiento
    descuento = 0
    if (cantidad>10):
        if (cantidad<=20):
            descuento = 0.10
        else:
            descuento = 0.05
    else:
        descuento = 0.0
    
    pagar = valor*cantidad*(1-descuento)
    
    # Salida
    print(pagar)
    

    Referencia: Elementos esenciales para programación: Algoritmos y Estructuras de Datos Latin Project. Primera Edición 2014. Sección 4.1.2 p.66



  • 3.2 Condicionales "if-else" - Estructura de selección



    Condicionales "if-else" - Estructura de selección

    Referencia: Van Rossum 4.1 p19, Rodríguez 3.4.1 p26, Downey 5.5

    Las estructuras de selección son un tipo de estructuras de control que permiten decidir que acción seguir a partir de una condición.

    Diagrama de Flujo Condicional
    Estructura Condicional

    Cuando se puede escoger entre dos caminos, se debe tomar una decisión entre las opciones. En estos casos se utilizan los "Condicionales" que son estructuras de selección.

    El condicional más simple está conformado por solo dos caminos, se formula una pregunta simple que compara al menos dos variables mediante expresiones de comparación, tales como:

    a=ba>ba<b
    a<=ba>=betc...

    El condicional en diagramas de flujo se representa por un rombo, la expresión se escribe dentro del rombo. Por convención, hacia la derecha del rombo se grafica el caso que la expresión resultada verdadera (V), y hacia abajo o la izquierda se grafica la acción cuando el resultado es falso (F) Una forma de recordar esta convención es extender la mano derecha en señal de verdad, y al extender la mano izquierda, nos queda el lado el lado falso.

    Para mostrar la aplicación de un condicional en un algoritmo se utilizan los siguientes ejemplos:


    Ejemplo 1. Condicionales para aplicar descuentos

    Condicional, diagrama de flujo, algoritmo if else

    Un almacén aplica un descuento del 10% a quienes han comprado en productos más de 100 dólares. Realice un algoritmo que permita realizar esta operación directamente en la caja registradora. Desarrollo: El descuento lo puede aplicar el cajero, o se puede incorporar el algoritmo a la máquina registradora. La variable de ingreso es el valor de compra, el procedimiento debe determinar el valor a pagar, que se presenta al final como variable de salida. El diagrama de flujo que representa el algoritmo es el diagrama 1, las instrucciones en un archivo de Python se adjunta a continuación:

    # Ejemplo 1.Descuentos en productos de precio alto.
    
    # Ingreso
    valor = float(input('Valor del producto: '))
    
    # Procedimiento
    if valor >100:
        descuento = 0.10
    else:
        descuento = 0
    pagar = valor*(1-descuento)
    
    # Salida
    print(pagar)
    
    Diagrama de Flujo Condicionales - Ejercicio 2

    la ejecución el archivo Python:

    Valor del producto: 120
    108.0
    >>>

    Otra forma de expresar el algoritmo en diagrama de flujo, con el punto de vista del dueño del almacén, quien prefiere que no exista descuento inicia con cero (0) y se modifica solo si cumple con la condición de que adquiera más de 100 dólares (diagrama 2):

    Las instrucciones en Python se escriben como:

    # Ejemplo 1.Descuentos en productos de precio alto.
    
    # Ingreso
    valor = float(input('Valor del producto: '))
    
    # Procedimiento
    descuento = 0
    if valor >100:
        descuento = 0.10
    pagar = valor*(1-descuento)
    
    # Salida
    print(pagar)
    

    En el caso que el condicional modifique una variable solo en el caso de cumplir una condición, no es necesario graficar una acción. En estos casos, se debe escribir la expresión en la forma que permita que el lado sin acción quede del lado falso.



    Condicional con varias preguntas - Conectores and/or/not

    Cuando se debe incluir más de una pregunta en un condicional, se utilizan los operadores lógicos.

    En diagramas de flujo o seudo-código, las expresiones usan las mismas conectivas que en la notación de lógica matemática (and, or, not).

    Conectivasímbolooperador
    Conjunciónand
    Disyunciónor
    Negaciónnot( ) , !

    Ejemplo 2. Condicional para aplicar descuentos por volumen o cantidad comprada.

    Condicional, diagrama de flujo, algoritmo if else

    Un almacén aplica el descuento del 15% para artículos de valor mayor a 8 dólares y que incluyan más de 10 artículos.

    Desarrollo: Para el ejercicio se requieren dos variables de ingreso: valor y cantidad. El descuento se aplica con la expresión:

    (valor > 8) ∧ (cantidad > 10)

    Para el procedimiento se continúa de igual forma que en el ejercicio anterior:

    Instrucciones en Python

    # Ejemplo 2.Descuentos en productos de precio alto.
    
    # Ingreso
    valor = float(input('Valor del producto: '))
    cantidad = float(input('cantidad del producto: '))
    
    # Procedimiento
    if (valor>8 and cantidad>10) :
        descuento = 0.10
    else:
        descuento = 0
    
    pagar = valor*cantidad*(1-descuento)
    
    # Salida
    print(pagar)
    

    resultado del algoritmo:

    Valor del producto: 10
    cantidad del producto: 15
    135.0
    >>>

    Referencia: Elementos esenciales para programación: Algoritmos y Estructuras de Datos Latin Project. Primera Edición 2014. Sección 4.1. p.62



  • 3.1 Estructuras de Control en programación

    [ Estructuras de control ] [ Condicional ] [ Bucle while ] [ Bucle for ]

    ..


    Estructuras de Control en programación

    Referencia: Van Rossum 4 p19, Rodriguez 3.4 p26, Downey 5.5

    Las estructuras de control en programación permiten realizar acciones ordenadas en el algoritmo por bloques o secciones de instrucciones, facilitando la escritura y lectura.

    Estructura Básica

    Diagrama de Flujo Básico
    Diagrama de Flujo Básico

    Toda solución a un problema (algoritmo) puede ser planteado usando una estructura básica ordenada, compuesta por:

    • Inicio
    • ingreso
    • procedimiento
    • salida
    • fin

    Las estructuras de control se usan como una forma lógica y ordenada de plantear un algoritmo, para que sea legible por otras personas. Así el algoritmo también será modular semejante a las piezas de un Lego.

    Los diagramas de flujo muestran de forma gráfica la estructura lógica y ordenada de un algoritmo.

    Las estructuras o bloques se podrán reutilizar en otros algoritmos (funciones(variables)) para evitar escribirlos nuevamente y solo realizar llamadas sobre sus nombres y parámetros.


    [ Estructuras de control ] [ Condicional ] [ Bucle while ] [ Bucle for ]


    Bloque de Inicio en Python

    Permite dar las indicaciones iniciales para la solución de un problema, tales como la referencias o comentarios (#), traer o importar las herramientas, conocidas como librerías , definir sus propias herramientas (funciones), etc.

    comentarios o referencias:

    # 1ra Eval. II Termino 2014
    # Tema 1
    

    Librerías para cálculo numérico, por ejemplo: Numpy

    import numpy as np
    c = np.sqrt((a**2)+(b**2))

    Librerías para uso de aleatorios: random

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

    Librerías para uso de vectores y Matrices: Numpy

    import numpy as np
    tabla= np.zeros(5,dtype=int)
    tabla= np.zeros(shape=(3,5), dtype=float)

    entre muchas otras para gráficas, manejo de datos, ecuaciones algebraicas, sonido, etc.


    Bloque de Ingreso en Python

    Sección donde se pide o ingresa los datos necesarios para resolver el problema, es decir se obtienen los valores de las variables, etc.

    Ejemplo: Pedir un número entero por teclado

    a = int(input('pregunta: '))

    Ejemplo: ingresar un número real por teclado

    a = float(input('pregunta: '))

    Ejemplo: ingresar un texto o palabra por teclado

    a = input('pregunta: ')

    Bloque de Procedimiento en Python

    Donde se resuelve el problema con los datos ingresados. Aquí es donde más se usan las estructuras de control de operaciones, se desarrolla por bloques.

    En cada bloque, la sangría o "indentación" indica dependencia del bloque.

    Condicionales

    Permite seleccionar una operación como resultado de una condición establecida.estructura condicional if else

    if (Condicion):
        Verdadero
    else:
        Falso

    Ejemplo en Python:

    if (a>b):
        a = a+3
    else:
        b = b-2

    Lazo o bucle: Mientras Repita

    permite repetir un bloque de operaciones controlado por una condición.

    Estructura Mientras Repita
    Estructura Mientras Repita

    while (condicion):
        operaciones

    Ejemplo en Python:

    a=50
    while (a<100):
        a = a+5

    Lazo o Bucle: Repita-Hasta

    Se interpreta como: ejecutar "hasta" que se cumpla la condición.

    Estructura Repita hasta
    Estructura Repita hasta

    while not(condicion):
        operaciones

    Ejemplo en Python:

    a=50
    while not(a<100):
        a = a+5

    Bloque de Salida en Python

    Presenta los resultados encontrados al desarrollar la solución al problema.

    Ejemplo: para mostrar una variable o un mensaje

    print('Resultado: ')
    print(variable)
    print('mensaje:', respuesta)

    En las siguiente secciones se dan más detalles, junto al desarrollo de los ejercicios.

    [ Estructuras de control ] [ Condicional ] [ Bucle while ] [ Bucle for ]


    Comentarios, preguntas o consultas:

    youtubelogo @EdisonDelRosariofacebooklogoedelrosespolinstagram logo @edelrosespol

  • 2.6 Caracteres y cadenas (Strings) para el manejo de texto

    Referencia: Van Rossum 3.1.2 p11, Rodriguez 5.6.1 p59, Downey 2.9

    teclado, cada tecla es una letra o caracter

    El manejo de texto en computadoras, se conoce con el nombre técnico de "cadenas de caracteres" o "strings" en los libros en inglés.

    Una letra del alfabeto, un número, un signo de puntuación, en general: todos los símbolos que están disponibles en el teclado del computador son un dibujo a ser presentado o usado en una pantalla, impresora, etc.

    Cada dibujo se identifica con un número y cada dibujo se lo conoce como "caracter" o en idioma inglés "character".

    La tabla "caracteres" y su número de identificación estandarizado se conoce como Tabla de códigos ASCII (American Standard Code for Information Interchange).

    Para visualizar el concepto, por ejemplo se obtiene el código ASCII de un caracter:

    >>> ord('a')
    97

    El proceso contrario para obtener el caracter de un código ASCII es:

    >>> chr(97)
    'a'

    Concatenar para formar palabras

    Los símbolos o caracteres se agrupan para formar palabras, frases, párrafos, por lo que internamente se convierten en vectores numéricos de los dibujos o símbolos. A esta agrupación se la conoce como "cadenas" o "strings".

    La agrupación de caracteres se conoce como "concatenar". En Python se usa el símbolo "+" para denotar concatenación.

    Ejemplo:

    >>> a = 'Hola'
    >>> b = '¿que tal?'
    >>> c =  a+b
    >>> c
    'Hola¿que tal?'
    

    La operación c = a+b
    debe leerse como: "c almacena a concatenado con b",
    diferenciando la acción de las operaciones matemáticas de igualdad y suma.


    Otros símbolos con significado diferente al alfabeto, o un caracter en notación matemática.