Algoritmos, programas, compiladores y lenguajes de programacion

18
ALGORITMOS Y PROGRAMAS Algoritmo Secuencia ordenada de pasos que resuelve un problema concreto. Características Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea, debe tener un numero finito de pasos. La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina se analiza : Entrada: ingrediente y utensilios empleados. Proceso: elaboración de la receta en la cocina. Salida: terminación del plato (por ejemplo, cordero). Ejemplo de Algoritmo: Un cliente ejecuta un pedido a una fábrica. Esta examina en su banco de datos la ficha del cliente; si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario rechazara el pedido

Transcript of Algoritmos, programas, compiladores y lenguajes de programacion

Page 1: Algoritmos, programas, compiladores y lenguajes de programacion

ALGORITMOS Y PROGRAMAS

Algoritmo

Secuencia ordenada de pasos que resuelve un problema concreto.

Características

Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.

Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea, debe tener un numero finito de pasos.

La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida.

En el algoritmo de receta de cocina se analiza :

Entrada: ingrediente y utensilios empleados.Proceso: elaboración de la receta en la cocina.Salida: terminación del plato (por ejemplo, cordero).

Ejemplo de Algoritmo:

Un cliente ejecuta un pedido a una fábrica. Esta examina en su banco de datos la ficha del cliente; si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario rechazara el pedido

Page 2: Algoritmos, programas, compiladores y lenguajes de programacion

Programa

Implementación de un algoritmo en un lenguaje de programación Conjunto ordenado de instrucciones que se dan al Computador indicándole las operaciones o tareas que ha de realizar para resolver un problema.

Lenguajes de programación

Una instrucción es un conjunto de símbolos que representa una Orden para el Computador: la ejecución de una operación con datos.

Las instrucciones se escriben en un lenguaje de programación:

- Se forman con símbolos tomados de un determinado repertorio (componentes léxicos)

- Se construyen siguiendo unas reglas precisas (sintaxis)

Lenguaje máquina

El único que entiende directamente la CPU del Computador

o Depende del modelo de Computadoro Repertorio de instrucciones reducido (operaciones muy elementales)o Muy difícil programar en él (en binario, con cadenas de ceros y unos)

Lenguaje ensambladorEquivalente al lenguaje máquina, cada línea de código se traduce en:

o una instrucción para la máquina.o Le asocia mnemónicos a las operaciones que entiende la CPUo Repertorio de instrucciones reducido (operaciones muy elementales)o Programas difíciles de entender

Page 3: Algoritmos, programas, compiladores y lenguajes de programacion

Lenguajes de alto nivel

Permiten que el programador exprese el procesamiento de datos de forma simbólica, sin tener en cuenta los detalles específicos de la máquina.

Independientes del modelo de Computador Proporcionan un mayor nivel de abstracción

Ejemplos de lenguajes de programación de alto nivel

FORTRAN (FORmula TRANslation)© 1957, IBM (John Backus)Orientado a la resolución de problemas científicos y técnicosCOBOL (COmmon Business Oriented Language)© 1959, Codasyl (Committee on Data System Languages)Aplicaciones comerciales de gestiónLISP (LISt Processing)© 1959, John McCarthy (MIT)Procesamiento de datos no numéricos (usado en IA)BASIC (Beginner’s All-purpose Symbolic Instruction Code)© 1964, John Kemeny & Thomas Kurtz (Darmouth College)Lenguaje interactivo para principiantesSimula© 1967, Ole-Johan Dahl & Krysten Nygaard (Noruega)Primer lenguaje de programación orientada a objetosPascal© 1971, Niklaus WirthLenguaje estructurado diseñado para aprender a programarC© 1972, Denis Ritchie (Bell Labs)Lenguaje pequeño, flexible y eficienteSmalltalk© 1972, Alan Kay (Xerox PARC)Origen de los interfaces WIMP (Windows, Icons, Mouse & Pull-down menus)PROLOG (PROgramming in Logic)© 1972, Alain Colmerauer (Universidad de Marsella)Basado en Lógica (usado en IA)Ada© 1980, US Department of DefenseBasado en Pascal, muy usado en aplicaciones militaresIntroducción a la Programación - 4 - © Fernando BerzalC++© 1983, Bjarne Stroustroup (AT&T Bell Labs)Extensión de C que permite la programación orientada a objetos

Page 4: Algoritmos, programas, compiladores y lenguajes de programacion

Java© 1995, Sun MicrosystemsSimilar a C++, aunque más sencillo de aprender y usar.C#© 2000, Microsoft CorporationAlternativa de Microsoft a Java, muy similar a éste.

Clasificación de los lenguajes de programación de alto nivel

Lenguajes imperativos:Los programas indican al Computador de forma inequívoca los pasos a seguir para la resolución de un problema.

Programación estructurada:La estructura del texto del programa debe auxiliarnos para entender la función que realiza: estrategia “divide y vencerás” (la resolución de un problema se divide en tareas y, éstas, en subtareas).Ejemplos: C, Pascal, Fortran...

Programación orientada a objetos:Estilo de programación que basa la estructura de un programa en módulos deducidos de los tipos de objetos que manipula (en lugar de basarse en las tareas que el sistema debe realizar).Ejemplos: Smalltalk, C++, Java, C#...

Lenguajes declarativos (funcionales y lógicos):Los programas se implementan como conjuntos de funciones (o reglas lógicas) cuya evaluación nos dará el resultado deseado.Ejemplos: LISP, PROLOG...

Page 5: Algoritmos, programas, compiladores y lenguajes de programacion

Evolución de los lenguajes de programación: Lenguajes imperativos

Page 6: Algoritmos, programas, compiladores y lenguajes de programacion

Evolución de los lenguajes de programación:Lenguajes declarativos

Page 7: Algoritmos, programas, compiladores y lenguajes de programacion

Traductores

Los traductores transforman programas escritos en un lenguaje de altonivel en programas escritos en código máquina:

Page 8: Algoritmos, programas, compiladores y lenguajes de programacion

Tipos de traductores

CompiladoresGeneran un programa ejecutable a partir del código fuente

Page 9: Algoritmos, programas, compiladores y lenguajes de programacion

Análisis Léxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símbolo indicando el token por cada uno de los elementos reconocidos o el error en caso de no reconocer. Este análisis no logra detectar muchos errores por su característica.

Ejemplo:

total=valor*5

Luego del análisis léxico:

id = id * num

Análisis Sintáctico: En esta fase se analiza la estructura de las expresiones en base a gramáticas. Aquí ya se puede determinar si una estructura por ejemplo una expresión matemática mal formada. El análisis que se realiza es jerárquico es decir en base a árboles de derivación que se obtienen de las mismas gramáticas. Ejemplo: position:=initial + rate*60

Page 10: Algoritmos, programas, compiladores y lenguajes de programacion

Análisis Semántico: Este análisis es más difícil de formalizar, determina el tipo de los resultados intermedios, comprobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible, y si son compatibles entre si.

Generación de Código Intermedio: El código intermedio es una representación en base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimización de código.

a=b+c

1: + b c T1

2: = a  T1

Optimización de Código: Consiste en realizar una mejora en el código intermedio, para reducir el número de líneas y hacer que la ejecución sea más rápida

a=b+c

1: + b c a

Generación de Código: Llegamos a la generación de código ensamblador o código máquina del procesador que nos interese por ejemplo:

a:=b+c

LOAD B

ADD C

STORE A

Page 11: Algoritmos, programas, compiladores y lenguajes de programacion

IntérpretesVan analizando, traduciendo y ejecutando las instrucciones del programa una a una. No se traduce una instrucción hasta que la ejecución de la anterior haya finalizado.

Herramientas de programación

Editores, depuradores, profilers...Ä IDEs (entornos integrados de desarrollo)

Ejemplos

Microsoft Visual Studio .NET, un IDE para la plataforma .NET

Page 12: Algoritmos, programas, compiladores y lenguajes de programacion

Eclipse, un IDE para Java (http://www.eclipse.org)

Page 13: Algoritmos, programas, compiladores y lenguajes de programacion

Desarrollo de aplicaciones informáticas:Ciclo de vida del software

El ciclo de vida de una aplicación comprende las siguientes etapas:

Planificación: Delimitación del ámbito del proyecto, estudio de viabilidad, análisis de riesgos, estimación de costos, planificación temporal y asignación de recursos.

Análisis (¿qué?): requisitos.Descripción clara y completa de qué es lo que se pretende, incluyendo la presentación de los resultados que se desean obtener (formato de las salidas) y la forma en que se va a utilizar la aplicación (interfaz de usuario)

Diseño (¿cómo?): Estudio de alternativas

Diseño arquitectónico: Organización de los distintos módulos que compondrán la aplicación (diseño arquitectónico).

Diseño detallado: Definición de los algoritmos necesarios para implementar la aplicación en lenguaje natural, mediante diagramas de flujo o en pseudocódigo [lenguaje algorítmico].

Implementación:Adquisición de componentes, creación de los módulos de la aplicación en un lenguaje de programación e integración de los recursos necesarios para que el sistema funcione.

Depuración y pruebas:Comprobación del funcionamiento de la aplicación Pruebas de unidad y de integración, pruebas alfa, pruebas beta, test de aceptación.

Verificación (si se está realizando lo que se pretendía) Validación (si se realiza lo correcto).

Explotación: Uso y mantenimiento

Mantenimiento correctivo: Corrección de defectos o errores.Mantenimiento adaptativo: Adaptación de la aplicación a nuevas circunstancias e inclusión de nuevas prestaciones.