340 likes | 448 Views
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:.
E N D
Professora: Flávia Balbino da Costa Linguagem de Programação IParte 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:
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). PROCEDimentos E FUNÇÕES
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: MÉTODOs:
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. MÉTODO Top-down:
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. Vantagens:
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. Aplicação prática do uso de sub-rotinas:
Sintaxe: Procedimento <nome do procedimento> Var <variáveis> Início <comandos> Fim PROCEDIMENTOS
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. PROCEDIMENTOS
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ça Escreva (“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_Soma Senão Se (Opcao=“2”) então Rot_Subtracao FimSe FimSe FimEnquanto FimAlgoritmo
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áveis globais e locais:
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. Variáveis globais e locais:
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. Escopo de variáveis: P. P. Variáveis A e B Rot1 Rot2 Variáveis A, B e C Variáveis A, B e D Variáveis A, B, C e F 1.1 1.2 2.1 Variáveis A, B, C e E Variáveis A, B, D e G
Programa Principal Pro Rotina 1 Var A, B: Inteiro Var C: Inteiro Rotina 1.1 Var E: Inteiro Rotina 1.2 Var F: Inteiro Rotina 2 Var D: Inteiro Rotina 2.1 Var G: 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. Utilização de parâmetros:
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. Parâmetros formais e reais:
Programa Calculo Procedimento Soma (A, B: Inteiro) Var Z: Inteiro Início Z ← A + B Escreva (Z) Fim Var X,Y: Inteiro Início Leia (X) Leia (Y) Soma (X, Y) FimAlgoritmo Sub-rotina Parâmetros Formais troca troca Parâmetros Reais Programa Principal
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 Passagem de parâmetros:
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. Passagem de parâmetros por valor:
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. Passagem de parâmetros por valor:
Algoritmo Fatorial Procedimento Fatorial (N:Inteiro) Var i,fat: Inteiro Início Fat ← 1 Para i de 1 até N passo 1 faça Fat ← Fat * i FimPara Escreva (Fat) Fim Var A: Inteiro Início Escreva (“Fatorial de que número:?”) Leia (A) Fatorial (A) FimAlgoritmo Parâmetro Formal Passagem por valor Parâmetro Real
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. Passagem de parâmetros por referência:
Algoritmo Calc_Fatorial2 Procedimento Fatorial (N:Inteiro, Var Fat: Inteiro) Var i: Inteiro Início Fat ← 1 Para i de 1 até N passo 1 faça Fat ← Fat * i FimPara Fim Var A, B: Inteiro Início Escreva (“Fatorial de que número:?”) Leia (A) Fatorial (A, B) Escreva (B) FimAlgoritmo OBS1: Não foi preciso declarar Fat dentro da sub-rotina, pois esta foi declarada no enunciado dela. Passagem por referência (Saída) Passagem por valor (Entrada) 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: Faça um algoritmo que tenha um procedimento que faça 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: Inteiro Início Cubo ← X * X * X Fat ← 1 Para I de 1 até X passo 1 faça Fat ← Fat * I FimPara Se (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’ FimSe FimSe Fim
Continuação do Algoritmo Exemplo Var Num: Inteiro C, F: Real M: Literal Início Escreva (“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. Aplicação prática do uso de sub-rotinas:
Sintaxe: Função <nome da função> (Parâmetros):<tipo de função> Var <variáveis> Início <comandos> Fim funções
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. funções
Algoritmo Calc_Fatorial3 Função Fatorial (N:Inteiro): Inteiro Var i, Fat: Inteiro Início Fat ← 1 Para i de 1 até N passo 1 faça Fat ← Fat * i FimPara Fatorial ← Fat Fim Var A: Inteiro Início Escreva (“Fatorial de que número:?”) Leia (A) Escreva (‘O fatorial é:’, Fatorial (A)) FimAlgoritmo
Vamos treinar Procedimentos e Funções? 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. Faça um algoritmo com as funções: par ou ímpar ou zero, cubo e fatorial. 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 5 Realizado: 2 + 3 + 4 + 5 = 14
Vamos treinar Procedimentos e Funções? 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.