Module: Sub-rotinas: procedimentos e funções - 1


Problem

9 /12


Variáveis ​​locais e globais

Theory Click to read/hide

Muitas vezes é necessário utilizar variáveis ​​adicionais que serão utilizadas somente na sub-rotina. Tais variáveis ​​são denominadas locais (ou locais) e só podem ser manipuladas dentro da sub-rotina em que são criadas.
 

Escopo de variável local é a função ou procedimento dentro do qual ela é declarada

Assim, é possível limitar o escopo (scope) de uma variável apenas à sub-rotina onde ela é realmente necessária. Na programação, essa técnica é chamada de encapsulamento  - ocultar uma variável de ser alterada de fora.

Se for necessário declarar uma variável que seria visível em qualquer lugar do programa (em qualquer sub-rotina), então tais variáveis ​​são declaradas fora de todas as sub-rotinas (ver programa 3 da tabela abaixo)
Essas variáveis ​​são chamadas globais.

Analise três programas: é exibido na tela
1) Neste programa, a variável i é local. Uma variável local é declarada dentro de uma sub-rotina 2) Aqui, mesmo que exista uma variável i no programa principal (com valor 7), uma nova variável local i com valor 5 será criada. 
Ao executar este programa, a tela exibirá o valor 75
3) Este programa possui uma variável global i. Seu valor pode ser alterado dentro de uma sub-rotina, e dentro do programa principal
O procedimento funcionará com a variável global i e será atribuído a ela um novo valor igual a 2. O valor 2
procedimento teste();
var i: inteiro;
começar
    i := 5;
    writeln(i);
fim;
var i: inteiro;

procedimento teste();
var i: inteiro;
começar
    i := 5;
    writeln(i);
fim;

começar
    i := 7;
    escreva(i);
    teste();
fim.
var i: inteiro;

procedimento teste();
começar
    i := 2;
fim;

começar
    teste();
    writeln(i);
fim.

Problem

Escreva um procedimento com um parâmetro n que exiba uma árvore de Natal com uma coroa de altura n
O programa principal deve conter a entrada do valor da variável n e a chamada do procedimento

Exemplos
# Entrada Saída
1 5     o    ooo   ooooo  oooooo ooooooooo