Você está na página 1de 10

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

LGICA DE PROGRAMAO

PARTE 5: Subrotinas (Procedimentos e Funes)


OS CONCEITOS INICIAIS

NESTE CAPTULO, SERO APRESENTADOS RELACIONADOS IMPLEMENTAO DE SUB-ROTINIS:

PROCEDIMENTOS FUNES

Pgina

63

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

5.1.

SUB-ROTINAS

No geral, problemas complexos exigem algoritmos complexos. Mas sempre possvel dividir um problema em partes menores. Cada parte menor tem um algoritmo mais simples, e esse trecho que se chama sub sub-rotina. Uma sub-rotina na verdade rotina um programa, e sendo um programa pode efetuar diversas operaes computacionais (entrada, processamento e sada). As sub-rotinas so utilizadas na diviso de algoritmos complexos, permitindo a rotinas modularizao de um determinado problema. Ao se trabalhar com essa tcnica, p pode ser necessrio dividir uma sub rotina em outras tantas quantas forem necessrias, sub-rotina buscando uma soluo mais simples e uma parte do problema maior. O processo de dividir sub rotinas em outras denominado Mtodo de sub-rotinas Refinamento Sucessivo
Programa Principal

Rotina 1

Rotina 2

Rotina 1.1

Rotina 1.2

Rotina 2.1

Figura 1 - Mtodo de refinamento sucessivo

Existem dois tipos de rotinas. Entre esses dois tipos existem algumas diferenas, mas o conceito o mesmo para ambas.Para cada uma das sub ambas.Para sub-rotinas ser usada uma nova instruo que identifique em portugus estruturado uma sub sub-rotina, sendo: procedimento e funo funo. 5.2. PROCEDIMENTOS

Um procedimento um bloco de programa contendo incio e fim e identificado por um nome. Quando uma sub-rotina chamada por um programa, ela executada e ao seu trmino o controle de processamento retorna automaticamente para a primeira linha de instruo aps a linha que fez a chamada da sub sub-rotina. Veja como representado um procedimento no Portugus Estruturado Estruturado:

Pgina

64

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

procedimento <nome do procedimento> var //variveis inicio //instrues fimprocedimento OBSERVAO: O NOME DO PROCEDIMENTO OBEDECE AS MESMAS REGRAS DE NOMENCLATURA DAS VARIVEIS. Exemplo: Criar um programa calculadora que apresente um menu de selees no programa principal. Esse menu deve dar ao usurio a possibilidade de escolher uma entre quatro operaes aritmticas. Escolhida a opo desejada, deve ser solicitada a entrada de dois nmeros, e processada a operao, deve ser exibido o resultado. Para o problema acima, pode podemos dividi-lo em cinco rotinas:

Programa Principal

Adio

Subtrao

Multiplicao

Diviso

Figura 2 - Exemplo sub-rotina

Tendo idia da estrutura geral do programa, ser escrito em separado cada um dos algoritmos com seus detalhes de oper operao. Primeiro ser escrito as sub sub-rotinas responsveis por cada operao e posteriormente o programa principal. OBS: A ordem da escrita das sub rotinas no interfere no resultado final do sub-rotinas algoritmo Rotina Principal: Apresenta um menu com 5 opes Rotina adio: Sub rotina responsvel por somar dois nmeros Sub-rotina Rotina subtrao: Sub rotina responsvel por subtrair dois nmeros Sub-rotina Rotina multiplicao: Sub rotina responsvel por multiplicar dois Sub-rotina nmeros

Pgina

65

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Rotina diviso: Sub-rotina responsvel por dividir dois nmeros

Veja agora a implementao completa do exemplo: procedimento adicao() var a,b: real inicio escreva ("Informe o primeiro valor: ") leia (a) escreva ("Informe o segundo valor: ") leia (b) escreval ("O resultado da adio : ", a + b) fimprocedimento procedimento subtracao() var a,b: real inicio escreva ("Informe o primeiro valor: ") leia (a) escreva ("Informe o segundo valor: ") leia (b) escreval ("O resultado da subtrao : ", a - b) fimprocedimento procedimento multiplicacao() var a,b: real inicio escreva ("Informe o primeiro valor: ") leia (a) escreva ("Informe o segundo valor: ") leia (b)

Pgina

66

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

escreval ("O resultado da multiplicao : ", a * b) fimprocedimento procedimento divisao() var a,b: real inicio escreva ("Informe o primeiro valor: ") leia (a) escreva ("Informe o segundo valor: ") leia (b) escreval ("O resultado da diviso : ", a / b) fimprocedimento

algoritmo "CALCULADORA" var opcao: inteiro inicio repita escreval ("MENU DE OPES: ") escreval ("Digite 1 para adio") escreval ("Digite 2 para subtrao") escreval ("Digite 3 para multiplicao") escreval ("Digite 4 para diviso") escreval ("Digite 5 para sair") escreva ("OPCO: ") leia (opcao) escolha opcao caso 1 adicao() caso 2 subtracao() caso 3

Pgina

67

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

multiplicacao() caso 4 divisao() outrocaso escreval ("Digite um opes!") fimescolha ate (opcao = 5) fimalgoritmo

valor

disponivel

no

menu

de

OBSERVAO IMPORTANTE: Em portugus estruturado mencionam-se em primeiro lugar as sub-rotinas e por ltimo o programa principal. Sendo assim, durante a escrita do cdigo, primeiro o programador escreve todas as rotinas que sero usadas no programa principal. No programa apresentado foram utilizadas variveis dentro do programa principal e dentro das sub-rotinas Varivel opcao: programa principal Variveis a e b: sub-rotinas

So dois os tipos de variveis utilizadas em um programa: as variveis Globais e Locais. Uma varivel considerada Global quando declarada no incio do algoritmo principal de um programa, podendo ser utilizada por qualquer sub-rotina subordinada ao algoritmo principal. Nesse caso, a varivel opcao definida na rotina principal considerada uma varivel GLOBAL Uma varivel considerada local quando declarada dentro de uma sub-rotina e somente valida dentro da sub-rotina onde foi declarada. Portanto as variveis a e b somente esto visveis nas suas sub-rotinas. 5.3. PARMETROS

Os parmetros so utilizados como um ponto de comunicao entre uma subrotina e o programa principal. Atravs da passagem de parmetros, podemos passar o valor de uma varivel que est no programa principal para a sub-rotina, ou passar o valor de uma varivel que est em uma sub-rotina para outra sub-rotina. Os

Pgina

68

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

parmetros so declarados por meio de variveis juntamente com a identificao do nome da sub-rotina. Veja como feita a declarao de parmetros no portugus estruturado: procedimento nome(parametro: tipo de dado) var //variveis inicio //instrues fimprocedimento Veja o exemplo de uma sub-rotina com a utilizao de parmetros: procedimento somar (a,b: inteiro) var resultado: inteiro inicio resultado <- a + b escreva (O resultado da adio para os valores informados : ,resultado) fimprocedimento Com o procedimento pronto, hora de cham-la na rotina principal. Veja como fica: algoritmo uso de rotina var valor1,valor2: inteiro inicio leia (valor1) leia (valor2) somar (valor1,valor2) leia (valor1) leia (valor2) somar(valor1,valor2) fimalgoritmo

Pgina

69

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

5.4.

FUNES

Uma funo tambm um bloco de programa, como so os procedimentos, contendo incio e fim e identificada por um nome, pelo qual tambm ser referenciada em qualquer parte do programa principal. Uma funo muito parecida com um procedimento, a sua diferena est no fato de uma funo retornar um determinado valor, no prprio nome da funo. Quando se diz valor, devem ser levados em considerao os valores numricos, lgicos e caracteres. Veja como representado uma funo no Portugus Estruturado funcao <nome da funcao>(parametros) : <tipo de retorno> var //variveis inicio //instrues fimfuncao OBSERVAES: O nome da funo obedece s mesmas regras de nomenclatura das variveis. O tipo de retorno se refere ao tipo de dado retornado, que pode ser caractere, numrico, lgico O nome da funo obedece s mesmas regras de nomenclatura das variveis. Por outro lado, os <parmetros> uma seqncia de: <parmetros>: <tipo-de-dado> Por sua vez, a seqncia de parmetros uma seqncia de nomes de parmetros (tambm obedecem mesma regra de nomenclatura de variveis) separados por vrgulas. O valor retornado pela funo ser do tipo especificado na sua declarao (logo aps os dois pontos). Em alguma parte da funo (de modo geral, no seu final), este valor deve ser retornado atravs do comando retorne. De modo anlogo ao programa principal, a seo de declarao interna comea com a palavra-chave var, e continua com a seguinte sintaxe: <lista-de-variveis>: <tipo-de-dado>

Pgina

70

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

Para exemplificar vamos construir uma funo sem parmetros que soma dois valores. Ela tambm utiliza uma varivel local aux para armazenar provisoriamente o resultado deste clculo, antes de atribu-lo varivel global res:

funcao soma: inteiro var aux: inteiro inicio // n, m e res so variveis globais aux <- n + m retorne aux fimfuncao No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 res <- soma escreva(res) Agora iremos realizar a mesma tarefa, s que utilizando passagem de parmetros para a funo: funcao soma (x,y: inteiro): inteiro inicio retorne x + y fimfuncao No programa principal deve haver os seguintes comandos: n <- 4 m <- -9 res <- soma(n,m) escreva(res)

Pgina

71

Informtica IFBA - Campus Eunpolis - Curso Tcnico Integrado em Informtica - Algoritmos

5.5.

EXERCCIOS

QUESTO 01. Criar um procedimento que calcule uma prestao em atraso. Para tanto, utilize a frmula PREST = VALOR + (VALOR * (TAXA/100) * TEMPO). Apresentar o valor da prestao. QUESTO 02. Elaborar um programa que por meio de uma sub-rotina de procedimento apresente o valor da converso em real (R$) de um valor lido em dlar. Deve ser solicitado por meio do programa principal o valor da cotao do dlar e a quantidade de dlar disponvel. QUESTO 03. Faa um procedimento que recebe a idade de um nadador por parmetro e retorna, tambm por parmetro, a categoria desse nadador de acordo com a classificao abaixo: a) 5 a 7 anos: Infantil A b) 8 a 10 anos: Infantil B c) 11-13 anos Juvenil A d) 14-17 anos Juvenil B e) Maiores de 18 anos (inclusive) Adultos

QUESTO 04. Desenvolva um programa que crie uma funo para calcular e apresentar o valor de uma potncia de um nmero qualquer. Ou seja, ao informar para a funo o nmero e sua potncia, deve ser apresentado o seu resultado. Por exemplo, se for mencionado no programa principal a funo Potencia(2,3), deve ser apresentado o valor 8. QUESTO 05. Um determinado estabelecimento far uma venda com descontos nos produtos A e B. Se forem comprados apenas os produtos A ou apenas os produtos B, o desconto ser de 10%. Caso sejam comprados os produtos A e B, o desconto ser de 15%. O custo da unidade e a quantidade de cada produto dever ser informado ao programa. Elaborar um programa que por meio de uma funo calcule e apresente o valor da despesa do fregus na compra dos produtos.

Pgina

72

Você também pode gostar