Algoritmos y Programas

Slides:



Advertisements
Presentaciones similares
ALGORITMO Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea y resolver un problema. De un modo más formal,
Advertisements

Análisis y Diseño Estructurado
Análisis y Diseño Estructurado
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.
Secuencia finita, ordenada y lógica de instrucciones (ó pasos), los cuales permiten realizar una ó varias tareas.
Unidad 1 DISEÑO DE ALGORITMOS ING. Nelwi Baez. MSC
Razonamiento algorítmico
Introducción a los Algoritmos
UNIDAD II: ALGORITMOS Y LENGUAJES
CONCEPTOS BASICOS DE PROGRAMACION
Resolución de Problemas Algoritmos y Programación
INFORMÁTICA II.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Técnico en programación de Software
SECRETARÍA DE EDUCACIÓN PÚBLICA SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR DIRECCIÓN GENERAL DEL BACHILLERATO   ESCUELA PREPARATORIA FEDERAL POR COOPERACIÓN.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
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.
Metodología de la Programación
Introducción a la Computación
METODOLOGIA DE LA PROGRAMACION
Análisis Diseño y Desarrollo
Matemáticas Discretas y Algoritmos
Fundamentos de Programación
Proceso de información en la computadora
FORMULACIÓN DE ALGORITMOS
ALGORITMOS.
Fundamentos de programación
ALGORITMOS, CONCEPTOS BASICOS.
ESTRUCTURA DE DATOS ESD-243
ALGORITMOS Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. En un algoritmo siempre debe.
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.
Fundamentos de programación Organización de una computadora.
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.
Introducción a la Ingeniería de Sistemas
Metodología para la construcción de programas
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ó.
ALGORITMOS taller.
Representación de Algoritmos
Algoritmos y pseudocódigos
Ing. Rodolfo Junior Miranda Saldaña CIP: Chimbote- 2013
Introducción a los programas
Unidad 1 Introducción a los Programas Concepto de Programa El término programa (del latín programma, que a su vez proviene de un vocablo griego) tiene.
Nuestra herramienta mental más importante para competir con la complejidad es la abstracción. Por tanto, un problema no deberá considerarse inmediatamente.
ALGORITMOS PRESENTADO POR: FERNANDA LEURO TATIANA CONTRERAS 1004
ALGORITMO QUE ES ??.
Un algoritmo es un método en el que se define paso a paso la solución de un problema que termina en un número infinito de pasos. Un algoritmo es otro tipo.
Elaboración de algoritmos usando lógica de programación
ALGORITMO.
Diagrama de Flujo Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona. El diagrama de flujo o diagrama de actividades es la representación.
M.S.C. Ivette Hernández Dávila
Metodología de la programación
TEMA: DISEÑO DE LA SOLUCION INTREGRANTES DE EQUIPO: ERIKA CRUZ MARTINEZ RODOLFO LOPEZ ANOTA LUIS ARMANDO LIÑA QUECHA JOSE FRANCISCO MEZO VARELA LUIS ENRIQUE.
Algoritmos 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.
Facultad de Ciencias de la Computación - BUAP Introducción a los Algoritmos M.C. Pedro Bello López.
Unidad 1 Introduccion a los programas Concepto de Programa El término programa (del latín programma, que a su vez proviene de un vocablo griego) tiene.
PRINCIPIOS DE PROGRAMACION
COMPUTER SCIENCE PARCIAL 1 Introducción a los programas.
PARCIAL 1 Introducción a los programas. Concepto de Programa  El término programa (d el latín programma, que a su vez proviene de un vocablo griego)
PARCIAL 1 Introducción a los programas. Concepto de Programa  El término programa (d el latín programma, que a su vez proviene de un vocablo griego)
Conceptos Generales PROGRAMACIÓN I DOCENTE: ING. MARLENY SORIA M. 1.
COMPUTER SACIENCE PARCIAL 1
Programación I Prof. Carolina Cols. Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.
INFORMÁTICA II TEMA: DISEÑA Y ELABORA ALGORITMOS DOCENTE: MARÍA DOLORES GARCÍA PONCE CAMPUS TONALÁ JALISCO.
LOS ALGORITMOS Vadim Loktionov. ¿Que es un Algoritmo? -Un algoritmo se puede definir como una secuencia de instrucciones que representan un modelo de.
Algoritmos Computacionales
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
Transcripción de la presentación:

Algoritmos y Programas Tema 6 Algoritmos y Programas Fundamentos de Informática. I.T.I. Mecánica e I.T.I. Química. Curso 2009/2010 © Dpto. de Informática UVA

Objetivos Al terminar este tema deberás ser capaz de: Definir qué es un algoritmo. Describir las características que debe cumplir un algoritmo. Representar un algoritmo. Definir qué es un programa. Describir las propiedades del lenguaje C.

Contenidos Introducción Concepto de algoritmo Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Introducción Un ordenador es un sistema para procesar información Procesador Entrada = Datos Salida = Resultados El ordenador puede ser visto como un sistema de procesamiento de información. Es decir, un sistema que transforma los datos brutos en información organizada, significativa y útil. La figura muestra los tres componentes de un sistema de procesamiento de información. Muchos dispositivos pueden ser considerados procesadores. Un termostato, el corazón de un ser humano, … El conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un problema específico se denomina algoritmo. El algoritmo es una fórmula para la resolución de un problema. Se debe suministrar al procesador un algoritmo adecuado: a un cocinero, una receta; a un pianista una partitura. Algoritmo

Introducción Ciclo de vida del software mantenimiento análisis diseño IMPLEMENTACIÓN PRUEBAS mantenimiento documentación Ciclo de vida del software

Contenidos Introducción Concepto de algoritmo Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Concepto de algoritmo Algoritmo (según el DRAE): (del árabe al-Khowârizmî) “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema” Ejemplos sencillos de algoritmos según esta definición podrían ser una receta de cocina o las instrucciones para armar una bicicleta.

Concepto de algoritmo Breve reseña histórica: Los primeros algoritmos registrados datan de Babilonia, originados en las matemáticas como un método para resolver un problema usando una secuencia de cálculos más simples. El primer algoritmo famoso es el cálculo del MCD de dos números (Grecia, aproximadamente del s. IV a. C.).

Concepto de algoritmo En Informática: Un algoritmo es una secuencia de pasos a seguir para resolver un problema usando un computador u ordenador. La algoritmia o ciencia de los algoritmos, es uno de los pilares de la informática.

Concepto de algoritmo Definiciones básicas: Procesador: cualquier entidad capaz de resolver un problema Entorno: conjunto de utensilios que el procesador puede utilizar Estado: situación en la que se encuentra un entorno en un momento dado.

Concepto de algoritmo Definiciones básicas Acción: Conjunto finito de operaciones que permiten llegar de un estado inicial bien definido a otro también bien definido. Tipos de acciones: Acción primitiva o elemental Puede ser realizada directamente por el procesador. Acción compuesta o abstracta Ha de descomponerse en acciones más elementales para poder ser entendida por un procesador.

Concepto de algoritmo Definición formal de algoritmo: “Dado un procesador, un entorno, y un problema bien definido, un algoritmo es la secuencia finita de acciones primitivas que llevan a la solución del problema”

Concepto de algoritmo Características de un algoritmo: Preciso (no ambiguo): la instrucción a ejecutar en cada paso queda determinada perfectamente. Determinista: debe comportarse del mismo modo ante las mismas condiciones. Si se sigue dos veces en el mismo entorno, el resultado obtenido es el mismo. Finito: Tiene fin tras un número determinado de pasos.

Contenidos Introducción Definiciones básicas Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Lenguajes de representación algorítmica ¿Cómo se escribe un algoritmo? Representándolo mediante un lenguaje  lenguaje de representación algorítmica Dos tipos de representación: Pseudocódigo Diagramas de flujo

Representación algorítmica Pseudocódigo: Lenguaje similar al natural, pero al que se añaden reglas para conseguir una definición precisa del algoritmo Algunas reglas: Empieza por la palabra “Inicio” y termina con la palabra “Fin” Se escribe una acción por línea Se subrayan las palabras clave

Representación algorítmica Diagrama de Flujo (DF): Representación gráfica del flujo de control de un algoritmo Elementos del (DF): Terminal Entrada/ Salida Decisión Subprograma Proceso Conectores si no

Representación algorítmica Pseudocódigo Diagrama de flujo Entorno suma, num Inicio // Iniciar variables suma<- 2 num <- 4 // Suma de los números repetir suma <- suma + num num <- num +2 mientras (num <= 100) // Escribir resultado escribir (suma) Fin

Contenidos Introducción Definiciones básicas Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Ejemplos de algoritmo Hay que tener en cuenta que para resolver un determinado problema existe más de un algoritmo Todos encuentran la solución correcta… pero unos lo hacen mejor que otros.

Ejemplos de algoritmo Multiplicar 981 por 1234 Varias formas (algoritmos) de hacerlo: Método clásico Multiplicación “à la russe” Divide y vencerás Con todas se alcanza la solución ¿Cuál es la mejor? ¿Por qué?

Ejemplos de algoritmo Método tradicional 981 * 1234 3924 2943 1962 1210554

Ejemplos de algoritmo Método tradicional Pero en UK… 981 981 981 981 * 1234 * 1234 3924 981 2943 1962 1962 2943 981 3924 1210554 1210554

Ejemplos de algoritmo Multiplicación “à la russe” Se escriben el multiplicando y el multiplicador iniciando dos columnas. Se obtienen los siguientes elementos de las columnas, hasta que quede un 1 en la columna de la izquierda: La columna de la izquierda se va dividiendo entre dos, ignorando los restos. La columna de la derecha se va multiplicando por dos. El resultado se obtiene sumando los números de la columna de la derecha cuyo número correspondiente de la columna izquierda sea impar. Sólo es necesario saber sumar, multiplicar por 2 y dividir entre 2. Se encuentra en el hardware de las ALU’s.

Ejemplos de algoritmo Multiplicación “à la russe” 981 1234 490 2468 981 1234 490 2468 245 4936 122 9872 61 19744 30 39488 15 78976 7 157952 3 315904 1 631808

Ejemplos de algoritmo Multiplicación “à la russe” 981 1234 490 981 1234 490 245 4936 122 61 19744 30 15 78976 7 157952 3 315904 1 631808 SUMA = 1210554

Ejemplos de algoritmo Divide y vencerás Números con precisión par Se dividen por la mitad ambos operandos Se realizan las 4 multiplicaciones cruzadas Se suman los resultados desplazando previamente hacia la izquierda Algoritmo recursivo

Ejemplos de algoritmo Divide y vencerás 0981 1234 Multiplicar Desplazar Resultado 09*12 4 108---- 09*34 2 306-- 81*12 972-- 81*34 2754 Suma 1210554

Ejemplos de algoritmo Ejercicio: ¿Cuál es mejor y por qué? ¿Qué criterios podemos utilizar para valorar un algoritmo?

Contenidos Introducción Definiciones básicas Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Programas Programa: Algoritmo codificado en un lenguaje de programación. Programar: Fraccionar un problema en forma de instrucciones adecuadamente formuladas para que un ordenador pueda llevarlas a la práctica.

Programas Las instrucciones se forman con elementos o símbolos tomados de un determinado repertorio, y se construyen siguiendo unas reglas precisas. Todo lo relativo a los símbolos y reglas para construir o redactar con ellos un programa se denomina lenguaje de programación.

Contenidos Introducción Definiciones básicas Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Lenguajes de programación Clasificación Lenguaje máquina: Es el que entienden los circuitos del computador (CPU) Inconvenientes: depende del modelo de computadora; el repertorio de instrucciones es muy reducido es muy laborioso Ensamblador (lenguaje de bajo nivel) Código nemotécnico para recordar mejor las instrucciones máquina Se mantienen los otros inconvenientes del lenguaje máquina Lenguajes de alto nivel No dependen de la computadora, y facilitan la tarea de programación

Lenguajes de programación Lenguajes de alto nivel FORTRAN (Formula Translation): Primer LAN(década de los 50). Aplicaciones científico-técnicas (grandes computadores y supercomputadores) COBOL (COmmon Busines Oriented Language): 1960. Aplicaciones comerciales y de gestión. BASIC (Beginner’s All-purpose Symbolic Instruction Code). Desarrollado a mediados de los 60 como lenguaje interactivo paraprincipiantes de programación. Visual BASIC: es el lenguaje más popular. Versión de Microsoft del BASIC. Permite crear programas en un ambiente visual (lenguaje de 4ª generación). C: Desarrollado en Bell Labs a comienzos de los 70. Es complejo, pero es potente, flexible y eficiente (el más utilizado para PCs y estaciones de trabajo).

Lenguajes de programación Lenguajes de alto nivel Pascal: Creado por Wirth en 1971. El mejor lenguaje para aprender a programar y describir algoritmos. Ada: Es un lenguaje definido por el Ministerio de Defensa de USA a finales de los 70. Esta basado en el Pascal y tiene unas reglas muy estrictas. C++: Ideado a comienzos de los 80 en los BellLabs. Es una variante del C que permite utilizar la moderna metodología de la programación (“programación orientada a objetos”) Java: Desarrollado en 1991 por Sun, es similar a C++ pero más sencillo de aprender y usar. Muy usado para programa interactivos y dinámicos (“applets” de web). Se ha definido un computador virtual Java compatible, cualquier computador con un programa que lo emule puede ejecutar aplicaciones Java.

Lenguajes de programación Lenguajes de alto nivel Otros lenguajes (usados en Inteligencia artificial): LISP (LISt Processing): Finales de los 50. Procesamiento de datos no numéricos (caracteres, palabras y otros símbolos). Se usa en Inteligencia Artificial. PROLOG:(Programming Logic): Trabaja con relaciones lógicas entre hechos. Muy usado en inteligencia artificial. LOGO: versión simplificada del LISP para niños.

Lenguajes de programación Traductores Traducción: Proceso por el cual se convierte el texto del programa de entrada en el de salida. Lenguaje fuente: lenguaje en el que se escribe la entrada Lenguaje objeto: lenguaje en el que se escribe la salida. En general, muy diferente del lenguaje fuente Compilador: Programa que acepta como entrada un texto de programa escrito en un cierto lenguaje de alto nivel y genera como salida texto de programa en otro lenguaje, generalmente lenguaje máquina.

Lenguajes de programación Compiladores Compilar ≈ Convertir de un formato a otro El significado deberá permanecer inalterado en la conversión La entrada está escrita en un lenguaje  Tiene estructura Semántica asociada y descrita en términos de esa estructura El compilador “comprende” el programa y recolecta su significado en una representación semántica intermedia A la hora de generar la salida  se genera estructura y significado

Lenguajes de programación Intérpretes Forma de trabajar cada vez más frecuente: Intérpretes En vez de traducir, realiza las acciones directamente Por ejemplo, la máquina virtual de Java Ventajas del uso de intérpretes Portabilidad: Un intérprete se escribe, habitualmente, en lenguaje de alto nivel Sencillez: Escribir un intérprete es menos costoso que escribir un compilador Señalización y manejo de errores: los compiladores cuidan “demasiado” la eficiencia de código Seguridad: Funcionamiento más transparente al usuario Desventajas: Velocidad de los programas interpretados y consumo de memoria.

Lenguajes de programación Compiladores vs. Intérpretes El procesamiento del programa es considerable El mecanismo de interpretación previsto es la CPU (hw) La ejecución del programa traducido es relativamente rápida Intérpretes: El procesamiento del programa es entre mínimo y moderado El mecanismo de interpretación es un programa (sw) La ejecución del programa es, en general, más lenta y más segura

Contenidos Introducción Definiciones básicas Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Proceso de programación

Contenidos Introducción Definiciones básicas Lenguajes de representación algorítmica Ejemplos de algoritmo Programas Lenguajes de programación El proceso de programación Introducción al lenguaje C

Lenguaje C Es un lenguaje estructurado de propósito general, orientado a la programación de sistemas Origen: Evolución de BSPL y B “The C programming language”, B. Kernighan & D. Ritchie. (1978) ANSI C: Versión estándar en 1983 Nueva revisión en 1999 Uno de los lenguajes más utilizados en la industria del software actual y en el mundo Unix/Linux

Lenguaje C Características de C Propósito general Portable Eficiente Válido para diversos objetivos Portable NOTA: Sin embargo, siempre hay que compilar y probar un programa en el ordenador “destino” Eficiente Apropiado para la programación de sistemas Extendido. Gran cantidad de bibliotecas de funciones, compiladores, etc. Amplia difusión y uso.

Bibliografía Joyanes Aguilar, L. “Fundamentos de programación. Algoritmos y Estructura de Datos”, McGrawHill. Capítulo 2. Llanos Ferraris, D. “Curso de C bajo UNIX”. Capítulo 1.