5.8 Variables locales y globales 113
5.8.1 ¿Cómo funciona este algoritmo?
El algoritmo tiene 3 variables x, y, z . Se le asignan valores a: x y z , pero el valor de y se
obtiene al llamar a la Función B . Notemos que la variable z aparece en la Función pero no está
declarada en ella.Realicemos la prueba de escritorio:
La variables z es modificada por la función ya que la misma es una variables global.
Por lo tanto se imprime 2 19 12
Notamos que :
los nombres de los parámetros y los argumentos no tienen porque ser iguales.
x, y , z son variables globales; h, r , x son variables locales; z es una variable global que es
usada por la función; existen dos variables x distintas: una está definida en la memoria que
tiene asignado el algoritmo y la otra ( local a la función ) está definida en la memoria que
tiene asignado el subalgoritmo función. Por lo tanto, al estar en lugares distintos, no son
iguales. Si se desea que un conjunto de variables tenga "visibilidad .
en
todo el programa
( algoritmo principal y subalgoritmos ) las variables deben definirse como globales. En
este caso se trabaja sobre una única posición de memoria y todos los módulos miran a esa
posición al referenciar el nombre de la variable global. Este tipo de proceso debe usarse en
casos muy específicos, pues el abuso genera programas difíciles de mantener, o resultados
no deseados.
Realicemos la resolución de un sistema de 2 ecuaciones con 2 incógnitas.
Ejemplo 1 : Realizar un algoritmo que reciba como datos los coeficientes a1,a2,b1,b2,c1 y
c2 de un sistema de 2x2 de ecuaciones, llame a un subalgoritmo RESOLVER para resolverla y
luego imprima el sistema con sus soluciones correspondientes.
5.8.2 Análisis del problema:
Datos: a1, a2, b1, b2, c1, c2 coeficientes de un sistema de ecuaciones
Resultados: x , y solución del sistema
Proceso de resolución: se propone utilizar el método de Cramer:
D= Discriminante = a1 * b2 - a2 * b1 Si D es distinto de 0 se obtienen soluciones únicas
DX = Discriminante X = c1 * b2 - c2 * b1DY = Discriminante Y = a1 * c2 - a2 * c1
La solución del sistema se determina de la siguiente manera:
x = DX / D
y = DY / D
Algoritmo Resolución de sistema de 2x2
variables real a1, a2, b1, b2, c1, c2 , x , y
inicio
Leer ( a1, a2, b1, b2, c1, c2 )
RESOLVER ( a1, a2, b1, b2, c1, c2, x, y )
Escribir (“El sistema ”, a1, “x + ”,b1, “ y = ”, c1)
Escribir ( “ ” , a2 ,“x + ”,b2, “ y = ”, c2)
Imprimir ( “tiene solución x =”, x , “ y =”, y)
Fin.
Subrutina RESOLVER (E:a1,a2,b1,b2,c1,c2:real, S:sol1,sol2:real)