algoritmos

11
¿Qué es un problema? Hoy en día, las computadoras están por todas partes, teléfonos, electrodomésticos, aviones, etc., y realizan tareas de todo tipo, desde reproducir vídeo hasta controlar trayectorias. A una computadora lo controla lo que denominamos un PROGRAMA, también llamado software. Las computadoras poseen un procesador central, cuya actividad de una forma simple se resume a: 1.- Obtener una instrucción 2.- Determinar que instrucción es 3.- Ejecutar la instrucción 4.- Ir al paso 1 Todo programa comienza con una idea, algo que se quiere hacer, generalmente ese algo resulta como SOLUCIÓN A UN PROBLEMA ESPECÍFICO. Metodología para resolver problemas La resolución de un problema consta en general de ocho etapas: 1.- Definición y delimitación del problema a solucionar (enunciado del problema) 2.- Pseudocódigo o diagrama de flujo (algoritmo) 3.- Prueba de escritorio 4.- Codificación 5.- Digitación 6.- Compilación o interpretación del programa 7.- Ejecución del Programa 8.- Evaluación de los resultados 1.- Definición y delimitación del problema a solucionar Deberá servir para responder a las preguntas: ¿Qué información debe proporcionar la resolución del problema? ¿Qué datos se necesitan para resolver el problema?

Upload: david-andres-morales-sanchez

Post on 13-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos

¿Qué es un problema? Hoy en día, las computadoras están por todas partes, teléfonos, electrodomésticos, aviones, etc., y realizan tareas de todo tipo, desde reproducir vídeo hasta controlar trayectorias. A una computadora lo controla lo que denominamos un PROGRAMA, también llamado software. Las computadoras poseen un procesador central, cuya actividad de una forma simple se resume a: 1.- Obtener una instrucción 2.- Determinar que instrucción es 3.- Ejecutar la instrucción 4.- Ir al paso 1 Todo programa comienza con una idea, algo que se quiere hacer, generalmente ese algo resulta como SOLUCIÓN A UN PROBLEMA ESPECÍFICO. Metodología para resolver problemas La resolución de un problema consta en general de ocho etapas: 1.- Definición y delimitación del problema a solucionar (enunciado del problema) 2.- Pseudocódigo o diagrama de flujo (algoritmo) 3.- Prueba de escritorio 4.- Codificación 5.- Digitación 6.- Compilación o interpretación del programa 7.- Ejecución del Programa 8.- Evaluación de los resultados 1.- Definición y delimitación del problema a solucionar

Deberá servir para responder a las preguntas: ¿Qué información debe proporcionar la resolución del problema? ¿Qué datos se necesitan para resolver el problema?

Page 2: Algoritmos

2.- Pseudocódigo o diagrama de flujo (algoritmo) Una computadora no tiene la capacidad para solucionar problemas más que cuando se le proporcionaran los pasos sucesivos a realizar. En esta etapa se determinan los pasos o instrucciones que deben llevarse a cabo y el orden lógico de su ejecución para dar una eficiente solución al problema. 3.- Prueba de escritorio Para comprobar que un algoritmo realiza la tarea para la cual fue diseñado, debe ejecutarse a mano. Deben utilizarse datos representativos y anotarse los valores que toman las variables en cada paso. 4.- Codificación El programa que implementa el algoritmo debe ser escrito en un lenguaje de programación y siguiendo las reglas gramaticales o sintaxis del mismo. El algoritmo escrito en un lenguaje específico de programación (alto nivel) se denomina CÓDIGO. 5.- Digitación Tras la codificación del programa, las instrucciones se convierten a un medio legible para la computadora; a igual procedimiento se someten los datos (en disquetes, cassettes, cintas, etc.), utilizando dispositivos como digitadoras o consolas 6.- Compilación o interpretación del programa En esta etapa la computadora chequea si todas las instrucciones están escritas correctamente desde el punto de vista de la sintaxis y gramática de cada lenguaje y las transcribe, dentro de la memoria, del lenguaje de alto nivel al lenguaje máquina para obtener el llamado programa objeto. 7.- Ejecución del programa El programa objeto es ejecutado por la computadora para llegar a los resultados esperados, utilizando los dispositivos, unidades y memoria necesaria, según cada caso o programa. 8.- Evaluación de los resultados Se evalúa los resultados para verificar que sean correctos. En caso contrario, se revisa en las etapas anteriores para detectar la falla o error, entrar a corregirla y reiniciar desde este punto los pasos para resolver de nuevo y en forma correcta el problema.

Page 3: Algoritmos

Algoritmos Cuando escribimos un programa de computadora, generalmente estamos llevando a cabo un método que se ha inventado para resolver algún problema previamente. Este método es a menudo independiente de la computadora y es probable que sea igualmente apropiado para muchas tipos de computadora y muchos lenguajes de computadora. La palabra algoritmo proviene del nombre de un matemático y astrónomo árabe AlKhowarizmi del siglo IX. Definición de un algoritmo Un algoritmo es una secuencia ordenada de pasos, no ambiguos, expresados en lenguaje natural que conducen a la solución de un problema dado. Éste debe describir tres partes: Entrada, Proceso y Salida Ejemplo:

Cambiar un foco quemado

Quitar el foco quemado Colocar el foco nuevo

Cambiar un foco quemado

Situar una escalera bajo el foco quemado Elegir un foco de reemplazo Subir por la escalera hasta alcanzar el foco Girar el foco contra las manecillas del reloj hasta que esté suelto Ubicar el foco nuevo en el mismo lugar que el anterior Enroscar en sentido contrario de las manecillas del reloj hasta que quede apretado Bajar de la escalera

Page 4: Algoritmos

Características de los algoritmos El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:

Los algoritmos son independientes del lenguaje de programación y de la máquina que lo ejecute, una analogía de la vida real [joyanes1989], la receta de un plato de cocina puede expresarse en inglés, francés o español e indicará la misma preparación independientemente del cocinero. Medios de expresión de un algoritmo Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico. La descripción de un algoritmo usualmente se hace en tres niveles:

Page 5: Algoritmos

Diagramas de Flujo Representa la esquematización gráfica de un algoritmo. Muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema; usan símbolos conectados con flechas para indicar la secuencia de instrucciones. Son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

Page 6: Algoritmos

Etapas que debemos de seguir en la construcción de un diagrama de flujo.

Reglas que permiten la construcción de un diagrama de flujo:

1. Todo diagrama de flujo debe tener un inicio y un fin

2. Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas, verticales y horizontales.

3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin del diagrama.

Page 7: Algoritmos

4. El diagrama de flujo debe ser construido de arriba hacia abajo (top–down) y de izquierda a derecha (right to left)

5. La notación del diagrama de flujo debe ser independiente del lenguaje de programación. 6. Si el diagrama de flujo requiriera más de una hoja para su construcción, debemos utilizar

los conectores adecuados y enumerar las páginas convenientemente. 7. No puede llegar más de una línea a un símbolo

Page 8: Algoritmos

TIPO DE DATOS Simples: ocupan una sola casilla de memoria, pueden ser enteros, reales, caracteres. Estructurados: con un solo nombre o identificador hacemos referencia a un grupo de casillas de memoria, pueden ser arreglos, cadenas de caracteres, registros y conjuntos. Los datos pueden ser:

NUMÉRICOS ALFANUMÉRICOS LÓGICOS

Enteros

No tienen parte decimal, por ejemplo

128, -714, - 25, 789432, -5

Reales

Tienen parte decimal 7.5, -89.67, 8964.05,

-78.01

Pueden ser letras del abecedario (a, b, c , d,….z)

Pueden ser dígitos, pero estos no pueden ser utilizados para

realizar operaciones aritméticas (0, 1, 2, 3,..9)

Pueden ser símbolos especiales (#, $, ^, *, %,…..)

Booleanos

los cuales pueden tomar dos valores: verdadero

(true) y falso (false)

De tipo carácter. Contienen un solo carácter y se escriben entre apóstrofes (´a´,

´B´, ´$´, ´-´, ´#´, ´f´)

De tipo cadena de caracteres. Contienen un conjunto de

caracteres y se escriben entre comillas. Longitud máxima 255

caracteres (“abcde”, “#7$5”, “Carlos Gómez”, “Rosario”, “785-

78-90-45”)

Page 9: Algoritmos

Identificador

Nombre que se le da a las casillas de memoria. Su nombre depende del lenguaje de programación utilizado El primer carácter debe ser una letra (a, b, c……z) Los demás caracteres pueden ser letras o números o _ (guion bajo) La longitud del identificador es igual a 7 en la mayoría de los casos

Por ejemplo:

CONSTANTES Son datos que no cambian durante la ejecución de un programa. Por ejemplo:

Page 10: Algoritmos

VARIABLES Son objetos que pueden cambiar su valor durante la ejecución de un programa. Por ejemplo:

OPERADORES ARITMÉTICOS Para poder realizar operaciones aritméticas necesitamos de operadores aritméticos. Estos operadores nos permitirán realizar operaciones aritméticas entre operandos: números, constantes o variables. El resultado de una operación aritmética será un número.

Operadores Aritméticos

Operador aritmético Operación Ejemplo Resultado

** Potencia 4**3 64

* Multiplicación 8.25*7 57.75

/ División 15/4 3.75

+ Suma 125.78 + 62.50 188.28

- Resta 65.30 – 32.33 32.97

mod Módulo (Residuo) 15 mod 2 1

Div División entera 17 div 3 5

Page 11: Algoritmos

Jerarquía de los operadores Al evaluar expresiones que contienen operadores aritméticos debemos respetar la jerarquía en el orden de aplicación. Es decir, si tenemos en una expresión más de un operando, debemos aplicar primero el operador de mayor jerarquía, resolver esa operación, y así sucesivamente. Es importante señalar que el operador () es un operador asociativo que tiene la prioridad más alta en cualquier lenguaje de programación.

Jerarquía de los operadores aritméticos

Operador Jerarquía Operación

** Mayor Potencia

*, /, mod, div Multiplicación, división, módulo, división entera

+, - Menor Suma, resta

Reglas para resolver una expresión aritmética

1. Si una expresión contiene subexpresiones entre paréntesis, éstas se evalúan primero, respetando claro está jerarquía de los operadores aritméticos en esta subexpresión. Si las subexpresiones se encuentran anidadas por paréntesis, primero se evalúan las subexpresiones que se encuentran en el último nivel de anidamiento.

2. Los operadores aritméticos se aplican teniendo en cuenta la jerarquía y de izquierda a derecha. OPERADORES RELACIONALES Los operadores relacionales son operadores que permiten comparar dos operandos. Los operandos pueden ser números, alfanuméricos, constantes o variables. Las constantes o variables, a su vez, pueden ser de tipo entero, real, carácter o cadena de caracteres. El resultado de una expresión con operadores relacionales es verdadero o falso.

Operadores Relacionales

Operador Operación Ejemplo Resultado

= Igual que ´hola´= ´lola´ Falso

< > Diferente a ´a´<>´b´ Verdadero

< Menor que 7 < 15 Verdadero

> Mayor que 22 > 11 Verdadero

< = Menor o igual que 15 <= 22 Verdadero

> = Mayor o igual que 35 >= 20 Verdadero