Module: Subrutinas: procedimientos y funciones - 1


Problem

9 /12


Variables locales y globales

Theory Click to read/hide

A menudo es necesario utilizar variables adicionales que solo se utilizarán en la subrutina. Estas variables se denominan locales (o locales) y solo se pueden manipular dentro de la subrutina en la que se crean.
 

Ámbito de variable local es la función o procedimiento dentro del cual se declara

Así, es posible limitar el alcance (scope) de una variable solo a la subrutina donde realmente se necesita. En programación, esta técnica se denomina encapsulación  - ocultar una variable para que no se modifique desde el exterior.

Si es necesario declarar una variable que sería visible en cualquier parte del programa (en cualquier subrutina), dichas variables se declaran fuera de todas las subrutinas (consulte el programa 3 de la tabla a continuación)
Estas variables se denominan globales.

Analice tres programas:

Problem

Escriba un procedimiento con un parámetro n que muestre un árbol de Navidad con una copa de altura n
El programa principal debe contener la entrada del valor de la variable n y la llamada del procedimiento

Ejemplos
1) En este programa, la variable i es local. Una variable local se declara dentro de una subrutina 2) Aquí, aunque haya una variable i en el programa principal (con valor 7), se creará una nueva variable local i con valor 5. 
Cuando ejecute este programa, la pantalla mostrará el valor 75
3) Este programa tiene una variable global i. Su valor se puede cambiar dentro de una subrutina, y dentro del programa principal
El procedimiento trabajará con la variable global i y se le asignará un nuevo valor igual a 2. Se muestra en pantalla el valor 2
prueba de procedimiento();
var i: entero;
empezar
    yo := 5;
    escribir(i);
fin;
var i: entero;

prueba de procedimiento();
var i: entero;
empezar
    yo := 5;
    escribir(i);
fin;

empezar
    yo := 7;
    escribir(i);
    prueba();
fin.
var i: entero;

prueba de procedimiento();
empezar
    yo := 2;
fin;

empezar
    prueba();
    escribir(i);
fin.
# Entrada Salida
1 5     o    ooo   ooooo  ooooooo ooooooooo