linguagem de programação i parte iv
DESCRIPTION
Professora: Flávia Balbino da Costa. Linguagem de Programação I Parte IV. Introdução à Programação Estrutura de um algoritmo Operadores e expressões Estruturas de Decisão Estruturas de Repetição Procedimentos e Funções. Conteúdo Programático:. - PowerPoint PPT PresentationTRANSCRIPT
Professora: Flávia Balbino da Costa
Introdução à Programação Estrutura de um algoritmo Operadores e expressões Estruturas de Decisão Estruturas de Repetição Procedimentos e Funções
Com a utilização de Sub-rotinas é possível dividir um
problema grande em problemas menores. Dessa forma,
podemos ter algoritmos mais simples com sub-rotinas.
A sub-rotina serve para modularizar um programa.
Como exemplo, em Pascal temos algumas sub-rotinas já
existentes: CLRSCR (sub-rotina que “limpa” a tela) e
Readkey (sub-rotina que ler qualquer caracter do
teclado).
Método de Refinamento sucessivo - É o
processo de dividir sub-rotinas em outras.
Método Top-Down- É sabido que a aplicação de
sub-rotinas (módulos de programas) facilita a
programação. Porém, a utilização de sub-rotinas
deverá ser feita com a aplicação do método Top-
Down. Este método se caracteriza por:
1) Antes de iniciar a construção de algoritmo, o
programador deverá ter em mente as principais
tarefas que deverá executar;
2) Conhecidas todas as tarefas a serem executadas,
tem-se em mente como deverá ser o programa
principal, que vai controlar todas as sub-rotinas;
3) Definido o programa principal, é iniciado o
processo de detalhamento de cada sub-rotina.
1) Cada módulo (sub-rotina) é efetuado em separado.
Desta forma, cada um pode ser testado
separadamente, garantindo que o programa
completo esteja sem erro ao seu término.
2) Podemos repetir módulos em outros programas.
1) Procedimento – Um bloco de algoritmo
(Programa), com início e fim, que será identificado
por um nome, por meio do qual será referenciado
em qualquer parte do programa principal ou do
programa chamador da sub-rotina.
Sintaxe:
Procedimento <nome do procedimento>
Var
<variáveis>
Início
<comandos>
Fim
Exemplo: Criar um algoritmo que apresente um
menu de seleções no programa principal. Este
menu dará ao usuário a possibilidade de escolher a
adição, a subtração de duas variáveis ou o fim
do programa. Escolhida a opção, deverá ser
solicitada a entrada de dois números e processada
a operação, deverá ser exibido o resultado.
Solução:Algoritmo Calculo
Var
Opcao: Caracter
Procedimento Rot_Soma
Var
A, B, R: Real
Inicio
Escreva (“Rotina de Soma”)
Escreva (“Entre com o valor de A:”)
Leia (A)
Escreva (“Entre com o valor de B:”)
Leia (B)
R ← A + B
Escreva (“A + B:”, R)
Fim
Solução:Procedimento Rot_Subtracao
Var
A, B, R: Real
Inicio
Escreva (“Rotina de Subtração”)
Escreva (“Entre com o valor de A:”)
Leia (A)
Escreva (“Entre com o valor de B:”)
Leia (B)
R ← A - B
Escreva (“A - B:”, R)
Fim
Solução:Início
Opcao ← “0”
Enquanto (Opcao<> “3”) façaEscreva (“1 – Adição”)Escreva (“2 – Subtração”)Escreva (“3 – Fim do Programa”)Escreva (“Escolha uma opção:”)Leia (Opcao)Se (Opcao=“1”) então Rot_SomaSenão Se (Opcao=“2”) então
Rot_Subtracao FimSeFimSe
FimEnquantoFimAlgoritmo
No algoritmo anterior foram utilizadas variáveis
dentro das sub-rotinas (variáveis A, B e R) e fora (no
caso a variável opcao).
Variável Global – quando é declarada no início do
algoritmo principal, podendo ser utilizada em
qualquer sub-rotina do algoritmo principal. Esta
variável é visível a todas as sub-rotinas subordinadas
ao algoritmo principal.
Variável Local – quando é declarada dentro de uma
sub-rotina e é válida somente dentro da sub-rotina à
qual está declarada.
Desta forma, as demais sub-rotinas e o algoritmo
principal não poderão fazer uso destas variáveis como
acontece com as variáveis globais, pois não
visualizam a existência delas.
O escopo de uma variável está vinculado a sua
visibilidade (global e local) em relação às sub-rotinas
de um programa, sendo que a sua visibilidade está
relacionada à sua hierarquia.Variáveis A e B
Variáveis A, B e C Variáveis A, B e D
Variáveis A, B, C e E
Variáveis A, B, C e F
Variáveis A, B, D e G
Pro
Programa Principal
Rotina 1
Rotina 1.1
Rotina 1.2
Rotina 2
Rotina 2.1
Var A, B: Inteiro Var
C: InteiroVarE: Inteiro
VarD: Inteiro
VarF: Inteiro
VarG: Inteiro
Finalidade – Serve como um canal de comunicação
bidirecional entre uma sub-rotina e o programa
principal ou uma sub-rotina hierarquicamente de nível
mais alto.
Desta forma, é possível passar valores entre um
programa principal e uma sub-rotina (ou entre sub-
rotinas) utilizando parâmetros que podem ser:
1) Formais;
2) Reais.
Parâmetros Formais – Quando forem declarados
por meio de variáveis juntamente com a identificação
da sub-rotina.
Parâmetros Reais – São considerados parâmetros
reais, quando estes substituem os parâmetros
formais, quando da utilização da sub-rotina por um
programa principal ou por uma sub-rotina chamadora.
Programa Calculo
Procedimento Soma (A, B: Inteiro)
Var Z: Inteiro
InícioZ ← A + BEscreva (Z)
Fim
Var X,Y: InteiroInício
Leia (X)Leia (Y)Soma (X, Y)
FimAlgoritmo
Parâmetros Formais
Parâmetros Reais
Sub-rotina
Programa Principal
tro
ca
tro
ca
Ocorre quando é feito uma substituição dos
parâmetros formais pelos reais no momento da
execução da sub-rotina. Estes parâmetros serão
passados por variáveis e duas formas:
1) Por Valor
2) Por Referência
Caracteriza-se pela não alteração do valor do
parâmetro real quando o parâmetro formal é
manipulado dentro da sub-rotina.
Em outras palavras, o valor passado pelo parâmetro
real é copiado para o parâmetro formal, que no caso
assume o papel de variável local da sub-rotina. Desta
forma, qualquer modificação que ocorra na variável
local da sub-rotina não afetará o parâmetro real
correspondente.
Dicas:
1) O processamento é executado dentro da sub-
rotina;
2) O resultado fica “preso” na sub-rotina;
3) É somente para entrada de dados da sub-rotina.
Algoritmo Fatorial
Procedimento Fatorial (N:Inteiro)Var
i,fat: InteiroInício
Fat ← 1Para i de 1 até N passo 1 faça Fat ← Fat * iFimParaEscreva (Fat)
Fim
VarA: Inteiro
InícioEscreva (“Fatorial de que número:?”)Leia (A)Fatorial (A)
FimAlgoritmo
Passagem por valor
Parâmetro Real
Parâmetro Formal
Caracteriza-se pela ocorrência da alteração do valor do
parâmetro real quando o parâmetro formal é manipulado
dentro da sub-rotina.
DICAS:
Qualquer modificação no parâmetro formal implica
modificação no parâmetro real correspondente;
A alteração efetuada é desenvolvida para a rotina
chamadora;
Serve para que se tenha saída de um determinado valor
de dentro de uma sub-rotina.
Algoritmo Calc_Fatorial2
Procedimento Fatorial (N:Inteiro, Var Fat: Inteiro)Var
i: InteiroInício
Fat ← 1Para i de 1 até N passo 1 faça Fat ← Fat * iFimPara
FimVar
A, B: InteiroInício
Escreva (“Fatorial de que número:?”)Leia (A)Fatorial (A, B)Escreva (B)
FimAlgoritmo
Passagem por valor (Entrada)
Passagem por referência (Saída)
OBS1: Não foi preciso declarar Fat dentro da sub-rotina, pois esta foi declarada no enunciado
dela.
OBS2: No enunciado da sub-rotina, entende-se
que tudo que está depois de Var será a variável de passagem
de parâmetro por referência.
Exemplo:1. Faça um algoritmo que tenha três procedimentos
que façam os seguintes cálculos: Cubo de um número; Fatorial de um número; Verifique se este número é par, ímpar ou zero.
Utilize a técnica de passagem de parâmetros por valor (entrada do número) e por referência (saída: cubo, fatorial e mensagem).
Algoritmo Exemplo
Procedimento Calculo (X:Inteiro, Var Cubo, Fat: Inteiro, Var Mens: Literal)Var
R, I: InteiroInício
Cubo ← X * X * XFat ← 1Para I de 1 até X passo 1 faça Fat ← Fat * IFimParaSe (X = 0) então M ← ‘Número zero’Senão R ← X – 2 * (X / 2) Se (R = 0) então
M ← ‘Número par’ Senão
M ← ‘Número ímpar’ FimSeFimSe
Fim
Continuação do Algoritmo Exemplo
VarNum: InteiroC, F: RealM: Literal
InícioEscreva (“Digite um número:”)Leia (Num)Calculo (Num, C, F, M)Escreva (‘Cubo:’, C)Escreva (‘Fatorial:’, F)Escreva (‘Mensagem:’, M)
FimAlgoritmo
2) Função – Sub-rotinas como os procedimentos,
contendo início e fim e sendo identificado por um
nome, por meio do qual também será referenciada
em qualquer parte do programa.
Sintaxe:
Função <nome da função> (Parâmetros):<tipo de
função>
Var
<variáveis>
Início
<comandos>
Fim
Observação: A função sempre retorna um
determinado valor, que é retornado no próprio nome
da função.
Exemplo: Faça um algoritmo que tenha uma função
que calcule o fatorial de um número.
Algoritmo Calc_Fatorial3
Função Fatorial (N:Inteiro): InteiroVar
i, Fat: InteiroInício
Fat ← 1Para i de 1 até N passo 1 faça Fat ← Fat * iFimParaFatorial ← Fat
FimVar
A: InteiroInício
Escreva (“Fatorial de que número:?”)Leia (A)Escreva (‘O fatorial é:’, Fatorial (A))
FimAlgoritmo
Vamos treinar Procedimentos e Funções?
1. Faça um algoritmo que faça uso de uma sub-rotina de função que retorne o valor da soma de dois números fornecidos como parâmetros.
2. Faça um algoritmo com as funções: par ou ímpar ou zero, cubo e fatorial.
3. Construa um algoritmo que faça a soma entre dois números informados pelo usuário. A soma tem que ser realizada por uma sub-rotina (Procedimento ou Função) e seu valor retornado ao Programa Principal.
Exemplo: números informados: 2 e 5Realizado: 2 + 3 + 4 + 5 = 14
Vamos treinar Procedimentos e Funções?
4. Desenvolva um algoritmo que crie uma sub-rotina para calcular o valor de uma potência de um número qualquer. Por exemplo, se for mencionado no programa principal a função potencia(2,3), deverá ser calculado 23 = 8. Este valor deverá ser retornado ao Programa Principal.
5. Faça um algoritmo que tenha um procedimento que receba três números inteiros e retorne o maior deles.
6. Faça um algoritmo que tenha uma função que verifica se um valor específico está dentro do intervalo entre dois valores digitados pelo usuário. Caso esteja contido no intervalo, a função deverá retornar a mensagem: “Está contido!”, caso contrário, a função retornará: “Não está contido!”.