Ing. Albino Goncalves. Mayo 2007 Algoritmo Definiciones: – Consiste en una secuencia de pasos que hay que seguir para obtener resultados. – Consiste en.

Slides:



Advertisements
Presentaciones similares
Algoritmos y Programas
Advertisements

Nuestro reto es educar al pensamiento, para que razone de acuerdo a ciertas reglas; con ello podremos ser más eficientes al momento en que ordenamos.
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
ALGORITMOS Y LENGUAJES Estructuras de Control CONDICIONAL
Unidad 1 DISEÑO DE ALGORITMOS ING. Nelwi Baez. MSC
Introducción a los Algoritmos
Lenguajes de programación
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Técnico en programación de Software
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Curso de Programación I Parte III
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Matemáticas Discretas y Algoritmos

ESTRUCTURAS DE CONTROL
INTRODUCCIÓN A LA COMPUTACIÓN 12va Semana – 19va Sesión Miércoles 18 de Mayo del 2005 Juan José Montero Román
Programación de Computadores
FORMULACIÓN DE ALGORITMOS
ALGORITMOS.
Academia de Informática
FUNDAMENTOS DE PROGRAMACIÓN
Fundamentos de programación
Introducción al análisis de algoritmos
Capítulo 1 “Elementos de Programación”
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Juego de Preguntas y Respuestas
Teoría – Alejandro Gonzalez
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.

Estructuras de Control.
Tema 5 Diagramas de flujo Computacion - FA.CE.NA..
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Representación de Algoritmos
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Términos algoritmo diseñar algoritmo implementar algoritmo
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Elaboración de algoritmos usando lógica de programación
M.S.C. Ivette Hernández Dávila
Metodología de la programación
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.
Conceptos Generales Programación I Docente: Ing. Marleny Soria M.
ESTRUCTURA DE CONTROL REPETITIVAS: WHILE, DO… WHILE
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
Conceptos Generales PROGRAMACIÓN I DOCENTE: ING. MARLENY SORIA M. 1.
Expositor Lic. José Aragón Tapia. Introducción a la programación. Datos y expresiones, Operadores. Algoritmos, concepto, características. Definición de.
Introducción a la Programación Introducción a la Programación.
INFORMÁTICA II TEMA: DISEÑA Y ELABORA ALGORITMOS DOCENTE: MARÍA DOLORES GARCÍA PONCE CAMPUS TONALÁ JALISCO.
Page 1 Ciclo de Estructuras de Repetición Carlos Bautista García Unidad VI PROG 2270L.
Estructuras de Decisión en Visual Basic 6.0
DIAGRAMA DE FLUJO.
Tema 7: Ingeniería del software Definición de software El software es: 1. instrucciones (programas de computadora) que cuando se ejecutan proporcionan.
1 Control de Flujo Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006.
Inecuaciones lineales o inecuaciones de primer grado
Universidad Autónoma del Estado de México Centro Universitario UAEM Valle de México Ingeniería en Computación Unidad de Aprendizaje Programación Estructurada.
Estatutos en Matlab 3.1 De entrada y salida estándar. 3.2 De control o selección if. 3.3 De ciclos: for, while. 3.4 Otros estatutos.
ESTRUCTURAS SELECTIVAS Elaborado por; Ing. Alberto Pérez.
Clase 1.  Un programador es aquella persona que escribe, depura y mantiene el código fuente de un programa informático, es decir, del conjunto de instrucciones.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
METODOS DE PROGRAMACION I Ing. Vania Flores Pinto.
Melissa Victoria Mendiola Peralta.  Los algoritmos son las series de pasos por los cuales se resuelven los problemas.
 Do- While y Do- Until Las instrucciones Do-while y Do-until permiten repetir un bloque de código mientras cierta condición sea True o hasta que cierta.
Funciones, expresiones y control en Alice
Ciclos condicionales y exactos Estructura de control de ciclos
1 Lenguaje de Programación Clase 1 Alberto Huamani Escobar
Unidad V: Estatutos en Basic De control o selección if. De ciclos: Do, for, while. Otros estatutos. Solución de problemas aplicando estatutos de control.
Metodología de la Programación
Transcripción de la presentación:

Ing. Albino Goncalves. Mayo 2007 Algoritmo Definiciones: – Consiste en una secuencia de pasos que hay que seguir para obtener resultados. – Consiste en una descomposición de acciones que deben ser ejecutados a través de una descripción de los datos que son manipulados por las acciones. – Los algoritmos permiten describir algo con pasos o sea una secuencia de pasos finitos que resuelve un problema en particular.

Ing. Albino Goncalves. Mayo 2007 Algoritmo Características: – Debe ser preciso e indicar un orden de realización de cada paso. – Debe ser definido, es decir, si se repite varias veces, debe de dar el mismo resultado. – Debe ser finito, es decir, debe terminar en algún momento.

Ing. Albino Goncalves. Mayo 2007 Algoritmo Ejemplo: Algoritmo que calcule (A+B)*C 1.- Obtener A, B y C. (ENTRADA DE DATOS) 2.- Sumar A, B y asignarlo en resultado_suma. 3.- Multiplicar resultado_suma y C y guardar en resultado. (ASIGNACION) 4.- Mostrar resultado(SALIDA DE DATOS) S E C U E N CI A

Ing. Albino Goncalves. Mayo 2007 Resolución de un problema Para resolver un problema se debe seguir los siguientes pasos: Análisis del problema Diseño del Algoritmo Codificación (Programación) Ejecución y Validación

Ing. Albino Goncalves. Mayo 2007 Estructuras de Control Secuencial: – Es aquella en la cual una acción sigue a otra en forma secuencial. – Ejemplo: 8.- Calcular la suma y el producto de 2 números. Inicio Acción 1 Acción 2 …. Acción n Fin

Ing. Albino Goncalves. Mayo 2007 Selectivas: – Permiten en base a una condición de selección (toma de decisión ) realizar una bifurcación del programa. Estructuras de Control

Ing. Albino Goncalves. Mayo 2007 Selectivas: – Simple (si/entonces) Estructuras de Control Si condición entonces acción; fin si. Acciones VF

Ing. Albino Goncalves. Mayo 2007 Selectivas: – Doble (si/entonces/sino) Estructuras de Control Si condición entonces acción_1; sino acción 2; fin si. acción_3 Acciones 1 VF Acciones 2

Ing. Albino Goncalves. Mayo 2007 Selectivas: – Múltiple: Cuando se desea que existan más de dos decisiones (según sea). Estructuras de Control En caso que (Variable) hacer caso e1: acción 1; caso e2: acción 2; ….. caso en: acción n; fin en caso que. Acciones 1 Acciones 2 Acciones N e1 e2 en

Ing. Albino Goncalves. Mayo 2007 Selectivas: – Múltiple con cualquier otro caso: Cuando se desea que existan más de dos decisiones (según sea) y una por default. Estructuras de Control En caso que (Variable) hacer caso e1: acción 1; caso e2: acción 2; ….. caso en: acción n; cualquier otro caso acción_otra fin en caso que. Acciones 1 Acciones 2 Acciones N e1 e2 en Accion_otra

Ing. Albino Goncalves. Mayo 2007 Repetitivas: – Permiten la ejecución de un conjunto de pasos repetidas veces. Una iteración posee una condición de iteración que en algún momento finalizará la iteración Estructuras de Control

Ing. Albino Goncalves. Mayo 2007 Estructuras de Control Repetitivas: Mientras: Permite repetir una acción o un bloque de acciones hasta que la condición sea falsa. Mientras (condición sea verdadera) hacer acciones fin_mientras Acciones FV

Ing. Albino Goncalves. Mayo 2007 Repetitivas: Repetir: Permite repetir una acción o un bloque de acciones hasta que la condición sea verdadera. Estructuras de Control Repetir acciones; Hasta (condición sea verdadera); acción_2 Acciones 1 F V

Ing. Albino Goncalves. Mayo 2007 Repetitivas: Desde/Para: Cuando se conoce de antemano el número de veces que se quiere repetir el ciclo. Estructuras de Control Para variable=inicio hasta valor final hacer acción_1; fin para; acción_2 Acciones FV

Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Preguntar Buscar familiaridad Resolver por analogía Análisis de medios y fines Divide y vencerás Construcción de bloques Combinación

Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Preguntar: Si el problema no es claro, debemos preguntar el porqué, cómo, cuando, etc. hasta saber exactamente lo que hay que hacer Buscar Familiaridad: No se trata de reinventar las cosas. Sí ya existe una solución para algo similar, hay que utilizarla

Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Resolver por analogía: No hay que limitarse a soluciones orientadas a la computación, hay que ver más allá y encontrar similitudes con otras áreas Análisis de medios y fines: Cuando se nos da el estado inicial y final, y al haberlos identificado, debemos encontrar los medios para llegar del principio al fin

Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Divide y vencerás: Dividir el problema en partes más pequeñas para que se haga más sencillo Construcción de bloques: Se puede ver como armar un rompecabezas. La solución de algunas partes del problema nos ayudarán a encontrar la solución general

Ing. Albino Goncalves. Mayo 2007 Técnicas para la Resolución de Problemas Combinación: Similar a las anteriores, pero con la característica de que pequeñas soluciones forman parte de la solución general

Ing. Albino Goncalves. Mayo 2007 Representación Formal Ya dijimos que una de las características que debe tener un algoritmo es que pueda estar especificado o representado formalmente El objetivo es que cualquier persona interesada en el algoritmo sea capaz de entenderle Utilizaremos: Diagramas de flujo Diagramas N-S Pseudocódigo

Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Es una representación esquemática del algoritmo o proceso Se les llama “de flujo” por que muestran el flujo de información dentro del algoritmo, desde el inicio hasta el fin Es una manera rápida y sencilla de visualizar la secuencia de pasos del algoritmo de forma general o específica

Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Los diagramas de flujo utilizan diversos símbolos estándares: Inicio/Fin del programa Entrada/Salida de datos Cualquier tipo de operación Condición o desición Conector

Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Conector fuera de página Líneas de flujo Archivo Subrutina

Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo El diagrama debe empezar de arriba abajo, o izquierda a derecha No deben existir líneas cruzadas Solamente el símbolo de decisión tiene más de una línea de salida Todos los símbolos deben estar conectados

Ing. Albino Goncalves. Mayo 2007 Diagramas de Flujo Factorial de un número x: Inicio Leer x n = 1 f = 1 f = f * n n = x? Imprime f Fin n = n + 1 NO SI

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S (Nassi-Scheiderman) Es una representación gráfica del algoritmo y maneja una forma estructurada, a diferencia del anterior Hace uso de palabras reservadas para especificar acciones, algunas son: Inicio, Fin, Leer, Escribir Mientras, Repetir, Hasta, Para Incrementar, Decrementar, Hacer, Función Entero, Real, Carácter, Cadena

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Algunas operaciones básicas son: Declaración de variables (Entero a, b) Asignación de valores (a = 3) Leer / Escribir (Escribir b)

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Hace uso de bloques o estructuras para definir procesos, ciclos y condicionales El bloque de proceso es un rectangulo que contiene una operación o instrucción a realizar f = f * n Escribir f

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Los bloques de condición permiten irnos por diferentes caminos Bloque de condición simple: Condición Camino 1Camino 2 SiNo

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Bloque de condición múltiple: variable otro Acción n m

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Los bloques de repetición permiten repetir una serie de instrucciones mientras se cumpla alguna condición Bloque de repetición mientras (while): Instrucciones Mientras condición

Ing. Albino Goncalves. Mayo 2007 Diagramas N-S Bloque de repetición para (for): Para var = valor_inicial hasta valor_final Instrucciones Bloque de repetición hasta (do-while): Instrucciones Hasta condición

Ing. Albino Goncalves. Mayo 2007 Factorial de un número x: Diagramas N-S Inicio Entero x, f, n Leer x f = 1, n = 0 n = n + 1 Hasta x = n f = f * n Imprime f Fin

Ing. Albino Goncalves. Mayo 2007 Pseudocódigo Es una descripción compacta e informal del algoritmo usando lenguaje natural No obedece alguna regla de sintaxis, por lo que cada persona tiene diferentes formas de escribirlo Se puede especificar, por ejemplo, que se utilizará un estilo de escritura tipo C, para que el lector tenga una idea de cómo leerlo

Ing. Albino Goncalves. Mayo 2007 Pseudocódigo Factorial de un número x: Declarar x, n, f como enteros n = 0; f = 1 Hacer n = n + 1 f = f * n Mientras n != x Imprimir f

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Una vez que se tiene un algoritmo es posible analizarlo y evaluarlo para medir su factibilidad y efectividad Dicho análisis se llevará a cabo con respecto a los recursos que utilizará en la computadora: Tiempo: periodo que transcurre entre el inicio y final del algoritmo Espacio: cantidad de memoria que se necesita para la ejecución del algortimo

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Lo primero que podemos hacer es realizar un análisis experimental Escribimos el programa y lo implementamos en la computadora Realizamos una serie de pruebas al ejecutar el programa con diferentes tipos de entradas y medimos el tiempo Gráficamos los resultados y evaluamos el algoritmo comparándolo con otros resultados

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos El análisis experimental es útil pero tiene una serie de limitaciones: Es necesario implementar el algoritmo, lo cuál algunas veces es muy complicado o imposible No es posible ejecutar el programa con todas las entradas posibles, por lo que los resultados son solo una aproximación Sí queremos comparar nuestros resultados con otro algoritmo debemos usar el mismo software y hardware

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Se requiere realizar entonces un análisis teórico Utiliza una descripción de alto nivel (pseudocódigo) del algoritmo en lugar de su implementación Caracteriza el tiempo de ejecución y el espacio como función del tamaño de entrada, n Toma en cuenta todas las posibles entradas Permite evaluar el algoritmo independientemente del software y hardware utilizado

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos La mayoría de los problemas tienen un parámetro de entrada, que es el número de datos que hay que procesar, es decir, n Entonces la cantidad de recursos se especifica como una función de n Así podemos establecer una relación entre nuestro algoritmo con alguna de las siguientes funciones:

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos 1: Tiempo de ejecución constante. La mayoría de las instrucciones se ejecuta una vez o muy pocas log n: Tiempo logarítmico. Se puede considerar una constante en muchos casos n: Tiempo lineal. n log n: Si n se duplica, el tiempo de ejecución será un poco mayor al doble

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos n 2 : Tiempo cuadrático. n k : Tiempo polinomial. Incluye al cuadrático. Son en general algoritmos factibles b n : Tiempo exponencial. En general son algoritmos infactibles, excepto que la entrada n sea pequeña

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Para realizar el análisis teórico es necesario especificar el modelo de computadora en el que supondremos que se encuentra el algoritmo Se especifica el modelo de Máquina de Acceso Aleatorio (RAM – Random Access Machine) Este modelo es muy simple para eliminar cualquier complejidad que encontramos en las computadoras reales

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos El modelo de Máquina de Acceso Aleatorio (RAM – Random Access Machine): Tiene un CPU Y tiene un banco de celdas de memoria que pueden almacenar un número arbitrario de caracteres El CPU puede acceder a cualquier celda de memoria y esto lo hace en 1 unidad de tiempo

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Nuestro análisis se basará en la identificación y evaluación de operaciones primitivas Estas operaciones primitivas son computaciones básicas que realiza el algoritmo y pueden ser: Evaluación de expresiones (e.g. a = 3 + b) Asignación de valores (e.g. a = 6) Indexación a un arreglo (e.g. c[3] = 5) Llamada a un método Regresar de un método

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Algoritmo arregloMax (A, n) maxActual  A[0] for i  1 to n –1 do if A[i] > maxActual then maxActual  A[i] {incrementar i} return maxActual # Operaciones n 2 (n - 1) 1 Total: 7n - 1

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos El peor de los casos para arregloMax es 7n – 1, que especificamos como T(n) T(n) se ejecuta, en este caso, con tiempo lineal Por lo general, nos interesa saber el peor de los casos para evaluar un algoritmo. Aunque también podemos calcular el mejor de los casos y en algunas otras ocasiones el caso promedio

Ing. Albino Goncalves. Mayo 2007 Análisis de Algoritmos Existe una notación que nos indica el límite superior de la razón de crecimiento de una función, se le conoce como notación O- grande No veremos esta notación en este curso, pero es importante que conozcan de su existencia, ya que el análisis de algoritmos se especifica utilizando esta notación asintótica Por ejemplo, para arregloMax se tiene: 7n – 1 es O(n). Ya que podemos despreciar las constantes 7 y 1 para indicar que a lo mucho es una función lineal