Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de...

23
Fundamentos de Informática ETSI Industrial 1 Universidad de Málaga José Antonio Gómez Ruiz 2.1. INTRODUCCIÓN A LA RESOLUCIÓN DE PROBLEMAS. 2.1.1. Concepto de algoritmo. 2.1.2. Estructura general de un algoritmo. 2.1.3. Propiedades exigibles a un algoritmo. 2.2. FASES DE LA CREACIÓN DE UN PROGRAMA. 2.2.1. Ingeniería del Software. Ciclo de vida del software. 2.2.2. Metodología de diseño: el diseño descendente. 2.3. REPRESENTACIÓN DE ALGORITMOS: Diagramas de flujo y Pseudolenguaje. 2.4. LENGUAJES DE PROGRAMACIÓN. 2.4.1. Conceptos básicos. 2.4.2 . Clasificación de los lenguajes de programación. 2.4.3. El proceso de compilación: traductores de lenguajes. Tema 2: Resolución de Problemas. Algoritmos y Programas Estructura y Contenidos Fundamentos de Informática ETSI Industrial 2 Universidad de Málaga José Antonio Gómez Ruiz Introducir el concepto de algoritmo, mostrando las propiedades exigibles Mostrar las fases necesarias para el desarrollo completo de un programa (ciclo de vida del software (lineal, prototipos, incremental, en espiral)) Exponer las herramientas existentes para la representación de algoritmos Dar una panorámica general de los distintos paradigmas de programación, mostrando sus lenguajes más representativos Explicar el concepto de traducción de un programa diferenciando los conceptos de compilador e intérprete Tema 2: Resolución de Problemas. Algoritmos y Programas OBJETIVOS

Transcript of Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de...

Page 1: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 1 Universidad de Málaga José Antonio Gómez Ruiz

2.1. INTRODUCCIÓN A LA RESOLUCIÓN DE PROBLEMAS.

2.1.1. Concepto de algoritmo.

2.1.2. Estructura general de un algoritmo.

2.1.3. Propiedades exigibles a un algoritmo.

2.2. FASES DE LA CREACIÓN DE UN PROGRAMA.

2.2.1. Ingeniería del Software. Ciclo de vida del software.

2.2.2. Metodología de diseño: el diseño descendente.

2.3. REPRESENTACIÓN DE ALGORITMOS: Diagramas de flujo y Pseudolenguaje.

2.4. LENGUAJES DE PROGRAMACIÓN.

2.4.1. Conceptos básicos.

2.4.2 . Clasificación de los lenguajes de programación.

2.4.3. El proceso de compilación: traductores de lenguajes.

Tema 2: Resolución de Problemas. Algoritmos y Programas

Estructura y Contenidos

Fundamentos de Informática ETSI Industrial 2 Universidad de Málaga José Antonio Gómez Ruiz

Introducir el concepto de algoritmo, mostrando las propiedades exigibles

Mostrar las fases necesarias para el desarrollo completo de un programa (ciclo de vida del software (lineal, prototipos, incremental, en espiral))

Exponer las herramientas existentes para la representación de algoritmos

Dar una panorámica general de los distintos paradigmas de programación, mostrando sus lenguajes más representativos

Explicar el concepto de traducción de un programa diferenciando los conceptos de compilador e intérprete

Tema 2: Resolución de Problemas. Algoritmos y Programas

OBJETIVOS

Page 2: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 3 Universidad de Málaga José Antonio Gómez Ruiz

2.1. INTRODUCCIÓN A LA RESOLUCIÓN DE PROBLEMAS.

2.1.1. Algoritmos y programas.

2.1.2. Estructura general de un algoritmo.

2.1.3. Propiedades exigibles a un algoritmo.

2.2. Fases de la creación de un programa.

2.2.1. Ingeniería del Software. Ciclo de vida del software.

2.2.2. Metodología de diseño: el diseño descendente.

2.3. Representación de algoritmos: Diagramas de flujo y Pseudolenguaje.

2.4. Lenguajes de programación.

2.4.1. Conceptos básicos.

2.4.2 . Clasificación de los lenguajes de programación.

2.4.3. El proceso de compilación: traductores de lenguajes.

Tema 2: Resolución de Problemas. Algoritmos y Programas

Estructura y Contenidos

Fundamentos de Informática ETSI Industrial 4 Universidad de Málaga José Antonio Gómez Ruiz

La principal razón por la que se aprende a programar es para utilizar el ordenador como herramienta para la resolución de problemas

Un algoritmo es una secuencia ordenada de acciones que conducen a la resolución de un problema concreto, sin ambigüedad, en un tiempo finito

Un programa es resolución de un problema (algoritmo) en términos que pueda “entender” el ordenador

PROBLEMA

PROGRAMA

ALGORITMO

Análisis

Codificación

Pasodirecto

MuhammadAl-Khwârizmi(780-850†)

ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS

Page 3: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 5 Universidad de Málaga José Antonio Gómez Ruiz

Definiciones:

Procesador: entidad capaz de “entender” un enunciado y ejecutar el trabajo descrito

Entorno: conjunto de condiciones necesarias para la ejecución del trabajo

Acción o primitiva: cada etapa del enunciado

Secuencialidad: cada primitiva se ejecuta cuando la anterior ha terminado completamente

Paralelismo: existen algoritmos en los cuales algunas primitivas se pueden ejecutar a la vez

ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS

Fundamentos de Informática ETSI Industrial 6 Universidad de Málaga José Antonio Gómez Ruiz

Dado un procesador bien definido y un trabajo a ejecutar por este procesador, un algoritmo es el enunciado de una secuencia no ambigua de acciones primitivas que realizan ese trabajo

Para diseñar un algoritmo hay que considerar tres aspectos:

Primitivas de las que partimos

Lenguaje simbólico a utilizar

Representación de los datos

caracteres alfanuméricos, símbolos especiales y palabras en español

determinará la descripción del algoritmo y la forma de las acciones

ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS

Page 4: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: producto de dos número naturales

Procesador: ser humano

Primitivas: saber leer, escribir, sumar y restar

Representación de los datos: cifras escritas en papel

Algoritmo:INICIO ALGORITMO

Escribir X en la hoja 1Escribir Y en la hoja 2Escribir 0 en la hoja 3REPETIR

Sumar valores de las hojas 1 y 3 Escribir el resultado en la hoja 3Restar 1 al valor de la hoja 2 Escribir el resultado en la hoja 2

HASTA QUE valor hoja 2 sea 0Leer valor escrito en hoja 3

FIN ALGORITMO

hoja 1

2

hoja 2

3

hoja 3

0

ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS

Fundamentos de Informática ETSI Industrial 8 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: producto de dos número naturales

Procesador: ser humano

Primitivas: saber desplazar bolas y contar

Representación de los datos: bolas en un ábaco

Algoritmo:INICIO ALGORITMO

Desplazar todas las bolas a la derechaDesplazar X bolas rojas a la izquierdaDesplazar Y bolas azules a la izquierdaMIENTRAS haya bolas azules a la izquierda

Desplazar X bolas verdes a la izquierdaDesplazar 1 bola azul a la derecha

FINMIENTRASContar bolas verdes a la izquierda

FIN ALGORITMO

X=2, Y=3

ALGORITMOS Y PROGRAMASALGORITMOS Y PROGRAMAS

Page 5: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 9 Universidad de Málaga José Antonio Gómez Ruiz

Un algoritmo describe una transformación de unos datos de entradapara obtener unos datos de salida mediante un procesamiento de la información:

Son necesarias unas

Acciones de entrada: recogen los datos para el proceso

Acciones de proceso: ejecutan los cálculos

Acciones de salida: ofrecen los resultados

Interfaz: acciones de entrada + datos de entrada +

acciones de salida + datos de salida

Datosde

Entrada

ALGORITMODatos

deSalida

ESTRUCTURA GENERAL DE UN ALGORITMOESTRUCTURA GENERAL DE UN ALGORITMO

Fundamentos de Informática ETSI Industrial 10 Universidad de Málaga José Antonio Gómez Ruiz

Propiedades exigibles a todo algoritmo:

Corrección: debe resolver con exactitud el problema para el que es diseñadoEficiencia: debe obtener soluciones en un tiempo razonable ocupando el menor espacio de memoria posibleSimplicidad: cuanto más sencillo de expresar, mejor (simplicidad y eficiencia no siempre van unidas)Repetitividad: puede resolver un problema genérico concretándose con distintas entradas, obteniendo iguales resultados a iguales entradasFinitud: debe siempre terminar

Por ejemplo, una receta de cocina no sería un algoritmo puesto que, aun siendo una secuencia finita y ordenada de pasos, ante las mismas entradas (ingredientes) no necesariamente se obtienen los mismosresultados (distinto sabor ...)

PROPIEDADES EXIGIBLESPROPIEDADES EXIGIBLES

Page 6: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 11 Universidad de Málaga José Antonio Gómez Ruiz

2.1. Introducción a la resolución de problemas.

2.1.1. Algoritmos y programas.

2.1.2. Estructura general de un algoritmo.

2.1.3. Propiedades exigibles a un algoritmo.

2.2. FASES DE LA CREACIÓN DE PROGRAMA.

2.2.1. Ingeniería del Software. Ciclo de vida del software.

2.2.2. Metodología de diseño: el diseño descendente.

2.3. Representación de algoritmos: Diagramas de flujo y Pseudolenguaje.

2.4. Lenguajes de programación.

2.4.1. Conceptos básicos.

2.4.2 . Clasificación de los lenguajes de programación.

2.4.3. El proceso de compilación: traductores de lenguajes.

Tema 2: Resolución de Problemas. Algoritmos y Programas

Estructura y Contenidos

Fundamentos de Informática ETSI Industrial 12 Universidad de Málaga José Antonio Gómez Ruiz

El desarrollo de programas de calidad requiere de una metodología, herramientas y procedimientos englobados en una disciplina que se conoce como ingeniería del software

La resolución de un problema mediante un ordenador tiene un conjunto genérico de fases conocido como ciclo de vida del software, que engloba desde la concepción inicial del problema hasta la puesta en funcionamiento del programa en un ordenador

El ciclo de vida del software (lineal o en cascada) tiene tres fases:

Definición (análisis, especificación de requisitos)

Desarrollo (diseño, implementación, verificación)

Mantenimiento (mejoras y correcciones)

(ver gráfico siguiente transparencia)

CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE

Page 7: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 13 Universidad de Málaga José Antonio Gómez Ruiz

DESARROLLODiseñoImplementaciónVerificación

MANTENIMIENTO

Modificaciones y adaptaciones

Fallos de definición

Errores

DEFINICIÓNAnálisisEspecificación

de requisitos

Ciclo de vida lineal o en cascada

CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE

Fundamentos de Informática ETSI Industrial 14 Universidad de Málaga José Antonio Gómez Ruiz

Definición: descripción detallada de

Programa que se va a realizar

¿qué problema resuelve? ¿qué funciones o tareas debe realizar?

¿qué datos maneja? ¿qué restricciones existen? ...

Recursos necesarios

Costes

Plan de trabajo

Desarrollo: Creación de programas y documentación asociada

Diseño: cómo se solución el problema (algoritmo)

Implementación del algoritmo en un lenguaje de programación

Verificación: comprobar que el programa se corresponde con los requisitos y verificar que funciona correctamente en todos los casos

Mantenimiento: realización de correcciones, mejoras y adaptacionesen la versión original ó incluso descatalogarla (se queda obsoleta)

CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE

Page 8: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 15 Universidad de Málaga José Antonio Gómez Ruiz

El inconveniente principal del ciclo lineal o en cascada es que el cliente final no ve una versión del programa hasta practicamente el final de las etapas, pudiendo retrocederse varias fases

Modelo basado en prototipos: el cliente interactúa desde el principioPueden hacerse compromisos de implementación en las primeras versiones del prototipo que al final mermen la calidad del producto

Escucharal clienteEscucharal cliente

Construir/revisar maqueta

Construir/revisar maqueta

El cliente prueba

la maqueta

El cliente prueba

la maqueta

CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE

Fundamentos de Informática ETSI Industrial 16 Universidad de Málaga José Antonio Gómez Ruiz

Modelo incremental

Combina elementos del modelo lineal con el de creación de prototipos

El primer incremento a menudo es un producto esencial que el cliente utiliza o evalúa

A partir de la evaluación se planea el siguiente incremento y asísucesivamente

Prototipo tras1er incremento

análisis diseño implementación verificación

Prototipo tras2o incremento

análisis diseño implementación verificación

Prototipo tras3er incremento

análisis diseño implementación verificación

Producto finalanálisis diseño implementación verificación

...

CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE

Page 9: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 17 Universidad de Málaga José Antonio Gómez Ruiz

Modelo en espiral

Comunicacióncon el cliente

Planificación

ConstrucciónEvaluacióndel cliente

Ingeniería

Análisis de Riesgos

CICLO DE VIDA DEL SOFTWARECICLO DE VIDA DEL SOFTWARE

Fundamentos de Informática ETSI Industrial 18 Universidad de Málaga José Antonio Gómez Ruiz

Como se ha mostrado, la fase de diseño es la fase de resolución del problema, donde se diseña un algoritmo

Se necesita emplear alguna metodología

Prescindir de ella pueden acarrear inconvenientes como:

Rigidez e inflexibilidad en los programas

Pérdida excesiva de tiempo en la corrección de errores

Imposibilidad de reutilización de código

Documentación deficiente

...

METODOLOGÍA DE DISEÑOMETODOLOGÍA DE DISEÑO

Page 10: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 19 Universidad de Málaga José Antonio Gómez Ruiz

Las metodologías más eficaces para el proceso de diseño se basan en el conocida técnica del divide y vencerás

La resolución de un problema complejo se realiza dividiendo el problema inicial en subproblemas más simples

Esta división se repetirá sucesivamente hasta que los subproblemasresultantes se puedan resolver de una forma sencilla

Este método se conoce como diseño descendenteAl proceso de dividir cada subproblema en subproblema más simples se denomina refinamiento sucesivo

Cada subproblema tendrá asociado un módulo (subprograma) que lo resuelva → programación modular

DISEÑO DESCENDENTEDISEÑO DESCENDENTE

Fundamentos de Informática ETSI Industrial 20 Universidad de Málaga José Antonio Gómez Ruiz

Tendremos un programa principal, que será el módulo de mayor jerarquía, que puede llamar a otros subprogramas, que serán módulos de menor jerarquía

Cada módulo se puede desarrollar de manera independiente (con sus propias fases de definición, desarrollo y mantenimiento)

Nivel 0

Nivel 1

Nivel 2

Nivel 3

DISEÑO DESCENDENTEDISEÑO DESCENDENTE

Page 11: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 21 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: cálculo de la nota media de la clase

Cálculo de media de la clase

Obtener notas de la clase Cálculo de la media

Suma de todas las notas Dividir la suma por el total de calificaciones

Imprimir resultado

Nivel 0

Nivel 1

Nivel 2

DISEÑO DESCENDENTEDISEÑO DESCENDENTE

Fundamentos de Informática ETSI Industrial 22 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: cambio de una bombilla con un robot doméstico

Cambiar bombilla

Quitar la bombilla fundida Colocar la nueva bombilla

Situar la escalera debajo de la

bombilla fundida

Nivel 0

Nivel 1

Nivel 2

Subir por la escalera hasta

alcanzar la bombilla

Girar la bombilla en sentido

antihorario hasta soltarla

Elegir una nueva bombilla de la

misma potencia que la fundida

Enroscar la bombilla nueva en

sentido horario hasta que quede

apretada

Bajar de la escalera

Comprobar que la bombilla funciona

DISEÑO DESCENDENTEDISEÑO DESCENDENTE

Page 12: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 23 Universidad de Málaga José Antonio Gómez Ruiz

2.1. Introducción a la resolución de problemas.

2.1.1. Algoritmos y programas.

2.1.2. Estructura general de un algoritmo.

2.1.3. Propiedades exigibles a un algoritmo.

2.2. Fases de la creación de programa.

2.2.1. Ingeniería del Software. Ciclo de vida del software.

2.2.2. Metodología de diseño: el diseño descendente.

2.3. REPRESENTACIÓN DE ALGORITMOS: Diagramas flujo y Pseudolenguaje.

2.4. Lenguajes de programación.

2.4.1. Conceptos básicos.

2.4.2 . Clasificación de los lenguajes de programación.

2.4.3. El proceso de compilación: traductores de lenguajes.

Tema 2: Resolución de Problemas. Algoritmos y Programas

Estructura y Contenidos

Fundamentos de Informática ETSI Industrial 24 Universidad de Málaga José Antonio Gómez Ruiz

Durante la fase de diseño, es preciso disponer de alguna notación algorítmica que permita expresar de forma no ambigua la resolución del problema

Las notaciones algorítmicas deben ser independientes del lenguaje de programación a utilizar en la fase de implementación, aunque debe permitir una traducción clara al programa

La decisión final sobre el lenguaje de programación a utilizar depende de otras consideraciones y cualquier algoritmo debe poder implementarse en cualquier lenguaje de programación

Tipos de notaciones algorítmicas:

Textual: pseudolenguaje

Gráfica: diagramas de flujo, notación UML

Ejecutable: lenguajes de programación

REPRESENTACIÓN DE ALGORITMOSREPRESENTACIÓN DE ALGORITMOS

Page 13: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 25 Universidad de Málaga José Antonio Gómez Ruiz

Un diagrama de flujo es un herramienta gráfica para la representación de algoritmos

Consta de una serie de símbolos, conectados mediante líneas, que indican el orden en el que se realizan las acciones

Debe reflejar la lógica del algoritmo, indicando los pasos individuales y sus interconexiones. Mostrará por tanto:

el comienzo del programa

las operaciones que deben realizarse

el orden en que se realizan

el final del programa

Los símbolos utilizados están normalizados por las organizaciones ANSI e ISO (en la siguiente transparencia)

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Fundamentos de Informática ETSI Industrial 26 Universidad de Málaga José Antonio Gómez Ruiz

condición

etq

conector

flujo de control

SI NO

proceso

decisión

documento

entrada manual

Salida pantalla

terminador

entrada / salida

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Page 14: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 27 Universidad de Málaga José Antonio Gómez Ruiz

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Fundamentos de Informática ETSI Industrial 28 Universidad de Málaga José Antonio Gómez Ruiz

En la representación con diagramas de flujo es conveniente seguir las siguientes reglas:

El comienzo del programa figurará en la parte superior del diagrama

Los símbolos de comienzo y fin deberán aparecer una única vez

El flujo de las operaciones será de arriba a abajo y de izquierda a derecha

Se debe guardar cierta simetría en la representación de bifurcaciones y bucles

Se evitarán los cruces de líneas de flujo, utilizando conectores

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Page 15: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 29 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: cálculo del valor absoluto de un número leído por teclado

x > 0

Inicio

SI NO

abs ← x

Fin

abs ← - x

Leer x

Escribir abs

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Fundamentos de Informática ETSI Industrial 30 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: cálculo de la suma de n números introducidos por teclado

s ← 0

n > 0

Inicio

SI NOn ← n - 1

s ← s + x Fin

Leer n

Leer x

Escribir s

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Page 16: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 31 Universidad de Málaga José Antonio Gómez Ruiz

Diseña un algoritmo, mediante diagramas de flujo, que lea los coeficientes de una ecuación de segundo grado y calcule e imprima sus soluciones.

Deben contemplarse todos los posibles casos que se puedan dar.

Diseña un algoritmo que, dado un número natural leído por teclado, indique si es o no número primo.

Diseña un algoritmo que, dada una secuencia de ceros y unos terminada en un punto, muestre por pantalla el tamaño de todas las subcadenas de unos e indique cual es la mayor.

DIAGRAMAS DE FLUJODIAGRAMAS DE FLUJO

Fundamentos de Informática ETSI Industrial 32 Universidad de Málaga José Antonio Gómez Ruiz

Los programas deben ser escritos en un lenguaje de programación que pueda interpretar el ordenador, pero no olvidemos que nuestra forma habitual de expresar un concepto es en lenguaje natural

De la aproximación entre ambos surge el pseudolenguaje que es una herramienta textual para la representación de algoritmos

El pseudolenguaje permitirá, por tanto, representar las construcciones básicas de los lenguajes de programación, pero a la vez se mantendrápróximo al lenguaje natural

No obstante, a pesar de la flexibilidad, el pseudolenguaje debe atenerse a una serie de normas para que los algoritmos diseñados resulten legibles, claros y fácilmente codificables

PSEUDOLENGUAJEPSEUDOLENGUAJE

Page 17: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 33 Universidad de Málaga José Antonio Gómez Ruiz

El conjunto de sentencias debe ser completo. Deben permitir especificar cualquier tarea a realizar con suficiente detalle:

INICIO: indica el comienzo del algoritmo

FIN: indica la terminación del algoritmo

LEER: se usa para leer un dato del teclado

ESCRIBIR: se usa para escribir un dato por pantalla

SI <c> ENTONCES <aSí> EN OTRO CASO <aNo> FINSI: si se cumple la condición <c> se realiza la acción <aSí>, en caso contrario se realiza la acción <aNo>

MIENTRAS <c> HACER <a> FINMIENTRAS: se repite la acción <a>mientras se cumpla la condición <c>. Antes de repetir la acción <a> se comprueba primero que se cumpla la condición <c>, incluso la primera vez

REPETIR <a> HASTA QUE <c>: se repite la acción <a> hasta que se cumple la condición <c>. Primero se ejecuta la acción <a> y luego se verifica la condición <c> antes de volver a repetir el proceso

PSEUDOLENGUAJEPSEUDOLENGUAJE

Fundamentos de Informática ETSI Industrial 34 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: cálculo del valor absoluto de un número leído por teclado

INICIOLEER xSI x > 0 ENTONCES

abs ← xEN OTRO CASO

abs ← - xFINSIESCRIBIR abs

FIN

PSEUDOLENGUAJEPSEUDOLENGUAJE

Page 18: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 35 Universidad de Málaga José Antonio Gómez Ruiz

Ejemplo: Cálculo de la suma de n números introducidos por teclado

INICIOS ← 0LEER nMIENTRAS n > 0 HACER

n ← n - 1LEER xs ← s + x

FINMIENTRASESCRIBIR s

FIN

PSEUDOLENGUAJEPSEUDOLENGUAJE

Fundamentos de Informática ETSI Industrial 36 Universidad de Málaga José Antonio Gómez Ruiz

Diseña un algoritmo, mediante pseudolenguaje, que lea los coeficientes de una ecuación de segundo grado y calcule e imprima sus soluciones.

Deben contemplarse todos los posibles casos que se puedan dar.

Diseña un algoritmo que, dado un número natural leído por teclado, indique si es o no número primo.

El algoritmo preguntará si se desea repetir de nuevo el proceso.

Diseña un algoritmo que, dada una secuencia de ceros y unos terminada en un punto, muestre por pantalla el tamaño de todas las subcadenas de unos e indique cual es la mayor.

PSEUDOLENGUAJEPSEUDOLENGUAJE

Page 19: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 37 Universidad de Málaga José Antonio Gómez Ruiz

Ventajas Inconvenientes

Pseudolenguaje

• Fácil de modificar• La sintaxis no es rígida• Fácil de traducir a

un lenguaje deprogramación

• Imprecisión al usar

Diagramas de Flujo

• No tiene ambigüedad • Complicado de actualizarsi el algoritmo es complejo

el lenguaje naturalImprecisión al usar

• Independiente delidioma

• Fácil de “seguir” el flujodel algoritmo • La traducción a un lenguaje

de programación no esinmediata

PSEUDOLENGUAJE PSEUDOLENGUAJE vsvs DIAGRAMAS FLUJODIAGRAMAS FLUJO

Fundamentos de Informática ETSI Industrial 38 Universidad de Málaga José Antonio Gómez Ruiz

2.1. Introducción a la resolución de problemas.

2.1.1. Algoritmos y programas.

2.1.2. Estructura general de un algoritmo.

2.1.3. Propiedades exigibles a un algoritmo.

2.2. Fases de la creación de programa.

2.2.1. Ingeniería del Software. Ciclo de vida del software.

2.2.2. Metodología de diseño: el diseño descendente.

2.3. Representación de algoritmos: Diagramas de flujo y Pseudolenguaje.

2.4. LENGUAJES DE PROGRAMACIÓN.

2.4.1. Conceptos básicos.

2.4.2 . Clasificación de los lenguajes de programación.

2.4.3. El proceso de compilación: traductores de lenguajes.

Tema 2: Resolución de Problemas. Algoritmos y Programas

Estructura y Contenidos

Page 20: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 39 Universidad de Málaga José Antonio Gómez Ruiz

Conceptos básicos:

Lenguaje de programación: conjunto de símbolos y reglas de combinación para construir programas

Se clasifican en:

− Lenguajes de alto nivel: próximos al lenguaje natural, muy productivos, poco eficientes e independientes del ordenador

− Lenguajes de bajo nivel: próximos a la máquina, muy eficientes, poco productivos y dependientes de la máquina

Código fuente: programa escrito en algún lenguaje (generalmente de alto nivel), no ejecutable directamente en ordenador

Código máquina: instrucciones (en bits) ejecutables directamente en un ordenador

LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN

Fundamentos de Informática ETSI Industrial 40 Universidad de Málaga José Antonio Gómez Ruiz

Clasificación de los lenguajes de programación:

Lenguaje de propósito general:

− Imperativos o procedurales: se basan en la asignación. Se especifica la secuencia de instrucciones. Fotran, Pascal, C,...

• de guiones (scripts): más simples. Tcl, Perl, sh, Python...

− Orientados a Objetos: se basan en la asignación y son más próximos al mundo real (objetos). Smalltalk, Java, C++,...

• Visuales: general código automáticamente. Visual C, Delphi

− Declarativos: Se especifica el resultado requerido

• Lógicos: basados en reglas de deducción. Prolog

• Funcionales: basados en funciones. Lisp, Haskell

Lenguajes de propósito específico: internet (html, xml, php, asp), robótica (val II), bases de datos (sql), hardware (step-5), ...

LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN

Page 21: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 41 Universidad de Málaga José Antonio Gómez Ruiz

Historia de los lenguaje de alto nivel:

FORTRANJohn Backus

1954

Ada 951995

C++Bjarne Stroustrup

1983 O

JavaJames Gosling

1995 O

O

FORTRAN 20022002 O

Delphi1995 V

PascalNiklaus Wirth

1970 IAda 83

DoD (EEUU)1983 I

CDennis Ritchie

1971 I

AlgolJohn BackusC.A.R. HoareNiklaus Wirth

1960 I

COBOLGrace Hopper

CODASYL1957 I

I

Haskell1992 F

LispJohn McCarthy

1959 F

PrologColmerauer, Roussel

1972 L

Modula-2Niklaus Wirth

1979 I

Smalltalk

Visual-C++1995 V

Perl, Python, JavaScript

LENGUAJES DE PROGRAMACIÓNLENGUAJES DE PROGRAMACIÓN

Fundamentos de Informática ETSI Industrial 42 Universidad de Málaga José Antonio Gómez Ruiz

El proceso de compilación es el proceso mediante el cual se traduceun programa escrito en un lenguaje de alto nivel a lenguaje máquina directamente ejecutable por el ordenador

El traductor es el software (programa de ordenador) que realiza justamente ese proceso. Se clasifican en:

Compiladores: traducen el programa completo a lenguaje máquina, obteniendo un programa ejecutable, pero no lo ejecutan. Cuando se desee ejecutar el programa ya no es necesaria la compilación

Intérpretes: traducen el programa instrucción a instrucción. La ejecución del programa se realiza a la vez que la traducción: se lee una instrucción, se traduce y se ejecuta. Cada vez que se desea ejecutar el programa hay que traducirlo

Biblioteca: conjunto de programas ya traducidos a lenguaje máquina y escritos para ser reutilizados

EL PROCESO DE COMPILACIÓNEL PROCESO DE COMPILACIÓN

Page 22: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 43 Universidad de Málaga José Antonio Gómez Ruiz

Editor Compilador E/Smatem.

gráfica

Bibliotecas

ejecutableprog.exe

entrada salida

fuente

prog.c

objeto

prog.o

prog.exe

Tiempo de ejecución

Tiempo de compilación

programador

usuario

Enlazador

EL PROCESO DE COMPILACIÓNEL PROCESO DE COMPILACIÓN

Fundamentos de Informática ETSI Industrial 44 Universidad de Málaga José Antonio Gómez Ruiz

biblioteca 3

Intercambiar(int v[], int k){int temporal;temporal = v[k];v[k] = v[k+1];v[k+1] = temporal;

}

fuenteCompilador

000000000010100001000000000010001110100011000001100010100011000011110010101011000011110010101011000001100010000000110011100000

ejecutable

objeto

Enlazador

código intermedio

biblioteca 2biblioteca 1

EL PROCESO DE COMPILACIÓNEL PROCESO DE COMPILACIÓN

Page 23: Tema 2: Resolución de Problemas. Algoritmos y …janto/ftp/fundinf/trans_t2.pdfFundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz Ejemplo:

Fundamentos de Informática ETSI Industrial 45 Universidad de Málaga José Antonio Gómez Ruiz

Tema 2: Resolución de Problemas. Algoritmos y Programas

FIN DEL TEMA