Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.

Slides:



Advertisements
Presentaciones similares
Algoritmos y Programas
Advertisements

PROF. ING. JULIO CESAR CANO RAMIREZ
Secuencia finita, ordenada y lógica de instrucciones (ó pasos), los cuales permiten realizar una ó varias tareas.
CARRERA: INGENIERIA CIVIL UNI-RUACS
Programación II Recursividad
Unidad 1 DISEÑO DE ALGORITMOS ING. Nelwi Baez. MSC
Estructuras de Repetición Algoritmos
Introducción a los Algoritmos
Lenguajes de programación
DESARROLLO DE PROGRAMAS
Estructuras de Control
Técnico en programación de Software
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Curso de Programación I Parte III
Objetivos Específicos de la Unidad
METODOLOGIA DE LA PROGRAMACION
Funciones en lenguaje C
Funciones y procedimientos
IINTRODUCCION A LA CIENCIA DE LA COMPUTACION Y A LA PROGRAMACION
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
Proceso de información en la computadora
FORMULACIÓN DE ALGORITMOS
Semana 5 Subprogramas..
Academia de Informática
CI TEORIA semana 4 Estructura Algorítmica: SELECCIÓN
Fundamentos de programación
Introducción al análisis de algoritmos
Algoritmos.
Algoritmos ¿Que es un algoritmo?
Capítulo 2 – Estructuras de Control
LENGUAJE DE PROGRAMACIÓN
Tae Programación WEB Ventajas de los ordenadores ( compus pa los cuates ) Que es la Programación? Que es un lenguaje de programación? Algoritmo Que es.
Fundamentos de programación Organización de una computadora.
Análisis de algoritmos
Juego de Preguntas y Respuestas
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
TEMAS PRINCIPALES. ALGORITMOS. CONCEPTOS El algoritmo es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos.
Estructuras de Control.
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
ALGORITMOS La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió.
Recursividad. 2 Son funciones que se llaman a sí mismas. Requisitos: – Deben retornar un valor. – Deben tener expresiones en las que se llaman a sí mismas:
Estructuras de control Resolución de problemas y algoritmos.
Programación de Computadores (IWI-131)
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.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente.
DEV- C++ ·include <iostream> Int x x=x+2(x)
ALGORITMO QUE ES ??.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
PRINCIPIOS DE PROGRAMACIÓN
Elaboración de algoritmos usando lógica de 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.
Las funciones son librerías ya estandarizadas que permiten al usuario realizar sus respectivas programaciones. Una función es un conjunto de líneas de.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
QUE ES PNL. CONCEPTO La programación neurolingüística es un proceso mental, mediante el cual utilizamos los sentidos con los cuales percibimos el mundo,
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
ALGORITMOS Y PROGRAMAS. OBJETIVOS  Resolver problemas mediante la especificación algorítmica.  Proporcionar los procedimientos y técnicas para el desarrollo.
Figure: Algoritmos. Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Figure: Algoritmos.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Recursividad.
FIGURE: Algoritmos. CONCEPTOS BÁSICOS. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Transcripción de la presentación:

Figure: Algoritmos

Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una determinada tarea 2.Fases: Resolución del problema propuesto => determinación de un algoritmo. Adaptación del algoritmo al computador => codificar el algoritmo en un lenguaje que el computador pueda comprender.

Conceptos básicos. 1.Acción: Etapa en la realización de un trabajo 2.Acción primitiva: Acción que el procesador puede ejecutar sin necesidad de información adicional. 3.Algoritmo: Secuencia ordenada de acciones primitivas que realizan un trabajo. Ejemplos: Ir al trabajo 1.Levantarse 2.Darse una ducha 3.Vestirse 4.Desayunar 5.Tomar locomoción Cálculo de la media aritmética de dos números con una calculadora 1.Pulsar la tecla AC 2.Teclear el primer número 3.Pulsar la tecla + 4.Teclear el segundo número 5.Pulsar la tecla + 6.Pulsar la tecla / 7.Teclear el número 2 8.Pulsar la tecla =

Confección de un pájaro a partir de un papel cuadrado

Primitivas Origami

Conceptos básicos. Aspectos que se deben considerar a la hora de escribir un algoritmo: Determinación de las primitivas de las que partimos Lenguaje simbólico a utilizar para desarrollar el algoritmo Representación de los datos Establecer datos de entrada Establecer datos de salida Establecer las relaciones entre los datos de entrada y los de salida Condiciones que debe cumplir un algoritmo: Ser finito: El algoritmo debe acabar tras un número finito de pasos Estar bien definido: Todas las ejecuciones del algoritmo con los mismos datos de entrada deben devolver los mismos datos de salida. Diferencias entre un algoritmo y un programa: Los algoritmos no son directamente interpretables por el computador => deben ser traducidos a un lenguaje de programación concreto.

Definition de algoritmo Es un procedimiento computacional bien definido que toma un conjunto de valores como entrada y produce otro conjunto de valores como salida.

Representación de algoritmos Métodos para representar un algoritmo: – Pseudolenguaje – Diagramas de flujo Pseudolenguaje – Es un lenguaje específico de descripción de algoritmos – La traducción de un algoritmo escrito en pseudolenguaje a un programa en un lenguaje de programación determinado es relativamente simple Herramientas de un pseudolenguaje para representar un algoritmo – Conjunto de palabras clave que proporcionan: las estructuras de control declaraciones de variables características de modularidad – Sintaxis libre de un lenguaje natural que describe las características del proceso – Elementos para la definición y llamada a subprogramas

Metodología de diseño Un problema => muchos algoritmos para resolverlo ¿Cómo elegir el más adecuado? Basándonos en las siguientes características: – Legibilidad – Eficiencia – Portabilidad – Modularidad – Modificabilidad – Estructuración

Metodología de diseño Programación estructurada – Conjunto de técnicas que aumentan la productividad de un programa, reduciendo el tiempo para: Escribir Depurar Verificar Mantener – Utiliza un número limitado de estructuras de control que minimizan la complejidad de los problemas – Teorema de BOHM-JACOPINI: cualquier programa, por complejo que sea, puede escribirse utilizando sólo tres estructuras de control: – Secuencial – Selectiva – Repetitiva

Secuencial Actividad 1 Actividad 2 Actividad n

Selección actividad Condición sí no condición nosí Actividad 1 Actividad 2 Condición sí sino Condición sino Actividad 1Avtividad nActividad n-1 Actividad 2 sí Simple: Doble: Múltiple:

Repetición activity Test condition true false

Estratégia: Dividir para conquistar Dividir el problema en subproblemas En la resolución de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador.

Ordenamiento Entrada: secuencia de n números Salida: Una permutación reordenamiento de la secuencia, tal que: a' 1 < a' 2 <... < a' n Ejemplo instancia: Entrada: Salida:

Ordenando una lista en forma alfabética

Ordenando una lista en forma alfabética (cont.)

Algoritmo de sort por inserción en pseudocódigo

Búsqueda Entrada: secuencia de n números Un número b Salida: un entero i, tal que b == a i (igual) 0 si b != a i, para i = 1,...,n Ejemplo instancia: Entrada: y 9 Salida: 3

Búsqueda binaria en pseudocódigo

Slide 4-24 Copyright © 2003 Pearson Education, Inc. Buscando en una lista

Ordenamiento por inserción situación de peor caso Insertion-Sort(A) 1 for i <- 2 to n do 2temp <- A[i] 3j <- i-1 4while j>0 and A[j] > temp do 5 A[j+1] <- A[j] 6 j <- j-1 7A[j+1] <- temp (n-1)*(n)/2 veces Se ejecutan: => O(n 2 )

Gráfico del análisis del peor caso ordenamiento por inserción O(n 2 )

Gráfico del análisis del peor caso búqueda binaria O(log 2 n)

Algoritmos recursivos

29 Recursividad Son funciones que se llaman a sí mismas. Requisitos: –Deben retornar un valor. –Deben tener expresiones en las que se llaman a sí mismas: “ciclo activo”. –Deben incluir, en una sentencia de selección, una opción en la cual terminen la ejecución y no se llamen a sí mismas: “caso base”. –Si no poseen un opción que les permita terminar su ejecución, se producirán llamadas hasta agotar los recursos de memoria del sistema. –Si se alcanza el “caso base” en una llamada del “ciclo activo”, entonces se inicia el “ciclo pasivo” o de retorno.

30 Recursividad código C tipo_de_retorno nombre_funcion(tipo argumentos){ if ( caso_base ) return valor_base; else { return nombre_funcion(argumentos'); }

31 Recursividad (ejemplo) Obtener el factorial de un número Casos base: - el factorial de cero es uno - factorial de uno es uno - factorial de un número negativo lo hacemos cero. Ciclo activo: - llamar a partir del número en forma descendente hasta llegar al caso base.

32 Recursividad (Ejemplo cont.) #include int factorial(int n){ if (n<0) return 0; if (n==0) return 1; else if (n==1) return 1; else return n*factorial(n-1); } int main(){ int x,fac; printf("Ingrese un número para calcularle el factorial = “); scanf("%d",&x); fac=factorial(x); printf("%d!=%d\n",x,fac); return 0; }

main(){ int x = 3; fac = factorial(x); 33 Simulación: ciclo activo factorial(3); factorial(3){ if (3==0) return 1; else if (3==1) return 1; else return 3*factorial(3-1); 3*factorial(2); factorial(2){ if (2==0) return 1; else if (2==1) return 1; else return 2*factorial(2-1); 2*factorial(1); factorial(1){ if (1==0) return 1; else if (1==1) return 1; return 1 Caso Base alcanzado!!

main(){ int x = 3; fac = factorial(x); 34 Simulación: ciclo pasivo factoria l(3); factorial(3){ if (3==0) return 1; else if (3==1) return 1; else return 3*factorial(3-1); 3*factorial(2 ); factorial(2){ if (2==0) return 1; else if (2==1) return 1; else return 2*factorial(2-1); 2*1

main(){ int x = 3; fac = factorial(x); 35 Simulación: ciclo pasivo factoria l(3); factorial(3){ if (3==0) return 1; else if (3==1) return 1; else return 3*factorial(3-1); 3*factorial(2 ); factorial(2){ if (2==0) return 1; else if (2==1) return 1; else return 2;

main(){ int x = 3; fac = factorial(x); 36 Simulación: ciclo pasivo factoria l(3); factorial(3){ if (3==0) return 1; else if (3==1) return 1; else return 3*factorial(3-1); 3*2

main(){ int x = 3; fac = factorial(x); 37 Simulación: ciclo pasivo factoria l(3); factorial(3){ if (3==0) return 1; else if (3==1) return 1; else return 6;

main(){ int x = 3; fac = factorial(x); 38 Simulación: ciclo pasivo 6;