Buscar

Aula 5 - Subprogramas Procedimentos e funcoes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Docente: MSc. Graçane Muhate Página 1 de 8 
 
 
UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE 
FACULDADE DE TECNOLOGIAS E CIÊNCIAS DE INFORMAÇÃO 
DEPARTAMENTO DE TECNOLOGIAS E SISTEMAS DE INFORMAÇÃO DE 
DESENVOLVIMENTO DE SOFTWARE 
 
 
 
DISCIPLINA: LÓGICA DE PROGRAMAÇÃO 
Aula 5: 
SUBPROGRAMAS: 
PROCEDIMENTOS & FUNÇÕES 
 
 
 
Conteúdo 
 
Definição de Conceitos 
 O conceito de subprograma e sua aplicabilidade na construção de programas de computador. 
 A estrutura de um subprograma. 
 
Procedimentos 
 Procedimentos 
 Estrutura e chamadas de procedimentos 
 Exercícios práticos e laboratoriais 
Funções 
 Funções 
− Estrutura, chamada e tipos de retorno de uma função. 
 Variáveis globais e locais 
 Parâmetros 
 Mecanismos de passagem de parâmetros 
− Passagem de parâmetros por valor 
− Passagem de parâmetros por referência 
 Exercícios Práticos e Laboratoriais 
 
Docente: MSc. Graçane Muhate Página 2 de 8 
1. O CONCEITO DE SUBPROGRAMA (SURGIMENTO) 
 
1.1. Problemas que levaram ao surgimento de Subprogramas 
 
• Os custos com as atividades de programação eram cada vez mais elevados; 
• A ausência de uma metodologia para a construção de programas conduz a elevados erros; 
• A programação estruturada é hoje o resultado de uma série de estudos e propostas de 
disciplinas e metodologias para o desenvolvimento de programas. 
• Conceitos associados como técnicas de refinamentos sucessivos e modularização. 
 
1.2. Conceitos sobre subprogramas 
 
A decomposição de um problema é fator determinante para a redução da complexidade. 
Assim, quando um problema é decomposto em sub-problemas, divide-se a complexidade e, 
por consequência, simplifica-se a resolução. 
 
a) Critérios que orientam o processo de decomposição de um problema: 
• Dividir o problema em suas partes principais; 
• Analisar a divisão obtida para garantir coerência; 
• Se alguma parte ainda permanecer complexa, decompô-la também; 
• Analisar o resultado final para garantir entendimento e coerência. 
 
b) Objetivos de subprogramas 
Um recurso muito utilizado para se implementar a modularização de programas é o uso de 
subprogramas (ou subrotinas). Basicamente, os subprogramas têm três objetivos: 
• evitar que uma certa sequência de comandos necessária em vários locais de um algoritmo 
tenha que ser escrita repetidamente nestes locais; 
• Dividir e estruturar um algoritmo em partes fechadas e logicamente coerentes – 
modularização de programas; 
• Aumentar a legibilidade de um algoritmo. 
 
c) Definição de subprogramas 
 
Subprogramas são módulos hierarquicamente subordinados a um algoritmo, comumente 
chamado de módulo principal. Da mesma maneira, um subprograma pode conter outros 
subprogramas aninhados, como esquematizado no diagrama a seguir: 
 
 
Fig 1. Esquema de subprogramas 
 
 
Docente: MSc. Graçane Muhate Página 3 de 8 
 
2. TIPOS DE SUBPROGRAMAS 
 
2.1. PROCEDIMENTO(PROCEDURE) 
 
Um procedimento (procedure), também conhecido como sub-rotina, é um conjunto de instruções que 
realiza determinada tarefa. Um algoritmo de procedimento é criado da mesma maneira que outro 
algoritmo qualquer: deve ser identificado, possui variáveis, operações e até funções. 
 
 
Fig 2. Exemplo de estrutura de um procedimento em pseudocodigo 
 
a) Chamada de procedimentos 
 
A chamada de procedimento é o momento em que o procedimento é adicionado e seu código é 
executado, isto é, tarefa associada a ele é realizada pelo algoritmo principal. 
Todo procedimento deverá ter um nome e um corpo (conjunto de instruções) e deverá ser escrito no 
campo de declaração de variáveis, imediatamente abaixo destas. 
 
 
Fig 3. Chamada de procedimentos 
 
Todas as variáveis locais aos procedimentos são alocadas somente quando o procedimento entra em 
execução, mas são liberadas quando o procedimento termina, perdendo assim, seus conteúdos. Caso 
seja necessário o aproveitamento dos dados manipulados, o procedimento deverá utilizar as 
variáveis globais. 
 
 
 
 
 
Docente: MSc. Graçane Muhate Página 4 de 8 
Escopo de Variáveis 
 
Variáveis Globais: São declaradas no algoritmo principal e podem ser utilizadas por todos os 
algoritmos hierarquicamente inferiores. 
 
Variáveis Locais: podem ser utilizadas pelo algoritmo em que foram declaradas e nos algoritmos 
hierarquicamente inferiores, conforme mostra o organograma apresentado a seguir: 
 
 
 
 
O programa principal é global a todos os procedimentos, e consequentemente, todos os 
procedimentos são internos ao programa principal. 
 
IMPORTANTE!!! Cada procedimento poderá utilizar suas próprias variáveis ou as variáveis mais 
globais a ele, mas nunca uma variável de um outro procedimento adjacente. O nível mais global em 
que uma variável possa ser utilizada é chamado ‘escopo da Variável’. 
 
 
Exercicio: Faça um programa que calcule as raízes de uma equação do 2° grau, usando 
procedimentos. 
 
Existem basicamente 3 tipos de relação entre 
procedimentos: global, interno e adjacente, da 
seguinte forma: 
1) Um procedimento P1 é dito global a um 
procedimento P2, se P2 está dentro de P1. Neste 
caso, P2 é interno a P1. No exemplo temos: 
- A é global a D e E; 
 
2) Um procedimento P1 é dito interno a um 
procedimento P2, se P1 está dentro de P2. Neste 
caso P2 é global a P1. No exemplo temos: 
 - D e E são internos a A 
3) Dois procedimento P1 e P2 são adjacentes, se 
P1 não é interno e nem global a P2, ou vice-versa. 
 - D, E são adjacentes 
Docente: MSc. Graçane Muhate Página 5 de 8 
 
2.2. FUNÇÕES 
 
Funções são rotinas similares aos procedimentos, só que retornam um valor após cada chamada. 
Uma função não deverá simplesmente ser chamada, como no caso dos procedimentos, mas deverá 
ser atribuída à alguma Variável. Uma função deve ter um nome e um tipo, e sua sintaxe é 
mostrada abaixo. 
 
 
 
O nome da função é quem deve assumir o valor da função, como se fosse uma variável. Assim como 
nos procedimentos, uma função deve ser definida dentro do espaço de declaração de variáveis do 
programa. Para que a função possa retornar um valor, este deverá ser explicitamente atribuído ao 
nome da função, dentro da rotina da função. 
 
Exmplo1: Algoritmo para a soma de dois números usando uma função 
 
Algoritmo "função para soma" 
Var 
t,n1,n2:inteiro 
// Seção de Declarações das variáveis 
funcao soma(a,b:inteiro):inteiro 
var 
s:inteiro 
inicio 
s:=a+b 
retorne s 
fimfuncao 
 
Inicio 
// Seção de Comandos, procedimento, funções, operadores, etc... 
leia(n1) 
leia(n2) 
 
escreva("O resultado da funcao e: ", soma(n1,n2)) 
 
Fimalgoritmo 
 
 
 
 
 
 
 
Docente: MSc. Graçane Muhate Página 6 de 8 
Exemplo2: Algoritmo para atribuição de resultados de notas de estudantes utilizando procedimento 
e função: 
algoritmo "medias" 
var 
x ,y ,z:inteiro 
w :real 
funcao media :real 
var 
m: real 
inicio 
m<-(x+y+z)/3 
retorne m 
fimfuncao 
 
procedimento q 
var 
inicio 
escreval("a média inserida à classificada como : ") 
se(w=0)e(w<=4)entao 
escreval ("A média é má ") 
senao 
se (w>4) e (w<10) entao 
escreval("A méda é medíocre ") 
senao 
se (w>=10)e(w<14)entao 
escreval ("A média é suficiente ") 
senao 
se (w>=14)e (w<18)entao 
escreval("A média é boa ") 
senao 
se (w>=18)e (w<=20)entao 
escreval("A média é muito boa ") 
fimse 
fimse 
fimse 
fimse 
fimse 
fimprocedimento 
 
inicio 
escreval (" Escreva a primeira nota :") 
leia (x) 
escreval (" Escreva a segunda nota :") 
leia (y) 
escreval (" Escreva a terceira nota :") 
leia (z) 
w:=media 
escreval("A média das suas notas é: " ,w) 
q 
fimalgoritmo 
Docente: MSc. Graçane Muhate Página 7 de 8 
2.3. PROCEDURES E FUNÇÕES COM PASSAGEM DE PARÂMETROS 
 
As chamadas de procedimentos e Funções, consiste na definição dentro destes de um conjunto de 
variáveis internos como por exemplo SQRT(9) ou SQRT(x). 
 
Existem 2 (dois) tipos de passagem de parâmetros: por referência ou por valor. 
 
2.3.1. Passagem por Referência: 
 Os parâmetros devem ser declarados dentro de parênteses, conforme exemplos da declaração 
abaixo: 
 
Procedimento Leitura (a,b : Real; var c:Real) ; ou 
Funcao Soma (x: Real; var y:Real): Real ; 
 
Todas as modificações realizadas nos parâmetros dentro do corpo da função ou do procedimento 
serão repassados para as variáveis passadas durante a chamada. É como se o procedimento ou função 
estivessem usando as próprias variáveis que foram passadas como parâmetros. 
 
Para chamarmos o procedimento e a função acima, devemos escrever algo do tipo: 
Leitura (x1, x2, x3); ou 
s := Soma (f, g) ; 
 
IMPORTANTE!!! Tudo o que for feito com os parâmetros declarados será feito com os parâmetros 
de chamada, quando se usar passagem por referência. As variáveis declaradas se comportam como 
se fossem as próprias variáveis de chamada. 
 
Ex: Seja dado a seguinte função: 
 
Algoritmo "parametrosreferencia" 
Var 
t,n1,n2:inteiro 
// Seção de Declarações das variáveis 
funcao soma(a:inteiro; var b:inteiro):inteiro 
var 
s:inteiro 
inicio 
b:=6 
s:=a+b 
retorne s 
fimfuncao 
 
Inicio 
// Seção de Comandos, procedimento, funções, operadores, etc... 
 
leia(n1) 
leia(n2) 
 
escreva("O resultado da funcao e: ", soma(n1,n2)) 
escreva(n2) 
Fimalgoritmo
Docente: MSc. Graçane Muhate Página 8 de 8 
2.3.2. Passagem por Valor: 
Os parâmetros devem ser declarados fora dos parênteses, e dentro do espaço de declaração de 
variáveis locais. A chamada dos procedimentos e das funções é feita da mesma forma que da 
passagem por referência. Neste caso, as alterações sofridas pelas variáveis declaradas não serão 
repassadas para as variáveis de chamada. Este tipo de passagem de parâmetros deve ser utilizado 
quando só interessa o valor do dado para o procedimento ou para a função. 
 
Utilizando o mesmo exemplo anterior, teríamos a seguinte declaração: 
Procedimento Leitura (a,b,c) ; 
Var a,b,c : Real ; ou 
Funcao Soma (x,y: Real): Real ; 
 
Analisando este exemplo, poderemos facilmente concluir que a função ‘Soma’ realmente não 
necessitava de parâmetros por referência, pois eles não eram de fatos alterados. Mas podemos 
também perceber que o procedimento ‘Leitura’ deve necessariamente utilizar parâmetros por 
referência, pois senão os dados lidos serão perdidos após o término do procedimento. Assim, 
concluímos que as formas corretas para declarar estes procedimentos seriam: 
 
Procedure Leitura (a,b,c : Real) ; e 
Funcao Soma (x,y: Real): Real ; 
 
IMPORTANTE!!! Podemos utilizar nos procedimentos e nas funções, uma mistura de parâmetros 
por referência e por valor, de acordo com as necessidades do programa. 
 
Ex: Seja dada a seguinte função: 
 
Algoritmo "parametrosreferencia" 
Var 
t,n1,n2:inteiro 
// Seção de Declarações das variáveis 
funcao soma(a,b :inteiro):inteiro 
var 
s:inteiro 
inicio 
b:=6 
s:=a+b 
retorne s 
fimfuncao 
 
Inicio 
// Seção de Comandos, procedimento, funções, operadores, etc... 
 
leia(n1) 
leia(n2) 
 
escreva("O resultado da funcao e: ", soma(n1,n2)) 
escreva(n2) 
Fimalgoritmo

Outros materiais