La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ALGORITMOS “Al finalizar esta fase debe ser capaz de plantear una solución a un problema a través de un programa ejecutado por un computador”

Presentaciones similares


Presentación del tema: "ALGORITMOS “Al finalizar esta fase debe ser capaz de plantear una solución a un problema a través de un programa ejecutado por un computador”"— Transcripción de la presentación:

1 ALGORITMOS “Al finalizar esta fase debe ser capaz de plantear una solución a un problema a través de un programa ejecutado por un computador”

2 Motivación 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) Interpretar algoritmos y programas para la solución de problemas básicos de programación. Construir algoritmos y programas para la solución de problemas básicos de programación. Descomponer un problema en subproblemas para facilitar el proceso de definir una solución. Trabajar colaborativamente, cumpliendo un rol y responsabilizándose de él.

3 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 Programa de Aplicación
Programa que permite resolver la ecuación de primer grado Programa que permite resolver la ecuación de primer grado #include <stdio.h> int main() { int a,b,x; 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”); return 0; Proceso Ecuacion_primer_grado Variables a,b,x de tipo entero Escribir 'Ingrese valores de EC' Leer a,b Si a = 0 Entonces Escribir 'Error' Sino x<- -1*b/a; Escribir 'La solución es: ',x; FinSi Escribir 'Fin programa'; FinProceso ALGORITMO Programa a x + b = 0 ? a b x = -b / a

5 ¿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 Proceso Entrada Salida Datos Externos Datos auto generados Lectura de dispositivo de almacenamiento Informes Datos para otro programa Datos grabados en dispositivos externos de almacenamiento

6 Datos y Variables Datos: objetos simbólicos que representan objetos del mundo real. Ejemplos: 10 de Marzo de 2003, 3.14 Variables: En programación corresponde a un espacio de memoria reservado para almacenar un dato, al cual se le asigna un nombre y un tipo de dato. Ejemplos: velocidad del móvil, factor de crecimiento

7 ¿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 ¿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 ¿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 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 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, suponga que se nos pide sumar dos números: ¿Cuáles son los pasos básicos para realizar la operación solicitada?

12 Conceptos Básicos de Algoritmos
Primero debemos pedirle a la persona (usuario) 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!!!. 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.

13 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

14 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.

15 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” ….

16 Conceptos Básicos de Algoritmos
Ejercicio: 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. ¿Podemos intentar multiplicar tres valores usando solo dos variables?

17 Conceptos Básicos de Algoritmos
La manera en que hemos detallado nuestros dos algoritmos se llama PSEUDOCÓDIGO. Y este pseudocó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.

18 Elementos básicos presentes en un Algoritmo
PROGRAMA: Conjunto de instrucciones, con una secuencia lógica, escrito en algún Lenguaje de Programación que permite resolver un Problema. El programa recibe datos de entrada, realiza las operaciones de transformación requeridas, y entrega los resultados esperados. ALGORITMO: Una secuencia de pasos (modelo) para realizar una tarea.

19 Estructura general de un Algoritmo utilizando Pseudocódigo
Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción_1 Acción_2 Acción_3 : Acción_n FinProceso Las variables son espacios de memoria reservados para el almacenamiento de datos requeridos por el algoritmo Las instrucciones o acciones presentes en un programa o algoritmo se pueden clasificar de la siguiente manera: Instrucciones o acciones de transferencia de datos Instrucciones o acciones aritméticos / lógicos Instrucciones o acciones de transferencia de control (condicional o incondicional)

20 Variables Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción1 Acción_2 Acción_3 : Acción_n FinProceso Las variables son espacios de memoria reservados para el almacenamiento de datos requeridos por el algoritmo. Las variables quedan definidas por un nombre y el tipo de dato que pueda contener. La posición de memoria especificada por una variable solo puede contener un valor a la vez. Nombre de Variable: se recomienda usar nombres “significativo”, asociado al uso que se le dará al dato almacenado. Tipo de dato: Corresponde a un atributo del dato que permite especificar el dominio de valores que puede tomar y las operaciones que se pueden hacer sobre ellos. Los tipos de datos primitivos (básicos) son: Numérico (Entero o Decimal), Carácter y Lógicos.

21 Instrucciones Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción_1 Acción_2 Acción_3 : Acción_n FinProceso Las instrucciones o acciones presentes en un programa o algoritmo se pueden clasificar de la siguiente manera: Instrucciones o acciones de transferencia de datos: INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA) Leer lista_de_variables; //separadas por coma Escribir lista_de_expresiones; //separadas por coma lista_de_expresiones: pueden ser variables, expresiones aritméticas, 'mensajes entre comillas simples' ASIGNACIÓN variable <expresión>/<variable> expresión: corresponde a una transformación matemática que usa variables definidas y/o funciones predefinidas o desarrolladas.

22 Instrucciones Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción_1 Acción_2 Acción_3 : Acción_n FinProceso Ejemplos Instrucciones o acciones de transferencia de datos: INGRESO/SALIDA DE DATOS (LECTURA/ESCRITURA) Leer a, b, c; Escribir 'El valor ingresado de a =',a; Escribir 'La suma de a y b es =', a+b; Escribir 'La suma de ', a , ' + ‘ , b , 'es =', a+b; Escribir 'Ingrese un ´numero: '; Leer n ASIGNACIÓN a  5; b  a+z; c  (a*a+b*b)/(a*b);

23 Instrucciones Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción_1 Acción_2 Acción_3 : Acción_n FinProceso Las instrucciones o acciones presentes en un programa o algoritmo se pueden clasificar de la siguiente manera: Instrucciones o acciones aritméticos / lógicos: Suma (+), Resta(-), Multiplicación(*), División (/), Módulo (%), Raíz cuadrada (RC) (el módulo como la raíz cuadrada pueden ser implementados con las operaciones básicas, pero por comodidad los utilizaremos en forma explicita) y (and o &), o (or 0 |), no (not o ~) (los operadores lógicos, al igual que los aritméticos y relacionales se utilizan en las expresiones lógicas presentes en las transferencias de control condicional)

24 Ejemplos de Algoritmo básicos utilizando Pseudocódigo
Construir los algoritmos en pseudocódigo que permita resolver los siguientes problemas, mostrando el resultado por pantalla: sume dos valores multiplica tres números divida dos números Calcular el cuadrado de un número Determine los años de nacimiento de una persona a partir de la edad

25 Ejemplos de Algoritmo básicos utilizando Pseudocódigo
Sume dos valores Proceso Suma Variables a,b,c Entero; Escribir 'Ingrese los datos a sumar'; Leer a,b; c<-a+b; Escribir 'La suma de los numeros ingresados es = ',c; FinProceso Nota: //En la herramienta PSeInt no se definen previamente las variables Multiplica tres números Proceso Suma Variables a,b,c,d Entero; Leer a,b,c; d<-a*b*c; Escribir d; FinProceso

26 Ejemplos de Algoritmo básicos utilizando Pseudocódigo
Divida dos números Proceso División Variables a,b,c Entero; Escribir 'Ingresar el dividendo y divisor'; Leer a,b; c<-a/b; Escribir 'El resultado es =', c; FinProceso Calcular el cuadrado de un número Proceso cuadrado Variables a,c Entero; Escribir 'Ingresar un numero'; Leer a; c<-a*a; Escribir 'El cuadrado es ', c; FinProceso Proceso cuadrado Variables a Entero; //una sola variable Escribir 'Ingresar un numero'; Leer a; a<-a*a; Escribir 'El cuadrado es', a; FinProceso Determine los años de nacimiento de una persona a partir de la edad

27 Ejemplos de Algoritmo básicos utilizando Pseudo-Código
Construir los algoritmos en pseudocódigo que permita resolver los siguientes problemas, mostrando el resultado por pantalla: Determinar la distancia entre dos puntos en el plano cartesiano Evaluar la función f(x)=3*x3+4*x2 - 5 para un valor especifico de x Evaluar la ecuación de primer grado Evaluar la ecuación de segundo grado

28 Instrucciones de transferencia de control
Las instrucciones o acciones presentes en un programa o algoritmo se pueden clasificar de la siguiente manera: Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción_1 Acción_2 Acción_3 : Acción_n FinProceso Instrucciones o acciones de transferencia de control: Transferencia condicional Esta instrucción es necesaria cuando el flujo de ejecución del algoritmo depende de una condición lógica. La instrucción más simple es la bifurcación, en la cual la ejecución puede tomar dos cursos de acción dependiendo de una condición lógica. Si expresion_logica Entonces acciones_por_verdadero; Sino acciones_por_falso; FinSi Transferencia repetitiva (se vera con posterioridad) Transferencia incondicional (se explicara el porque no es aconsejable usar)

29 Instrucciones de transferencia de control
Evaluar la ecuación de primer grado a x + b = 0 ? a b x = -b / a a ≠ 0 Proceso <Nombre_Proceso> Variables Lista de variables Tipo_Dato; Acción_1 Acción_2 Si expresion_logica Entonces acciones_por_verdadero; Sino acciones_por_falso; FinSi : Acción_n FinProceso Proceso Ecuacion_primer_grado Variables a,b Entero; x Flotante; Leer a,b; Si a = 0 Entonces Escribir 'La ecuacion no es de primer grado'; Sino x<- -b/a; //probar la solución con PSeInt Escribir x; FinSi Escribir 'Fin de Programa'; FinProceso

30 Instrucciones de transferencia de control
Del ejemplo anterior podemos observar que la bifurcación permite seguir el flujo adecuado dada una condición. Las condiciones lógicas que se evalúan en las bifurcaciones son siempre verdaderas o falsas. También es posible que existan bifurcaciones contiguas. No necesariamente deben existir los dos cursos de acción.

31 Instrucciones de transferencia de control
En las bifurcaciones, se evalúan proposiciones utilizando: Operadores lógicos y (and o &), o (or 0 |), no (not o ~) Operadores aritméticos (*) multiplicación, (/) división, (+) suma, (-) resta, (%) módulo Operadores Relacionales > (mayor que), < (menor que), = (igual), <= (menor o igual), >= (mayor o igual), != (distinto)* * No presente en PSeint

32 Tablas de verdad asociadas a los operadores lógicos and, or, not
y, And, & O || V F O, Or, || No, ~ No ~ V F Y & V F Ejemplos de proposición lógica: 7 > 3 (a+b > c) y (b>0) ~(a = 0) (b*b – 4*a*c) >= 0 ((b*b – 4*a*c) < 0) o (a=0) Deportes concepción es el mejor equipo del año Cada una de estas expresiones tendrá un valor de verdad dependiendo de los valores de los operandos.

33 Ejemplos se evaluación de proposiciones lógicas
Proceso <Nombre_Proceso> Variables Var1, var2, var3, var4 Entero; var1  2; var2  0; var3  4; var4  (var1*var1)/var3; Si (var4>=1) y (var1 !=0) Entonces acciones_por_verdadero; Sino acciones_por_falso; FinSi : Acción_n FinProceso Proceso <Nombre_Proceso> Variables Var1, var2, var3, var4 Entero; var1  2; var2  0; var3  4; var4  (var3%var1) Si ((var4!=0) o (var2 >0)) y (var3 =4) Entonces acciones_por_verdadero; Sino acciones_por_falso; FinSi : Acción_n FinProceso Es importante notar que existen prioridades entre los operadores. Por lo tanto, deben utilizarse paréntesis en los casos que correspondan

34 Ejercicios: Construir, utilizando pseudocódigo, un algoritmo para cada uno de los siguientes enunciados Cree un algoritmo que divida dos números y muestre el resultado Crear un algoritmo que muestre en forma ordenada tres números enteros ingresados desde teclado. Cree un algoritmo que resuelva la ecuación de segundo grado, para valores reales, y muestre el resultado Cree un algoritmo que resuelva la ecuación de segundo grado, para valores reales e imaginarios, y muestre el resultado Cree un algoritmo que permita evaluar la siguiente función para un valor de x: (3x2-5x)/ (x-10) si x > 0 f(x)= (5x)/x si 0 < x <=10 x si x <=0 Cree un algoritmo que permita calcular el valor absoluto de un número Cree un algoritmo que permita calcular el promedio de 20 números Cree un algoritmo 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.

35 Instrucciones de transferencia repetitiva
El último ejemplo planteado permite introducir el concepto de iteración o ciclo. Las estructuras iterativas permiten la ejecución de un grupo de instrucciones un número conocido o desconocido de veces. Concepto de Ciclo Un ciclo es la repetición de un conjunto de instrucciones. Dicho ciclo culmina cuando se cumple una condición lógica de de término. Cuándo se aplican los Ciclos Se aplican cuando queremos ejecutar un conjunto de instrucciones varias veces.

36 Estructuras Iterativas
Bloque de Instrucción1 Condición lógica Bloque de Instrucción2 Bloque de Instrucción3 Verdadero Falso Bloque de Instrucción1 Condición lógica Bloque de Instrucción2 Bloque de Instrucción3 Verdadero Falso Bloque de Instrución1; Mientras Condición_Logica Hacer Bloque de Instrución2; FinMientras Bloque de Instrución3; Bloque de Instrución1; Repetir Bloque de Instrución2; Hasta Que Condición_Logica Bloque de Instrución3;

37 Construir un algoritmo que permita imprimir los primeros n números pares
Proceso Numeros_Pares Variables n,i Entero; Repetir Escribir 'Ingrese numeros de pares a imprimir'; Leer n; Hasta Que (n > 0) i <-1; Mientras (i <=n) Hacer Escribir 2*i; i <- i+1; FinMientras Escribir 'Fin del Programa'; FinProceso 2 4 6 8 : 2*n Programa n n > 0

38 Construir un algoritmo que permita calcular el promedio de n números ingresados por teclado
Proceso Promedio Variables n,i,x,suma, prom Entero; Repetir Escribir 'Cuántos números sumara?'; Leer n; Hasta Que (n > 0) i <-1; suma<-0; Mientras (i <=n) Hacer Leer x; suma<-suma+x; i <- i+1; FinMientras prom<-suma/n Escribir 'Resultado:',prom; FinProceso n X1 X2 X3 : Xn Programa Promedio n > 0 Promedio= (x1+ x2+ x3+…. +xn)/n n (∑ xi = x1+ x2+ x3+…. +xn ) / n i=1

39 Construir un algoritmo que permita sumar números ingresados por teclado. El ingreso de números debe realizarse hasta que se ingrese un 0. Se debe imprimir la suma y la cantidad de números ingresados. Proceso Sumatoria Variables n,i,x,suma Entero; Escribir 'El programa terminara cuando ingrese un cero'; i<-0; suma<-0; Repetir Escribir 'Ingrese un numero'; Leer x; suma<-suma+x; i<-i+1 Hasta Que (x = 0) Escribir 'Resultado:',suma; Escribir 'Numeros ingresados: ' , i; FinProceso X1 X2 X3 : X? Programa suma suma= x1+ x2+ x3+…. +x?

40 Construir un algoritmo que permita sumar números ingresados por teclado. El ingreso de números debe realizarse hasta que se ingrese un 0. Se debe imprimir la suma, la cantidad de números ingresados, además el menor y mayor valor ingresado.

41 Estructuras Iterativas
Bloque de Instrucción1 Bloque de Instrucción2 Bloque de Instrucción3 VC ← VI , VF, Salto Otra estructura iterativa es la siguiente: Bloque de Instrución1; Para Variable_Numerica<-valor_inicial Hasta valor_final Con Paso paso Hacer Bloque de Instrución2; FinPara Bloque de Instrución3;

42 Construir un algoritmo que permita calcular el promedio de n números ingresados por teclado
Proceso Promedio Variables n,i,x,suma, prom Entero; Repetir Escribir 'Cuantos numeros sumara?'; Leer n; Hasta Que (n > 0) suma<-0; Para i<-1 Hasta n Con Paso 1 Hacer Leer x; suma<-suma+x; FinPara prom<-suma/n Escribir 'Resultado: ',prom; FinProceso n X1 X2 X3 : Xn Programa Promedio n > 0 Promedio= (x1+ x2+ x3+…. +xn)/n n (∑ xi = x1+ x2+ x3+…. +xn ) / n i=1

43 ¿Preguntas?

44 Ejercicios Crear un algoritmo que encuentre e imprima el número mayor de N números enteros positivos ingresados por teclado. Crear un algoritmo que calcule e imprima el resultado de la siguiente sumatoria n ∑i i=1 Cree un algoritmo que permita evaluar la siguiente función, para n valores de x: (3x2-5x)/ (x-10) si x > 0 f(x)= (5x)/x si 0 < x <=10 x si x <=0 Crear un algoritmo que permita evaluar la función f(x)=3*x3+4*x2-5 para todos los valores enteros de x comprendidos en el intervalo [a,b] Crear un algoritmo que permita generar los primeros n números de la serie de Fibonacci Crear un algoritmo que permita calcular la siguiente sumatoria: S= n + 2*n + 3*n +4*n +…….+ n*n


Descargar ppt "ALGORITMOS “Al finalizar esta fase debe ser capaz de plantear una solución a un problema a través de un programa ejecutado por un computador”"

Presentaciones similares


Anuncios Google