Академический Документы
Профессиональный Документы
Культура Документы
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
Concepto de algoritmo
Conjunto ordenado de pasos para resolver un problema concreto, sin ambigedad, en un tiempo finito.
Pseudocdigo
Lenguaje de especificacin de algoritmos
parecido al lenguaje natural compacto sintaxis simplificada fcil de traducir al programa
5
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
Definicin precisa y completa Datos necesarios para resolver el problema Informacin que proporciona la resolucin del problema
9
Descomposicin en subproblemas Detallar progresivamente los pasos Representacin del algoritmo (pseudocdigo)
10
Verificacin y depuracin
Comprobar que funciona correctamente Encontrar y corregir los errores
Verificacin
Depuracin
Correccin
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
30% 20%
50% pruebas
correciones
60% mejoras
Definicin
Desarrollo
Mantenimiento
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
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
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
No son problemas
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
Principios fundamentales
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
Diseo descendente
Descomponer en subproblemas ms sencillos
problema
27
()
n m
(n - m)!
n!
m!
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
f (x, y) =
x+y 1 xy
Funciones en programacin
mdulo del programa que realiza un procesamiento determinado acepta parmetros devuelve resultados
32
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.
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
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
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