Baixe o app para aproveitar ainda mais
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
Compartilhar