Figure: Algoritmos.

Slides:



Advertisements
Presentaciones similares
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
Advertisements

1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
IINTRODUCCION A LA CIENCIA DE LA COMPUTACION Y A LA PROGRAMACION
Algoritmos.
Capítulo 2 – Estructuras de Control
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
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.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
ALGORITMOS Y TIPOS DE DATOS Un algoritmo es un método para resolver un problema. Para la creación de un programa (resolver un problema) en un lenguaje.
DESARROLLO DE PROGRAMAS Prof: Ing. Frank Delgadillo UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO “RAFAEL RANGEL” PROGRAMACION.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
Figure: Algoritmos. Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Ingreso , proceso y salida de datos
Colegio San Agustín – El Paraíso
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Actividad #2 Los algoritmos
Lic. Xóchitl minerva García cruz
Programación 1 Curso: 5to. I TT
Anexo Chame-San Carlos
Programación Orientada a Objetos
METODOLOGIA #include <stdio.h> #include <conio.h> main() {
Fundamentos de programación
Estructuras de Control en Visual Basic.net
Lenguajes y representación técnica
LENGUAJES Y REPRESENTACION TECNICA
Estructuras de Datos Recursividad.
Complejidad Programación II de febrero de 2009.
INTREGRANTES DE EQUIPO:
TUTORIAL PSeint.
CREAR DIAGRAMA DE FLUJO
Tema 3 Fundamentos y diseño de algoritmos
ALGORITMOS. IFE 115: INFORMÁTICA BÁSICA Lic. Marcio Rodas
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
LÓGICA DE PROGRAMACIÓN
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Unidad 2. Algoritmos Unidad 4. Control de flujo
Índice temático 2.1 Análisis de problemas. 2.2 Representación de algoritmos: gráfica y pseudocódigo. 2.3 Diseño de algoritmos aplicados a problemas 2.4.
Algoritmo Capitulo Cinco.
Fundamentos de Programación. Estructuras de Control
IFE 115: INFORMÁTICA BÁSICA
Estructuras de control Resolución de problemas y algoritmos
PROGRAMACION: Que es un computador: Es un aparato electrónico que tiene el fin de recibir y procesar datos para realización de diversas operaciones..
Programación: paradigma estructurado Mgs Christian Rosado.
HERRAMIENTAS DE PROGRAMACIÓN
Fundamentos de programación
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
Docente: Ing. Francisco Rodríguez
Tema 5 Representación y Técnicas de Diseño de Algoritmos
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
CURSO LOGICA DE SISTEMAS. Lógica Es una ciencia formal que estudia los principios de la demostración e inferencia válida. Una inferencia es una evaluación.
INTRODUCCIÓN A LA PROGRAMACIÓN ABRAHAM SOPLA MASLUCÁN MAESTRO EN CIENCIAS DE LA COMPUTACIÓN INSTITUTO TECNOLÓGICO DE MONTERREY.
UNIVERSIDAD ESTATAL DE MILAGRO ADMISIÓN. ALGORITMO Y LÓGICA DE PROGRAMACIÓN ING. MAIRA ESPINOZA GARCIA, MGT
Estructura general de un programa. Estructura general de un programa. Pseudocódigo Diagrama de flujo Concepto de programas. Concepto de programas. Instrucciones.
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Informática Ingeniería en Electrónica y Automática Industrial
Fundamentos de la Programación I
Estructuras de Repetición Algoritmos
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Informática Aplicada al Medio Ambiente - Curso 99/00 1 Tema 6. Introducción a la programación 1 Conceptos básicos 2 Los algoritmos – Concepto de algoritmo.
RIOHACHA ALGORITMO Y PROGRAMACION DAVID ENRIQUE FERNANDEZ PEREZ Docente.
Objetivo Que el estudiante estructure soluciones mediante una representación grafica a través de diagramas de flujos aplicando diferentes estructuras.
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: Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una determinada tarea 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. Acción: Etapa en la realización de un trabajo Acción primitiva: Acción que el procesador puede ejecutar sin necesidad de información adicional. 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

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

Primitivas Origami

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 Doble: Simple: Múltiple: sí no no sí sino sino sí sí sí actividad Condición sí no Doble: condición no sí Actividad 1 Actividad 2 Múltiple: Condición Condición Condición sino sino sí sí sí Actividad 1 Actividad 2 Actividad n-1 Avtividad n

Repetición Test condition false true activity

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 <a1, a2,..,an> Salida: Una permutación <a'1, a'2,..,a'n> reordenamiento de la secuencia, tal que: a'1 < a'2 < ... < a'n Ejemplo instancia: Entrada: <5,3,1,6,0> Salida: <0,1,3,5,6>

Ordenando una lista en forma alfabética

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

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 <a1, a2,..,an> Un número b Salida: un entero i, tal que b == ai (igual) 0 si b != ai, para i = 1,...,n Ejemplo instancia: Entrada: <5, 6, 9, 12> y 9 Salida: 3

Búsqueda binaria en pseudocódigo

Buscando en una lista

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

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

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

Algoritmos recursivos

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

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

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

Recursividad (Ejemplo cont.) #include <stdio.h> 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; 32

Simulación: ciclo activo main(){ int x = 3; fac = factorial(x); 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!! 33

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

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

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

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

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