Está en la página 1de 18

Departamento de Lenguajes y Ciencias de la Computacin Universidad de Mlaga

TEMA 2: Resolucin de problemas y algoritmos


Fundamentos de Informtica (Ingeniera Tcnica Industrial) E.U. Politcnica
E.U. Politcnica

Autores: M.C. Aranda, A. Fernndez, J. Galindo, M. Trella

ndice de contenidos

1. 2. 3. 4. 5. 6.

Introduccin. Conceptos bsicos Elementos bsicos de un algoritmo. Representacin de algoritmos. Metodologa de diseo. Lenguajes de programacin. Ejercicios de diseo de algoritmos simples.

1. Introduccin. Conceptos bsicos.

Programacin
Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una determinada tarea Fases: 1. Resolucin del problema propuesto => determinacin de un algoritmo. 2. Adaptacin del algoritmo a la computadora => codificar el algoritmo en un lenguaje que el ordenador pueda comprender

1. Introduccin. Conceptos bsicos.


Accin
Etapa en la realizacin de un trabajo

1.1 Concepto de algoritmo

Accin primitiva
Accin que el procesador puede ejecutar sin necesidad de informacin suplementaria

Algoritmo
Secuencia ordenada de acciones primitivas que realizan un trabajo Ejemplos de algoritmos:
Ir al trabajo Clculo de la media aritmtica de dos nmeros con una calculadora

1. 2. 3. 4. 5.

Levantarse Darse una ducha Vestirse Desayunar Coger el coche

1. 2. 3. 4. 5. 6. 7. 8.

Pulsar la tecla AC Teclear el primer nmero Pulsar la tecla + Teclear el segundo nmero Pulsar la tecla + Pulsar la tecla / Teclear el nmero 2 Pulsar la tecla =

1. Introduccin. Conceptos bsicos.

1.1 Concepto de algoritmo

Aspectos que se deben considerar a la hora de escribir un algoritmo


Determinacin de las primitivas de las que partimos Lenguaje simblico a utilizar para desarrollar el algoritmo Representacin de los datos Establecer datos de entrada Establecer datos de salida Establecer las relaciones entre los datos de entrada y los de salida Ser finito El algoritmo debe acabar tras un nmero finito de pasos Estar bien definido Todas las ejecuciones del algoritmo con los mismos datos de entrada deben devolver los mismos datos de salida Los algoritmos no son directamente interpretables por la computadora => deben ser traducidos a un lenguaje de programacin concreto
5

Condiciones que debe cumplir un algoritmo

Diferencias entre un algoritmo y un programa

1. Introduccin. Conceptos bsicos.

1.1 Concepto de algoritmo

Ejemplo de realizacin de un algoritmo:


Problema: calcular la longitud de una circunferencia y el rea del crculo que limita dada la longitud de su radio Determinacin de las primitivas de las que partimos
Operaciones aritmticas simples Lenguaje de representacin de expresiones aritmticas Cadenas de caracteres para las incgnitas Nmeros reales Radio de la circunferencia ( radio) Longitud de la circunferencia ( longitud) rea del crculo ( area)

Lenguaje simblico a utilizar para desarrollar el algoritmo


Representacin de los datos

Establecer datos de entrada


Establecer datos de salida

Establecer las relaciones entre los datos de entrada y los de salida


1. longitud = 2 * 3.1416 * radio 2. area = 3.1416 * radio * radio
6

1. Introduccin. Conceptos bsicos.

1.2. Ciclo de vida del software

Fases de creacin de un programa


1. Definicin Descripcin detallada de:
Programa que se va a realizar Recursos necesarios Costes Plan de trabajo

2. Desarrollo Creacin de programas y documentacin asociada.


2.1. Diseo Solucin al problema ( algoritmo) 2.2. Codificacin Traduccin del algoritmo a un lenguaje de programacin 2.3. Prueba Comprobar si el programa desarrollado se corresponde con el que queramos realizar

3. Mantenimiento Realizacin de mejoras y correcciones en el programa desarrollado


7

1. Introduccin. Conceptos bsicos.


Fases de creacin de un programa
DEFINICIN DESARROLLO

1.2. Ciclo de vida del software

Diseo Codificacin Prueba


MANTENIMIENTO

Fallos de definicin Errores

Modificaciones y adaptaciones

2. Elementos bsicos de un algoritmo.

2.1. Datos, tipos de datos y operaciones primitivas

Datos
Informacin con la que trabaja una computadora Se clasifican atendiendo a: Propiedades que poseen Operaciones que se pueden realizar con ellos Datos simples Numrico
Real, entero Letras (a, A,...), smbolos (*, %,...), nmeros (1, 2,...) Verdadero o Falso Direccin de memoria de otro dato

Tipos de datos

Carcter

Lgico Puntero

Datos compuestos Formados por agrupaciones de otros datos (simples o compuestos)


9

2. Elementos bsicos de un algoritmo.

2.1. Datos, tipos de datos y operaciones primitivas

Operaciones primitivas
Se pueden realizar directamente en un lenguaje de programacin sin necesidad de indicar cmo hay que llevarla a cabo

Conjuntos de operaciones primitivas para los distintos tipos de datos Numrico + Suma - Resta Lgico / Divisin A B A Y B A O B No B MOD Resto de una divisin entera V V V V F V F F V V Carcter y Numrico F V F V F < Menor que F F F F V > Mayor que = = Igual que <= Menor o igual que >= Mayor o igual que ! = Distinto
10

2. Elementos bsicos de un algoritmo.


Variable

2.2. Variables, constantes y expresiones

Entidad que posee un valor y es conocida en un programa o algoritmo por un nombre (identificador) El valor de una variable puede cambiar a lo largo del algoritmo En un instante concreto slo puede tener un valor Todas las variables son de un determinado tipo y slo pueden tomar valores de ese tipo

Identificador a Dia_del_mes x4 ...

Valor 285 L 5.3 ...

Tipo Entero Carcter Real ...

Ejemplos de variables

11

2. Elementos bsicos de un algoritmo.


Constante

2.2. Variables, constantes y expresiones

Entidad que posee un valor y es conocida en un programa o algoritmo por un nombre (identificador) El valor de una constante NO puede cambiar a lo largo del algoritmo Inicializacin de la constante Accin por la que el identificador toma su primer y nico valor Todas las constantes son de un determinado tipo y slo pueden ser inicializadas con valores de ese tipo

Valores constantes
Valores que aparecen explcitamente en un algoritmo y no tienen identificador asociado

12

2. Elementos bsicos de un algoritmo.


Reglas de construccin de los identificadores
Un identificador debe comenzar por una letra La primera letra puede ir seguida de: Letras Dgitos numricos Carcter _ No se permiten espacios en blanco

2.2. Variables, constantes y expresiones

Identificadores 9kj Dia_del_mes Dia del mes a+y k9j

Vlido No S No No S

Ejemplos de identificadores de variables y constantes

13

2. Elementos bsicos de un algoritmo.

2.2. Variables, constantes y expresiones

Expresiones
Combinacin de: Variables Constantes Valores constantes Operadores Parntesis Nombres de funciones especiales (raz cuadrada, valor absoluto, etc.) Toda expresin tiene en todo momento un valor constante que es el resultado de evaluarla de izquierda a derecha

Expresin 1.5 * 3/85 1.5 * x/85 c = = (a + b)

0.052

Valor

Depende del valor de x en el momento de su evaluacin Depende de los valores de a, b y c en el momento de su evaluacin

Ejemplos de expresiones
14

2. Elementos bsicos de un algoritmo.


Asignacin

2.3. Operacin de asignacin

Operacin que permite darle a una variable un determinado valor A una variable se le puede asignar Un valor constante El valor de otra variable El valor de una constante El resultado de evaluar una expresin Los valores asignados deben ser del mismo tipo que la variable Es una operacin destructiva, cualquier valor que tuviese la variable se pierde y se reemplaza por el nuevo

Operacin Asignar a A el valor 5 Asignar a A el valor 7/3 Asignar a A el valor x/3


Ejemplos de asignaciones
15

2. Elementos bsicos de un algoritmo.


Operaciones de entrada y salida

2.4. Operaciones de Entrada y Salida

Se utilizan para intercambiar informacin con un medio externo Entrada Se le asigna a una variable un valor dado desde el exterior (p.ej. un teclado) Salida Se transfiere el valor de una variable a un dispositivo de salida (p.ej. la pantalla)

16

2.5. Estructuras de control

2. Elementos bsicos de un algoritmo. Estructuras de control


Secuencial Una accin sigue a otra sin romper la secuencia

Condicional Se realiza una accin u otra dependiendo del resultado de la evaluacin de una expresin lgica

A B C

Si se cumple X Si no se cumple X

A B
Repetir 10 veces
17

Repetitiva, iterativa o en bucle Se repiten un conjunto de acciones 0 o ms veces

3.1. Pseudolenguaje

3. Representacin de algoritmos
Existen varios mtodos para representar un algoritmo
Pseudolenguaje Diagramas de flujo

Pseudolenguaje
Es un lenguaje especfico de descripcin de algoritmos La traduccin de un algoritmo escrito en pseudolenguaje a un programa en un lenguaje de programacin determinado es relativamente simple

Herramientas de un pseudolenguaje para representar los elementos bsicos de un algoritmo


Conjunto de palabras clave que proporcionan: las estructuras de control declaraciones de variables caractersticas de modularidad Sintaxis libre de un lenguaje natural que describe las caractersticas del proceso Elementos para la definicin y llamada a subprogramas
18

3.1. Pseudolenguaje

3. Representacin de algoritmos
Pseudolenguaje que usaremos en clase
ALGORITMO nombre declaraciones INICIO acciones FIN
Algoritmo

NOMBRE_CTE valor_cte tipo_vble nombre_vble LEER nombre_variable ESCRIBIR nombre_variable

Declaracin de una constante Declaracin de una variable Operacin de entrada Operacin de salida 19

3.1. Pseudolenguaje

3. Representacin de algoritmos
Pseudolenguaje que usaremos en clase
Accin 1 Accin 2 Accin 3 ... Accin n
Secuencia

SI condicin ENTONCES conjunto de acciones verdad EN OTRO CASO conjunto de acciones falso FINSI

SI condicin ENTONCES conjunto de acciones verdad FINSI

CASO expresin SEA valores1: acciones valores2: acciones ... FINCASO


Estructuras de seleccin o condicionales

...

valoresn: acciones

Condicin Es una expresin (combinacin vlida de operadores, constantes y variables) en la que los operadores son:
relacionales: >, <, >=, <=, ==, != lgicas: Y, O, NO Verdadero Falso

a != 18 (a = = 5) O (b = = (a + 2)) NO ((a > b) Y (b > c))


Ejemplos de condiciones
20

Condicin

El resultado de evaluar una condicin puede ser:


10

3.1. Pseudolenguaje

3. Representacin de algoritmos
Pseudolenguaje que usaremos en clase
PARA (inicializacin; condicin; incremento_o_decremento) conjunto de acciones FINPARA MIENTRAS condicin HACER conjunto de acciones FINMIENTRAS HACER conjunto de acciones MIENTRAS condicin
Estructuras de iteracin o repetitivas

Inicializacin Asignacin de un valor a una variable que llamaremos variable de control


Ejemplos: x = 100; a = 1;

Incremento o decremento Expresin que indica en qu cantidad se incrementa o decrementa la variable de control en cada iteracin
Ejemplos: x = x -2; a = a + 1;

21

3.1. Pseudolenguaje

3. Representacin de algoritmos
Ejemplo de un algoritmo escrito con nuestro pseudolenguaje
Sumar los n (n>0) primeros nmeros naturales
ALGORITMO SumaNaturales VARIABLES: Naturales num, contador, suma INICIO LEER num suma = 0 contador = 1 HACER suma = suma + contador contador = contador + 1 MIENTRAS (contador != num + 1) ESCRIBIR La suma resultante es ESCRIBIR suma FIN
22

11

3.2. Diagramas de flujo

3. Representacin de algoritmos
Diagramas de flujo
Herramienta grfica para la descripcin de algoritmos

Herramientas de los diagramas de flujo para para representar los elementos bsicos de un algoritmo
Secuencia

Inicio y fin de algoritmo Operaciones de entrada y salida Acciones primitivas

Bifurcaciones

23

3.2. Diagramas de flujo

3. Representacin de algoritmos
Inicio

Ejemplo de un algoritmo representado con un diagrama de flujo


Sumar los n (n>0) primeros nmeros naturales

leer(num) suma = 0 contador = 1

suma = suma + contador contador = contador + 1

contador != num +1

escribir (suma)

Fin

24

12

4. Metodologa de diseo
DEFINICIN DESARROLLO Diseo

Codificacin Prueba

Fallos de definicin

MANTENIMIENTO
Errores

Fases de creacin de un programa

Modificaciones y adaptaciones

La fase de diseo es la fase de resolucin del problema, es aqu donde el programador debe disear un algoritmo Es necesario emplear una metodologa, prescindir de ella puede acarrear problemas como: Rigidez e inflexibilidad de los programas Prdida excesiva de tiempo en la correccin de errores Documentacin deficiente Imposibilidad de reutilizacin de cdigo
25

4. Metodologa de diseo

4.1. Caractersticas de los programas. Programacin estructurada

Un problema => muchos algoritmos para resolverlo Cmo elegir el ms adecuado? Basndonos en las siguientes caractersticas:
Legibilidad Portabilidad Modificabilidad Eficiencia Modularidad Estructuracin

Programacin estructurada
Conjunto de tcnicas que aumentan la productividad de un programa, reduciendo el tiempo para: Depurar Escribir Mantener el programa Verificar Utiliza un nmero 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 slo tres estructuras de control:
Secuencial Selectiva Repetitiva

26

13

4. Metodologa de diseo

4.2. Diseo descendente (Top-down)

Diseo descendente (refinamientos sucesivos o programacin modular)


Metodologa de diseo que consiste en: Dividir un problema en subproblemas manejables. Cada subproblema se divide a su vez en otros subproblemas. El proceso se repite hasta que ya no se pueda dividir ms La solucin de todos los subproblemas constituye la solucin global. Se crea una estructura jerrquica de problemas con distintos niveles de refinamiento: Nivel 0: descripcin del problema Nivel i: refinamientos sucesivos

27

4. Metodologa de diseo
Abstracto (descripcin funcional del problema)

4.2. Diseo descendente (Top-down)

Nivel 0

Nivel 1

Jerarqu a de subproblemas en un diseo descendente

Nivel 2

Nivel 3

Particular (cdigo en Lenguaje de Programacin)

28

14

4. Metodologa de diseo
Ejemplo de diseo descendente

4.2. Diseo descendente (Top-down)

Algoritmo que calcule la media de notas de una clase

Clculo de media de la clase

Nivel 0

Obtener notas de la clase

Clculo de la media

Imprimir resultado

Nivel 1

Suma de todas las notas

Dividir la suma por el total de calificaciones

Nivel 2

29

5. Lenguajes de programacin
Lenguaje de programacin

5.1. Clasificacin de los lenguajes de programacin

Conjunto de smbolos y reglas utilizados para construir un programa

Clasificacin de los lenguajes de programacin


Atendiendo al nivel de proximidad al sistema utilizado por el procesador, de ms bajo nivel a ms alto: Lenguaje mquina Lenguaje ensamblador Lenguajes de alto nivel

30

15

5. Lenguajes de programacin

5.1. Clasificacin de los lenguajes de programacin

Lenguaje mquina Utiliza cdigo binario Cada procesador posee su propio lenguaje mquina Una instruccin se compone de:
Cdigo de operacin Operandos

Ventajas
Directamente entendible por el ordenador Es muy eficiente

Inconvenientes
Es complicado trabajar con cdigo binario El programador debe conocer la arquitectura fsica del ordenador Lenguaje dependiente de la mquina No se pueden introducir comentarios Conjunto de instrucciones muy reducido

31

5. Lenguajes de programacin

5.1. Clasificacin de los lenguajes de programacin

Lenguaje ensamblador Cada instruccin en ensamblador se corresponde con una instruccin en lenguaje mquina a la que luego ser traducida Cada procesador posee su propio lenguaje ensamblador NO es necesario que el programador conozca la arquitectura fsica del ordenador Caractersticas:
Cdigo de operacin es una palabra con pocas letras ADD, MOV,... Direcciones de memoria y operandos se pueden escribir de forma simblica mediante identificadores Se pueden incluir comentarios

32

16

5. Lenguajes de programacin

5.1. Clasificacin de los lenguajes de programacin

Lenguajes de alto nivel Se aproxima al lenguaje natural Cada instruccin de un lenguaje de alto nivel se corresponde con varias instrucciones mquina No dependen de la arquitectura de la mquina Son menos eficientes FORTRAN, COBOL, C, C++, Pascal, etc.

33

5. Lenguajes de programacin
Traductores de lenguajes

5.2. Traductores de lenguajes: Compiladores e Intrpretes

Programas que traducen un programa escrito en un lenguaje de alto nivel a su correspondiente en lenguaje mquina Programa fuente Cdigo binario

Clasificacin
Compiladores
Traducen un programa completo (fuente) a cdigo binario (objeto) El programa objeto se almacena en memoria y puede ser ejecutado sin necesidad de realizar otra vez la traduccin En el proceso de traduccin se detectan errores de escritura en el programa fuente

Intrpretes
Traducen un programa (fuente) instruccin a instruccin La ejecucin del programa se realiza a la vez que la traduccin => se lee una instruccin, se traduce y se ejecuta Cada vez que se desea ejecutar el programa hay que traducirlo La ejecucin de un programa interpretado es ms lenta que la de un programa compilado
34

17

Bibliografa
Bibliografa principal
A. Prieto, A. Lloris y J.C. Torres. "Introduccin a la Informtica". (1 2 Edicin). McGraw-Hill, 1995. Galindo, Snchez, Yez, Escolano, Del Jesus, Aguilera, Rodrguez, Snchez y Argudo. "Fundamentos Informticos". Servicio de Publicaciones de la Universidad de Cdiz, 1996. Tremblay, Bunt. "Introduccin a la Ciencia de las Computadoras. Enfoque algortmico". McGraw-Hill, 1988. Peter Norton. "Introduccin a la Computacin". McGraw-Hill, 1995.

Bibliografa adicional
Roger S. Walker. "Informtica B sica". Anaya Multimedia. Peter Bishop. "Conceptos de Informtica". Anaya Multimedia. Ll. Guilera Agera. "Introduccin a la Informtica". Edunsa. R. Pea Mar . "Diseo de Programas: Formalismo y Abstraccin". Prentice Hall, 1998.
35

18

También podría gustarte