Académique Documents
Professionnel Documents
Culture Documents
Programacin de mdulos/Tcnicas de
mantenimiento de programas
Bachiller(s)
Etanismar landaeta
Pedro castro
Javier lista
Hosmel Daz
Profesora
Luisa rendayyo
Algoritmo y programacin
Portada
Introduccin
Desarrollo:
Programacin y mdulos
Los mdulos independientes de que podemos disponer pueden tener como fin buscar un archivo de La
posibilidad de traslado o copia de mdulos es de gran importancia para los programadores. Consideremos
que si resolvemos un proceso genrico ya no ser necesario volverlo a programar: bastar con coger el
mdulo correspondiente, copiarlo e insertarlo en el nuevo programa. Por supuesto habr que realizar las
adaptaciones necesarias (nombres de variables, forma de presentar los resultados, etc.) y verificar su buen
funcionamiento dentro de la nueva estructura.
Dentro de un directorio, ordenar por orden alfabtico una serie de palabras, calcular el determinante de una
matriz, resolver una ecuacin cuadrtica o una ecuacin cbica, hallar la ecuacin de una recta y
prcticamente cualquier proceso de tipo lgico-matemtico que se nos pueda ocurrir. Cuando tratamos el
apartado de Conocer el problema ya nos habamos referido a la existencia de estos programas hechos
que pueden ser insertados dentro de nuestros programas y que circulan entre programadores, en revistas
especializadas o en internet. Vamos a profundizar ahora un poco en las ventajas y en las desventajas de
recurrir al uso de este tipo de mdulos.
Desarrollo
Programacin Modular
El diseo descendiente es aquel que comienza desde lo ms general hasta lo ms especfico, en cuanto son
problemas grandes, a los cuales se convertirn en sub-problemas muchos ms pequeos.
Los mdulos funcionan de manera que puedan resolver los sub-problemas creados o las divisiones que los
mismos poseen, permitiendo trabajar en conjuntos para el desarrollo de la solucin. Ya que este proviene de
propuestas tecnolgicas que son adoptadas por una comunidad de programadores cuyo ncleo central es
incuestionable en cuanto a que unvocamente trata de resolver uno o varios problemas claramente
delimitados, con programaciones grandes y complejas. Cabe destacar que este tipo de programacin es
guiada o estructurada por una evolucin de programas que han sido estudiados y manejados a travs del
tiempo.
Este tipo de programacin, para poder resolver un problema tiene que ser dividido a sub-problemas
Teniendo en cuenta sus caractersticas, algunos mdulos no trabajan en comn, pero a travs de una serie de
comunicaciones detalladas, pueden manejarse y entenderse correctamente.
Caractersticas
Reutilizacin de mdulos
Debe tener claras las dependencias del lenguaje (Esto permite cambiar de lenguaje en medio del diseo
sin ningn trauma).
Los mdulos son llamados rutinas o subrutinas que en los lenguajes de programacin son conocidos como
procedimientos y funciones.
Funciones y Procedimientos
Los procedimientos y funciones son subprogramas que realizan tareas especficas. Para invocarlo, es decir,
para hacer que se ejecute, basta con escribir su nombre en el cuerpo de otro procedimiento o en el
programa principal. La diferencia entre procedimiento y funcin est dada por su utilizacin dentro de
nuestro diseo de la solucin, un procedimiento realiza una tarea y al finalizar retorna al punto donde fue
invocado, no as la funcin al ejecutarse obtiene un valor el cual es retornado al punto donde fue invocado
por ejemplo raz cuadrada es una funcin por que retorna un resultado.
Al igual que los identificadores (Variables), los procedimientos y funciones deben declararse dentro del
programa. La declaracin de un procedimiento NO indica a la computadora que ejecute las instrucciones
dadas, sino que indica a la computadora cules son estas instrucciones y dnde estn localizadas cuando sea
necesario.
La declaracin puede realizarse segn las necesidades del programador podran presentarse como
procedimientos, funciones, variables entre otras, que por una u otra cosa permiten el desarrollo del
programa.
Las reglas de mbito de un lenguaje son las reglas que controlan si un fragmento de cdigo conoce
o tiene acceso a otro fragmento de cdigo o de datos.
Una variable local es aquella cuyo mbito se restringe a la funcin que la ha declarado se dice
entonces que la variable es local a esa funcin. Esto implica que esa variable slo va a poder ser
manipulada en dicha seccin, y no se podr hacer referencia fuera de dicha seccin. Cualquier
variable que se defina dentro de las llaves del cuerpo de una funcin se interpreta como una
variable local a esa funcin.
Cuando una variable x es local a una funcin func1, significa que la funcin func1 es la propietaria
de dicha variable, y puede acceder a ella y modificarla. Si cualquier otra funcin del programa
necesita conocer el valor de la variable x, es la funcin func1 la que debe transferir el valor de x a
travs del paso de argumentos en la llamada a la funcin. Si adems esta funcin desea modificar el
valor de dicha variable, entonces tendr que devolver el nuevo valor a func1, y ser func1 quien se
encargue de asignar el valor devuelto a su variable x.
Una variable global es aquella que se define fuera del cuerpo de cualquier funcin, normalmente
al principio del programa, despus de la definicin de los archivos de biblioteca (#include), de la
definicin de constantes simblicas y antes de cualquier funcin. El mbito de una variable global
son todas las funciones que componen el programa, cualquier funcin puede acceder a dichas
variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su direccin de
memoria en cualquier par del programa.
El uso de variables globales no es aconsejable a pesar de que aparentemente nos parezca muy til,
esto se debe a varias razones fundamentales:
Legibilidad menor.
Nos condiciona en muchos casos que el programa slo sirva para un conjunto de casos
determinados.
El uso indiscriminado de variables globales produce efectos colaterales. Esto sucede cuando
existe una alteracin no deseada del contenido de una variable global dentro de una
funcin, bien por invocacin, bien por olvidar definir en la funcin una variable local o un
parmetro formal con ese nombre. La correccin de dichos errores puede ser muy ardua.
Atenta contra uno de los principios de la programacin, la modularidad. El bajo
acoplamiento supone no compartir espacios de memoria con otras funciones, y potenciar el
paso de informacin (llamadas) para que la funcin trate la informacin localmente.
Las variables declaradas dentro de una funcin son automticas por defecto, es decir, slo existen
mientras se ejecuta la funcin. Cuando se invoca la funcin se crean estas variables en la pila y se
destruyen cuando la funcin termina. La nica excepcin la constituyen las variables locales
declaradas como estticas (static). En este caso, la variable mantiene su valor entre cada dos
llamadas a la funcin an cuando su visibilidad sigue siendo local a la funcin.
Una funcin siempre es conocida por todo el programa, excepto cuando se declara como esttica,
en cuyo caso slo la podrn utilizar las funciones del mismo mdulo de compilacin.
En C, todas las funciones estn al mismo nivel de mbito. Es decir, no se puede definir una funcin
dentro de otra funcin. Esto es por lo que C no es tcnicamente un lenguaje estructurado en
bloques.
La llamada a una funcin especfica la relacin entre los parmetros reales y los formales y ejecuta la
funcin. Los parmetros se asocian normalmente por posicin, aunque, opcionalmente, tambin se pueden
asociar por nombre. Si la funcin tiene parmetros formales por omisin, no es necesario asociarles un
parmetro real.
La llamada a una funcin devuelve un resultado que ha de ser recogido, bien asignndolo a una variable del
tipo adecuado, bien integrndolo en una expresin.
Las funciones, para poder ser ejecutadas, han de ser llamadas o invocadas. Cualquier expresin puede
contener una llamada a una funcin que redirigir el control del programa a la funcin nombrada.
Normalmente la llamada a una funcin se realizar desde la funcin principal main ( ), aunque
naturalmente tambin podr ser desde otra funcin.
Se debe tener en cuenta que la funcion que llama a otra funcion se denomina funcion llamadora y la
funcion controlada se denomina funcion llamada.
La funcion llamada que recibe el control del programa se ejecuta desde el principio y cuando termina (se
alcanza la sentencia return, o la llave de cierre (}) si se omite return) el control del programa vuelve y retorna
a la funcion main ( ) o a la funcion llamadora si no es main.
Acciones
Accin <Nombre> [ (lista parmetros formales) ] Accin Faccin delimitan el inicio y fin de la accin.
<Definicin de las
< instruccin n de la accin > variables locales> es el conjunto de valores
que se usan dentro de la accin.
Faccin <Nombre>;
<Instrucciones>
a veces tambin llamadas simplemente acciones, es la
secuencia de
instrucciones a ser ejecutadas por la accin.
// a
partir de un precio neto suministrado por el usuario, calcula e informa el
monto del IVA y el precio final
MontoIva
= Precio * 0,14; Precio Final = Precio +
MontoIva;
Funciones
Ejemplo 2:
Funcin sin pase de parmetros
// Solicita
al usuario palabras, verifica si se suministra la palabra los y en ese caso
se cuenta.
//
el algoritmo termina cuando se lea la palabra fin
CantLos
= 0;
Escribir (A continuacin se le
solicitarn palabras. Suministre la palabra fin, para terminar el algoritmo);
Repetir
CantLos = CantLos + 1;
FSi;
Retornar (CantLos);
FinFuncin CantidadPalabrasLos;
Parmetros actuales
Parmetros formales
El parmetro actual sufre los mismos cambios que el parmetro formal. El parmetro
actual no puede ser ni una constante ni una expresin. Ambos parmetros ocupan la misma posicin en
memoria. Por ello,
cuando se regresa de la accin/funcin al algoritmo desde donde se hace la
llamada los parmetros actuales han cambiado.
instrucciones_algoritmoPrincipal
<Nombre_Accin>
([lista de valores de los parmetros actuales]) // llamada para las acciones
Variable
= <Nombre_Funcin> ([lista de valores de los parmetros actuales]) // llamada para las funciones
Ejemplos
Ejemplo 3:
Acciones y funciones con pase de parmetros
Accin Principal
//
Solicita una fecha de nacimiento y llama a acciones y funciones que hacen
varios clculos con ella
Repetir
EsCorrecta
= ValidarFecha (diaNac, mesNac, aoNac);
// se llama a una funcin que verifica la fecha
EsBis
= ValidarBisieto (aoNac); // se llama a
una funcin que valida si el ao de nacimiento fue bisiesto
Sino
Escribir (Naciste en un ao
Bisiesto)
FSi;
Cumpleaos (nombre,
diaNac, mesNac, aoNac); // calcula
cuando cumple aos
Edad
= 0; esMenorEdad = Falso;
CalcularEdad (aoNac,
edad, esMenorEdad); // calcula la edad
y si es o no menor de edad
FinAccin Principal;
//
declaracin formal de las acciones y funciones utilizadas en el algoritmo
principal
//
En muchos lenguajes de programacin estas declaraciones formales deben estar
ANTES del algoritmo que las llama.
//
Verifica si el da (d), mes (m) y ao (a) conforman una fecha vlida
Lgico correcto;
Correcta
= Verdadero;
Retornar (correcta);
FinFuncin ValidarFecha;
//
Verifica si el ao (a) es bisiesto. Son bisiestos todos los aos divisibles por
4, excluyendo los que sean
//
Divisibles por 100, pero no los que sean divisibles por 400.
Retornar ( (a mod
4 == 0) y ((a mod 100 0) o (a mod 400 == 0) );
FinFuncin ValidarBisiesto;
//
Verifica si ya la persona cumpli aos. Este algoritmo compara contra la fecha
11-05-2017
Sino
Mensaje = ya cumpliste
aos, felicitaciones atrasadas;
Sino
Mensaje = faltan
aproximadamente + faltan + para tu cumpleaos;
Sino
Mensaje = ya cumpliste
aos, felicitaciones atrasadas;
Sino
Si dia > diaActual () Entonces //
cumple aos muy pronto, 5to si
Sino
FSi;
// cerrando si 5
Fsi; // cerrando si 4
Fsi; // cerrando si 3
Fsi; // cerrando si 2
Fsi; // cerrando si 1
Escribir(N + Mensaje);
FinAccin Cumpleaos;
//
Calcula la cantidad aproximada de aos que tiene una persona
Edad
= 2006 aoNac; menor == (edad < 18);
FinAccin CalcularEdad;
Ejercicios Asignados
Te atreves
A pasar?
Para el
ejemplo 3 completa:
La funcin ValidarFecha
Accin que
muestre las tablas (del 0 al 10). Debe preguntar al usuario que tipo(s) de
tabla que quiere generar (suma, resta, multiplicacin o divisin) para que
nmero (p.e., la tabla de sumar del 9, o
la tabla de dividir del 2). El algoritmo se detiene cuando el usuario
suministra el valor 99
Funcin que obtenga la suma de los nmeros pares que hay entre dos nmeros ledos por
teclado. Utiliza esta accin para calcular la suma entre 10 pares valores que
te dar el usuario en un algoritmo principal.
Escribe un accin que solicite las notas de un alumno, calcule su promedio, escriba esa
nota y si aprob o no.
mbito o Alcance
Veamos
estas ideas a travs de ejemplos:
Si en un algoritmo o
accin Principal definimos una
accin (o funcin) llamada Calcular
y dentro de esta accin (o funcin) definimos una variables con nombre aux y cont, se dice entonces, que las
variables aux y cont, son
locales o internas a la accin Calcular.
Si en el mismo algoritmo definimos otra accin (o funcin) llamada Fibonacci que usa las variables num1,
num2 y tiene un parmetro llamado X, tenemos que stos tres (3) identificadores slo sern
conocidos o pueden ser usados dentro del procedimiento Fibonacci.
Las variables num1 y num2, y el parmetro X son locales a Fibonacci por lo tanto no pueden ser usadas
dentro de Calcular, igualmente, las variables aux y cont pueden ser usadas dentro de Calcular, pero no
pueden ser alcanzadas desde Fibonacci.
Si en la accin Principal se declaran las variables A, B y esFibo, estos identificadores con considerados
variables globales. En esencia las variables globales con aquellas declaradas en la accin Principal del que
dependen todos los subprocedimientos (en este caso Calcular y Fibonacci). Las variables A, B y esFibo estn
dentro del alcance o pueden ser usadas dentro de Calcular y dentro de Fibonacci.
Tambin podemos decir que las variables A, B, esFibo y los procedimientos Calcular y Fibonacci son
locales o internos a la accin Principal.
D D
E E, F, G
F F
G G
Conocidas dentro de
este
Principal2(*) procedimiento, pero no
son accesibles desde
Principal1
(*)
son variables globales y conocidas en los procedimientos
internos
Principal1
Principal2
// mbito de
aux y cont
C
Accin Fibonacci(Entero
X): Real
B
Entero num1; Real
num2;
// mbito de
X, num1 y num2
Variables Locales
Son
los variables, constantes, parmetros declarados y definidos dentro de un
procedimiento (accin o funcin). Incluso son locales los procedimientos
definidos dentro de otro procedimiento. Las variables locales son conocidas
dentro del procedimiento en que fueron definidas, por lo tanto, en otro
procedimiento pueden definirse variables con los mismos nombres y son
consideradas variables distintas. Aunque se llamen iguales por el hecho de ser
definidas dentro de procedimientos distintos ocupan posiciones de memoria
distintas.
Una
variable (constante o parmetro) local a un subprograma A no tiene ningn significado en otro subprograma
definido fuera de
A, el valor que se le asigne a la
variable no podr ser usado en los otros subprogramas.
Tambin
se utiliza la idea de que una variable es local al procedimiento donde ella es
visible (o alcanzable).
Es conveniente usar variables locales porque ayuda a que los programas sean independientes y modulares.
La comunicacin entre la accin Principal y los procedimientos
definidos dentro de ella se facilita, ya que esta comunicacin se realiza a
travs de la lista de parmetros.
Variables Globales
Son las variables declaradas para el programa o algoritmo principal, del que dependen todos los
subprogramas.
Variables No Locales
Globales: voltios,
Accin CalcCorriente
resistencia, corriente, factorResist
//
calcula voltajes segn frmulas fsicas
Locales y
Entero voltios,
No Locales:
resistencia;
Funcin valRes(Real
FR): Lgico
Lgico esValido;
esValido = (FR
>= 0); corriente,
factorResist,
Retornar(esValido); CalcularResistencia,
ValorCorriente(*)
Funcin valRes;
voltios, resistencia,
corriente,
// se invoca a la funcin valRes FR (de valRes), factorResist,
valRes
esValido CalcularResistencia,
Si valRes(FR) == falso ValorCorriente,
Entonces valRes(*)
(1) son
FinAccin
locales al principal son variables globales
CalcularResistencia;
(2) tambin
son locales los procedimientos (acciones y funciones) definidos o
Funcin ValorCorriente(Entero especificados dentro de l.
V, R): Real
// declaracin de
la funcin
corriente = V^2 *
R;
cor = corriente
^(1/5) * 3,1416;
// otras instrucciones
Retonar(cor);
FinFuncin ValorCorriente;
//
otras instrucciones del procedimiento
principal
CalcularResistencia(factorResist);
corriente
= ValorCorriente(voltios, resistencia);
//
otras instrucciones
FinAccin CalcVoltajes;
A continuacin mostramos ejemplos de los valores tomados por variables globales y locales:
Entero X1 Entero X1
X1 = X1 =
10; Pi = 3,1416; 10; Pi = 3,1416;
A(X1); A(X1);
Pi = (X mod Pi = (X mod
2) == 0; 2) == 0;
FinAccin A; FinAccin A;
Salidas de este
Salidas de este
algoritmo:
algoritmo:
1. El valor de Pi
1. El valor de Pi
es: 3,1416
en A es: verdadero (hay redefinicin
de la variable Pi dentro de A) El operador de
resolucin de alcance consulta el valor de la variable
2. El valor de Pi
Pi en el procedimiento
en Principal es: 3,1416
Principal y lo utiliza dentro de la instruccin Escribir
Fuentes consultadas:
JOYANES AGUILAR, Luis; RODRGUEZ BAENA, Luis; FERNNDEZ, Matilde. Fundamentos de Programacin,
Algoritmos, Estructuras de Datos y Objetos. Editorial
McGraw-Hill, 2003. Captulo 5, Subprogramas (Procedimientos y Funciones); pg
178 y siguientes.
BRONSON, Gary J. C++ para Ingeniera y Ciencias. Editorial Thompson, 2007. da Edicin. Captulo
6, Modularidad con el uso de funciones, pg. 361 y siguientes.
Ejercicios Asignados
Escribir(Suministre
Funcin Ac1 (Entero valores enteros para a, b, c y d);
w, x, y, z) : Real
Leer(a, b, c, d);
Real a;
Res1
a = w * z + x * y; a = a / (x * z); = Ac1(a, b, c, d);
x= fAccinPrincipal;
1; y = z mod 1;
FAccin Ac2;
2.1. Localidad / No
localidad de las variables y procedimientos
Entero c;
c = b + 2 + a + 3;
b = c + 1;
a = c; escribir (en clculo los valores de a, b y c son: );
b = c; escribir (a + - + b + - + c);
Ffuncin; a = 3; b = 2; c = 1;
Funcin nmero2 (Ref Entero b, Entero Escribir (en principal los valores de a, b y c
c) : Entero
son: );
a = 1;
Escribir (a + - + b + - + c);
c = b + 2 + a + 3;
a = nmero1(b, a);
a = b c; b = 5 + a;
Escribir (nuevos valores son: a + - + b + - +
Escribir (en nmero2 los valores de a, b y c
c);
son: );
Faccin;
Escribir (a + - + b + - + c);
Accin ejercicio;
Retornar ( a + c + b + nmero1(a,
b) );
Ffuncin;
Accin Ejercicio4
Entero h, C; N = N^3;
h = 2; FAccin Acc3;
C = E1 div 2;
Mientras(h C y E2 0 ) hacer
Retornar(E2);
es = 1; Algohace(N);
es = Acc1(k, es);
Escribir
(valor de k en Acc2: + k);
Fsi;
k = k+1;
fMientras;
Accin Acc2;
Definicin: Permite obtener condiciones de entrada, que ejecutan todos los requisitos funcionales de un
programa. Las pruebas de caja negra no son una alternativa a las tcnicas de prueba de caja blanca. Es un
enfoque complementario.
mbito aplicacin: Las pruebas de caja negra se llevan a cabo sobre la interfaz del software, obviando el
comportamiento interno y estructura del programa.
Utilidad: Las pruebas de caja negra se centran en lo que se espera de un mdulo, es decir, intentan encontrar
casos en que el mdulo no se atiene a su especificacin.
Caractersticas:
Ventajas
A diferencia de la prueba de la caja blanca, que se lleva a cabo previamente en el proceso de prueba, la
prueba caja negra tiende a ser aplicada en posteriores fases de prueba. Ya que la prueba de la caja negra
intencionadamente ignora la estructura de control, concentra su atencin en el dominio de la informacin.
Desventajas
El problema con las pruebas de caja negra no suele estar en el nmero de funciones proporcionadas por el
mdulo (que siempre es un nmero muy limitado); sino en los datos que pasan a estas funciones. El
conjunto de datos posibles suele ser muy amplio (por ejemplo, un entero).
Diseo
La prueba verifica que el tem que se est probando, cuando se dan las entradas apropiadas produce los
resultados esperados. Los datos de prueba se escogern atendiendo a las especificaciones del problema, sin
importar los detalles internos del programa, a fin de verificar que el programa corra bien.
Tipos
Este mtodo de prueba de caja negra divide el dominio de entrada de un programa en clases de datos, a
partir de las cuales deriva los casos de prueba. Cada una de estas clases de equivalencia representa a un
conjunto de estados vlidos o invlidos para las condiciones de entrada.
Los errores tienden a darse ms en los lmites del campo de entrada que en el centro. Por ello, se ha
desarrollado el anlisis de valores lmites (AVL) como tcnica de prueba. El anlisis de valores lmite lleva a
una eleccin de casos de prueba que ejerciten los valores lmite.
Objetivo
Determinar la funcionalidad del software, parte de tratar al programa como si fuera una funcin matemtica,
estudiando si las respuestas o salidas son condominio de los datos entrantes dominio. La prueba de caja
negra tiene otras metas, determinar la eficiencia del programa desde el desempeo en el equipo, el tiempo
de retardo de las salidas hasta el nivel de recuperacin del sistema luego de fallas o cadas sean estas
producidas por manejo incorrecto de datos, equipo, o producidas externamente como cortes de energa.
Conclusin
Este tipo de pruebas debe ser realizado por personal especializado en la aplicacin de pruebas a
nivel de software, el cual debe estar familiarizado en el uso de herramientas de depuracin y
pruebas, igualmente deben conocer el lenguaje de programacin en el que se est desarrollando la
aplicacin.
Bibliografa
http://webdelprofesor.ula.ve/ingenieria/gilberto/pr1/clase12.pdf
http://pruebasoftware.blogcindario./2005/10/00002-de-casos-deprueba.hml