Você está na página 1de 14

APOSTILA – LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO

Prof:. Elzi Gil - 2º TDS – 2007 PARTE – IV

- Programção Estruturada ou Modular

As Sub-Rotinas

Quando programa complexos são resolvidos, estes exigem algoritmos complexos. Porém sempre
será possível dividir problemas maiores em problemas menores. Desta forma cada pedaço menor
tem um algoritmo mais simples, e esse trecho menor é chamado de sub-rotina. Quando uma sub-
rotina é chamada por um programa principal, ela é executada e. ao seu término, o controle de
processamento retorna automaticamente para a primeira linha de instrução, após a luna que
efetuou a sua chamada.

Definição

Uma das técnicas mais utilizadas e tida como vantajosa na confecção de programas grandes é a
modularização. Consiste em dividir o programa em diversos módulos ou subprogramas, de certa
forma dependentes uns dos outros. Existe um módulo que é o principal, a partir do qual são
chamados os outros módulos, esse módulo recebe o nome de programa principal, enquanto que os
outros são chamados de subprogramas. No sistema Turbo Pascal, existem dois tipos de
subprogramas, a saber:
- Procedures (procedimentos)
- Functions (funções)

A procedure é como se fosse um programa. Ela tem a estrutura praticamente igual a de um


programa, como veremos mais adiante. A procedure deve ser ativada (chamada) pelo programa
principal ou por uma outra procedure, ou até por ela mesma.

3.1 –Utilização de Rotinas Embutidas – as Units


As Units são um conjunto de rotinas prontas para serem utilizadas pelo programador. É uma
biblioteca de funções, procedimentos e constantes.

Ex: CRT – Esta unidade é a mais utilizada no ambiente Turbo Pascal. Por esta razão, ela possui a
maior parte das rotinas e variáveis de geração de som, controle de vídeo e teclado, como:

 limpeza de tela – clrscr


 posicionamento do cursor em um determinado ponto da tela – gotoxy(coluna,linha)
 Interrupção do processamento esperando que seja pressionada qualquer tecla – readley

Exemplo da utilização destas funções:

program EXEMPLO;
uses CRT;
begin
clrscr;
gotoxy(10,5); write(‘Teste ............’);
gotoxy(10,8); write(‘Tecle algo para finalizar’);
readkey;
End.
40486,8722222222 Página 1/14 Data : 04/05/06
3.2 - Declaração de procedures

Uma procedure tem praticamente a mesma estrutura de um programa, ou seja, ela contém um
cabeçalho, área de declarações e o corpo da procedure. Na área de declarações, podemos ter as
seguintes sub-áreas:
Label - Const - Type - Var - Procedures - Functions.

Devemos salientar que tudo que for declarado dentro das sub-áreas só será reconhecido dentro da
procedure. Mais para frente, voltaremos a falar sobre isso.

Exemplo:

program EXEMPLO_1; (* cabeçalho do programa *)


uses CRT;

procedure LINHA; (* cabeçalho da procedure linha *)


var I : integer; (* subárea Var da procedure linha *)
begin (* corpo da procedure linha *)
for I:=1 to 80 do write('-');
end;
begin (* corpo do programa principal *)
clrscr;
LINHA; (* ativação da procedure linha *)
writeln('teste');
LINHA; (* ativação da procedure linha, novamente *)
readln;
end.

O programa acima, faz o seguinte:

1-) Apaga a tela e coloca o cursor em 1,1


2-) Ativa a procedure linha
3-) Escreve a palavra teste
4-) Ativa novamente a procedure linha.

Por sua vez, a procedure LINHA traça uma linha a partir da posição atual do cursor. Uma
observação importantíssima a ser feita neste instante, é que a variável inteira I, definida dentro da
procedure LINHA só existe dentro da procedure, isto significa que toda vez que ativamos a
procedure LINHA, a variável 'I' é criada e toda vez que saímos da procedure LINHA, ela é
destruída.

Exemplo 1 : Desenvolver um programa calculadora que apresente um menu de seleções no


programa principal. Esse menu deve dar ao usuário a possibilidade de escolher uma entre duas
operações aritméticas, soma e subtração. Escolhida a opção desejada, deve ser solicitada a entrada
de dois números, e processada a operação, deve ser exibida o resultado.
Algoritmo:
Programa Principal
1 – Apresentar um menu de seleção com três opções;
1 – Adição;
2 – Subtração;
3 - Finalizar programa;
2– Ao ser selecionado um valor, a rotina correspondente deve ser executada;
3– Ao escolher a opção 3, o programa deve ser encerrado.
40486,8722222222 Página 2/14 Data : 04/05/06
Rotina 1 – Adição
1 – Ler dois valores, no caso as variáveis A e B;
2 – Efetuar a soma das variáveis A e B, implicando o seu resultado na variável X;
3– Apresentar o valor da variável X;
4 – Voltar ao programa principal.

Rotina 2 – Subtração
1 – Ler dois valores, no caso as variáveis A e B;
2 – Efetuar a subtração das variáveis A e B, implicando o seu resultado na variável X;
3– Apresentar o valor da variável X;
4 – Voltar ao programa principal.

Programa Pascal;
program CALCULADORA;
uses CRT;
var OPCAO : char;

procedure ROT_ADICAO; {inicio da sub-rotina para adição}


var X,A,B : real;
TECLA : char;
begin
clrscr;
gotoxy(32,1); write(‘Rotina de Adição’);
gotoxy(5,6); write(‘Entre um valor para A = ‘); readln(A);
gotoxy(5,8); write(‘Entre um valor para B = ‘); readln(B);
X := A+B;
gotoxy(5,10); write(‘O resultado de equivale a = ‘, X:6:2)
gotoxy(25,24); write(‘Tecle algo para voltar ao menu’);
TECLA := readkey;
end; { final da sub-rotina para adição}

procedure ROT_SUBTRACAO; {inicio da sub-rotina para subtração}


var X,A,B : real;
TECLA : char;
begin
clrscr;
gotoxy(32,1); write(‘Rotina de Subtracao’);
gotoxy(5,6); write(‘Entre um valor para A = ‘);readln(A);
gotoxy(5,7); write(‘Entre um valor para B = ‘);readln(B);
X := A-B;
gotoxy(5,10); write(‘O resultado de equivale a = ‘, X:6:2)
gotoxy(25,24); write(‘Tecle algo para voltar ao menu’);
TECLA := readkey;
end; { final da sub-rotina para subtração}
{Programa Principal}
begin
OPCAO := ‘0’;
while (OPCAO <> ‘3’) do
begin
clrscr;
gotoxy(33, 1); write(‘Menu Principal’);
gotoxy(28, 6); write(‘1 ................Soma’);
gotoxy(28, 8); write(‘2 .........Subtracao’);

40486,8722222222 Página 3/14 Data : 04/05/06


gotoxy(28,10); write(‘3 ..........Finalizar’);
gotoxy(28,12); write(‘Escolha uma opcao : ‘);
readln(OPCAO);
if (OPCAO = ‘1’) then
ROT_ADICAO;
if (OPCAO = ‘2’) then
ROT_SUBTRACAO;
end;
end.

3.3 – Estrutura de Controle com Múltipla Escolha

No exemplo anterior foi selecionado as sub-rotinas com a instrução if ...then. Essa rotina pode ser
simplificada com a instrução case ...of.

Sintaxe:

case <variável> of
<opção1> : <operação1>;
<opção2> : <operação2>;
<opçãoN> : <operaçãoN>;
else
<operação>;
end;

ou

case <variável> of
<opção1> : begin
<operação1.1>;
<operação1.2>;
<operação1.N>;
end;
<opção2> : begin
<operação2.1>;
<operação2.2>;
<operação2.N>;
end;
<opçãoN> : begin
<operaçãoN.1>;
<operaçãoN.2>;
<operaçãoN.N>;
end;

else
<operação>;
end;

em que:

<variável> - o nome da variável a ser controlada na decisão


< opção> - o conteúdo da variável a ser verificado
< operação> - a execução de uma instrução Pascal ou de uma rotina.
40486,8722222222 Página 4/14 Data : 04/05/06
OBS: A instrução else e qualquer operação a ela subordinada são opcionais.

Exemplo: desenvolver a rotina do programa calculadora utilizando a instrução case ...of


{Programa Principal}
begin
OPCAO := ‘0’;
while (OPCAO <> ‘3’) do
begin
clrscr;
gotoxy(33, 1); write(‘Menu Principal’);
gotoxy(28, 6); write(‘1 ................Soma’);
gotoxy(28, 8); write(‘2 .........Subtracao’);
gotoxy(28,10); write(‘3 ..........Finalizar’);
gotoxy(28,12); write(‘Escolha uma opcao : ‘);
readln(OPCAO);
case OPCAO of
‘1’ : ROT_ADICAO;
‘2’ : ROT_SUBTRACAO;
‘3’ : begin
gotoxy(28,12); write(‘Programa sera finalizado, tecle algo’);
readkey;
end;
else
gotoxy(27,24); writeln(‘Opcao invalida – tecle algo’);
readkey;
end;
end;
end.

3.4 – Variáveis Locais e Globais


Variáveis Globais – uma variável é global, quando é declarada no inicio de um programa escrito
em Pascal, podendo ser utilizada por qualquer sub-rotina subordinada. Neste caso a variável passa
a ser visível a todas as sub-rotinas.
Variáveis Locais - uma variável é local, quando é declarada dentro de uma sub-rotina e é somente
válida dentro da sub-rotina à qual está declarada. Desta forma o programa principal e as outras
sub-rotinas não podem fazer uso destas variáveis.
Exemplo : Desenvolver programa para entrar com valores para as variáveis A e B, criar uma sub-
rotina para colocar os valores destas variáveis em ordem crescente.
Nota: será declarada as variáveis A e B globais, e a variável AUX utilizada apenas na rotina para
troca, será declarada local.

program TROCA;
var A,B : integer;
procedure TROCA;
var
AUX: integer;
begin
AUX := A;
A := B;
B := AUX;
end;
40486,8722222222 Página 5/14 Data : 04/05/06
begin { rotina principal}
write(‘Informe A = ‘); readln(A};
write(‘Informe B = ‘); readln(B);
if (A > B) then
TROCA;
writeln(‘A = ‘,A);
writeln(‘B = ‘,B);
end;

Exercício de Fixação

A) Desenvolva programa para calcular o quadrado de um numero qualquer. Desenvolver sub-


rotina para cálculo.

B) Desenvolver programa para calculo da tabuada de um numero qualquer. Desenvolver sub-


rotina para calculo da tabuada. O programa deve permitir que se informe número para calculo
enquanto o usuário desejar.

3.5 – Refinamento Sucessivo


O refinamento sucessivo é uma técnica que possibilita dividir uma sub-rotina em outras sub-
rotinas. Deve ser aplicado com muito critério para que o programa a ser construído não se torne
desestruturado e difícil de ser compreendido por você e por outros que venham a dar manutenção.

Importante : Todas as sub-rotinas devem ser definida antes das sub-rotinas a quem está
subordinada.

Exemplo : para o programa calculadora podemos desmembrar a entrada dos valores para cálculo,
e a saída, com o resultado do cálculo.

program CALCULADORA;
uses crt;
var OPCAO : char; {variáveis globais}
X,A,B : real;
procedure ENTRADA; {sub-rotina para entrada dos dados}
begin
gotoxy(5,6); write(‘Entre um valor para A = ‘); readln(A);
gotoxy(5,8); write(‘Entre um valor para B = ‘); readln(B);
end;
procedure SAIDA; {sub-rotina para saída dos dados}
begin
gotoxy(5,10); write(‘O resultado de equivale a = ‘, X:6:2);
gotoxy(25,24); write(‘Tecle algo para voltar ao menu’);
readkey;
end;
procedure ROT_ADICAO; {sub-rotina para adição}
begin
clrscr;
gotoxy(32,1); write(‘Rotina de Adição’);
ENTRADA;
X := A+B;
SAIDA;
end;

40486,8722222222 Página 6/14 Data : 04/05/06


procedure ROT_SUBTRACAO; {sub-rotina para subtração}
begin
clrscr;
gotoxy(32,1); write(‘Rotina de Subtracao’);
ENTRADA;
X := A-B;
SAIDA;
end;
{Programa Principal}
begin
OPCAO := ‘0’;
while (OPCAO <> ‘3’) do
begin
clrscr;
gotoxy(33, 1); write(‘Menu Principal’);
gotoxy(28, 6); write(‘1 ................Soma’);
gotoxy(28, 8); write(‘2 .........Subtracao’);
gotoxy(28,10); write(‘3 ..........Finalizar’);
gotoxy(28,12); write(‘Escolha uma opcao : ‘);
readln(OPCAO);
case OPCAO of
‘1’ : ROT_ADICAO;
‘2’ : ROT_SUBTRACAO;
‘3’ : begin
gotoxy(28,12); write(‘Programa sera finalizado, tecle algo’);
readkey;
end;
else
gotoxy(27,24); writeln(‘Opcao invalida – tecle algo’);
readkey;
end;
end;
end.

EXERCÍCIO PARA CASA

Com base nas técnicas de programação apresentadas neste capitulo, desenvolva a solução para os
seguintes exercícios:

Nota - Defina a estrutura registro e matriz apropriada e construa os programa por meio de um
menu de opção e sub-rotinas.

A) Desenvolva um programa para entrar com o nome, preço unitário e quantidade em


estoque para 15 produtos. Desenvolver as seguintes rotinas:

 Cadastramento dos produtos;


 Pesquisa seqüencial, conforme nome do aluno informado.
 Listar os produtos cadastrados ordenado pelo nome do produto em ordem crescente,
com os respectivos valores em estoque e ao final, apresentar o valor total do estoque.
(usar a técnica do refinamento sucessivo para colocar em ordem crescente)

40486,8722222222 Página 7/14 Data : 04/05/06


B) Desenvolver um programa para entrar com o nome e notas bimestrais de 20 alunos.
Desenvolva as seguintes rotinas:

 Cadastramento dos alunos, sendo que para cada aluno informado, calcular o valor da
média.
 Desenvolver pesquisa binária conforme nome do aluno informado, e repetir a pesquisa
enquanto usuário desejar. (para colocar em ordem crescente utilizar técnica do
refinamento sucessivo)
 Listar os alunos aprovados, com média maior ou igual a 5,00.
 Listar os alunos reprovados, com média menor que 3,00.
 Listar os alunos em exame, com média maior ou igual a 3,00 e menor que 5,00.

C) Desenvolver um programa de cadastro para uma pequena agenda de endereços, com o


nome, endereço e telefone e idade. Desenvolva as seguintes rotinas:

 O cadastramento das informações;


 A pesquisa dos nomes pelo método binário;
 Alteração de registro cadastrado com erro (utilizar a pesquisa por nome –
método seqüencial);
 Listar os dados da agenda, conforme cidade informada.

3.6 - Passagem de Parâmetros

Os parâmetros têm por finalidade servir como um ponto de comunicação bidirecional entre uma
sub-rotina e o programa principal, e com uma outra sub-rotina hierarquicamente de nível mais
alto. Desta forma é possível passar valores de uma sub-rotina ou rotina chamadora à outra sub-
rotina e vice-versa.

3.6.1 – Parâmetros Formais e Reais


Serão considerados parâmetros Formais, quando forem declarados por meio de variáveis
juntamente com, a identificação do nome da sub-rotina, os quais serão tratados exatamente da
mesma forma que são tratadas as variáveis globais e locais.

Serão consideradas parâmetros Reais quando estes substituírem os parâmetros Formais, quando
da utilização da sub-rotina por um programa principal ou por uma rotina chamadora.

Exemplo: Programa para efetuar a soma de dois valores.

program EXEMPLO;
uses CRT;
var I,J :integer; {variáveis Globais}

procedure SOMA(X,Y : integer); { parâmetros FORMAIS X e Y)


begin
writeln(X+Y);
end;

40486,8722222222 Página 8/14 Data : 04/05/06


{ rotina principal }
begin
ClrScr;
SOMA(3,4); { passagem de parâmetro REAIS utilizando valores constantes }
I:=45;
Y:=34;
SOMA(I,Y); { passagem de parâmetro REAIS utilizando variáveis }
end.

Como podemos reparar, a procedure SOMA depende de dois parâmetros inteiros, e ao ativarmos
esta procedure, devemos fornecer os dois parâmetros. Esses parâmetros podem ser dois números
inteiros ou duas variáveis inteiras, obviamente deve haver compatibilidade entre os parâmetros
passados.

3.6.2 – Passagem de Parâmetros por Valor e por Referência

A passagem de parâmetro por VALOR caracteriza-se por não alterar o valor do parâmetro REAL
quando o parâmetro FORMAL é manipulado dentro da sub-rotina. Podemos observar a passagem
de parâmetro por VALOR no exemplo anterior, onde a operação executada internamente na rotina
SOMA, com os parâmetros formais X e Y, não altera os valores dos parâmetros reais I e Y.

A passagem de parâmetro por REFERÊNCAI caracteriza-se pela ocorrência da alteração do valor


do parâmetro REAL, quando o parâmetro FORMAL é manipulado dentro a sub-rotina. Será
utilizado a passagem de parâmetro por referência quando houver necessidade da rotina
chamadora receber uma resposta da rotina subordinada.

Exemplo: Efetuar a soma de dois valores.

program EXEMPLO;
uses CRT;
var I,J,RETORNO :integer;

procedure SOMA(X,Y : integer; var Z : integer); { parâmetros FORMAIS X e Y)


begin
Z := X+Y; Passagem de parâmetro por referência
end;
Passagem de parâmetro por valor
{ rotina principal }
begin
ClrScr;
SOMA(3,4,RETORNO); { utilizado a variável retorno, para trazer o calculo da sub-
rotina}
writeln(‘Soma = ‘, RETORNO);
I:=45;
Y:=34;
SOMA(I,Y,RETORNO);
writeln(‘Soma = ‘, RETORNO);
end.

Da forma como foi declarada a procedure SOMA, quando a ativamos com a seqüência
Soma(3,4,RETORNO), ocorrem as seguintes passagens:

40486,8722222222 Página 9/14 Data : 04/05/06


- O número 3 é passado para X
- O número 4 é passado para Y
- O parâmetro Z é passado para RETORNO.

Como podemos ver, houve passagem de dados do programa chamador para a procedure e da
procedure para o programa chamador.

Exercícios para Casa

Desenvolva os programas identificados em seguida e suas sub-rotinas do tipo procedures. Cada


problema deve ser analisado, pois você deve detectar se será usados passagem de parâmetro por
valor ou por referência.

A) Efetuara um programa que possua uma sub-rotina que efetue e permita apresentar no
programa principal o somatório dos N primeiros números inteiros, definidos por um operador (
1+2+3+4+....N).

B) Ler duas matrizes A e B do tipo vetor com trinta elementos cada. Construir uma matriz C,
sendo esta a junção das duas outras matrizes. Neste exercício, deve ser criado uma sub-rotina
para cada tarefa, ou seja, duas para leituras das matrizes A e B, uma para a junção (soma) e a
última para apresentar os dados da matriz C. O programa principal deve chamar as rotinas
definidas.

3.7 – Função - Functions.

Definição

Uma Função, assim como uma Procedure, é um bloco de programa, ao qual são válidados todas as
regras já estudadas tanto de programação como de definição de uma sub-rotina, seus parâmetros e
a utilização de variáveis locais e globais. A diferença é que a Função sempre retorna um valor, e o
identificador de uma função assume o valor de retorno da Função. Uma função deve sempre
retornar um valor e em Turbo Pascal, este valor é retornado no nome da função.

Declaração de funções

A declaração de uma função é muito parecida com de uma procedure que por sua vez é parecida
com a de um programa, senão vejamos:

function <Nome_da_função> [(parâmetros)] : <Tipo_da_função>;


var
<variáveis>;
begin Tipo do valor a ser retornado no nome da
Opcional função
<instruções>;
end;

A formação do nome da função deve seguir as mesmas regras para formação de variáveis em
Turbo Pascal. Dentro dos parênteses devemos declarar os parâmetros e seus respectivos tipos dos
quais a função depende.

Nota: O tipo de valor retornado pela função sempre deve ser declarado.

40486,8722222222 Página 10/14 Data : 04/05/06


Na área de <instruções>, podemos declarar labels, constantes, variáveis e até mesmo Procedures e
Functions. Devemos lembrar que tais elementos só poderão ser utilizados dentro do corpo da
função, pois são locais a ela. Abaixo, temos o exemplo de uma função.

As sub-rotinas do tipo Procedure por meio de passagem de parâmetro por referência permitem que
sejam retornados valores à rotina chamadora. Mas esta tarefa pode ser simplificada com a
utilização do tipo Function.
Exemplo 1: Desenvolver programa utilizando sub-rotina do tipo Procedure e Function, para
cálculo da fatorial de um numero qualquer.

UTILIZANDO A PROCEDURE

Program PROG_FATORIAL;
uses CRT;
var
N : integer;
RETORNO : real;
procedure FATORIAL(NUM : integer; var FAT: Real);
var
I : Integer;
begin
FAT := 1;
For I := 1 to NUM do
FAT := FAT * I;
end;
begin (* programa principal*)
ClrScr;
write('Informe número para calculo da fatorial = ');
readln(N);
writeln;
FATORIAL(N,RETORNO);
writeln('Fatorial de n = ',RETORNO:10:0);
readkey;
end.

UTILIZANDO A FUNCTION

Program PROG_FATORIAL;
uses CRT;
label inicio,fim;
var
N : Integer;

Function FATORIAL(NUM : integer) : Real;


var I : Integer;
Fat : Real;
begin
FAT := 1;
For I := 1 to NUM do
FAT := FAT * I;
FATORIAL := FAT;
end;

begin (* programa principal*)


40486,8722222222 Página 11/14 Data : 04/05/06
ClrScr;
write('Informe número para calculo da fatorial = ');
readln(N);
writeln;
writeln('Fatorial de n = ',FATORIAL(N):10:0);
readkey;
end.

Observe que o nome da função, no caso FATORIAL, é também o nome da variável interna que
recebe o valor acumulado da variável FAT.
A função também pode trabalhar com passagem de parâmetros por valor ou por referência,
dependendo do problema a ser resolvido.

Exemplo 2: Desenvolver um programa que faça uso de uma sub-rotina de função que retorne o
valor da adição de dois valores fornecidos com parâmetros.

Algoritmo

Programa Principal
1 – Pedir a leitura de dois valores, no caso variáveis NUM1 e NUM2;
2 – Chamar a função SOMA, fornecendo como parâmetro as duas variáveis;
3 – Apresentar o resultado retornado.

Sub-Rotina para Adição


1 – Receber dois valores fornecidos por meio de parâmetros;
2 – Efetuar o cálculo dos dois valores, no caso a adição;
3 – Retornar para a função o resultado obtido;

Programa Pascal

program CALC_ADICAO;
uses CRT;
var
NUM1, NUM2 : real;

function ADICAO (A, B : real) : real;


begin
ADICAO := A + B;
end;

begin
clrscr;
write(‘Informe o numero 1 = ‘); readln(NUM1);
write(‘Informe o numero 2 = ‘); readln(NUM2);
writeln;
writeln(‘O resultado da adição = ‘, ADICAO ( NUM1, NUM2) :5:2);
writeln(‘Tecle algo para encerrar o programa’); readley;
end.

Exemplo 3: Desenvolver um programa que faça uso de uma sub-rotina de função que possibilite
comparar dois valores fornecidos, retornando se os valores fornecidos são iguais ou diferentes.

Programa Principal

40486,8722222222 Página 12/14 Data : 04/05/06


1 – Pedir a leitura de dois valores, no caso variáveis NUM1 e NUM2;
2 – Chamar a função de comparação de igualdade, fornecendo os dois valores;
3 – Apresentar o resultado retornado.

Sub-rotina para Comparação

1 – Receber dois valores fornecidos por meio de parâmetros;


2 – Efetuar a comparação entre os valores para determinar se são iguais ou diferentes;
3 – Retornar para a função o resultado obtido.

Programa Pascal

program COMPARACAO;
uses CRT;
var
NUM1, NUM2 : real;

function COMPARA(A, B : real) : boolean;


begin
COMPARA := A = B;
end;

{ Programa principal}
begin
clrscr;
write(‘Informe o numero 1 = ‘); readln(NUM1);
write(‘Informe o numero 2 = ‘); readln(NUM2);
writeln;
If (COMPARA (NUM1, NUM2)) then
writeln(‘Os valores fornecidos sao iguais’)
else
writeln(‘Os valores fornecidos são diferentes’);
writeln(‘Tecle algo para encerrar o programa’); readkey;
end;

Exercícios para fixação:

A) Efetuara um programa que possua uma sub-rotina do tipo função que efetue e permita
apresentar no programa principal o somatório dos N primeiros números inteiros, definidos por um
operador ( 1+2+3+4+....N).
C) Desenvolver um programa para entrar com o nome e notas bimestrais de 20 alunos. Desenvolva
as seguintes rotinas:
 Cadastramento dos alunos, sendo que para cada aluno informado, calcular o valor da
média.
 Desenvolver pesquisa binária conforme nome do aluno informado, e repetir a pesquisa
enquanto usuário desejar. (para colocar em ordem crescente utilizar técnica do refinamento
sucessivo e função)
 Listar os alunos aprovados, com média maior ou igual a 5,00.
 Listar os alunos reprovados, com média menor que 3,00.
 Listar os alunos em exame, com média maior ou igual a 3,00 e menor que 5,00.
40486,8722222222 Página 13/14 Data : 04/05/06
D) Desenvolver um programa de cadastro para uma pequena agenda de endereços, com o nome,
endereço e telefone e idade. Desenvolva as seguintes rotinas:
 O cadastramento das informações;
 A pesquisa dos nomes pelo método binário, e utilize uma função para a busca.
 Alteração de registro cadastrado com erro (utilizar a pesquisa por nome – método
seqüencial – utilizar função);
 Listar os dados da agenda, conforme cidade informada.

Bibliografia:

MANZANO, J.A.N.G.; YAMATUMI, W.. Algoritmos - Lógica para Desenvolvimento de Programação de Computadores.
15ª ed. São Paulo: Érica, 2004.

MANZANO, J.A.N.G.; OLIVEIRA J.F. Estudo dirigido de algoritmos. 9ª ed. São Paulo: Érica, 2004.

MANZANO, J.A.N.G. e YAMATUMI, W. Programando em Turbo Pascal 7.0. 8ª ed. São Paulo: Érica, 2002.

40486,8722222222 Página 14/14 Data : 04/05/06