Buscar

Subalgoritmos: Conceito e Funcionamento

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 28 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 28 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 9, do total de 28 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

Prévia do material em texto

Algoritmo e Estruturas de dados
Engenharia Elétrica
Subalgoritmos: Conceito
Trechos de algoritmos que realizam cálculos ou tarefas.
Vantagens:
Reduzem o tamanho do algoritmo
Facilitam a compreensão e visualização do algoritmo
São declarados no início do algoritmo e podem ser chamados em qualquer ponto após sua declaração
Eles podem ser Funções que retorna algum valor ou Procedimento que não retorna nada
Subalgoritmos: Funcionamento
Um algoritmo completo é dividido em:
UM Algoritmo principal
Diversos Subalgoritmos
 A execução sempre começa pelo algoritmo principal;
 A execução de um subalgoritmo é solicitada sempre que necessário, através de uma chamada ou invocação.
 Quando um subalgoritmo é chamado, a execução do algoritmo principal é interrompida para que o subalgoritmo seja executado. Após isso, o algoritmo principal continua de onde parou
Subalgoritmo: Funcionamento
1) A execução inicial aqui e segue a sequência das instruções.
2) A execução do Algoritmo Principal é interrompida até que o Subalgoritmo 1 seja executado, continuando em seguida a partir da instrução 3.
3) Executado no momento em que é invocado pelo Algoritmo Principal.
4) A execução do Subalgoritmo 1 é interrompida até que o Subalgoritmo 2 seja executado, continuando em seguida a partir da instrução 2.
5) Executado no momento em que é invocado pelo Subalgoritmo 1.
6) Terminada a execução, volta para continuar o Subalgoritmo 1. Quando terminar o Subalgoritmo 1, volta para continuar com a execução do Algoritmo Principal.
2
4
6
6
4
Subalgoritmo: Variáveis Locais e Variáveis Globais
Variáveis Globais: são declaradas no início do algoritmo e pode ser usadas no algoritmo principal e por todos os subalgoritmos.
Variáveis Locais: são definidas dentro de um subalgoritmo e só podem ser utilizadas dentro dele.
Subalgoritmos: Tipos
Existem dois tipos de Subalgoritmos:
Funções;
Procedimentos.
Subalgoritmo: Função
FUNÇÃO é um subalgoritmo que calcula um valor a partir de outros fornecidos a ela, retornando o valor calculado
A chamada a uma função sempre ocorre dentro de uma expressão do mesmo tipo que tem o valor retornado por ela.
Sua chamada é feita pelo seu nome, seguido de seus respectivos parâmetros entre parênteses.
A função é executada e, ao seu término, o trecho do comando que a invocou é substituído pelo valor retornado
 Exemplos: primo(<número>), fatorial(<número>)
Subalgoritmos: Função
Forma geral de uma função (sintaxe):
funcao <identificador> ([var]<parâmetros>): <tipo de retorno>
var
	<declaração de variáveis locais>
inicio
	<lista de comandos>
retorne <variável de retorno>
fimfuncao
Identificador: Nome da função.
[var]: 
Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos identificadores para indicar a passagem por referência. 
Passagem de parâmetro por valor: não é necessário utilizar a construção VAR antes dos identificadores.
Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados a separação é feita com ponto-e-vírgulas ';'.
Tipo de retorno da função: Real, Inteiro, Lógico ou Caractere.
Declaração de variáveis locais: idêntica a declaração de variáveis globais. As variáveis declaradas localmente tem validade dentro do escopo da função.
Retorne: local onde é colocado a variável de retorno.
Subalgoritmos: Exemplo de Função
Algoritmo "Quadrado"
Var
	x,y:real
Funcao quadrado(var w:real): real
var
	quad:real
Inicio
	quad  w^2
	Retorne (quad)
Fimfuncao
Início
	Escreva ("Digite um número: ")
	Leia ( x )
	y  quadrado(x)
	Escreva (" Quadrado = " , y )
Fimalgoritmo
Aqui se inicia o algoritmo principal, que solicita um número ao usuário e, em seguida, chama a função que realiza o quadrado do número. Guarda o quadrado retornada pela função na variável y e mostra o valor na tela.
Quando a função é chamada, a execução do algoritmo principal fica parada até que a função seja finalizada e retorne o resultado.
Subalgoritmos: Instrução Retorne
A instrução Retorne é um comando simples usado apenas nas funções e tem o efeito de parar a execução da função e enviar um valor para o algoritmo principal ou para outro subalgoritmo que o tenha chamado.
Toda função deve ter em seu corpo de instruções, pelo menos, uma instrução Retorne.
Sintaxe:
		Retorne ( <expressão> )
Exemplos: 
Retorne ( area )
Retorne ( pi*r*r )
Subalgoritmos: Chamada de Função
A chamada de uma função, por parte do algoritmo principal ou por outro subalgoritmo, é feita pelo simples aparecimento de seu nome, com os respectivos parâmetros entre parênteses, dentro de uma expressão.
Os parâmetros utilizados no algoritmo principal, no ato da chamada da função (chamados parâmetros reais) devem manter uma correspondência (número, ordem e tipo) com os parâmetros definidos na função (chamados parâmetros formais).
A função é executada, e ao seu término, o trecho do comando que a chamou é substituído pelo valor retornado pela mesma dentro da expressão em que se encontra, e a avaliação desta prossegue normalmente.
Subalgoritmos: Exemplos de Função
Algoritmo “classifica_Idade”
Var
	idade: inteiro;
Funcao verifica_Idade (var id:inteiro):logico
Inicio
	se (id > 18) entao
		Retorne (verdadeiro)
	senao
		Retorne (Falso)
	Fimse
Fimfuncao
Inicio
	Escreva("Entre com a idade:")
	Leia (idade)
	Se (verifica_idade (idade)) entao
		Escreva ("é maior de idade")
	Senao
		Escreva ("é menor de idade")
	Fimse
Fimalgoritmo
PROCEDIMENTO é um subalgoritmo que não retorna valor ao algoritmo chamador ou que retorna dois ou mais valores
A chamada de procedimentos só pode ser feita com uma linha de comando isolada dentro do algoritmo
Se retornar valores, o retorno é feito por meio de parâmetros ou variáveis globais
 Exemplos: solicita_valores, lista_resultados
Subalgoritmos: Procedimentos
Subalgoritmos: Procedimentos
Forma geral de um procedimento (sintaxe):
procedimento <nome> ([var]<parâmetros>)
var
	<declaração de variáveis locais>
inicio
	<lista de comandos>
Fimprocedimento
nome: Nome do procedimento.
[var]: 
Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos identificadores para indicar a passagem por referência. 
Passagem de parâmetro por valor: não é necessário utilizar a construção VAR antes dos identificadores.
Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados a separação é feita com ponto-e-vírgulas ';'.
Subalgoritmos: Exemplo de Procedimento
Algoritmo “Calcular Quadrado”
Var
	x:real
Procedimento quadrado()
Var
	z:real
Inicio
	zx^2
	escreva(“O quadrado do numero é =“,z)
Fimprocedimento
Inicio
	escreva(“Digite um numero:”)
	leia(x)
	quadrado()
fimalgoritmo
Subalgoritmos: Exemplo de Procedimento
Algoritmo “Calcular Quadrado”
Var
	x:real
Procedimento quadrado()
Var
	z:real
Inicio
	zx^2
	escreva(“O quadrado do numero é =“,z)
Fimprocedimento
Inicio
	escreva(“Digite um numero:”)
	leia(x)
	quadrado()
fimalgoritmo
Subalgoritmos: Chamada de Procedimento
A definição deste tipo de subalgoritmo é semelhante ao anterior com a diferença de que os valores calculados figuram na lista dos Parâmetros juntamente com os valores recebidos.
A chamada de um procedimento só é feita em comandos isolados dentro do algoritmo principal ou outro subalgoritmo, como os comandos simples, tipo as instruções Leia, Escreva, Retorne, etc., e nunca no meio de expressões ou em atribuições como no caso de funções.
Subalgoritmos: Exemplo de Procedimento
Algoritmo “Notas”
Var
	n1,n2,n3,md:real
	codigo:inteiro
Procedimento Media(var a,b,c,m:real)
Inicio
	m <- (a + b + c) / 3
Fimprocedimento
Inicio
	escreva("Informe código e 3 valores para notas:")
	leia(codigo,n1,n2,n3)
	enquanto (codigo > 0) faca
		Media(n1,n2,n3,md)
		escreva("Media:",md)
		 escreva("Informe código e 3 valores para notas:")
		leia(codigo,n1,n2,n3)
	Fimenquanto
Fimalgoritmo
Subalgoritmo: Parâmetros
Parâmetros são canais pelos quais se estabelece uma comunicação bidirecionalentre um subalgoritmo e o algoritmo chamador.
Os tipos de parâmetros que utilizamos nesse processo são dois, veja-os a seguir:
Parâmetros formais – são aquelas variáveis locais que declaramos entre parêntesis, nos cabeçalhos dos subalgoritmos. São utilizados para realizar os cálculos dentro do subalgoritmo.
Parâmetros reais – são os valores que substituem os parâmetros formais no momento da chamada de um subalgoritmo.
Subalgoritmo: Parâmetros
A passagem de parâmetros ocorre quando é feita uma substituição dos parâmetros formais pelos reais no momento da execução do subalgoritmo. Esses parâmetros são passados por variáveis de duas formas:
Por valor: neste caso é passada uma cópia do conteúdo de uma variável. Essa cópia só existirá no procedimento ou na função.
Qualquer alteração que for feita no valor, não irá alterar o conteúdo da variável original.
Por referência: não existe cópia do conteúdo enviado, o que ocorre é o envio do endereço de memória onde a variável se encontra.
Neste caso, qualquer alteração no valor alterará o valor da variável original.
Subalgoritmo: Parâmetros
Por exemplo, veja o cabeçalho da função fsoma, a seguir.
	Funcao fsoma (a1, b1 : inteiro) : inteiro
As variáveis a1 e b1 são os parâmetros formais da função. 
Veja, agora, o seguinte trecho do algoritmo que chama essa função:
	leia (a)
leia (b)
soma <- fsoma (a,b)
Os valores armazenados nas variáveis globais a e b são os parâmetros reais. Note que poderíamos, simplesmente, chamar a função, passando os valores diretamente: soma <- fsoma (3,5). Nesse caso, os números 3 e 5 seriam os parâmetros reais.
Subalgoritmo: Parâmetros
No processo de passagem de parâmetros, são passados dados de entrada do algoritmo para o subalgoritmo e dados de saída no sentido oposto. Veja esse processo ilustrado na Figura.
Subalgoritmo: Parâmetros
Podemos ver uma função, no módulo da esquerda, que calcula uma soma entre dois números. No módulo da direita, temos o corpo do algoritmo que chama essa função.
O algoritmo passa os dados de entrada (números armazenados nas variáveis a e b, que são os parâmetros reais) para a função, que os armazena em suas variáveis locais a1 e b1 (parâmetros formais). O cálculo é efetuado e o valor encontrado é armazenado na variável local resultado. Através do comando retorne, esse valor é passado como dado de saída para o algoritmo (no momento da chamada da função), que o armazena na variável global soma para, então, ser exibido.
Os parâmetros são passados por valor.
Subalgoritmo: Parâmetros
Em um procedimento, essa passagem de parâmetros é feita de uma forma um pouco diferente.
Subalgoritmo: Parâmetros
No procedimento, a comunicação de saída não é feita de forma explícita como na função. Veja que, ao contrário do que é feito na função, a palavra reservada var é utilizada nos parâmetros do procedimento. Veja, também, que, na chamada ao procedimento, todos os dados são passados como parâmetros, ao passo que na função, são passados apenas os dados de entrada (os números armazenados em a e b).
Os parâmetros são passados por referência.
Subalgoritmo: Exemplo passagem por valor
Algoritmo “Exemplo_parametro_por_valor”
Var 
	X : inteiro
Procedimento PROC(Y : inteiro)
Inicio
	Y  Y + 1
	Escreva ("Durante Y = ”, Y)
Fimprocedimento
Inicio
	escreva(“Informe valor:”)
	leia(X)
	Escreva ("Antes X = ”, X)
	PROC(X)
	Escreva ("Depois X = ", X)
Fimalgoritmo
O algoritmo fornece o seguinte resultado:
Antes X = 1
Durante Y = 2
Depois X = 1
Isto certifica que o procedimento não alterou o valor do parâmetro real X durante sua execução.
Este tipo de ação é possível porque, neste mecanismo de passagem de parâmetros, é feita uma reserva de espaço em memória para os parâmetros, para que neles seja armazenada uma cópia do valor real.
Subalgoritmo: Exemplo passagem por referência
Algoritmo “Exemplo_parametro_por_referencia”
Var 
	X : inteiro
Procedimento PROC(var Y : inteiro)
Inicio
	Y  Y + 1
	Escreva ("Durante Y = ”, Y)
Fimprocedimento
Inicio
	escreva(“Informe valor:”)
	leia(X)
	Escreva ("Antes X = ”, X)
	PROC(X)
	Escreva ("Depois X = ", X)
Fimalgoritmo
O algoritmo fornece o seguinte resultado:
Antes X = 1
Durante Y = 2
Depois X = 2
Como podemos observar, depois de chamar o procedimento com o parâmetro por referência o valor original da variável foi alterado.
Exercícios
Crie uma função para calcular o fatorial de um número.
1! ou 0! = 1
Crie uma função para determinar se um número é primo
Escreva um algoritmo que declare um vetor do tipo real e leia as notas de 5 alunos. Faça um procedimento para ler as notas dos alunos e uma função para calcular a media dos alunos.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes