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