Informática Instrumental
Material de Referência

 Introdução à Programação

 Introdução

O Computador deve ser encarado como uma ferramenta de auxílio a resolução de problemas, porém devemos ter em mente que o computador nada sabe fazer, apenas executa as nossas ordens com bastante eficiência e rapidez. Teoricamente o computador pode ser definido como uma máquina que recebe dados, processa-os e devolve informações. Para que o computador possa entender o que queremos que ele faça, possa saber de que maneira deve processar os dados, devemos dar-lhe as ordens de maneira lógica. Lógica, segundo o dicionário Aurélio, significa "coerência de raciocínio, de idéias. Modo de raciocinar peculiar a alguém, ou a um grupo. Seqüência coerente, regular e necessária de acontecimentos, de coisas."

Como já vimos que o computador não raciocina, podemos até defini-lo como o burro mais rápido do planeta, pois temos que fazer o "trabalho mental", e deixar para ele apenas o "trabalho braçal", ou seja, nós temos que pensar, resolver o problema e ensinar ao computador todos os passos que devem ser dados para que encontremos a resposta desejada. Ao conjunto destes passos, ou instruções, chamamos de programa. Programa é então um conjunto de comandos com uma determinada seqüência lógica, permitindo o processamento de dados. É por seu intermédio que o computador é capaz de entender a tarefa a ser executada, ou seja, age como interface entre homem e máquina. 

Um programa de computador pode ser escrito em uma das muitas linguagens de programação existentes, como por exemplo Delphi, Visual Basic, Pascal, Clipper, etc... Uma linguagem de programação é um conjunto de instruções, símbolos e operadores, rigidamente controlados, cheio de regras que devem ser seguidos ao pé da letra. A linguagem de programação funciona como um intermediário entre o homem e a máquina. Um programa escrito numa linguagem de programação, que geralmente é muito parecida com a linguagem humana, tem que ser compilado, ou traduzido, para ser executado pelo computador. A compilação transforma o programa fonte em programa objeto, que é a linguagem que o computador realmente entende.

Neste material você aprenderá conceitos básicos de programação e poderá exercitá-los através da linguagem PascaL, que é uma implementação quase completa de um compilador Pascal no Logo. No entanto, os conceitos básicos aprendidos podem ser utilizados na maioria das linguagens, apenas a sintaxe é diferente.

Além de outros recursos do Pascal, o que o PascaL tem de especial é a facilidade para a produção de figuras a partir de comandos. Ele usa um “robô triangular” que aparece na tela, como metáfora para um robô real, que pode ser utilizado para desenhar figuras na tela.

Programar um computador pode às vezes ser uma tarefa árdua. Já existem inúmeros programas e pacotes de programas no mercado com utilidades diversas. Uma questão que pode então surgir é: por que aprender conceitos de programação? No entanto, pode ser que não exista no mercado um programa com as características que você deseja, e contratar alguém para implementar um programa para você pode não ser fácil ou ter um preço acessível. Além disso, se você precisa de um programa, o fato de implementá-lo pode fazer com que você obtenha mais conhecimentos relativos ao seu problema. Possuindo noções básicas de programação você poderá também utilizar de forma melhor os pacotes prontos.

 Programando em PascaL

Nesta seção você verá alguns exemplos de programas em PascaL para resolver problemas simples.

Programa para desenhar retângulo

Suponha que você precise desenvolver um programa para desenhar um retângulo com o lado maior de tamanho 100 e o lado menor de tamanho 50. Para isso primeiramente você precisa fazer um algoritmo com os passos a serem seguidos para se desenhar tal retângulo. Como o computador não possui inteligência própria, você deve fazer uma espécie de receita de bolo com todos os passos que devem ser seguidos para se obter o resultado que você deseja. Um diagrama de Nassi com o algoritmo para se desenhar um retângulo com a especificação pedida pode ser visto na figura abaixo. 

O diagrama de Nassi mostrado representa a execução seqüencial dos comandos. O computador só executa um comando após ter finalizado a execução do comando na linha anterior. Na figura abaixo é apresentado um programa que implementa este algoritmo na linguagem de programação PascaL. Neste programa os comandos também são executados seqüencialmente. 

Este programa utiliza comandos PascaL para produzir um retângulo. Na figura abaixo você pode visualizar a figura produzida no ambiente de programação de PascaL. Algumas áreas de interesse deste ambiente estão destacadas na figura abaixo. 

O programa para desenhar um retângulo exibido neste exercício é bastante simples, pois um retângulo é um desenho simples. Basta desenhar um traço de tamanho 50 para cima (utilizando o comando pfrente(50)), virar o robô 90o à direita (através do comando pdireita(90)), desenhar um traço de tamanho 100 (através do comando pfrente(100)) e assim sucessivamente, até que o desenho esteja completo. 

O comando clrscr utilizado no programa limpa a área de comandos do PascaL. O comando ul (Use Lápis), faz com que o robô deixe um rastro ao se mover. Se você quiser mover a posição do robô sem que ele desenhe um traço você deve utilizar o comando un (Use Nada). O último comando utilizado no programa foi o dr (Desapareça Robô). Este comando faz com que o robô não seja exibido na tela. A utilização deste comando não é necessária, mas faz com que o robô não atrapalhe a visualização da figura. Se você quiser visualizar a figura novamente, utilize o comando ar (Apareça Robô).

Uma linguagem de programação é uma espécie de idioma intermediário entre um programador e o computador. Um programa em uma linguagem de programação qualquer deve ser primeiramente "traduzido" para a linguagem da máquina (apenas 0's e 1's), para que o computador possa executá-lo. Esta "tradução" no PascaL é realizada através do botão Compilar da  barra de operações. Para que o programa seja efetivamente executado e produza a figura desejada, você deve utilizar o botão Rodar da barra de operações.

Desenhando um retângulo de tamanho variável

Suponha agora que o tamanho dos lados do retângulo deva ser variável, mas que o lado maior seja sempre o dobro do tamanho do menor. Um esquema que representa este programa pode ser visto na figura abaixo. Suponha que seu programa executando é uma caixa preta, que recebe como entrada o tamanho do lado menor e produz como saída o desenho de um retângulo.

O diagrama de Nassi com um algoritmo para resolver este problema encontra-se na figura abaixo.

Neste diagrama você pode identificar os passos utilizados para se desenhar o retângulo. O diagrama é semelhante ao do problema anterior, exceto pelo comando de leitura do tamanho do lado menor, que é um comando para entrada dos dados. Ao executar um comando de entrada de dado, representado no diagrama de Nassi pela frase Ler o tamanho do lado menor, o computador espera que o usuário digite o dado pedido para então continuar a execução dos outros comandos do programa.

Na figura abaixo é apresentado um programa PascaL que implementa o algoritmo acima. Este programa, a partir do tamanho do lado menor digitado pelo usuário, desenha um retângulo.

Todo programa pode ser dividido em duas seções: o cabeçalho e o corpo do programa. No cabeçalho encontram-se as declarações de variáveis e no corpo do programa encontram-se os comandos propriamente ditos. 

Variáveis são utilizadas para se armazenar valores durante a execução do programa. Em PascaL as variáveis devem ser declaradas antes de serem utilizadas. A declaração da variável consiste na especificação de seu tipo. No caso do programa acima, o tipo das variáveis é integer, o que significa que estas só poderão armazenar valores numéricos inteiros. Se precisássemos armazenar valores como 3,14, ou 1,5, poderíamos declarar uma variável do tipo real. Frases devem ser armazenadas em variáveis do tipo String

Os comandos são executados seqüencialmente, a não ser que haja um desvio de fluxo e são utilizados para "dizer" ao computador o que ele deve fazer. Por exemplo, o comando clrscr é utilizado para que os desenhos existentes na tela do computador sejam apagados.

Para obter do usuário o tamanho do lado menor, este programa utiliza os comandos de entrada e saída readln e writeln. O comando writeln faz com que a mensagem entre parênteses seja exibida na área de histórico do ambiente PascaL. É uma forma do programa interagir com o usuário, requisitando dados ou fornecendo resultados. O comando readln é utilizado para que o usuário possa fornecer valores para o programa. Neste caso o programa precisa do tamanho do lado menor para poder desenhar o retângulo. O valor digitado pelo usuário é armazenado na variável entre parênteses.

Programa para calcular a área do retângulo

Suponha agora que, além de desenhar um retângulo com o tamanho do lado variável, você precise calcular sua área e seu perímetro. Um diagrama de Nassi contendo um algoritmo para resolver este problema encontra-se na figura abaixo:

Como você pode perceber, o algoritmo é o mesmo mostrado anteriormente para desenhar o retângulo. Apenas os passos de calcular a área e o perímetro e a impressão destes dados é acrescentada. Uma implementação em PascaL deste algoritmo pode ser vista na figura abaixo:

Neste programa você pode notar que para a impressão dos resultados é utilizado o comando writeln. Este comando imprime na área de histórico do PascaL o texto e o valor da variável que se encontram entre os parênteses. Por exemplo, se o usuário entrar com o tamanho do lado menor 10 (ladoMenor = 10), o tamanho do lado maior será 20 e valor armazenado na variável área será 200 (=20 x 10). Desta forma, o comando writeln('A área do retângulo é: ', area); fará com que seja impressa a seguinte frase: A área do retângulo é: 200. Ao final da execução do programa, um retângulo será exibido na área de desenho e na área de históricos serão impressos os seguintes resultados:

 

Cenário 1 - Desenhar quadrado ou retângulo
De acordo com uma informação do usuário, você deve decidir se desenha um quadrado ou um retângulo

Seu problema pode então ser descrito assim:

Problema

Você precisa implementar um programa que desenhe um quadrado ou um retângulo de forma eficiente, ou seja, você não deve replicar todo o código e sim reaproveitá-lo o máximo possível. A informação sobre o que deve ser desenhado deve vir do usuário, bem como o tamanho do lado menor do retângulo como visto no exercício anterior

Dados de Entrada

  • Tamanho do lado do quadrilátero (caso seja um retângulo é o tamanho do lado menor, o lado maior tem o dobro deste comprimento).
  • Indicação se deve ser desenhado um quadrado ou um retângulo (1 = quadrado e 2 = retângulo).

Processamento

  • Ler os dados de entrada
  • Calcular o tamanho do lado maior 
    • Se for um quadrado, o lado maior é igual ao lado menor.
    • Se for um retângulo, o lado maior é o dobro do lado menor.
  • Desenhar o quadrilátero.

Dados de Saída

  • Desenho do quadrilátero pedido.
Diagrama de Nassi

Na figura abaixo pode ser visto o diagrama de Nassi para este problema. 

Este diagrama possui uma estrutura que representa decisão (marcado em azul na figura). Se o tipo da figura, indicado pelo usuário, for um quadrado, o lado maior deve ser igual ao lado menor. Caso contrário, o lado maior deve ser o dobro do lado menor. Esta decisão é representada pelo triângulo exibido na figura. Caso o tipo seja quadrado, os comandos da esquerda são executados (em nosso caso há apenas um comando), caso contrário, os comandos da esquerda são executados.

Uma outra coisa que pode ser percebida neste diagrama é que uma parte do código se repete. As linhas grifadas delimitadas pelo círculo em vermelho são uma repetição das quatro linhas anteriores. Para evitar a replicação do código podemos utilizar um comando de repetição. Desta forma, o diagrama de Nassi ficaria como mostrado na figura abaixo:

Neste diagrama estão destacados os comandos dentro da repetição. A variável auxiliar i é utilizada para controlar o fim da repetição. Primeiramente esta variável é inicializada com 1. Enquanto i for menor ou igual a dois, os comandos dentro da repetição são executados. São exatamente aqueles comandos que estavam repetidos no diagrama de Nassi anterior. O comando de incrementar a variável auxiliar i ( i := i + 1) é muito importante. Se este comando não fosse utilizado, o valor de i nunca seria maior que 2 e o programa continuaria executando os comandos indefinidamente, é o que chamamos de loop infinito. Desta forma, os comandos dentro para desenhar meio quadrilátero são repetidos duas vezes (um para i = 1 e outra para i = 2), completando a figura. 

Código do programa

Na figura abaixo você pode visualizar o código do programa PascaL que implementa o algoritmo mostrado acima.

No PascaL a estrutura de decisão é representada pelo comando if, como podemos ver no quadro abaixo. 

if [condicao] then
   begin
     [bloco de comandos a serem executados caso a condição seja verdadeira]
   end
else
  begin
    [bloco de comandos a serem executados caso a condição seja falsa]
  end
  • A condição é qualquer expressão lógica que tenha como resultado verdadeiro ou falso.
  • Caso esta condição seja verdadeira, os comandos após o then serão executados.
  • Caso seja falsa, os comandos após o else serão executados.
  • Você delimita esses dois blocos de comando com um begin e um end.

A estrutura de repetição é implementada no PascaL através do comando while

A semântica deste comando pode ser vista no quadro abaixo. 

while [condição] do
   begin
     [grupo de comandos a serem executados enquanto a condição for verdadeira]
   end;
  • condição é uma expressão que deve ter como resultado verdadeiro ou falso.
  • O grupo de comandos será executado enquanto a condição for verdadeira.
Cenário 2 - Cálculo do valor de multa em biblioteca
Você deve calcular o valor da multa para um usuário de uma biblioteca, de acordo com o número de livros em atraso. Deve ser calculado também o valor total das multas e a média de dias de atraso.

Seu problema agora pode ser descrito assim:

Problema

Você deve fazer um programa para calcular o valor da multa para os livro de um determinado usuário, o valor total da soma de todas as multas e a média dos dias de atraso. Você deve ler o código de cada livro, o  número de dias de atraso e se o livro está reservado ou não, até que seja digitado um código de livro negativo (FLAG) para encerrar a leitura do dados. Se o livro não estiver reservado a multa é de R$ 1,00 por dia, caso contrário é de R$ 2,00 por dia. Caso o número de dias de atraso seja superior a 15 dias, é adicionada uma multa extra de 10% sobre o valor total da multa. 

Dados de Entrada

Para cada livro do usuário deve ser informado:

  • Código do livro
  • Número de dias de atraso
  • Informação se o livro está reservado ou não

Processamento

  • Ler repetidamente os dados de entrada
  • Calcular o valor da multa para um livro sabendo que:
    • Se o livro não estiver reservado, a multa é de R$ 1,00 por dia.
    • Se o livro estiver reservado, a multa é de R$ 2,00 por dia.
    • Se o número de dias em atraso for maior que 15, o valor total da multa deve ser acrescido em 10%.
  • Calcular o valor total das multas para todos os livros.
  • Calcular a média dos dias de atraso.
  • Exibir os dados de saída.

Dados de Saída

  • Valor da multa para cada livro.
  • Valor total das multas.
  • Média dos dias de atraso.
Diagrama de Nassi

Um diagrama de Nassi para resolver este problema pode ser visto na figura abaixo:

Para resolver este problema devemos ler os dados para cada livro enquanto não for digitado um código de livro menor que zero. Isso foi feito pois assumimos que o FLAG para encerrar a leitura dos dados é a utilização de um código de livro negativo. O FLAG é utilizado para que o usuário possa entrar com dados de um número indeterminado de livros. Quando ele quiser encerrar a leitura dos dados, basta utilizar o FLAG. 

Para que possamos utilizar o FLAG para interromper a leitura dos dados, antes de iniciar a repetição devemos ler o código do livro. Se o código for menor que zero, nada é feito. Como nenhum livro foi lido, não faz sentido calcular a média de dias de atraso, até porque este calculo resultaria em uma divisão por 0, o que é um erro. Desta forma, o cálculo da média só é realizado caso o número de livros seja maior que zero.

Para cada código de livro, devem ser lidos o número de dias de atraso e um número indicando se o livro está reservado ou não. Para efeito de implementação assumimos que se o usuário entrar com o número 1, indica que o número está reservado, qualquer outro valor indica que o livro não está reservado. O valor da multa é o número de dias multiplicado pelo valor da multa diária. Caso o livro esteja reservado,  o valor da multa diária é R$ 2,00, caso contrário é R$ 1,00.  

Se o número de dias de atraso for maior que 15, o valor da multa deve ser acrescido de 10%. Isto é feito no diagrama de Nassi através do comando multa¬ multa * 1.1. O valor final da multa é então somado ao total das multas, o número de livros é incrementado e o número de dias de atraso é somado ao total de dias de atraso. Repare que estes totais são preenchidos inicialmente com 0 antes de entrar na repetição, para que a soma seja correta.

Após a realização dos cálculos e a impressão da multa para o livro, os dados de um novo livro devem ser lidos. Lê-se então o código do livro. Se não for o FLAG continua-se a ler os dados. Caso o código lido seja um FLAG (menor ou igual a zero), a leitura é interrompida.

Após o fim da leitura de dados, o total das multas deve ser impresso na tela. A média do número de dias de atraso por livro deve ser calculada e impressa na tela, caso o número de livros lidos seja maior que zero. 

Código do programa

Veja na figura abaixo um programa PascaL que implementa o algoritmo mostrado no diagrama de Nassi anterior. 

No código PascaL é necessário declarar todas as variáveis antes de utilizar. Repare que o número de dias, o código do livro e a variável estaReservado foram declaradas como integer, ou seja, só aceitam valores inteiros. O valor da multa, no entanto, foi declarado como real. Isto ocorre pois, se o número de dias for maior que 15, somamos 10% ao valor da multa e isto pode resultar em um valor fracionário.

Uma outra variável definida como real é a média do número de dias de atraso. Isto ocorre pois a média é obtida através de uma divisão, e portanto, pode ser fracionária. Se desejássemos que a média fosse um valor inteiro poderíamos utilizar o operador div ao invés da barra (/).

Neste programa é utilizado o comando write. Este comando imprime o conteúdo entre parênteses na tela mas não cria uma nova linha, ao contrário do comando writeln. Desta forma, o próximo texto ficará na mesma linha. Veja na coluna da direita da figura abaixo o resultado dos comandos da coluna da esquerda caso o valor de codLivro for 123 e o valor da multa for 4. 

Código Resultado Produzido
write('Livro: ', codLivro);
writeln(' Valor da multa: ', multa);
Livro: 123   Valor da multa: R$ 4
Cenário 3 - Tabela de valor de multas
Fazer uma tabela com o valor da multa para números de dias de atraso variando entre 10 e 20, o livro estando reservado ou não. 

Seu problema agora pode ser descrito assim:

Fazer uma tabela com o valor de multas para atrasos entre 10 e 20 dias, estando o livro reservado ou não. As duas primeiras linhas da tabela podem ser vistas na figura abaixo.

# dias de atraso Multa - Livro reservado Multa - Livro não reservado
10 20 10
11 22 11

Dados de Entrada

  • Não tem.

Processamento

  • Para número de dias entre 10 e 20, calcular o valor da multa para livros reservados e não reservados de acordo com as seguintes regras:
    • Se o livro não estiver reservado, a multa é de R$ 1,00 por dia.
    • Se o livro estiver reservado, a multa é de R$ 2,00 por dia.
    • Se o número de dias em atraso for maior que 15, o valor total da multa deve ser acrescido em 10%.
  • Exibir os dados de saída.

Dados de Saída

  • Tabela como valor da multa para livros reservados e não reservados variando-se o número de dias entre 10 e 20.


Algoritmo

Para resolver este problema podemos utilizar parte do código utilizado no problema anterior. Veja no entanto que o cálculo do valor da multa terá de ser realizado 20 vezes, 10 para livros reservados e 10 para livros não reservados. Para evitar a necessidade de replicar todo o código de cálculo do valor da multa podemos utilizar um módulo que realize este cálculo. Um módulo é um grupo de comandos, constituindo um trecho de algoritmo com uma função bem definida e o mais independente possível em relação ao resto do algoritmo. 

Desta forma, ao elaborar um algoritmo para calcular a tabela de multas, devemos desenvolver um módulo que calcule o valor da multa. Este módulo tem que saber apenas o número de dias de atraso e se o livro está reservado ou não. Dizemos que os dados que o módulo recebe para sua execução são parâmetros. Existem basicamente dois tipo de módulos, procedimentos e funções. A diferença básica entre estes dois tipos é que a função retorna um valor associado ao seu nome no fim de sua execução, e o procedimento não. Para resolver nosso problema devemos então desenvolver uma função com a seguinte estrutura:

Dados de Entrada (Parâmetros)

  • Número de dias de atraso
  • Informação se o livro está reservado ou não

Processamento

  • Calcular o valor da multa para livros reservados e não reservados de acordo com as seguintes regras:
    • Se o livro não estiver reservado, a multa é de R$ 1,00 por dia.
    • Se o livro estiver reservado, a multa é de R$ 2,00 por dia.
    • Se o número de dias em atraso for maior que 15, o valor total da multa deve ser acrescido em 10%.
  • Retornar o valor de saída no nome da função

Dado de Saída (Valor de retorno)

  • Valor da multa.

Veja na figura abaixo o diagrama de Nassi do programa que utiliza esta função:

E na figura abaixo veja o diagrama de Nassi para a função calculaValorMulta:

Código do programa

Na figura abaixo você pode visualizar a implementação do algoritmo para fazer a tabela de multas. Repare na implementação da função calculaValorMulta.

O formato geral de uma função é o seguinte:

function [nome da função] ([lista de parâmetros]): [tipo do valor a ser retornado];
   [declarações de variáveis]
   begin
       [comandos da função]
      [nome da funcao] := [valor a ser retornado]
    end;
  • nome da função: Deve indicar o que a função faz. Retorna o valor calculado.
  • lista de parâmetros: parâmetros, com seu tipo especificado, separados por ponto e virgula (;). Uma função pode não ter parâmetros
  • tipo do valor a ser retornado: Por exemplo integer, quando a função retornar um inteiro.
  • declarações de variáveis: Como em um programa, as declarações de variáveis devem ficar antes do begin.
  • comandos da função: Comandos utilizados para calcular o valor a ser retornado pela função.
  • O valor a ser retornado pela função deve ser atribuído ao nome desta ao fim do processamento.

Para utilizar a função basta realizar uma chamada passando como parâmetros os valores desejados, conforme o exemplo abaixo.

 multaReservado := calculaValorMulta(numDias, 1);

O resultado da execução deste programa no PascaL pode ser visto na figura abaixo:

Cenário 4 - Programa para desenhar quadriláteros.
Faça um programa que produza uma figura semelhante à exibida abaixo, sem muita replicação de comandos:

Seu problema agora pode ser descrito assim:

Problema

Você deve produzir um programa que desenhe uma figura semelhante à figura acima. Como você pode perceber, a figura é toda formada de retângulos e quadrados (são 5 quadriláteros). Você pode então utilizar o programa para desenhar quadriláteros feito anteriormente. No entanto, para não ter que repetir todos os comandos 5 vezes, você deverá utilizar conceitos de modularização. A modularização consiste em isolar partes do código em procedimentos ou funções para prover, entre outros, reuso e clareza do código. Neste problema podemos fazer um procedimento que desenha um quadrilátero tendo como entrada o tamanho do lado menor e a indicação de que se trata de um quadrado ou um retângulo. Desta forma, para desenhar a figura acima, basta posicionar o robô e executar o procedimento 5 vezes.

Dados de Entrada

  • Não tem.

Processamento

  • Posicionar o robô.
  • Desenhar retângulo maior.
  • Posicionar o robô.
  • Desenhar quadrado da esquerda.
  • Posicionar o robô.
  • Desenhar retângulo do centro da figura.
  • Posicionar o robô.
  • Desenhar quadrado da direita.
  • Posicionar o robô.
  • Desenhar retângulo pequeno na parte superior da figura.

Dados de Saída

  • Figura semelhante à apresentada acima.
Algoritmo

Como você pode notar, a figura a ser desenhada neste problema é constituída apenas de quadrados e retângulos. Desta forma, podemos utilizar parte do código do programa para desenhar quadrados ou retângulos visto no cenário 1. Para que não seja necessário repetir todo o código para desenhar um quadrilátero, podemos implementar um procedimento que desenhe um quadrado ou um retângulo com um tamanho de lado menor variável. Para isso, faremos um procedimento desenhaQuadrilatero, que recebe como parâmetros o tamanho do lado menor do quadrilátero e o tipo de desenho (1 para quadrado e 2 para retângulo).

O diagrama de Nassi para o procedimento desenhaQuadrilatero encontra-se na figura abaixo:

Tendo este procedimento, precisamos também de um código que posicione o robô na tela e execute o procedimento com os parâmetros corretos. Na figura abaixo você pode ver um diagrama de Nassi para o programa principal:

Código do programa

Veja na figura abaixo o código do programa que implementa os diagramas de Nassi mostrados anteriormente.

Este código utiliza um procedimento (desenhaQuadrilatero) para executar uma parte do código que é repetida várias vezes. A estrutura geral de um procedimento é apresentada abaixo:

procedure [nome do procedimento] ([lista de parâmetros]);
  [declarações de variáveis]
  begin
     [comandos]
   end;
  • nome do procedimento: Deve indicar o que o procedimento faz.

  • lista de parâmetros: parâmetros, com seu tipo especificado, separados por ponto e virgula (;). A existência de  parâmetros não é obrigatória.

  • declarações de variáveis: Como em um programa, as declarações de variáveis devem ficar antes do begin.
  • comandos: Comandos utilizados na execução do procedimento.

Para se executar o procedimento basta inserir uma chamada no bloco de comandos do programa. Um exemplo de chamada a procedimento pode ser visto abaixo:

desenharQuadrilatero(200, 2);

Os parâmetros dos procedimentos, assim como das funções, devem ser colocados entre parênteses, separados por virgulas, na ordem em que aparecem na declaração do procedimento. No exemplo acima, o primeiro parâmetro é o tamanho do lado menor e o segundo é o tipo do quadrilátero (quadrado ou retângulo).

 Bibliografia
  • ALGORITMOS E ESTRUTURAS DE DADOS - Ângelo de Moura Guimarães, Newton Alberto Lages 1994. 216 páginas Livros Técnicos e Científicos S.A
  • ALGORITMOS ESTRUTURADOS - Harry Farrer, Christiano Gonçalves Becker, Eduardo Chaves Faria, Helton Fabio de Matos, Marcos Augusto dos Santos, Miriam Lourenço Maia 1989. Terceira Edição, 1999, 284 páginas. Coleção Programação Estruturada de Computadores. LTC - Livros Técnicos e Científicos Editora S.A.
  • PASCAL ESTRUTURADO - Harry Farrer, Christiano Gonçalves Becker, Eduardo Chaves Faria, Frederico Ferreira Campos, Filho, Helton Fábio Matos, Marcos Augusto dos Santos, Miriam Lourenço Maia. Terceira Edição,1999, 279 páginas. Coleção Programação Estruturada de Computadores LTC - Livors Técnicos e Científicos Editora S.A.
  • PROJETO DE ALGORITMOS com implementações em Pascal e C - Nívio Ziviani, Editora Pioneira, 1993.