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


Problem

1/12

Sub-rotinas: Introdução

Theory Click to read/hide

Uma sub-rotina é uma parte separada do programa que tem um nome e resolve sua própria tarefa separada. A sub-rotina está localizada no início do programa principal e pode ser lançada (chamada) a partir do programa principal especificando o nome

A utilização de sub-rotinas permite evitar a duplicação de código, caso seja necessário escrever o mesmo código em locais diferentes do programa. 
As bibliotecas que são importadas para um programa (por exemplo, a biblioteca math math) consistem em sub-rotinas que já foram compiladas por alguém. Os programadores não precisam pensar em quais algoritmos implementam, mas simplesmente aplicá-los, pensando apenas no que exatamente estão fazendo. Esta é uma grande economia de tempo. Não há necessidade de escrever um algoritmo que já foi escrito por outra pessoa.

Cada rotina deve fazer apenas uma coisa:  apenas calcule algo, ou forneça alguns dados, ou faça outra coisa. 

Existem dois tipos de sub-rotinas - procedimentos e funções

As sub-rotinas realizam algumas ações, como imprimir o resultado na tela de uma determinada forma (um exemplo simples, a instrução writeln() é uma sub-rotina padrão que imprime para informações da tela)

As sub-rotinas de função retornam um resultado (número, cadeia de caracteres, etc.) que podemos usar no programa principal.

Vamos tentar escrever um procedimento simples:
Suponha que precisamos exibir a string "Error" na tela toda vez que um erro pode ocorrer no código devido à falha do usuário (por exemplo, quando ele insere dados incorretos)
Isso pode ser feito escrevendo a declaração writeln('Erro'); E agora imagine que tal linha precise ser inserida em vários lugares do programa. Claro, você pode simplesmente escrevê-lo em todos os lugares. Mas esta solução tem duas desvantagens.
1) esta string será armazenada na memória muitas vezes
2) se quisermos alterar a saída em caso de erro, teremos que alterar esta linha ao longo do programa, o que é bastante inconveniente

Para tais casos, são necessários procedimentos.
Um programa com um procedimento pode se parecer com isto: ... usando namespace std; procedimento printError(); // descrição do procedimento começar writeln('Erro'); // corpo do procedimento - comandos que o procedimento irá executar fim; // programa principal começar; ... impressorarr(); // inicia o procedimento para execução. Apenas especificamos o nome do procedimento que queremos executar. ... impressorarr(); ... fim. O procedimento começa com a palavra procedimento. Após o nome do procedimento, escrevem-se parênteses, que indicam as variáveis ​​e seus tipos dos quais depende a execução do procedimento. Por exemplo:

var a, b, resposta: inteiro;
procedimento Soma(a, b: inteiro);
começar
    resposta := a + b;
fim;

Todas as instruções executadas em um procedimento são recuadas. 

Os procedimentos são escritos antes do programa principal

Para executar um procedimento, no programa principal você precisa chamá-lo pelo nome e lembre-se de colocar parênteses!
Você pode chamar um procedimento em um programa quantas vezes quiser.

Problem

Escreva um procedimento que exiba a frase "Erro. Divisão por zero! Dê o nome correto ao procedimento.