Buscar

[ALUNO] - Algorítimos - Aula 13 - Funções

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Algoritmos
Funções
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
	A característica fundamental da programação estruturada é modelar a resolução de um problema através da divisão do mesmo em subproblemas. O processo de decomposição de cada modelagem da solução correta, pois cada problema (subproblema) pode ser analisado individualmente e independente dos demais. 
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
	O algoritmo Analisa_Valores apresenta a solução do problema que consiste em determina-se, para um conjunto de valores, quantos valores estão acima da média destes valores.
Exemplo
Algoritmo Analisa_Valores
Tipo
 ConjuntoDeInteiros = Coleção [ 1..30] de inteiro
 Função Media (Conjunto, Quant_Elementos): Real
{ Esta função determina a média de um grupo de valores inteiros, armazenados no argumento Conjunto. O argumento Quant_Elementos especifica a quantidade de elementos da variável indexada Conjunto.}
Variáveis
 Conjunto: ConjuntoDeInteiros {por valor}
 Quant_Elementos: Inteira {por valor}
 Soma: Real
 Ind: Inteira
Inicio
 Soma ← 0
 Para Ind de 1 até Quant_Elementos faça
 Soma ← Soma + Conjunto [Ind]
 Fim Para
 Média ← Soma/ Quant_Elementos
Fim
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Variáveis
 X: Conjunto de Inteiros
 Med: Real
 N,I,Cont: Inteira
Inicio
{Leitura e armazenamento dos valores}
Leia N
Para I de 1 até N faça
 Leia X[I]
Fim Para
{O comando a seguir, chama a função Média que determinará a média dos valores. Veja que, são transferidos para a função Media, os conteúdos de X e N. Neste caso, X e N são denominados de argumentos atuais. O conteúdo de X será passado para o argumento Conjunto, e o conteúdo de N será passado para o argumento Quant_Elementos. Conjunto e Quant_Elementos são denominados argumentos normais da função. Ao executar o comando a seguir, o fluxo de execução será transferido para a função Media. Após concluir a execução da função, o fluxo retorna ao ponto de onde saiu, trazendo um valor do nome da função. Este valor é, de acordo com o comando a seguir, armazenado na variável Med.
Exemplo
Med ← Media (X, N)
{Determina quantos valores acima da média}
Cont ← 0
 Para I de 1 até N faça
 Se X[I] > Med Então
 Cont ← Cont + 1
 Fim Se
 Fim Para
 Escreva ‘Quantidade de valores acima da média:’, Cont
Fim
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
	Esta função consiste em um subalgoritmo que tem por objetivo resolver o problema de calcular a média de um grupo de valores inteiros. Através da execução do comando Med ← Media (X, N), o fluxo de execução do algoritmo é desviado para a execução da função Media, e os conteúdos de X e N são passados para Conjunto e Quant_Elementos respectivamente. Assim, dado que X contem os valores a serem processados, estes estarão também na variável Conjunto, quando da execução da função Media. O mesmo ocorre com N, cujo valor será passado para o argumento Quant_Elementos. No nosso exemplo, quando for encerrada a execução da função Media, o fluxo retornará ao comando Med ← Media (X, N) e, conforme especifica este comando, o conteúdo de Média será armazenado na variável Med.
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Argumentos
	Na escrita de um subalgoritmo, seja ele do tipo função ou procedimento, os dados que o subalgoritmo necessita para que seja possível a solução do problema, devem ser colocados na forma de argumentos do subalgoritmo. A estes argumentos vamos denominar de argumentos formais. Aos argumentos da chamada do subalgoritmo, denominaremos argumentos atuais. Assim, no algoritmo Analisa_Valores, que chama a função Media através do comando Med ← Media (X, N), as variáveis X e N são os argumentos atuais, enquanto que Conjunto e Quant_Elementos são os argumentos formais.
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Localidade
	Para que um algoritmo possa chamar a execução de um subalgoritmo, é necessário que este subalgoritmo esteja declarado dentro do algoritmo. Da mesma forma, se declararmos uma variável de nome X dentro de um subalgoritmo, esta variável só existira dentro do subalgoritmo e durante a sua execução. Se um algoritmo declarar uma variável A e um subalgoritmo declarar uma variável A, então tem-se duas variáveis diferentes.
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Passagem de Argumentos
	Existem duas formas básicas de passagens de argumentos, por valor, ou por referência.
	Quando, na colocação de um argumento formal, for definido que o mesmo será passado por valor, então esse argumento será uma variável independente que ocupará espaço de memória durante a execução do subalgoritmo.
	Quando for definido que um argumento é passado por referência, então este argumento, na verdade, não ocupará espaço na memória, pois será usado o espaço de memória ocupado pelo respectivo argumento atual.
	Os argumentos formais de um subalgoritmo podem ser argumentos de entrada, ou argumentos de saída, ou ambos.
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Exemplos
Sistema de equações 3x3 sem função
Algoritmo Determinante
Tipo
 Matriz: coleção de [1..3,1..3] de inteiro
Variáveis
 M:matriz
 Det ,x, y, z, i, j: inteiro
Inicio
Para j variando de 1 até 3
 Faça
 Para i variando de 1 até 3
 Faça
 Leia [ i , j ]
 FimPara
 FimPara
Det ← (M[1,1]*M[2,2]*M[3,3] + M[1,2]*M[2,3]*M[3,1] + M[1,3]*M[2,1]*M[3,2]) – (M[1,3]*M[2,2]*M[3,1] + M[1,1]*M[2,3]*M[3,2] + M[1,2]*M[2,1]*M[3,3])
 Escreva Det
Fim
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Exemplos
Sistema de equações 3x3 com função 
Algoritmo Sistema
Função determinante(M): inteiro
 Variáveis
 det,dx,dy,dz,x,y,z: inteiro
 resultado: string
 Inicio
 Det=(M[1,1]*M[2,2]*M[3,3] + M[1,2]*M[2,3]*M[3,1] +
 M[1,3]*M[2,1]*M[3,2]) – (M[1,3]*M[2,2]*M[3,1] +
 M[1,1]*M[2,3]*M[3,2] + M[1,2]*M[2,1]*M[3,3])
 Dx=(M[1,4]*M[2,2]*M[3,3]+M[1,2]*M[2,3]*M[3,4]+
M[1,3]*M[2,4]*M[3,2]) – (M[1,3]*M[2,2]*M[3,4] + 
M[1,4]*M[2,3]*M[3,2] + M[1,2]*M[2,4]*M[3,3]
 Dy=(M[1,1]*M[2,2]*M[3,3]+ M[1,4]*M[1,3]*M[3,1] + 
M[1,3]*M[2,1]*M[3,4]) – (M[1,3]*M[2,4]*M[3,1] + 
M[1,1]*M[2,3]*M[3,4] +M[1,4]*M[2,1]*M[3,3])
 Dz=(M[1,1]*M[2,2]*M[3,4] +M[1,2]*M[2,4]*M[3,1] + 
M[1,4]*M[2,1]*M[3,2]) – (M[1,4]*M[2,2]*M[3,1] + 
M[1,1]*M[2,4]*M[3,2] + M[1,2]*M[2,1]*M[3,4])
X=Dx/Det
Y=Dy/Det
Z=Dz/Det
Fim
Tipo
Matriz: coleção de [1..4,1..4] de inteiro
Variáveis
M: matriz
Inicio
Para j variando de 1 até 4 faça
 Para i variando de 1 até 4 faça
 Leia[i, j]
 FimPara
FimPara
 
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Exemplos
Determinar o valor da combinação de m elementos tomados p a p. O valor desta combinação pode ser obtido através:
 Cp = m!
 p!(m – p)! 
 
m
Algoritmo Combinação
Função Fatorial (Numero): Inteira
 Variáveis
 Numero: Inteira {por favor}
 Fat, I: Inteira	
 Inicio
 Fat ← 1
 Para I de 1 até Numero faça
 Fat ← Fat * I
 FimPara
 Fatorial ← Fat
 Fim
Variáveis
 Comb, M, P: Inteira
Início
 Leia M, P
 Comb ← Fatorial (M)/ (Fatorial(P)*Fatorial (M-P))
 Escreva Comb
Fim
© EPD/UFJF – Sistemas de Informação
Aula 13 – Funções
Exemplos
Ordenação de vetores sem função
Algoritmo Ordenação
Tipo
 matriz:coleção de [1..100] de inteiro
Variáveis
 valores:matriz
 x,i,ultimo,maior,k: inteiro
Inicio
Leia n
Para i variando de 1 até n
 Faça
 Leia valores[ i ]
 FimPara
Para i variando de 1 até n 
 Faça
 ultimo ← n – ( j - 1);
 maior ←valores[1];
 posmaior ← 1
 Para k variando de 2 até ultimo
 Faça
	Se valores[k] >= maior 
	 Então
	 maior ← valores [k]
	 posmaior ← k
 FimSe
 FimPara
 FimPara 
Valores[ posmaior ] ← valores[ultimo]
Valores[ultimo] ←maior
Fim
 
© EPD/UFJF – Sistemas de
Informação
Aula 13 – Funções
Exemplos
Ordenação de vetores com função

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais