Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Apostila Sub-rotina, Notas de estudo de Informática

Sub-rotina, preferêncial que aplique na linguagel Pascal ou Delph que é semelhante

Tipologia: Notas de estudo

2012

Compartilhado em 08/03/2012

rodrigo-s-lemos-7
rodrigo-s-lemos-7 🇧🇷

4 documentos

1 / 15

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Apostila Sub-rotina e outras Notas de estudo em PDF para Informática, somente na Docsity!

Sub-Rotinas

Um matemático uma vez disse que um grande problema se resolve dividindo-o em pequenas partes e resolvendo tais partes em separado. Estes dizeres servem também para a construção de programas. Portanto, para facilitar a construção de grandes programas, utiliza-se o método de modularização, que consiste na divisão do programa em pequenas etapas, que são os módulos ou subprogramas. O primeiro módulo ou subprograma, por onde começa a execução do programa recebe o nome de programa principal, e as outras são os subprogramas, que são executados sempre que ocorre uma chamada dos mesmos, através da especificação dos seus nomes. A divisão de um programa em subprogramas é particularmente vantajosa quando uma mesma seqüência de comandos deve ser repetida várias vezes no programa, o que permite a confecção de um único subprograma, que pode ser freqüentemente solicitado e executado para valores diferentes de seus parâmetros. Outra importância da modularização é que ela permite que diferentes programadores trabalhem simultaneamente na solução de um mesmo problema, através da codificação separada dos diferentes módulos. Podemos dar um conceito simples de Sub-rotina dizendo ser um pedaço de código computacional que executa uma Função bem definida, sendo que esta sub-rotina pode ser utilizada várias vezes no algoritmo. Na linguagem Pascal temos dois tipos de subprogramas: PROCEDURE e FUNCTION..

Procedure

Um procedimento (PROCEDURE) é um tipo de subprograma que se assemelha em muito com um programa em Pascal. Possui um cabeçalho de identificação com o nome do procedimento, uma lista opcional de parâmetros de comunicação, um bloco de declarações e um bloco de comandos. Um procedimento é na realidade um programa com vida própria, com suas variáveis locais, mas que, para ser processado, tem que ser solicitado pelo programa principal ou por outro procedimento. Sintaxe :

Faça um algoritmo para ler as informações de N alunos, tais como: Nome, idade e sexo. Após construa sub-Rotina para: a - Emitir um relatório ordenado crescentemente pelo Nome; b - Emitir um relatório ordenado decrescentemente pela idade; c - Informar qual o percentual de alunos do sexo feminino. Faça uma PROCEDURE para desenhar uma moldura no vídeo (Tela Padrão);

Variáveis Globais e Locais

Damos o Nome de variáveis globais para aquelas variáveis que são definidas logo após o comando VAR do programa principal, sendo desta forma visíveis em qualquer parte do programa. Exemplo :

Pascal program teste; uses crt; var nome : string[80]; (variável global) { Sub-rotina que faz a leitura de um nome } procedure setanome; begin write(‘Digite o nome.: ‘); readln(nome); end; {Programa Principal} Begin clrscr; setanome; writeln(nome); readkey; end.

No Exemplo acima, a variável “Nome”, por ser definida como global, pode ser manipulada dentro de qualquer ponto do programa, sendo que qualquer mudança no seu conteúdo, será visível nas demais partes da Rotina. Damos o Nome de variáveis locais às variáveis que são declaradas dentro de uma sub- Rotina, sendo que as mesmas só podem ser manipuladas dentro da sub-Rotina que as declarou, não sendo visíveis em nenhuma outra parte do programa. Exemplo : program teste;

uses crt; { Sub-rotina que lê e escreve um valor na tela } procedure escrevenovídeo; var numero : integer; {Variável Local} n : integer; {Variável Local} begin clrscr; write(‘Digite um numero.: ‘); readln(n); for numero : = 1 to n do begin writeln(número); end; end; { Programa Principal } begin escrevenovídeo; writeln(numero); readkey; end.

Obs: É possível definir variáveis globais e locais com o mesmo Nome, sendo qualquer mudança no conteúdo da variável local não afetará o conteúdo da variável global.

Exemplo :

program teste; uses crt; var nome : string; procedure setanome; begin write read(nome); end; procedure mudança;

Passagem de Parâmetros

Até agora vimos que para ativar uma sub-Rotina bastaria colocar o seu Nome em alguma parte do programa. Mas isto nem sempre significa que o trabalho de escrever o programa irá diminuir. Com o que vimos até agora, dependendo da tarefa a ser realizada pela sub-Rotina, o trabalho de um programador pode até ser bem complicado. Por Exemplo, como faríamos para ler 5 vetores, todos com tamanhos diferentes? Poderíamos, por Exemplo, criar 5 sub-rotinas, uma para cada vetor a ser lido. Isto sem dúvida resolveria esta situação, mas, e se fossem 100 vetores?, ou 1000? Seria realmente uma tarefa muito trabalhosa ter de escrever 100, ou 1000 sub-rotinas, isto só para ler os vetores, imagine se tivéssemos também que ordená-los, ou realizar outro processo qualquer. Com toda esta dificuldade, o uso das sub-rotinas deveria ser considerado. Como já foi dito, as sub-rotinas foram criadas para serem genéricas o bastante para se adaptarem a qualquer situação, visando justamente a possibilidade de reutilização do código. Para realizar esta “mágica”, foi criado o conceito de passagem de parâmetros, ou seja, passar informações para serem tratadas dentro da Sub-Rotina. Sintaxe : Pascal PROCEDURE (<Variável> : ); <Definições>; BEGIN ; END;

Obs: Variável do mesmo tipo são separadas por vírgulas (,). Variáveis de tipos diferentes são separadas por ponto e vírgula (;).

Exemplo : program teste; uses crt; var número : integer;

funcionário : string; procedure escrevenome(n : integer; nome : string); var i : integer; begin for i : = 1 to n do begin write(nome); end; end; begin clrscr; write(‘Digite um numero.: ‘); readln(numero); write(‘Digite o nome do funcionário.: ‘); readln( funcionário); escrevenome(numero, funcionario); readkey; end.

Obs: Os números dados aos parâmetros não necessitam serem iguais as variáveis passadas para sub-rotina. No Exemplo acima, o valor contida em “Número” será passado para o parâmetro “N”, da mesma forma que o valor contido na variável “Funcionário” será passada para o parâmetro “Nome”. Note que os nomes são diferentes.

Exercícios 6 : 1 - Faça um algoritmo para calcular N! 2 - Faça um algoritmo para calcular Ab 3 - Faça um algoritmo para calcular a seguinte expressão até o n-ésimo:

c) O problema dos tipos na definição de parâmetros O Pascal, a princípio, aceita somente que sejam definidos parâmetros com os seguintes tipos : INTEGER, REAL, BYTE, WORD, BOOLEAN, CHAR, STRING e os outros tipos ditos simples. Desta forma, tipos como ARRAY, RECORD e STRING com tamanho definido pelo usuário, não são aceitos. Acontece que existe uma forma de fazer o Pascal aceitar qualquer tipo de dados na definição de parâmetros, através da definição de tipos pelo usuário, ou seja, criar tipos através do comando TYPE. Exemplo : program teste; const máximo = 50 type vetor = array[1..máximo] of integer; registro =record descrição : string; cor : string; quant : byte; end; var vet : vetor; reg : registro; procedure leinfo(var v: vetor; var r : registro); var i : integer; begin write(‘digite os elementos do vetor: ’); for i : = 1 to máximo do read(v[i]); write(‘digite os elementos do registro’); read(r.descrição, r.cor, r.quant); end; begin leinfo(vetor, reg); end.

Exercícios 7 :

  1. Faça um algoritmo para ler 5 vetores do tipo REAL, todos com tamanhos diferentes.
  2. Faça um algoritmo para : Ler um vetor A com N elementos e um vetor B com M elementos( os valores N e M podem ou não serem iguais). Formar um terceiro vetor ( C ) com os elementos dos vetores A e B intercalados.

Exemplo : C[1] : = A[1]; C[2] : = B[1]; C[3] : = A[2]; C[4] : = B[2];

Obs.: Nenhum tipo de ARRAY poderá ser utilizado além dos ARRAY’s A, B e C.

  1. Faça um algoritmo para : Ler um vetor A com N elementos e um vetor B com M elementos(os valores M e N podem ou não serem iguais). Ordenar crescentemente estes vetores Formar um terceiro vetor ( C ) , com os elementos dos vetores A e B intercalados, de forma que ao final do processamento ( intercalação ), o vetor C continue ordenado. A ordenação será obtida somente através do processo de intercalação.

Obs: Nenhum outro tipo de ARRAY poderá ser utilizados além dos tipos A, B e C. Caso os elementos de um dos vetores (A ou B) termine um antes do outro, as posições restantes do vetor C, deverão ser preenchidas com os elementos restantes do Vetor ( A ou B ) que ainda possui elementos.

  1. Simule um arquivo de clientes na memória e crie um pequeno sistema para envio de mala direta. O sistema deverá ter as seguintes funções: Inclusão, alteração e exclusão dos clientes Listagem dos clientes em ordem alfabéticas, dentro de um intervalo de letras especificado (A..Z) Listagem dos Clientes por código, dentro de um intervalo especificado ( código inicial..código final)

num1 : integer; num2 : integer; {Sub-rotina que faz a soma dos Valores } function soma (v1, v2 : integer) : integer; begin soma : = v1 + v2; end;

{ Programa Principal } begin clrscr; write(‘Digite primeiro numero.: ‘); readln(num1); write(‘Digite segundo numero.: ‘); readln(num2); k : = soma(num1,num2); write(k); readkey; end.

Exemplo 2: Utilização de array ou vetor program teste; uses crt; type vetor = array[1..5] of integer; var numero : vetor; x : integer; k : integer; {Sub-rotina que faz a soma dos Valores } function soma (tabela : vetor ) : integer; var result : integer; begin result : = 0; for x:=1 to 5 do begin result := result + tabela[x]; end; soma := result; end; { Programa Principal } begin clrscr; for x:= 1 to 5 do begin write(‘Digite primeiro numero.: ‘); readln(numero[x]); end; k : = soma(numero); write(k); readkey; end.

Exercícios 8 :

  1. Construa “Functions” para : a) Calcular N! b) Calcular A B c) Calcular:

d) Calcular: