unidad 2 introducción a los algoritmos
TRANSCRIPT
![Page 1: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/1.jpg)
Introducción a los algoritmos
Ing.: Yenit A. Ochoa S
Introducción a la Programación
![Page 2: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/2.jpg)
Motivación
2
OBJETIVO GENERAL DE LA ASIGNATURA Resolver problemas básicos a través de la construcción de programas basados en algoritmos y un lenguaje de programación, generando acciones hacia la búsqueda de propuestas pertinentes.
APRENDIZAJES ESPERADOS (COMPETENCIAS)
• Descompone un problema en sub-problemas para darle una solución más sencilla.• Interpreta algoritmos y programas para la solución de problemas básicos de programación relativos a la matemática.• Construye algoritmos y programas para la solución de problemas básicos de programación relativos a la matemática. • Trabaja colaborativamente, cumpliendo un rol y responsabilizándose de él.• Comprende el entorno de las situaciones problemáticas que tienen un componente informático.
![Page 3: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/3.jpg)
Programa de Aplicación
Programa que permite resolver la ecuación de primer grado
3
Programa que permite resolver la ecuación de primer grado
a x + b = 0
?a
bx = -b / a
#include <stdio.h>int a,b,x;main(){ printf(“Ingrese valores de EC”); scanf(“%d %d”,&a,&b); if a ==0 printf (“error”); else { x = -b / a; printf(“La solución es %d:”,x); } printf(“Fin programa”);}
Algoritmo EC 1er GradoVariables a,b,x de tipo enteroInicio Escribir(“Ingrese valores de EC”) Leer (a,b) Si a = 0 entonces escribir (“Error”) sino Inicio x=-b/a Escribir (“La solución es:”,x) Fin Escribir(“Fin programa”)Fin
![Page 4: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/4.jpg)
Pasos en la resolución de un problema
• Entender el problema– Conceptualización– Objetivo– Contexto
• Buscar soluciones• Elegir solución• Diseñar solución
– Descomposición– Especificar tareas– Modelar solución
• Implementar solución• Validar solución
4
![Page 5: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/5.jpg)
¿Qué es un problema?• Es una situación concreta sobre la cual se quiere implementar
una solución (ejemplos)• Solución: procedimiento que nos lleva a satisfacer ciertos
requerimientos• Esquema básico para la resolución de un problema a través
de un programa con un enfoque sistémico
5
ProcesoEntrada Salida
•Datos Externos•Datos auto generados•Lectura de dispositivo de almacenamiento
•Informes•Datos para otro programa•Datos grabados en dispositivos externos de almacenamiento
![Page 6: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/6.jpg)
Datos y Variables
• Datos: objetos simbólicos que representan objetos del mundo real.– Ejemplos: 10 de Marzo de 2003, 3.14
• Variables: no hace referencia a un objeto explícito– Ejemplos: velocidad del móvil, factor de
crecimiento
6
![Page 7: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/7.jpg)
¿Qué es un Modelo?
• Estructura para dar razón y abstraer una realidad• Ejemplo:
7
Asignaturas
Carrera
Estudiantes
Estudia Plan de Estudios
Inscrita
![Page 8: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/8.jpg)
¿Qué es un algoritmo?
• Procedimiento detallado para resolver un problema en pasos y en un tiempo finito.
• Se especifican en base a operaciones básicas que controlan las variables y el flujo del algoritmo
• El algoritmo lleva desde un estado inicial a un estado final
• El algoritmo recibe Entradas y entrega Salidas
8
![Page 9: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/9.jpg)
¿Cómo desarrollar un algoritmo?
• Imaginación• No reinventar la rueda• Dividir para conquistar• Para ser efectivo se requiere practicar
constantemente• El diseño de algoritmos es una rama de la
Ciencia de la Computación
9
![Page 10: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/10.jpg)
¿Cómo se describe un algoritmo?
• Lenguaje natural• Pseudo código• Lenguaje de programación• La precisión es importante
– Un algoritmo no puede ser descrito de forma ambigua:
• Todos tienen que entender lo mismo (incluido el computador!)
10
![Page 11: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/11.jpg)
Llamada telefónica
• Se desea conceptualizar el problema de efectuar una llamada telefónica en un teléfono público que recibe monedas de $10, $50 y $100. El costo mínimo de la llamada es de $100 por 5 minutos. El proceso se inicia desde que se levanta el auricular y finaliza cuando se cuelga.
11
![Page 12: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/12.jpg)
Árboles de decisión
• Herramienta útil para describir algoritmos que involucran gran cantidad de decisiones
12
![Page 13: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/13.jpg)
Conceptos Básicos de Algoritmos
• La forma en que se ejecutan las operaciones básicas en un computador, es similar a lo que ocurre en nuestro cerebro.
• Por ejemplo, para sumar dos valores:– Primero debemos pedirle a alguien que nos diga el primer
valor. – Luego de que conocemos este valor, debemos almacenarlo
(para recordarlo después) en una neurona (Suponemos que un valor se puede almacenar en una neurona).
• Ya conocemos el primer valor y está almacenado en nuestro cerebro.
![Page 14: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/14.jpg)
Conceptos Básicos de Algoritmos• Ahora debemos pedir el segundo valor.• Una vez conocido, lo almacenamos en otra neurona distinta
de la anterior. ¿ Por qué?• Ahora que conocemos los dos valores procedemos a
sumarlos, y dicho resultado lo almacenamos en otra neurona distinta de las anteriores.
• Por último, le decimos el resultado a la persona que nos entrego los números.
![Page 15: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/15.jpg)
Conceptos Básicos de Algoritmos
– De lo anterior, al menos necesitamos 3 neuronas para sumar dos números.
– Le pedimos explícitamente que nos dijeran dichos valores.
– Le asignamos dichos valores a las neuronas– La suma la realizó nuestro cerebro de forma
mecánica. Note que no existen detalles de la operaciones básicas (*,/,+, -).
– Finalmente se da el resultado
![Page 16: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/16.jpg)
Conceptos Básicos de Algoritmos
• Algoritmo para sumar dos números:– Definimos tres neuronas– Pedimos el primer valor– Almacenamos ese valor en la neurona 1.– Pedimos el segundo valor– Almacenamos ese valor en la neurona 2.– Almacenamos la suma de las neuronas 1 y 2 en la neurona
3– Entregamos el resultado que se encuentra en la neurona
3.
![Page 17: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/17.jpg)
Conceptos Básicos de Algoritmos
• Sin embargo, en los lenguajes no se pueden usar neuronas, pero podemos definir variables (Recuerde que las variables pueden tomar cualquier valor)
• En lugar de usar neurona 1 y neurona 2, se utilizan espacios de memoria que llamaremos “var 1” y “var 2”, y así sucesivamente. También las podemos llamar “x1” y “x2” ó “x” e “y” ….
![Page 18: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/18.jpg)
Conceptos Básicos de AlgoritmosEjercicio: Cree un algoritmo que multiplique tres números.
• Algoritmo para multiplicar tres números:– Definimos cuatro variables– Pedimos el primer valor– Almacenamos ese valor en var 1.– Pedimos el segundo valor– Almacenamos ese valor en var 2.– Pedimos el tercer valor– Almacenamos ese valor en var 3.– Almacenamos la multiplicación de las variables en var 4– Entregamos el resultado que se encuentra en var 4.
![Page 19: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/19.jpg)
Conceptos Básicos de Algoritmos
• La manera en que hemos detallado nuestros dos algoritmos se llama PSEUDO-CÓDIGO. Y este pseudo-código fue escrito en lenguaje natural.
• Otra manera de poder detallar nuestros algoritmos es a través de los diagrama de flujo. Un diagrama de flujo es una representación simbólica de la lógica del algoritmo.
![Page 20: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/20.jpg)
Diagrama de Fujo
• Nomenclatura:– Inicio del algoritmo– Término del algoritmo– Impresión de mensajes– Receptor de datos– Operación de datos– Bifurcación (Decisión)– Definición de variables– Conector
Inicio
Termino
?F V
![Page 21: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/21.jpg)
Diagrama de Flujo y Pseudo-Código
Inicio
Escribir“Mensaje 1”
Fin
Leervar1,x, y
a = 3 * x + yb = a / var1
Entero var1, x , yReal a, b
Si a > bVF
Inicio de Algoritmo
Definición de variables
Impresión de mensajes
Lectura de mensajes
Transformación de datosOperaciones sobre los datos
Bifurcación en la ejecución de instrucciones
Conector
Fin de algoritmo
DIAGRAMA DE FLUJO NOMENCLATURA PSEUDO-CÓDIGO
Inicio
Variables Entero var1, x, y Real a, b
Escribir (“Mensaje 1”)
Leer (var1, x, y)
a = 3 * x + yb = a / var1
Si a > b Entonces Inicio Instrucciones FinSino Inicio Instrucciones Fin
Fin
![Page 22: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/22.jpg)
Diagrama de Fujo para el algoritmo que suma dos valores
Inicio
Termino
var1,var,var3
Ingrese el primer valor
var 1
Ingrese el segundo valor
var 2
var3=var1+var2
El resultado es : var3
Se pide ingresar el segundo valor
Se pide ingresar el primer valor
Se asocia el número ingresado a var1
Se definen las variables var1, var2, var3
Se asocia el número ingresado a var1
Se asigna el resultado de la suma entre var1 y var2 a var3
Se muestra el resultado
![Page 23: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/23.jpg)
Diagrama de Flujo
• Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica tres números y muestre el resultado
• Ejercicio: Cree el diagrama de flujo para que divida dos números y muestre el resultado
![Page 24: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/24.jpg)
¿Preguntas?
![Page 25: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/25.jpg)
Algoritmos
• Ejercicio. Usando diagrama de Flujo. Cree un algoritmos donde una persona ingrese su edad y muestre por pantalla si es mayor de edad.
![Page 26: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/26.jpg)
AlgoritmosInicio
Edad
Ingrese suedad
Edad
Edad>=18Usted esmayor de
edad
Usted esmenor de
edad
Fin
si
No
![Page 27: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/27.jpg)
Algoritmos
– Del ejemplo anterior podemos observar que la bifurcación permite seguir el flujo adecuado dada una condición.
– Las condiciones que se evalúan en las bifurcaciones son siempre verdaderas o falsas.
– Por ende, hay que colocar las instrucciones adecuadas a los valores que se evaluan en las bifurcaciones.
![Page 28: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/28.jpg)
Algoritmos
– También es posible que existan bifurcaciones contiguas.
– En las bifurcaciones o estructura de control, se evalúan proposiciones utilizando:
• Operadores lógicos• Operadores aritméticos• Operadores Relacionales
![Page 29: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/29.jpg)
Algoritmos• Operadores Aritméticos:
– * multiplicación– / División– + Suma– - Resta– % Módulo
Ejemplo de módulo (o residuo de la división):
5%2 es 1
4%2 es 0
![Page 30: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/30.jpg)
Algoritmos
• Operadores Lógicos:– Y, And, &&
Y V F
V V F
F F F
![Page 31: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/31.jpg)
Algoritmos
• Operadores Lógicos:– O, Or, ||
O V F
V V V
F V F
![Page 32: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/32.jpg)
Algoritmos
• Operadores Lógicos:– No, Not, !
No V F
F V
![Page 33: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/33.jpg)
Algoritmos
• Analicemos los siguientes casosvar1=2, var2=0,var3=4
var4=(var1*var1)/var3
var4>=1 && var1!=0
Si
No
var4=1
Si
![Page 34: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/34.jpg)
Algoritmos
• Analicemos los siguientes casos
var1=2, var2=0,var3=4
var4=(var3%var1)
(var4!=0 || var2>0) && (var3==4)
Si
No
var4=0
No
![Page 35: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/35.jpg)
Algoritmos• Analicemos los siguientes casos
var1=2, var4=1,var3=4
var4=(var4+var1)
!(var1 && (var4>=var1))
Si
No
var4=3
No
Cualquier proposición distinta de ceroEs VERDADERO
![Page 36: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/36.jpg)
Algoritmos
• Es importante notar que existen prioridades entre los operadores. Por lo tanto deben utilizarse paréntesis en los casos que correspondan
![Page 37: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/37.jpg)
Algoritmos
• Ejercicio. Crear un algoritmo que muestre en forma ordenada tres número enteros ingresados desde teclado.
![Page 38: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/38.jpg)
Inicio
var1,var,var3
Ingrese elprimer valor
var1
Ingrese elsegundo
valor
var2
Ingrese eltercer valor
var3
1
1
var1>var2 &&var1>var3 var2>var3
El orden esvar1,var2,
var3
El orden esvar1,var3
var2
Fin
var2>var3 var1>var3El orden esvar2,var1,
var3
El orden esvar2,var3
var1
var2>var1El orden esvar3,var2
var1
El orden esv3,var1
var2
si
No
si
si si
si
No
No No
No
![Page 39: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/39.jpg)
Diagrama de Flujo Ejercicio: Cree el diagrama de flujo para el algoritmo que multiplica
tres números y muestre el resultado Ejercicio: Cree el diagrama de flujo para que divida dos números y
muestre el resultado Ejercicio: Cree el diagrama de flujo para que resuelva la ecuación de
primer grado y muestre el resultado Ejercicio: Cree el diagrama de flujo para que resuelva la ecuación de
segundo grado, para valores reales e imaginarios, y muestre el resultado
Ejercicio: Cree el diagrama de flujo permita sumar tres números ingresados por teclado y muestre el resultado
Ejercicio: Cree el diagrama de flujo que permita sumar “n” números y muestre el resultado. El valor de “n” debe ser ingresado por teclado al igual que los números que se sumarán.
![Page 40: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/40.jpg)
Algoritmos
• Repaso de Bifurcaciones• Aprendizajes Esperados
– Conceptos de Ciclos– Cuándo se aplican los ciclos
![Page 41: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/41.jpg)
Algoritmos
• Ejercicio. Crear un algoritmo que muestre en forma ordenada tres número enteros ingresados desde teclado
![Page 42: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/42.jpg)
Inicio
var1,var,var3
Ingrese elprimer valor
var1
Ingrese elsegundo
valor
var2
Ingrese eltercer valor
var3
1
1
var1>var2 &&var1>var3 var2>var3
El orden esvar1,var2,
var3
El orden esvar1,var3
var2
Fin
var2>var3 var1>var3El orden esvar2,var1,
var3
El orden esvar2,var3
var1
var2>var1El orden esvar3,var2
var1
El orden esv3,var1
var2
si
No
si
si si
si
No
No No
No
![Page 43: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/43.jpg)
• Concepto de Ciclo– Un ciclo es la repetición de un conjunto de
instrucciones. Dicho ciclo culmina cuando se cumple una condición de termino.
• Cuándo se aplican los Ciclos– Se aplican cuando queremos ejecutar un conjunto
de instrucciones varias veces.
Algoritmos
![Page 44: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/44.jpg)
Algoritmos
• Estructura de un ciclo
Inicialización
Condición de Termino Instrucción 1
Instrucción 2
Instrucción N
Incremento/Decremento
V
F
![Page 45: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/45.jpg)
Algoritmos
• Ejemplo: Crear un algoritmo que sume N elementos y muestre el resultado
![Page 46: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/46.jpg)
N var cont suma
02 11
122
33
Inicio
N,var,cont,Suma=0
Ingrese cuantos
números va a sumar
N
cont=1
cont<=N Ingrese elcont valor
var
suma=suma+var
cont=cont+1
V
El resultado es suma
Fin
![Page 47: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/47.jpg)
Algoritmos
• Ejemplo: Crear un algoritmo que encuentre el número mayor de N números enteros positivos ingresados por teclado.
![Page 48: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/48.jpg)
= -1
Inicio
N,var,cont,mayor
Ingrese cuantos
números va a sumar
N
cont=1
cont<=N Ingrese elcont valor
var
cont=cont+1
V
El resultado es mayor
Fin
cont==1 || var>mayor mayor=var
V
F
![Page 49: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/49.jpg)
Algoritmos
• Ejemplo: Crear un algoritmo que calcule
n
i1
![Page 50: Unidad 2 introducción a los algoritmos](https://reader035.vdocumento.com/reader035/viewer/2022062902/58eec1ea1a28ab09298b45f3/html5/thumbnails/50.jpg)
Inicio
N,var,cont,suma=0
Ingrese cuantos
números va a sumar
N
cont=1
cont<=N suma=suma+cont
cont=cont+1
V
El resultado es suma
Fin