Vous êtes sur la page 1sur 31

Repblica bolivariana de Venezuela

Ministerio del poder popular para la educacin universitaria

U.T.D francisco Tamayo

Tucupita edo. delta Amacuro

Programacin de mdulos/Tcnicas de
mantenimiento de programas

Bachiller(s)

Etanismar landaeta

Pedro castro

Javier lista

Hosmel Daz

Profesora

Luisa rendayyo

Algoritmo y programacin

Tucupita, mayo, 2017


ndice

Portada

Introduccin

Desarrollo:

Programacin y mdulos

Funciones y procedimientos (definicin y declaracin)

mbitos de variables (datos locales y globales)

Llamadas de una funcin y pase de parmetros

Tcnicas de mantenimientos de programas

Tcnicas de pruebas de caja negra y reingeniera de programas y mantenimientos de un programa.


Introduccin

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

La programacin modular permite dividir un problema en mdulos o sub-problemas ms simples que


permitan la solucin del mismo, si estos no llegaran a ser suficiente, tiene que seguirse dividiendo en sub-
problemas hasta que se halle el resultado y poder ser manipulados con cualquier lenguaje de programacin.
A esta tcnica de programacin comnmente se le denomina Top Down o descendente y divide y
vencers.

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

Fcil comprensin a causa de la modularidad

Reutilizacin de mdulos

Disminuye la complejidad del algoritmo

Disminuye el tamao total del programa

Facilidad de localizar los errores en el algoritmo

No se hay inconveniente modificacin de algn mdulo ya que no afecta a los dems

Da la mejor comprensin del problema y reduce el cdigo.

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.

Declaracin de Funciones y Procedimientos

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.

mbitos de: Variables locales y globales.

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.

El argumento formal (los veremos en la siguiente seccin) mbito de un argumento formal es el


mismo que el de una variable local; el argumento formal definido en la cabecera de una funcin
slo podr ser accedido dentro del cuerpo de dicha funcin, y no en otros lugares del programa.

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.

Llamada de una funcin y pase de parmetros:

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.

La definicin de procedimientos permite asociar un


nombre a un bloque de instrucciones. Luego podemos usar ese nombre para indicar
en algn punto de un algoritmo que vamos a utilizar ese bloque de
instrucciones, pero sin tener la necesidad de repetirlas, slo invocando
al procedimiento por su nombre.

Los procedimientos pueden ser clasificados en acciones


o funciones. Las acciones
se caracterizan por no retornar valores al algoritmo que las llama,
mientras que las funciones retornan un valor. Sin embargo, aunque
las acciones no retornan valores, si pueden informar al algoritmo que las llam
(a veces llamado algoritmo principal) de cambios realizados por sus
instrucciones en algunos valores a travs de una herramienta que se llama pase
de parmetros. Los parmetros
permiten utilizar la misma secuencia de instrucciones con diferentes datos de
entrada. Utilizar parmetros es opcional.

Cuando entre las instrucciones de un algoritmo vemos


el nombre de un procedimiento (accin o funcin), decimos que estamos llamando
o invocando al procedimiento.

Los procedimientos facilitan la programacin modular,


es decir, tener bloques de instrucciones que escribimos una vez pero que
podemos llamar y utilizar muchas veces en varios algoritmos. Una vez terminada
la ejecucin de un procedimiento (accin o funcin), se retorna el control al
punto de algoritmo donde se hizo la llamada, para continuar sus instrucciones.

En el prximo tema, Programacin Orientada a Objetos,


veremos que los procedimientos son denominados Mtodos.

Acciones

Conjunto de instrucciones con un nombre que pueden ser llamadas a


ejecucin cuando sea necesaria. No retornan valores.

Sintaxis de la definicin formal de la Accin Donde:

Accin <Nombre> [ (lista parmetros formales) ] Accin Faccin delimitan el inicio y fin de la accin.

// comentario sobre lo que la accin hace <Nombre>


es el identificar de la accin.
[<Lista de parmetros
formales>] son objetos o variables que
utilizan las instrucciones dentro de la accin, pero que no
tienen valor
< definicin de variables locales > hasta que la accin no es llamada y utilizada. Esta lista es
opcional por eso
< instruccin 1 de la accin >
aparece entre corchetes.

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

Ejemplo 1: Accin sin pase de parmetros

Accin calcular precio

// a
partir de un precio neto suministrado por el usuario, calcula e informa el
monto del IVA y el precio final

String Nombre; Real Precio, MontoIva, Precio Final;

Escribir (indique el nombre y el


precio neto del artculo); Leer (Nombre,
Precio);

MontoIva
= Precio * 0,14; Precio Final = Precio +
MontoIva;

Escribir (Artculo: + Nombre);

Escribir (Precio Bs. + Precio +


IVA Bs. + MontoIva + Precio Final Bs. + Precio Final);

Faccin Calcular Precio;

Funciones

Al igual que las Donde:


acciones con conjuntos de instrucciones con un nombre, pero se caracterizan
por retornar (enviar o devolver) un valor al algoritmo
que la llama. Funcin
Funcin delimitan el inicio
Como el resultado de la
y fin de la funcin.
funcin es retornado al algoritmo principal, debe usarse una variable para
almacenar este resultado, es decir, en una variable del algoritmo principal <Nombre>
se captura el valor retornado por la funcin. Luego el valor almacenado en es un identificador (nombre) vlido
la variable puede ser utilizado por el algoritmo que llama a la funcin.
:
operador usado para expresar que la
funcin retornar un valor del tipo de dato que
se indica luego.
Sintaxis de la definicin formal de la Funcin
Esta
lista es opcional por eso aparece entre
Funcin <Nombre> [(lista parmetros formales) ] : <tipo dato corchetes.
retorno>
<Tipo
// comentario sobre lo que la funcin hace de dato de retorno> indica el tipo de dato del
valor que la funcin
< definicin de variables locales >; retornar al algoritmo que la llam (por
ejemplo, podra retornar un entero,
< instrucciones de la funcin >;
un String, un objeto, etc.)
retornar (<variable, constante o expresin
Retornar instruccin predefinida utilizada para
compatible
indicar el lugar y el valor a retornar por parte
con el tipo de retorno >);
de la funcin.
Funcin <Nombre>;

Ejemplo 2:
Funcin sin pase de parmetros

Funcin CantidadPalabrasLos: Entero

// 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

String palabra; Entero CantLos;

CantLos
= 0;
Escribir (A continuacin se le
solicitarn palabras. Suministre la palabra fin, para terminar el algoritmo);

Repetir

Escribir (Suministre una


palabra); Leer (palabra);

Si palabra == los Entonces

CantLos = CantLos + 1;

FSi;

Hasta palabra == fin;

Retornar (CantLos);

// Esta instruccin retorna o devuelve la


cantidad de palabras al algoritmo que llamo a esta funcin

FinFuncin CantidadPalabrasLos;

Tipos de Parmetros y Pase de Parmetros

Parmetros actuales

Son los valores indicados en la llamada a la accin o funcin en el algoritmo


principal. Son los valores que se desean pasar desde el algoritmo principal a
las instrucciones de la accin o funcin.

Parmetros formales

Son los nombres dados a los parmetros en la definicin formal de la accin o


funcin. Con estos nombres se conocern a los valores de los parmetros dentro
de la accin o funcin y funcionan como variables locales dentro de ellos.

Sintaxis de los parmetros formales en la cabecera


de la accin o funcin:

Accin <Nombre> ([Var] Tipo de Dato


Nombre Parmetro; ) // para las
acciones

Variable retorno = Funcin


<Nombre> ([Var] TipodeDato NombreParmetro; ) // para las funciones
En la definicin formal debe especificarse por los parmetros el tipo de
sustitucin (por valor o por referencia), su tipo de dato y su nombre. Si el
tipo de sustitucin es por referencia se indica con la palabra Ref (tambin se estila en
algunos lenguajes usar Var
en lugar de Ref) antes del tipo de dato, si es por valor,
no se coloca nada. Si varios parmetros tienen el mismo tipo de dato y todos son
pasados por valor puede escribirse el Tipo de dato una sola vez y luego la
lista de los nombres de los parmetros separadas por coma, por ejemplo, Entero
x, y, z

Pase de parmetros por valor

El parmetro actual no es modificado si se modifica el parmetro formal dentro del


procedimiento, ya que ambos parmetros
ocupan posiciones diferentes en memoria. Esto se debe a que el parmetro
actual se evala y el resultado se copia en el correspondiente parmetro formal, que ocupa otra posicin
en memoria. Por ello, cuando se regresa de la accin o funcin al algoritmo
desde donde se hace la llamada los parmetros actuales mantienen su valor
original.

Pase de parmetros por


referencia

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.

Llamada (o invocacin) de las acciones o funciones

La llamada a una accin o funcin es una instruccin que permite la ejecucin de


la secuencia de sus instrucciones. Consiste en indicar el nombre y los
parmetros actuales que van a ser utilizados.

Los parmetros actuales que se indican en la llamada de la accin (por ejemplo en


el algoritmo principal), deben corresponderse con los parmetros formales de la
definicin de la accin o /funcin. Por ello, la cantidad de parmetros
actuales debe ser igual a la cantidad de parmetros formales y del mismo tipo
de dato.

Sintaxis de la llamada a la accin o funcin:

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

Entero diaNac, mesNac, aoNac,


edad; String Nombre; Lgico esCorrecta, esBis,
esMenorEdad;

Escribir (suministra tu nombre); Leer (Nombre);

Repetir

Escribir (suministra el da, mes y


ao de tu fecha de nacimiento);

Leer (diaNac, mesNac, aoNac);

EsCorrecta
= ValidarFecha (diaNac, mesNac, aoNac);
// se llama a una funcin que verifica la fecha

Hasta esCorrecta == Verdadero;

EsBis
= ValidarBisieto (aoNac); // se llama a
una funcin que valida si el ao de nacimiento fue bisiesto

Si esBis == Falso Entonces

Escribir (no naciste en un ao


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

Escribir (nombre + t tienes +


edad + aos);

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.

Funcin ValidarFecha (Entero


d, m, a) : Lgico

//
Verifica si el da (d), mes (m) y ao (a) conforman una fecha vlida

Lgico correcto;

Correcta
= Verdadero;

// Completa las instrucciones faltantes

Retornar (correcta);

FinFuncin ValidarFecha;

Funcin Validar Bisiesto (Entero


a) : Lgico

//
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;

Accin Cumpleaos (String N; Entero


da, mes, ao)

//
Verifica si ya la persona cumpli aos. Este algoritmo compara contra la fecha
11-05-2017

String Mensaje; Entero mesesFaltan;

Si ao == aos faltan () Entonces // 1er si, para la fecha de ejemplo


ao Actual () = 2007

Mensaje = todava no has cumplido el


primer aito;

Sino

Si mes < mesActual () Entonces //


ya cumpli aos, para la fecha de
ejemplo mesActual () = 6

Mensaje = ya cumpliste
aos, felicitaciones atrasadas;

Sino

Si mes > mesActual ()


Entonces // ya cumpli aos, 3er si

Faltan = mes mod 12 +


1;

Mensaje = faltan
aproximadamente + faltan + para tu cumpleaos;

Sino

Si dia < diaActual () Entonces //


ya cumpli aos, 4to si, diaActual () = 4

Mensaje = ya cumpliste
aos, felicitaciones atrasadas;

Sino
Si dia > diaActual () Entonces //
cumple aos muy pronto, 5to si

Faltan = dia 22;

Mensaje = algrate slo


quedan + faltan + das para tu cumple;

Sino

Mensaje = cumpleaos Feliz


!!! Muchos deseos de salud y prosperidad en tu da;

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;

Accin CalcularEdad (Entero


ao; Ref Entero edad; Lgico menor)

//
Calcula la cantidad aproximada de aos que tiene una persona

Edad
= 2006 aoNac; menor == (edad < 18);

Escribir (La persona es menor de


edad? + Menor);

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.

Utiliza la accin anterior para calcular, en una seccin de 15 alumnos, el promedio de


nota de cada uno y si aprob.

mbito o Alcance de Identificadores (Global, Local


y No Local)

mbito o Alcance

El mbito o alcance de un identificador, es decir, el alcance de una variable, una


constante, un parmetro o un procedimiento (sea accin o funcin) es el rea
dentro de un algoritmo o dentro de un programa donde ese identificador es
conocido y puede ser usado. Clsicamente
los identificadores se han clasificado segn su alcance en locales y globales.

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.

Grficamente podemos ver a continuacin los lmites del alcance de variables

Accin Principal Variables


Accesibles desde
definidas en
Real A, B;
Principal1 (*) B, C, D, E, F, G
Lgico esFibo;
B B, C
// mbito de
A, B y esFibo
C C

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

// otras instrucciones de Principal G


Accin Calcular

Entero aux, cont;

// 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).

Por qu usar variable locales?

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.

El uso de variables locales o internas apoya tambin la reutilizacin de cdigo,


la legibilidad, la modificacin y la actualizacin de los algoritmos y
programas, ya que para comunicar un procedimiento con otro, slo necesitamos
tener conocimiento de que hace ese programa y cules son sus parmetros, no
necesitamos conocer cmo est programado internamente.

Al dividir un algoritmo en acciones y funciones que resuelvan partes ms pequeas


del problema, y que a su vez usen variables locales hacemos posible que un
proyecto grande sea dividido en partes en donde varios programadores trabajan
en forma independiente y con mayor eficiencia.

El uso de variables locales tambin permite utilizar el mismo identificador o


nombre de la variable en diferentes subprogramas.

Variables Globales

Son las variables declaradas para el programa o algoritmo principal, del que dependen todos los
subprogramas.

Un identificador declarado como global en un procedimiento principal, es


alcanzable o puede ser usada por todos los procedimientos declarados internos o
locales a esa accin, salvo que sea redefinida esta variable dentro de uno de
los procedimientos.

Por qu no debemos abusar de


las variables globales?

Las variables globales tiene la ventaja de compartir informacin entre diferentes


subprogramas sin necesidad de agregar una entrada correspondiente a la variable en la lista de parmetros
del procedimiento.

Sin embargo su uso es ms perjudicial que beneficioso, ya que no apoyan la


modularizacin, ni la reutilizacin del cdigo, ya que si se modifica el
identificador de una variable global o es eliminada, tiene que revisarse en
cdigo de todos y cada uno de los procedimientos que la utilizan para reflejar
estas modificaciones.

Al utilizar variables globales en forma indiscriminada destruimos los mecanismos


que aporta la notacin pseudoformal y los lenguajes de programacin para mantener
la modularizacin y que los procedimientos sean independientes entre s. Usar
variables puede ser desastroso en especial en programas largos, que tienen
muchos procedimientos creados por el usuario. En vista de que todos los
identificadores (variables, constantes, parmetros y procedimientos) deben ser
declarados, crear procedimientos que usen variables globales requiere recordar
todas las declaraciones de variables que se hicieron al inicio del
procedimiento principal.

An ms difcil ser rastrear o ubicar un error en un programa extenso que utiliza


variables globales, ya que el error podr estar ubicado en cualquiera de los
procedimientos internos que usa esta variable global.

Variables No Locales

Son los identificadores (variables que estn definidos en otro procedimiento,


incluso en el algoritmo principal, pero que tienen alcance (o son visibles) en
el procedimiento actual.

Una forma sencilla de identificar las variables no locales de un procedimiento B,


es considerando como tales a todas las variables locales y no locales del
procedimiento A que lo invoca o llama, siempre y cuando dentro de B no se
redefinan estas variables. Por
definicin, todo procedimiento es no local as mismo.

A continuacin se muestra un ejemplo de un algoritmo y la identificacin de


variables globales, locales y no locales:

Globales: voltios,
Accin CalcCorriente
resistencia, corriente, factorResist
//
calcula voltajes segn frmulas fsicas
Locales y
Entero voltios,
No Locales:
resistencia;

Real corriente, voltios, resistencia,


factorResist; corriente,
factorResist (1)
CalcCorriente CalcCorriente(*)
CalcularResistencia,
Accin ValorCorriente (2)
CalcularResistencia(Real FR)
CalcularResistencia FR, valRes voltios, resistencia,
// declaracin de
la accin

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(*)

Escribir(el factor de V, R, cor, corriente voltios, resistencia,


resistencia debe ser positivo); (de factorResist,
ValorCorriente ValorCorriente)
FSi; CalcularResistencia,
ValorCorriente(*)
// otras
instrucciones de CalcularResistencia (*) Todo
procedimiento es no local as mismo.

(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

Entero corriente; Real


cor;

corriente = V^2 *
R;
cor = corriente
^(1/5) * 3,1416;

// otras instrucciones

Retonar(cor);

FinFuncin ValorCorriente;

//
otras instrucciones del procedimiento
principal

// invocacin o llamada a las acciones


y

// funciones dentro del procedimiento


principal

CalcularResistencia(factorResist);
corriente
= ValorCorriente(voltios, resistencia);

//
otras instrucciones

FinAccin CalcVoltajes;

Alcance de Variables, Tipos de Datos y Resolucin de alcance

El alcance o mbito de una variable no restringe el tipo de dato que la variable


puede usar; sean locales o globales, las variables pueden ser de tipo Carcter,
String, Real, Entero, Lgico o de cualquier otro tipo de dato simple o
estructurado.

El alcance de una variable est relacionado con el lugar o procedimiento donde


ella est definida, ya que dentro de este lugar ser reservado el
almacenamiento para los valores de la variable. Por otro lado, el tipo de dato
est relacionado con la declaracin de la variable y con la palabra reservada
asociada a cada tipo (Carcter, String, Real, Entero, Lgico, Arreglo,)
Cuando una variable local tiene el mismo identificador que una variable global,
digamos que ambas se llaman X, todas las referencias a este indicador dentro
del procedimiento local se refieren a la variable local. Al volver a usar el
mismo identificador X localmente, la variable global X se tapa y no es
visible desde dentro del procedimiento que la redefine. La variable local X,
tiene precedencia sobre el valor de la variable global X.

Sin embargo algunos lenguajes de programacin, y tambin en pseudocdigo,


suministran un operador de resolucin de alcance, en muchos identificado como ::<nombre variable>

El operador :: colocado antes del nombre de la variable le indica al lenguaje que


utilice el valor de la variable global, en lugar del valor de la variable
local.

A continuacin mostramos ejemplos de los valores tomados por variables globales y locales:

Accin Principal Accin Principal

Entero X1 Entero X1

Real Pi; Real Pi;

X1 = X1 =
10; Pi = 3,1416; 10; Pi = 3,1416;

A(X1); A(X1);

Accin A (Entero X) Accin A (Entero X)

Lgico Pi; Lgico Pi;

Pi = (X mod Pi = (X mod
2) == 0; 2) == 0;

Escribir(El valor de Pi Escribir(El valor de Pi


en A es: + Pi); es: + ::Pi);

FinAccin A; FinAccin A;

Escribir(El valor de Pi FinAccin Principal;


en Principal es: + Pi);
FinAccin Principal;

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

Dado el siguiente algoritmo indique: (Parcial Nro. 2,


junio 2007, valor 6ptos)

1.1. Variables globales,


variables y procedimientos locales y no locales

1.2. Resultados que


escribe el algoritmo

1.3. Parmetros actuales


y formales, parmetros pasados por referencia

1.4. Qu hacen Ac1 y


Ac2?
Accin Principal
//
Entero a, b, c, d; Real Res1, Res2;
Continuacin

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);

Retornar (a); Ac2(c,


d, a, b, Res2);
FFuncin Ac1;

Escribir (Resultados del algoritmo, );


Accin Ac2 (Entero
w, x, y, z; ref Real w1) Escribir (para Ac1: + Res1 + para
Ac2: + Res2 );
w1
= w * y / (x * z);

x= fAccinPrincipal;
1; y = z mod 1;

FAccin Ac2;

Dado el siguiente algoritmo se quiere que muestre lo siguiente:

2.1. Localidad / No
localidad de las variables y procedimientos

2.2. Que resultados


escribe el algoritmo

2.3. Parmetros actuales


y formales

Accin ejercicio Accin clculo (Entero


b, Ref Entero a, Ref Entero c)
Entero a, b, c;
a = a * 2 + b;
Funcin nmero1 (Ref Entero a, Entero
c = a + 1;
b) : Entero

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);

Escribir (en nmero1 los valores de a, b y c c=


nmero2 (c, b);
son: );
Faccin;
Escribir (a + - + b + - + c
);

Retornar Accin principal()


(a + c + b ); Entero a;

Ffuncin; a = 3; b = 2; c = 1;

clculo (nmero1(c, a), b, a);

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;

Dado el siguiente algoritmo,


realiza una corrida del mismo, indicando para cada accin o funcin valores que
toman sus parmetros y variables, variables locales y variables no locales, cules
son parmetros actuales, cules son parmetros formales y cules variables
estn pasadas por referencia, y finalmente indicar qu hace este algoritmo.

Accin Ejercicio4

Funcin Acc1( Entero E1, E2): Entero Accin Acc3(Ref Entero N)

Entero h, C; N = N^3;

h = 2; FAccin Acc3;

C = E1 div 2;

Mientras(h C y E2 0 ) hacer

Si (E1 mod h Accin Algohace(Entero X)


== 0) entonces
X = 2;
E2 = 0;
Acc2(X);
Fsi;
Acc3(X);
h = h+1;
Escribir(el valor de X es +
fMientras; X);

Retornar(E2);

FFuncin Acc1; FAccin Algohace;

Accin Acc2(Entero k); // secuencia de instrucciones de Ejercicio 4

Entero es; Entero N;

Mientras (k 13) hacer N = 2;

es = 1; Algohace(N);

es = Acc1(k, es);

Si (es == 1) entonces Faccin Ejercicio 4;

Escribir
(valor de k en Acc2: + k);

Fsi;
k = k+1;

fMientras;

Accin Acc2;

Tcnicas de pruebas de caja negra y reingeniera de programas y mantenimiento de un programa.

Tcnicas de Mantenimiento de Programas: Tcnica de Prueba Caja Negra

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:

Los casos de prueba de la caja negra pretende demostrar que:

Las funciones del software son operativas.

La entrada se acepta de forma adecuada.

Se produce una salida correcta, y

La integridad de la informacin externa se mantiene.

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

Prueba de particin equivalente

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.

Anlisis de valores lmite

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

Al desarrollar un nuevo software o sistema de informacin, la primera etapa de pruebas a


considerar es la etapa de pruebas unitarias. En la cual como mencionamos anteriormente, se
encuentran presentes las pruebas de caja negra y de caja blanca en las cuales, en una se realiza un
anlisis de los datos de entrada y de salida y en otro se analiza el proceso interno del sistema para
evaluar las inconsistencias que pueda estar presentando el sistema, para as llegar a una correccin
de los mismos y proseguir con la nueva fase del proceso de desarrollo del sistema. Podemos
destacar que las pruebas unitarias son una forma de probar el correcto funcionamiento de un
mdulo de cdigo. Esto sirve para asegurar que cada uno de los mdulos funcione correctamente
por separado.

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.

El objetivo fundamental de las pruebas unitarias es asegurar el correcto funcionamiento de las


interfaces, o flujo de datos entre componentes de manera tal que a la hora de realizar una
unificacin de los diferentes componentes que conforman el sistema en general, exista una
congruencia que favorezca el desarrollo de la aplicacin que se quiere realizar

Bibliografa
http://webdelprofesor.ula.ve/ingenieria/gilberto/pr1/clase12.pdf

http://pruebasoftware.blogcindario./2005/10/00002-de-casos-deprueba.hml

Vous aimerez peut-être aussi