A maior rede de estudos do Brasil

Grátis
60 pág.
Algoritmos e Estrutura de Dados (Págs.60)

Pré-visualização | Página 10 de 17

em outras é denominado refinamento sucessivo.
O processo de se programar um computador torna-se bastante simples quando aplicado algum método 
para utilização das sub-rotinas. Um dos métodos mais utilizados na programação estruturada é o método 
TOP-DOWN (de cima para baixo) que se caracteriza por:
- Antes de iniciar a construção do programa, o programador deverá ter em mente as tarefas principais 
que esse programa deverá executar. Não é necessário saber como funcionarão, somente saber quais são.
- Deve-se ter em mente como será o funcionamento do programa principal, que controlará todas as 
tarefas distribuídas em sub-rotinas.
- Uma vez definido o programa principal, detalha-se então as sub-rotinas. São definidos vários 
algoritmos, um para cada rotina em separado, para que se tenha uma visão do que será executado em 
cada módulo de programa. Isso também facilita a manutenção (alterações posteriores necessárias).
O método Top-Down pode ser graficamente visualizado abaixo:
Procedimentos x Funções
Existem dois tipos de sub-rotinas a serem utilizados na programação, conhecidos como procedimentos 
(procedures) e funções (functions). As diferenças entre eles são apresentadas a seguir:
_________________________________________________________________________________________
Página - 36 
 Algoritmos e Estrutura de Dados I  
 
Procedimentos
São, na realidade, trechos de programas independentes mas que, para serem processados, devem ser 
solicitados pelo programa principal. Exemplo:
procedimento NomeProcedimento ( lista de parâmetros ) 
início
 <comandos>;
fim
 
A lista de parâmetros, definida no cabeçalho do procedimento, produz a comunicação de dados entre o 
procedimento e quem o chamou. O procedimento pode ter de 0 a vários parâmetros, sendo que também 
pode ter vários parâmetros de entrada, de saída ou ambos. Exemplos:
 ...
 limpa_tela // sem nenhum parâmetro
 ...
 limpa_tela(01,01,24,80) // com parâmetros de entrada somente
 ... 
 Fatorial (5; retorno) // 5 é parâmetro de entrada e retorno é parâmetro de saída
 escrever retorno
Funções
É um caso particular de procedimentos. A diferença porém, é que apenas uma informação é retornada ao 
programa que a chamou, ou seja, os parâmetros, se existentes, são todos de entrada e obrigatoriamente 
há uma e somente uma saída ou retorno para o programa principal. 
Algumas linguagens obrigam que a chamada de função nunca seja sozinha, como os procedimentos, mas 
sim fazendo parte de um comando de atribuição ou de uma expressão.
 
A sua declaração segue o seguinte formato:
 
Funcao NomeFunção ( lista de parâmetros) 
inicio
 <comandos>
 retornar ( parâmetro ) 
fim
 
Exemplos do uso de funções:
Variaveis
 numerico A,B
 
Funcao Soma (A, B)
Variaveis
 numerico x
inicio
 x := A + B 
 retornar(x) 
Fim
Início
 Ler A
 Ler B
 escrever "Soma de A e B:", Soma(A,B)
Fim
_________________________________________________________________________________________
Página - 37 
 Algoritmos e Estrutura de Dados I  
 
As rotinas podem ficar no início de um programa, no final ou ainda em um arquivo separado, 
dependendo da linguagem utilizada.
Uma função pode ainda retornar um valor verdadeiro (v) ou Falso (f).
Escopo de variável
Programa Principal:
Exercícios
1) Criar um algoritmo CALCULADORA que apresente um menu de seleções no programa principal. Esse 
menu deverá dar ao usuário a possibilidade de escolher uma entre as 4 operações aritméticas. Após a 
entrada de dois números deve ser escolhida a operação desejada e deve ser exibido o resultado.
2) Criar um algoritmo que leia um valor. A seguir, faça duas rotinas, uma para calcular o fatorial do valor 
lido e a outra que retorna quantos divisores o valor possui. No programa principal escreva o fatorial e 
uma mensagem dizendo se o valor lido é primo ou não.
_________________________________________________________________________________________
A,B
Rotina 1:
Rotina 2:
A,X
 Rotina 1.1:
Y
Nesse caso, as rotinas 1, 1.1 e 2 "enxergam" as variáveis A e B, 
porém, dentro da Rotina 1, a variável A é definida novamente. 
Dessa forma, o novo valor da variável será válido para a rotina 
1.1.
As variáveis X e Y não serão visualizadas pelo programa 
principal.
A variável X presente na rotina 2 não interfere na variável X que 
está na rotina 1 (são independentes).
X
Página - 38 
 Algoritmos e Estrutura de Dados I  
 
Tipos de dados Heterogêneos – REGISTROS
O registro consiste em trabalhar vários dados de tipos diferentes (campos) em uma mesma estrutura. Por 
essa razão o dado é considerado heterogêneo.
Considere um exercício de aprendizagem onde deve ser informado o nome de um aluno e suas 4 notas. 
Isso obrigaria a utilização de 2 vetores, um contendo os nomes (tipo caractere) e outro contendo as notas 
(valores tipo real). Imagine como seria muito mais fácil agrupar os dois tipos de dados em uma mesma 
estrutura. É exatamente isto que se consegue fazer com a utilização de registros.
A figura abaixo mostra um exemplo de layout de um registro com as suas informações, as quais recebem 
o nome de campos.
A estrutura estaria no seguinte formato:
NOME C 35 (Caractere de tamanho 35)
NOTA1 N 
NOTA2 N
NOTA3 N
NOTA4 N
Nos algoritmos, podemos declarar na seguinte forma
programa LEITURA
tipo
 cad_aluno = registro
 Nome: caractere
 Nota1: real
 Nota2: real
 Nota3: real
 Nota4: real
 fim_registro
var
 Aluno: cad_aluno
início
 ler aluno.Nome
 ler aluno.Nota1
 ler aluno.Nota2
 ler aluno.Nota3
 ler aluno.Nota4
 escrever aluno.Nota1
fim
_________________________________________________________________________________________
Página - 39 
Cadastro de Notas Escolares
Nome......: _____________
Nota 1....: _____
Nota 2....: _____
Nota 3....: _____
Nota 4....: _____
 Algoritmos e Estrutura de Dados I  
 
Registros de Conjuntos
Se for necessário trabalhar uma matriz ou vetor dentro de um registro, isso é possível? Considere, 
utilizando o exemplo anterior, que se deseja separar as notas por bimestres, tendo quatro bimestres em 
um ano e uma nota em cada bimestre (poderiam ser mais notas). A figura abaixo mostra o layout para 
esta proposta:
Cadastro de notas escolares
Nome................:
 
Notas
1 2 3 4
Nos algoritmos, essa estrutura seria apresentada da seguinte forma:
programa LEITURA
tipo
 bimestre : conjunto[1..4] de real
 cad_aluno = registro
 Nome: caractere
Nota: conjunto [1...4] de real (Matriz Numérico Nota[4])
 fim_registro
var
 Aluno: cad_aluno
 i: inteiro
início
 ler aluno.Nome
 para i de 1 até 4
 ler aluno.Nota[i]
 próximo
fim
Exercícios
1) Faça um algoritmo que leia 3 notas bimestrais para 10 alunos (apresentando no final os dados de cada 
aluno classificados por nome - opcional) .
_________________________________________________________________________________________
Página - 40 
 Algoritmos e Estrutura de Dados I  
 
Exemplo do uso de registros em pascal
Program Teste; //Nome do programa
uses crt; //Biblioteca onde tem rotinas de entrada/saida de vídeo
var
 a:integer; // o mesmo que numerico a
begin // o mesmo que inicio
 clrscr; // limpa a tela
 read(a); // o mesmo que ler a
end.
Program Leitura; 
uses crt;
type //tudo o que virão nas linhas a seguir são tipos
 cad_aluno = record //cria o tipo cad_aluno, que é um registro
 nome: string[20]; //poderia ser nome:char. É o mesmo que caracter nome 
 Nota: array [1..4] of real; // o mesmo que vetor numerico Nota[4]
 end; // Fim do registro Cad_aluno
var
 aluno: cad_aluno; //variável aluno terá o formato da estrutura Cad_aluno
 i: integer; //é o mesmo que numerico i
begin
 read (aluno.nome); //lê o campo nome da estrutura de dados (registro) aluno