Вы находитесь на странице: 1из 22

Tema 3.

Programacin
3.1 Introduccin 3.2 Fases de la programacin 3.3 Disciplina de la programacin 3.4 Funciones 3.5 Lenguajes de programacin
1

3.1 Introduccin Algoritmo Conceptos bsicos Pseudocdigo Programa

Concepto de algoritmo
Conjunto ordenado de pasos para resolver un problema concreto, sin ambigedad, en un tiempo finito.

Ejemplo: determinar si un nmero es par


3

Caractersticas de los algoritmos Precisin Repetitividad Finitud Eficiencia


solucin clara, sin ambigedad idnticos resultados en las mismas condiciones iniciales solucin en un tiempo finito tiempo de ejecucin requerimiento de memoria
4

Pseudocdigo
Lenguaje de especificacin de algoritmos
parecido al lenguaje natural compacto sintaxis simplificada fcil de traducir al programa
5

Ejemplo de pseudocdigo de un algoritmo


Determinar el precio final en funcin de un descuento.

ALGORITMO Descuento VARIABLES precio, precio_final : entero; porcent, descuento: real; INICIO leer >> precio; leer >> porcent; descuento = precio * porcent/100; precio_final = precio - descuento; escribe << precio_final; 6 FIN

Programa
Conjunto de instrucciones dado al ordenador para realizar un proceso determinado.
#include <iostream.h> void main() { int precio, precio_final; float porcent, descuento; cin >> precio; cin >> porcent; descuento = precio * porcent / 100; precio_final = precio - descuento; cout << precio_final; }
7

3.2 Fases de la programacin


Anlisis del problema Proceso de programacin Diseo del algoritmo Cdificacin del programa Verificacin y depuracin
D O C U M E N T A C I N M A N T E N I M I E N T O

Anlisis del problema


Ayudar al programador a comprender el problema
Anlisis del problema Definicin del problema Especificaciones de entrada Especificaciones de salida

Definicin precisa y completa Datos necesarios para resolver el problema Informacin que proporciona la resolucin del problema
9

Diseo del algoritmo


Especificar los pasos para resolver el problema
Diseo del algoritmo Diseo descendente Refinamientos sucesivos Herramientas de diseo

Descomposicin en subproblemas Detallar progresivamente los pasos Representacin del algoritmo (pseudocdigo)
10

cdificacin del programa


Traduccin del algoritmo al lenguaje de programacin
La complejidad depende mucho del lenguaje escogido Buen diseo del algoritmo + Lenguaje estructurado

Traduccin casi automtica

Imprescindible: conocimiento de la sintaxis del lenguaje


11

Verificacin y depuracin
Comprobar que funciona correctamente Encontrar y corregir los errores

Verificacin

Pruebas Deteccin de errores Localizacin

Depuracin
Correccin

No puede garantizar la ausencia de errores


12

Documentacin
Descripcin de qu hace el programa y cmo lo hace. Documentacin interna:
Comentarios: lneas informativas incluidas en el cdigo Tarea que realiza Datos de entrada y de salida Condiciones de error cdificacin autodocumentada: Nombres de variables y funciones con significado Estructura fcil de leer

Documentacin externa:
Manuales, estructura y especificaciones del programa, historia de las modificaciones, etc.
13

Importncia de la documentacin
El programa ha de ser legible para otras personas (o para el mismo autor, despus de un cierto tiempo) El programa ha de ser verificado y/o corregido El programa ha de ser modificado / actualizado / adaptado En documentacin: Mantenimiento

cantidad calidad
14

Mantenimiento
Correccin de errores, adaptaciones,ampliaciones, etc.
50%
adaptaciones

Esfuerzo en produccin de programas

30% 20%
50% pruebas

correciones

60% mejoras

Definicin

Desarrollo

Mantenimiento

Fuente: Urea y otros, 1997


15

3.3 Disciplina de la programacin

disciplina
I. Del lat. disciplina = enseanza, educacin. 1. Actitud de una persona para observar normas de conducta, autoimpuestas o aceptadas voluntariamente. 2. Conjunto de normas de conducta que rigen en una organizacin. 3. Cada asignatura de unos estudios. 4. Arte, facultad o ciencia. 5. Instrumento para azotar. 6. Cuba. Planta parsita de largos tallos articulados (Euphorbia tirucalli).

16

Disciplina de la programacin
Motivaciones
Deficiencias de la programacin convencional Caractersticas deseables de los programas

Programacin modular Programacin estructurada


Estructuras de control Recursos abstractos Diseo descendente
17

La programacin convencional
Problemas y defectos Programas rgidos, difciles de modificar Poca reutilizacin del cdigo Difcil coordinacin entre programadores Relacin estrecha programa-programador Alto coste de mantenimiento Deficiencia en la documentacin
18

Caractersticas deseables de un programa

Correcto: produce los resultados requeridos Legible: entendido por cualquier programador Modificable: el diseo nunca es definitivo Depurable: para encontrar y corregir errores

Programacin

modular estructurada
19

Programacin modular
Dividir el programa en subprogramas (mdulos) Cada mdulo realiza una tarea independente

20

Ventajas
Disminuye la complejidad Aumenta la claridad y la fiabilidad Disminuye el coste Aumenta el control del projecto Facilita ampliaciones con nuevos mdulos Facilita modificaciones y correcciones sobre mdulos individuales
21

Programacin estructurada
Comprensibles Adaptables

Programas dotados de una estructura Manejables Transportables

No son problemas

el tiempo de ejecucin La ocupacin de memoria


22

Ejemplo
d = b*b-4*a*c; if (d>0) n = 2; x1 = (-b + sqrt(d))/(2*a); x2 = (-b - sqrt(d))/(2*a); else if (d==0) n = 1; x1 = -b /(2*a); end x1 n x2 x1 = = = = sqrt(b*b-4*a*c); (x1~=0) + 1; (-b-x1)/(2*a); (-b+x1)/(2*a);
23

Calcular las soluciones de la ecuacin de segundo grado, indicando el nmero de soluciones.

Principios fundamentales

Estructuras bsicas de control Recursos abstractos Diseo descendente (top-down)


24

Estructuras bsicas de control


Secuencial Alternativa
T F

Repetitiva
F

25

Recursos abstractos
No tener en cuenta la mquina
Ejemplo: calcular nmeros combinatorios

()

n n! = m m!(n m ) !

c = n! / (m! * (n-m)!);
f = 1; for i=1:num f = f * i; end
26

Abstraccin del problema factorial

Diseo descendente
Descomponer en subproblemas ms sencillos
problema

27

Ejemplo de diseo descendente


Calcular

()
n m
(n - m)!

n!

m!

3 subproblemas ms sencillos idnticos ms fciles de implementar


28

Diseo de programas estructurados Ir de lo general a lo particular Esquema algortmico en pseudocdigo Abstraccin del lenguaje Dejar detalles a niveles posteriores Recomponer el algoritmo completo Utilizar un lenguaje estructurado
29

3.4 Funciones
Concepto matemtico Definicin de funciones Utilizacin de funciones Paso de parmetros Variables locales Ejemplos de funciones Procedimientos
30

Nocin matemtica de funcin


Operacin que toma uno o ms valores parmetros y produce un valor resultado

f (x, y) =

x+y 1 xy

para evaluar f hay que dar valores a los parmetros

3 + (1) 2 f (3,1) = = = 0.5 1 3(1) 4


31

Funciones en programacin
mdulo del programa que realiza un procesamiento determinado acepta parmetros devuelve resultados

r = f(3,-1); c = f(2,3) + f(1,2);

function z = f(x, y) z = (x+y)/(1-x*y);

32

Escritura de funciones en Matlab

function[resultados] = nombre(parmetros) instruccin1; instruccin2;

33

Invocacin de funciones
La funcin se puede utilizar (invocar) en cualquier expresin de tipo compatible con el resultado
c = f(2,3) + f(1,2);
function z = f(x, y) z = (x+y)/(1-x*y);

d = f(a,3) + b;

34

Paso de parmetros
x = 12; y = -2; z = g(x,8,y*3-1);

function d=g(a,

b,

c)

Los valores de los parmetros son evaluados cuando se invoca la funcin. Dentro de la funcin, los parmetros sn variables independientes.

PASO POR VALOR


35

mbito de las variables


Locales: definidas dentro de una funcin. Globales: definidas para todo el programa Las variables locales slo existen mientras se est ejecutando la funcin, y slo son accesibles por la funcin. Espacio independiente de variables para cada funcin, y para el programa completo. Aislamiento de las funciones: se comunican por medio de los parmetros 36

Ejemplos de funciones
function c = combi(n,m) %COMBI Nmero combinatorio % COMBI(N,M) es el nmero % combinatorio n sobre m, % que se calcula como % n! / (m! * (n-m)!).

37

Ejemplos de funciones
function pf = pvt(p) % PVT precio venta pblico % PVT(P) devuelve el % precio con IVA, dado su % precio (p) sin IVA.

38

Ejemplo de utilizacin
c = combi(13,6) c = 1716

pf = pvt(857.76) pf = 995
39

Ejemplo: ecuacin de segundo grado


function [x1,x2,n] = eq2(a,b,c) %EQ2 Equacin de segundo grado % [x1,x2,n] = EQ2(A,B,C) calcula las soluciones % reales de la ecuacin de segundo grado % A*x^2 + B*x + C = 0. Devuelve en x1 y x2 los % valores, y en n el nmero de soluciones.

40

Ejemplo de utilizacin
[x1,x2,n]=eq2(1,-4,3) x1 = 3 x2 = 1 n = 2

41

3.5 Lenguajes de programacin Lenguaje para escribir algoritmos interpretable por el ordenador
Caractersticas imprescindibles Estructuras de control Modular (funciones)

Lenguajes de alto nivel Fortran, Cobol, Pascal, Modula-2, PL/I, Ada, C/C++, Java, Matlab, Mathematica, Lisp, ...

42

Caractersticas de algunos lenguajes


Fortran Pascal Estructuras
bsicas de control

C/C++

Matlab

Mathematica

Tipos de datos bsicos Funciones Procedimientos Variables locales Parmetros por referncia

43

Bibliografia
L. Joyanes. Fundamentos de Programacin: Algoritmos y Estructuras de Datos. McGraw-Hill, 1992. Captulos 15. L. A. Urea y otros. Fundamentos de Informtica. Ra-Ma, 1997. Captulo 10. J. Biondi, G. Clavel. Introduccin a la Programacin 1. 2 edicin. Mason, 1988. Captulo 1. J. L. Antonakos, K. C. Mansfield. Programacin Estructurada en C. Prentice Hall, 1997. Captulo 2. E. Alcalde, M. Garca. Informtica bsicoa. 2 edicin. McGraw-Hill, 1994. Captulo 5. P. Bishop. Conceptos de Informtica. Anaya Multimedia, 1991. Captulo 19. J. Garca de Jaln y otros. Aprenda Matlab 5.3 como si estuviera en primero. Madrid, Febrero 2001. Captulo 5.
44

Вам также может понравиться