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


Problem

12/12

Mudando Argumentos

Theory Click to read/hide

Problema: escrever um procedimento que troca os valores de duas variáveis.
A peculiaridade dessa tarefa é que precisamos que as alterações feitas no procedimento se tornem conhecidas pelo programa chamador.

Vamos tentar escrever o procedimento assim:

var x, y: inteiro; procedimento Swap(a, b: inteiro); // com tal descrição dos parâmetros do procedimento, var c: inteiro; begin // irá copiar os valores dos argumentos (x e y) // variáveis ​​a e b são variáveis ​​independentes não relacionadas a x e y c := a; a := b; b := c; fim; começar x := 1;   y := 2; Trocar(x, y); //valores das variáveis ​​x e y (argumentos) são copiados nos parâmetros a e b writeln('x = ', x, ', y = ', y); // x=1, y=2 fim. Se você executar este programa, poderá ver que os valores das variáveis ​​x e y não foram alterados. Para que os parâmetros alterem os valores dos argumentos, deve-se utilizar passagem de dados por referência. Para isso, após o nome do tipo de dado no cabeçalho da sub-rotina, você deve colocar a palavra var  procedimento Swap(var a, b: integer);   // agora as variáveis ​​a e b obtêm os endereços das variáveis ​​x e y na memória var c: inteiro;  começar c := a; a := b; b := c; fim; Uso: Se você passar um argumento por referência, somente o nome da variável (NÃO um número e NÃO uma expressão aritmética) pode estar neste local ao chamar o procedimento!< br />
NÃO chame um procedimento como este: Swap(x, 4); Swap(5+x, y);

Problem

Escreva um procedimento que troque os valores de duas variáveis.

Encontre e corrija erros neste procedimento