You are on page 1of 11

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.

Introduccin. Conceptos bsicos


Representacin de algoritmos.
Metodologa de diseo.
Lenguajes de programacin.

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.

1.1 Concepto de
algoritmo

Accin
Etapa en la realizacin de un trabajo

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
1.
2.
3.
4.
5.

Levantarse
Darse una ducha
Vestirse
Desayunar
Coger el coche

Clculo de la media aritmtica de


dos nmeros con una calculadora
1. Pulsar la tecla AC
2. Teclear el primer nmero
3. Pulsar la tecla +
4. Teclear el segundo nmero
5. Pulsar la tecla +
6. Pulsar la tecla /
7. Teclear el nmero 2
8. Pulsar la tecla =
4

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

Condiciones que debe cumplir un algoritmo

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

Diferencias entre un algoritmo y un programa

Los algoritmos no son directamente interpretables por la computadora =>


deben ser traducidos a un lenguaje de programacin concreto
5

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 simblico a utilizar para desarrollar el algoritmo

Representacin de los datos

Lenguaje de representacin de expresiones aritmticas


Cadenas de caracteres para las incgnitas
Nmeros reales

Establecer datos de entrada

Establecer datos de salida

Radio de la circunferencia (radio)


Longitud de la circunferencia (longitud)
rea del crculo (area)

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.

1.2. Ciclo de vida del


software

Fases de creacin de un programa


DEFINICIN
DESARROLLO
Diseo
Codificacin
Prueba

Fallos de
definicin

MANTENIMIENTO

Errores
Modificaciones y adaptaciones

2.1. Pseudolenguaje

2. 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
9

2.1. Pseudolenguaje

2. Representacin de algoritmos
Ejemplo de un algoritmo escrito usando un 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

10

2.2. Diagramas de flujo

3. Representacin de algoritmos

Ejemplo de un algoritmo
representado con un diagrama
de flujo
Sumar los n (n>0) primeros
nmeros naturales

11

3. Metodologa de diseo
DEFINICIN
DESARROLLO
Diseo
Codificacin
Prueba
Fallos de
definicin

Fases de creacin de
un programa

MANTENIMIENTO
Errores

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
12

3. Metodologa de diseo

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

3. Metodologa de diseo

13

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

14

3.2. Diseo descendente


(Top-down)

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

Nivel 0

Jerarqua de
subproblemas
en un diseo
descendente

Nivel 1

Nivel 2

Nivel 3

Particular (cdigo en Lenguaje de Programacin)


15

3.2. Diseo descendente


(Top-down)

3. Metodologa de diseo
Ejemplo de diseo descendente

Algoritmo que calcule la media de notas de una clase

Clculo de media de la clase

Obtener notas de la clase

Clculo de la media

Suma de todas las notas

Nivel 0

Imprimir resultado

Dividir la suma
por el total de
calificaciones

Nivel 1

Nivel 2

16

4. Lenguajes de programacin

4.1. Clasificacin de los


lenguajes de programacin

Lenguaje 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

17

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

18

5. Lenguajes de programacin

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

19

4. Lenguajes de programacin

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

20

10

4. Lenguajes de programacin

4.2. Traductores de
lenguajes: Compiladores e
Intrpretes

Traductores de lenguajes
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
21

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 Bsica". 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.
22

11

You might also like