Algoritmos

5,126 views
4,821 views

Published on

Published in: Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
5,126
On SlideShare
0
From Embeds
0
Number of Embeds
36
Actions
Shares
0
Downloads
114
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Algoritmos

  1. 1. ALGORITMOS
  2. 2. Resolución de Programas por Computadora <ul><li>Un algoritmo es un grupo de instrucciones que definen la secuencia de operaciones a realizar para resolver una clase de problema. </li></ul><ul><li>Secuencia ordenada de pasos que nos sirve para resolver un problema. </li></ul><ul><li>Características: </li></ul><ul><ul><li>Finito: un algoritmo siempre debe terminar después de un número finito de pasos. </li></ul></ul><ul><ul><li>Definido: si se sigue un algoritmo dos veces se debe obtener el mismo resultado </li></ul></ul><ul><ul><li>Entrada: un algoritmo tiene cero o más entradas. </li></ul></ul><ul><ul><li>Salida: un algoritmo tiene una o más salidas. </li></ul></ul><ul><ul><li>Efectivo: resolver el problema para el cual fue diseñado </li></ul></ul>
  3. 3. Resolución de Problemas con Computadoras <ul><li>Análisis del Problema: </li></ul><ul><li>Requiere una definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. </li></ul><ul><li>Dado que se busca una solución se precisan especificaciones de entrada y salida. </li></ul><ul><li>Diseño del Algoritmo </li></ul><ul><li>Se determina como hace el programa la tarea solicitada. </li></ul><ul><li>Los métodos utilizados para el proceso del diseño se basan en el conocido divide y vencerás . </li></ul><ul><li>La resolución de un problema complejo se realiza dividendo el problema en subprogramas y a continuación dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solución en la computadora. </li></ul><ul><li>Implementación del Algoritmo </li></ul><ul><li>Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: </li></ul><ul><ul><li>Codificación </li></ul></ul><ul><ul><li>Compilación y ejecución </li></ul></ul><ul><ul><li>Verificación </li></ul></ul><ul><ul><li>Depuración </li></ul></ul><ul><ul><li>Documentación </li></ul></ul>
  4. 4. Dato <ul><li>Son representaciones simbólicas de objetos, hechos, instituciones, conocimientos. </li></ul><ul><li>Ejemplos </li></ul><ul><ul><ul><li>15 </li></ul></ul></ul><ul><ul><ul><li>25º C </li></ul></ul></ul><ul><ul><ul><li>25 m </li></ul></ul></ul><ul><ul><ul><li>31-10-2005 </li></ul></ul></ul><ul><ul><ul><li>Febrero </li></ul></ul></ul><ul><ul><ul><li>María Pérez </li></ul></ul></ul>Información <ul><li>Los datos organizados o procesados adquieren significado y proporcionan conocimiento o desencadenan un comportamiento sobre los hechos u objetos que lo originaron. </li></ul><ul><li>La información se resumen en : </li></ul><ul><li>Datos + significado </li></ul>
  5. 5. Fase de Resolución de Problemas <ul><li>Análisis del Problema: </li></ul><ul><li>Requiere una definición donde se contemple exactamente lo que debe hacer el programa y el resultado o solución deseada. </li></ul><ul><li>Dado que se busca una solución se precisan especificaciones de entrada y salida. </li></ul><ul><li>Diseño del Algoritmo </li></ul><ul><li>Se determina como hace el programa la tarea solicitada. </li></ul><ul><li>Los métodos utilizados para el proceso del diseño se basan en el conocido divide y vencerás . </li></ul><ul><li>La resolución de un problema complejo se realiza dividendo el problema en subprogramas y a continuación dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solución en la computadora. </li></ul><ul><li>Implementación del Algoritmo </li></ul><ul><li>Para implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos: </li></ul><ul><ul><li>Codificación </li></ul></ul><ul><ul><li>Compilación y ejecución </li></ul></ul><ul><ul><li>Verificación </li></ul></ul><ul><ul><li>Depuración </li></ul></ul><ul><ul><li>Documentación </li></ul></ul>
  6. 6. Datos primitivos Datos Carácter Numérico Lógico Entero Real
  7. 7. Constantes <ul><li>Valores que durante la ejecución de un programa no cambian su valor. </li></ul><ul><li>Valor Literal: valor constante escrito en un programa. </li></ul><ul><li>“ Buen día” </li></ul><ul><li>Constante Nombrada: es otra forma de representar un valor literal, donde se le da un nombre en un enunciado de sentencia y luego se usa ese nombre: </li></ul><ul><li>const string saludo = “Buen día” </li></ul><ul><li>saludo </li></ul>Variables <ul><li>Valores que cambiarán durante la ejecución del programa </li></ul>
  8. 8. Sentencias de Asignación <ul><li>Sentencia que almacena el valor de una expresión en una variable. </li></ul>VARIABLE = EXPRESIÓN Expresión <ul><li>Se definen como una combinación de constantes, variables, símbolos de operación, paréntesis, y nombres de funciones especiales. </li></ul><ul><li>Una expresión consta de operandos y operadores. </li></ul><ul><li>Las expresiones se clasifican en aritméticas, lógicas y carácter. </li></ul><ul><li>Los subprogramas permiten escribir por separado partes del programa y ensamblarlas luego en una forma final (funciones). </li></ul>Función
  9. 9. Identificadores <ul><li>Nombre asociado con una función u objeto de datos y empleado para referir a esa función u objetos de datos. </li></ul><ul><li>Están constituidos por las letras (A-Z,a-z), dígitos (0-9) y el carácter subrayado (_) </li></ul><ul><li>suma </li></ul><ul><li>_resta </li></ul><ul><li>40Horas </li></ul><ul><li>Suma y resta </li></ul>
  10. 10. Tipos de Datos <ul><li>Conjunto específico de valores de datos, junto con un conjunto de operaciones en esos valores. </li></ul><ul><ul><li>int: números enteros. </li></ul></ul><ul><ul><li>float: números reales que tienen puntos decimales. </li></ul></ul><ul><ul><li>char: datos de caracteres </li></ul></ul><ul><ul><li>string: secuencia de caracteres, como una palabra, nombre, enunciado encerrado entre comillas. </li></ul></ul>Operandos y Operadores <ul><li>Un operador es el símbolo que determina el tipo de operación o relación que habrá de establecerse entre los operandos para alcanzar un resultado. </li></ul>
  11. 11. Expresiones aritméticas Entero Entero módulo Mod Entero Entero División entera Div Real Real División / Entero o real Entero o real Multiplicación * Entero o real Entero o real Resta - Entero o real Entero o real Suma + Entero o real Entero o real Exponenciación ^ Tipo resultado Tipo de operandos Significado Operador
  12. 12. Reglas de prioridad ( ) Paréntesis +, - Más y menos Div, mod Div y mod *, / Multi, divide ** Exponencial Gráfo Operador
  13. 13. Operadores de relación Menor < Distinto <>,!= Mayor o igual >= Menor o igual <= Igual = Mayor > Significado Operador Expresión 2 Operador de relación Expresión 1
  14. 14. Operadores lógicos disyunción P o Q Or Conjunción P y Q And Negación Not p Not Significado Expresión lógica Operador lógico
  15. 15. Funciones Intrínsecas Truncamiento Trunc(x) Raíz cuadrada Sqrt(x) Cuadrado Sqr(x) Seno Sin(x) Redondeo Round(x) Log decimal Log10(x) Log neperiano Ln(x) Exponencial Exp(x) Coseno Cos(x) Tangente inversa Arctan(x) Absoluto Abs(x) Descripción Función
  16. 16. Operación de Asignación <ul><li>Es la forma de darle valores tanto a variables como constantes, se representa con el símbolo </li></ul>
  17. 17. Herramientas de programación <ul><li>Son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas para que la parte física del computador u ordenador, funcione y pueda producir resultados. </li></ul><ul><li>Hoy día existen múltiples herramientas de programación en el mercado, tanto para analistas expertos como para analistas inexpertos. </li></ul>
  18. 18. Diagramas de Flujo Indica inicio – final de nuestro diagrama Indica entrada y salida de datos Símbolo de proceso y nos indica la asignación de un valor en la memoria y/o la ejecución de una operación aritmética. Indica la salida de información por impresora Símbolo de decisión. Indica la realización de una comparación de valores. Conector dentro de página. Representa la continuidad del diagrama dentro de la misma página. Conector fuera de pagina. Representa la continuidad del diagrama en otra pagina. Indica el sentido de la ejecución de las operaciones
  19. 19. Diagramas de Flujo Símbolo del Mientras. Dada una expresión al principio de la iteración esta es evaluada; si la condición es verdadera realizará el ciclo, si es falsa la repetición cesará. Símbolo del Para. Esta estructura de control repetitiva se usa generalmente cuando se conoce de antemano el numero de iteraciones. Símbolo Repita Hasta. funciona igual que la estructura Mientras, con la diferencia que al menos una vez hará el grupo de instrucciones y luego evaluará una condición. Si la condición evaluada es falsa continua dentro del ciclo y si es verdadera termina la iteración.
  20. 20. PSEUDOCODIGO <ul><li>Es un lenguaje de especificación de algoritmos que permite una codificación rápida y simple. </li></ul><ul><li>Su ventaja radica en que el programador no debe preocuparse por la sintaxis de un lenguaje de programación en particular. </li></ul><ul><li>Utiliza palabras sencillas de entender para codificar programas. </li></ul><ul><li>SUMAR DOS NUMEROS </li></ul><ul><li>Inicio </li></ul><ul><li>Entero: num1, num2, sum </li></ul><ul><li>Leer num1 </li></ul><ul><li>Leer num2 </li></ul><ul><li>sum=num1 + num2 </li></ul><ul><li>Presentar sum </li></ul><ul><li>Fin </li></ul>
  21. 21. ESTRUCTURAS ALGORITMICAS DE CONTROL
  22. 22. ESTRUCTURAS SECUENCIALES <ul><li>Son aquellas que se ejecutan una después de otra. Hay tres tipos de instrucciones secuenciales: </li></ul><ul><ul><li>Declaración de Variables. </li></ul></ul><ul><ul><li>Asignación </li></ul></ul><ul><ul><li>Instrucción Leer – Instrucción Escribir </li></ul></ul><ul><li>La mayoría de algoritmos actúan sobre un conjunto de datos suministrados por el usuario y se espera que a partir de dichos valores y desarrollando los procesos programados se genere información de salida o resultados. </li></ul>
  23. 23. Declaración de Variables <ul><li>Considerando la compatibilidad de la mayoría de los lenguajes de programación se recomienda que desde el diseño del programa se utilice una forma predeterminada para la declaración de variables. </li></ul><ul><li>Consiste en escribir el tipo de dato y la lista de identificadores que tendrán de dicho tipo, separando cada identificador por medio de comas (,). </li></ul><ul><li>Para facilitar el leer un algoritmo se puede colocar dos puntos (:) para separar el tipo de datos de la lista de identificadores. </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>Entero: edad </li></ul></ul><ul><ul><li>Real: peso, sueldo </li></ul></ul><ul><ul><li>Cadena: nombre, dirección </li></ul></ul><ul><li>A favor de los buenos hábitos de programación es recomienda declarar las variables antes de utilizarlas y el sitio más adecuado es el inicio del programa o de la función </li></ul>
  24. 24. Asignación <ul><li>Asignar un valor a la variable equivale a decir que se guarda dicho valor en la posición de memoria reservado para la variable en mención. </li></ul><ul><li>Para realizar una asignación es necesario primero haber declarado una variable, con los cual se reserva un espació de memoria suficiente para guardar un dato del tipo especificado. </li></ul><ul><li>Una expresión de asignación tiene la forma: </li></ul><ul><li>variable = expresión </li></ul><ul><li>Ejemplos: </li></ul><ul><ul><li>Edad = 10 </li></ul></ul><ul><ul><li>Peso = 88.4 </li></ul></ul><ul><li>Una asignación tiene tres partes, una variable, el signo igual y la expresión cuyo valor se asigna a la variable. </li></ul><ul><li>La variable siempre va a la izquierda del igual mientras que la expresión estará a la derecha. </li></ul>
  25. 25. Instrucción Leer <ul><li>La instrucción LEER se utiliza para enviar información desde un dispositivo de entrada de datos hacia la memoria. </li></ul><ul><li>En la memoria los datos son ubicados mediante el identificador (nombre de la variable) utilizando como complemento de la instrucción LEER. </li></ul><ul><li>Ejemplo </li></ul><ul><ul><li>Leer a, b </li></ul></ul>
  26. 26. Instrucción Escribir <ul><li>Permite enviar datos desde la memoria hacia un dispositivo de salida como la pantalla o la impresora. </li></ul><ul><li>La información que se envía puede ser constante como también el contenido de la variables. </li></ul><ul><li>Escribir <lista de constantes y variables> </li></ul><ul><li>Ejemplo: </li></ul><ul><li>Escribir a, b </li></ul><ul><li>Cuando se escriben más de una variable es necesario separarlas con comas (,) y los mensajes se escriben entre comillas dobles “ ”. Si una variable es variable es escrita entre comillas se mostrará el identificador y no el contenido. </li></ul>
  27. 27. Estructura de Selección o Decisión <ul><li>Permiten que el algoritmo tome decisiones y ejecute u omita algunos procesos dependiendo del cumplimento de una condición. </li></ul><ul><li>Sintaxis: </li></ul><ul><li>Si <condición o condiciones> entonces </li></ul><ul><li>Instrucciones cuando la condición es verdadera </li></ul><ul><li>Caso contrario </li></ul><ul><li>Instrucciones cuando la condición es falsa </li></ul><ul><li>Fin Si </li></ul><ul><li>La sintaxis de la estructura de decisión nos permite evaluar una condición, si esta se cumple ejecutamos las instrucciones que estén entre el SI ENTONCES y CASO CONTRARIO, mientras que si la condición es falsa ejecutaremos las instrucciones que estén entre CASO CONTRARIO Y SI. </li></ul><ul><li>Considere que puede haber caso en que el problema no necesite el caso contrario en este caso la sintaxis quedaría de la siguiente manera: </li></ul><ul><li>Sintaxis: </li></ul><ul><li>Si <condición o condiciones> entonces </li></ul><ul><li>Instrucciones cuando la condición es verdadera </li></ul><ul><li>Fin Si </li></ul>
  28. 28. Estructura de un Programa en C++ <ul><li>Los subprogramas permiten escribir por separado partes del programa y ensamblarlas luego en una forma final (funciones). </li></ul>Función main Función square Función cube
  29. 29. <ul><li>int main () </li></ul><ul><li>{ </li></ul><ul><li>cout << “El cuadrado es ” << Square (5) <<endl; </li></ul><ul><li>cout << El cubo es ” << Cube(5) <<endl; </li></ul><ul><li>return 0; </li></ul><ul><li>} </li></ul><ul><li>int Square (int n) </li></ul><ul><li>{ </li></ul><ul><li>return (n*n); </li></ul><ul><li>} </li></ul><ul><li>int Cube (int n) </li></ul><ul><li>{ </li></ul><ul><li>return (n*n*n); </li></ul><ul><li>} </li></ul>
  30. 30. Sentencias de Asignación <ul><li>Entrada </li></ul><ul><li>Los valores de la variables para recibir un dato desde el teclado se utiliza la variable llamad cin junto con el operador >> </li></ul><ul><li>cin >> variable </li></ul>Salida <ul><li>Los valores de variables y expresiones se escriben por medio de una variable llamada cout junto con el operador de inserción << . </li></ul><ul><li>cout << “Hello”; </li></ul>
  31. 31. PRIMER PROGRAMA <ul><li>#include <iostream.h> </li></ul><ul><li>int a; </li></ul><ul><li>int main() </li></ul><ul><li>{ </li></ul><ul><li>cin >> a; </li></ul><ul><li>cout << &quot;la variable a vale &quot; << a; </li></ul><ul><li>return 0; </li></ul><ul><li>} </li></ul>
  32. 32. Comentarios <ul><li>Lo que necesita para crear un programa funcional es la correcta combinación de declaraciones y sentencia ejecutables. </li></ul><ul><li>Pero los comentarios son de ayuda para entender el programa cuando otra persona lo lee. </li></ul><ul><li>Hay dos formas de comentarios en C++: </li></ul><ul><li>/*…… */ // </li></ul><ul><li>int num; // Definir número entero que </li></ul><ul><li>string nom; //Almacena nombre de empleados </li></ul>
  33. 33. El Preprocesador de C++ <ul><li>El preprocesador es un programa que actúa como filtro durante la fase de compilación. </li></ul><ul><li>Líneas que comienzan con # no se consideran sentencias de C++; se llaman directivas de preprocesador. </li></ul><ul><li>El preprocesador expande una directiva #include al insertar físicamente del contenido del archivo nombrado en el programa fuente. </li></ul><ul><li>Es archivo de llama archivo de encabezado. </li></ul><ul><li>#include <iostream> </li></ul><ul><li>#include <string> </li></ul>Programa Fuente Preprocesador Programa Fuente Expandido Compilador C++
  34. 34. Introducción de Programas Corrección y Ejecución <ul><li>Editor: programa que permite crear y modificar programas al introducir en un área de almacenamiento secundario. </li></ul><ul><li>Archivo: área nombrada en un almacenamiento secundario que se usa para contener un conjunto de datos. </li></ul><ul><li>Compilar el programa con un comando (Alt +F9), traduce el programa y almacena una versión del archivo en lenguaje máquina (Depuración). </li></ul><ul><li>Ejecutarlo con el comando (Crtl + f9). </li></ul>
  35. 35. ESTRUCTURAS ALGORITMICAS DE CONTROL
  36. 36. ALTERNATIVA SIMPLE si ( <expresión_lógica> )       <bloque_de_instrucciones fin_si   algoritmo Calificacion_segun_nota   variables     real nota   inicio     escribir( &quot; Introduzca nota (real): &quot; )     leer( nota )          si ( nota >= 5 )        escribir( &quot; APROBADO &quot; )     fin_si   fin
  37. 37. Alternativa Doble <ul><li><expresión_lógica> de una instrucción alternativa doble también se le denomina condición . </li></ul><ul><li>Para que se ejecute el <bloque_de_instrucciones_1>, la condición tiene que ser verdadera . Por el contrario, si la condición es falsa , se ejecutará el <bloque_de_instrucciones_2>. </li></ul><ul><li>U na instrucción alternativa doble permite seleccionar, por medio de una condición, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles. </li></ul>si ( <expresión_lógica> )       <bloque_de_instrucciones_1>    sino       <bloque_de_instrucciones_2>    fin_si
  38. 38. Ejemplo algoritmo Calificacion_segun_nota   variables     real nota   inicio     escribir( &quot; Introduzca nota (real): &quot; )     leer( nota )          si ( nota >= 5 )        escribir( &quot; APROBADO &quot; )     sino        escribir( &quot; SUSPENDIDO &quot; )     fin_si   fin
  39. 39. Alternativa Múltiple <ul><li>Permite seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. </li></ul>segun_sea ( <expresión> )    <lista_de_valores_1> : <bloque_de_instrucciones_1>    <lista_de_valores_2> : <bloque_de_instrucciones_2>    ...    <lista_de_valores_n> : <bloque_de_instrucciones_n>                  [ sino : <bloque_de_instrucciones_n+1> ]   fin_segun_sea <ul><li>El resultado de evaluar la <expresión> debe ser un valor perteneciente a un tipo de dato finito y ordenado, es decir, entero, lógico, carácter, enumerado o subrango. </li></ul>
  40. 40. Ejemplo
  41. 41. Ejemplo <ul><li>algoritmo  Dia_de_la_semana   variables      entero  dia   inicio     escribir( &quot; Introduzca día de la semana: &quot; )     leer( dia )     segun_sea ( dia )           1 : escribir( &quot; Lunes &quot; )           2 : escribir( &quot; Martes &quot; )           3 : escribir( &quot; Miércoles &quot; )           4 : escribir( &quot; Jueves &quot; )           5 : escribir( &quot; Viernes &quot; )           6 : escribir( &quot; Sábado &quot; )           7 : escribir( &quot; Domingo &quot; )        sino : escribir( &quot; ERROR: Día incorrecto. &quot; )     fin_segun_sea   fin </li></ul>
  42. 42. Ejemplo
  43. 43. <ul><li>algoritmo  Signo_del_zodiaco   variables      entero  numero   inicio     escribir( &quot; Listado de signos del zodíaco: &quot; )     escribir( &quot; 1. Aries &quot; )     escribir( &quot; 2. Tauro &quot; )     escribir( &quot; 3. Géminis &quot; )     escribir( &quot; 4. Cáncer &quot; )     escribir( &quot; 5. Leo &quot; )     escribir( &quot; 6. Virgo &quot; )     escribir( &quot; 7. Libra &quot; )     escribir( &quot; 8. Escorpio &quot; )     escribir( &quot; 9. Sagitario &quot; )     escribir( &quot; 10. Capricornio &quot; )     escribir( &quot; 11. Acuario &quot; )     escribir( &quot; 12. Piscis &quot; )     escribir( &quot; Introduzca número de signo: &quot; )     leer( numero )     segun_sea ( numero )         1 , 5 , 9 : escribir( &quot; Es un signo de Fuego. &quot; )        2 , 6 , 10 : escribir( &quot; Es un signo de Tierra. &quot; )        3 , 7 , 11 : escribir( &quot; Es un signo de Aire. &quot; )        4 , 8 , 12 : escribir( &quot; Es un signo de Agua. &quot; )            sino : escribir( &quot; ERROR: &quot;, numero ,                   &quot; no está asociado a ningún signo. &quot; )     fin_segun_sea   fin </li></ul>
  44. 44. Anidadas <ul><li>Las instrucciones alternativas y repetitivas pueden escribirse una dentro de otra. A este hecho se le conoce como anidamiento . </li></ul>si ( <expresión_lógica_1> )       /* Inicio del anidamiento */       si ( <expresión_lógica_2> )          <bloque_de_instrucciones_1>       sino          <bloque_de_instrucciones_2>       fin_si       /* Fin del anidamiento */    sino       <bloque_de_instrucciones_3>    fin_si
  45. 45. si ( <expresión_lógica_1> )       <bloque_de_instrucciones_1>    sino       /* Inicio del anidamiento */       si ( <expresión_lógica_2> )          <bloque_de_instrucciones_2>       sino          <bloque_de_instrucciones_3>       fin_si       /* Fin del anidamiento */    fin_si
  46. 46. Ejemplo <ul><li>1º) Pida por teclado la nota (real) de una asignatura. </li></ul><ul><li>2º) Muestre por pantalla: </li></ul><ul><li>&quot;APTO&quot;, en el caso de que la nota sea mayor o igual que 5 y menor o igual que 10. </li></ul><ul><li>&quot;NO APTO&quot;, en el caso de que la nota sea mayor o igual que 0 y menor que 5. </li></ul><ul><li>&quot;ERROR: Nota incorrecta.&quot;, en el caso de que la nota sea menor que 0 o mayor que 10. </li></ul>
  47. 47. <ul><li>algoritmo Calificacion_segun_nota   variables     real nota   inicio     escribir( &quot; Introduzca nota (real): &quot; )     leer( nota )     si ( nota >= 5 y nota <= 10 )        escribir( &quot; APTO &quot; )     sino        /* Inicio del anidamiento */        si ( nota >= 0 y nota < 5 )           escribir( &quot; NO APTO &quot; )        sino           escribir( &quot; ERROR: Nota incorrecta. &quot; )        fin_si        /* Fin del anidamiento */     fin_si   fin </li></ul>

×