Sub-algoritmos Algoritmos e Estrutura de Dados Funções e Procedimentos M. Sc. Luiz Alberto [email protected] • Em geral, um programa é executado linearmente, uma linha após a outra, até o fim • Entretanto, quando são utilizados sub-algoritmos, é possível a realização de desvios na execução natural dos programas • Assim, um programa é executado linearmente até a chamada de um subalgoritmo • Com a chamada, o programa chamador é temporariamente suspenso e o controle é passado para o sub-algoritmo que é executado • Ao terminar o sub-algoritmo, o controle retorna para o programa chamador • Tipos de Sub-algoritmos: – Funções (functions) – Procedimentos (procedures) Aula 9– Algoritmo – Funções e Procedimentos Função Prof. Luiz Alberto - Forma geral de uma função • É um subprograma iniciado pela palavra reservada função, seguida de um identificador que fornece um nome a função, uma lista de parâmetros, além de um tipo de dado válido para retornar o resultado encontrado pela mesma. • A lista de parâmetros consiste nos valores que o algoritmo principal possui e o subprograma precisa usar para obter, ou gerar, outro dado importante na solução almejada pelo algoritmo. Aula 9– Algoritmo – Funções e Procedimentos –1– –2– Prof. Luiz Alberto - • Uma função possui somente dois momentos importantes no algoritmo: • Primeiro momento é o da declaração e especificação das tarefas/operações (seu corpo) que a função deverá executar; • Segundo momento é a utilização ou acionamento da função que pode acontecer várias vezes depois da sua criação e dentro do algoritmo no qual ela também faz parte. Aula 9– Algoritmo – Funções e Procedimentos –3– Prof. Luiz Alberto - Parâmetros da função Parâmetros da função • Os parâmetros de uma função são dados fundamentais que a função deve ter acesso para alcançar seu objetivo. • Por exemplo, se você tem uma função denominada media que calcula a média aritmética de dois números, é essencial que essa função "saiba" quais são os números que serão usado para o cálculo da média, do contrário, ela não pode efetuar os cálculos. • Pois bem, esses dois números serão disponibilizados à função por meio de parâmetros. Aula 9– Algoritmo – Funções e Procedimentos –4– Prof. Luiz Alberto - Algoritmo Completo Aula 9– Algoritmo – Funções e Procedimentos –5– Prof. Luiz Alberto - Instrução de Retorno algoritmo "media por aluno“ var nota_1, nota_2, total : real // Subprogramas funcao media (valor_1, valor_2: real) : real var resultado : real inicio resultado <- (valor_1 + valor_2) / 2 retorne (resultado) fimfuncao inicio // algoritmo principal escreva("Digite a primeira nota: ") leia(nota_1) escreva("Digite a segunda nota: ") leia(nota_2) total<-media(nota_1,nota_2) escreva("A média das duas notas é: ",total) fimalgoritmo Aula 9– Algoritmo – Funções e Procedimentos funcao media (num_1 : real; num_2 : real) : real var resultado : real inicio resultado <- (num_1 + num_2) / 2 retorne(resultado) fimfuncao • Um subprograma sempre retorna uma valor ao algoritmo que o aciona, por isso ele possui um tipo de dado declarado, retornando ao acionador um dado exatamente deste tipo. • A instrução retorne executa o encerramento do subprograma, retornando imediatamente um único valor desejado a instrução acionadora da função. Esta instrução só pode retornar um único valor ao acionador. –6– Prof. Luiz Alberto - Aula 9– Algoritmo – Funções e Procedimentos –7– Prof. Luiz Alberto - Exemplo 2 Fluxograma algoritmo "iguais_ou_diferentes“ var num1,num2,total: inteiro verifica:logico funcao compara(a,b:inteiro):logico var resultado:logico inicio se a = b entao resultado <- verdadeiro senao resultado <- falso fimse retorne(resultado) fimfuncao Aula 9– Algoritmo – Funções e Procedimentos inicio escreva("Digite o primeiro número: ") leia(num1) escreva("Digite o primeiro número: ") leia(num2) verifica<-compara(num1,num2) se verifica entao escreva("Os números são iguais") senao escreva("Os números são diferentes") fimse fimalgoritmo –8– Prof. Luiz Alberto - Variáveis Locais e Globais – 10 – –9– Prof. Luiz Alberto - Variáveis Locais e Globais • Uma variável é considerada global quando sua declaração acontece no algoritmo principal, enquanto que uma variável é considerada local quando a sua declaração acontece em um subprograma. Aula 9– Algoritmo – Funções e Procedimentos Aula 9– Algoritmo – Funções e Procedimentos Prof. Luiz Alberto - • Variável Global – Declaração feita no algoritmo principal; – Todos os subprogramas do algoritmo principal podem acessar e manipular o valor armazenado por um componente global; – Também chamado de componente público, pois oferece o acesso de todos os subprogramas existentes no algoritmo principal. • Variável Local – Declaração feita no subprograma de um algoritmo principal; – Somente o subprograma que declara o componente pode acessá-lo, ou os subprogramas hierarquicamente desenvolvidos após este subprograma, tornando este subprograma um algoritmo principal para os seus subprogramas; – Todos os componentes criados em um subprograma são locais, sendo destruídos quando tal subprograma é encerrado (deixam de existir na memória do computador). Aula 9– Algoritmo – Funções e Procedimentos – 11 – Prof. Luiz Alberto - Procedimento Procedimento • Consiste em um subprograma iniciado pela palavra reservada procedimento, seguida de um identificador que lhe fornece um nome e sua lista de parâmetros. • Nenhum procedimento possui tipo de dado de retorno, como em uma função, pois este tipo de subprograma não retorna nenhum valor ao seu chamador (acionador). Aula 9– Algoritmo – Funções e Procedimentos – 12 – Prof. Luiz Alberto - Procedimento - Exemplo – 14 – – Primeiro momento é o da declaração, onde é elaborado o cabeçalho da função coerente com as suas necessidades e a descrição das tarefas/operações que ele realizará quando for acionado (seu corpo); – Segundo momento é a utilização ou acionamento do procedimento que pode acontecer várias vezes depois da sua criação e dentro do algoritmo no qual ela também faz parte. Aula 9– Algoritmo – Funções e Procedimentos Prof. Luiz Alberto - – 13 – Procedimento - Exemplo algoritmo "maiorIdade“ var idade: inteiro procedimento maioridade (idadeAuxiliar : inteiro) var inicio se (idadeAuxiliar < 18) entao escreva("Indivíduo menor de idade.") senao escreva("Indivíduo maior de idade.") fimse fimprocedimento procedimento maioridade (idadeAuxiliar : inteiro) var // sem necessidade da criação de componentes locais inicio se (idadeAuxiliar < 18) entao escreva("Indivíduo menor de idade.") senao escreva("Indivíduo maior de idade.") fimse fimprocedimento Aula 9– Algoritmo – Funções e Procedimentos • Um procedimento possui dois momentos no algoritmo: Prof. Luiz Alberto - Aula 9– Algoritmo – Funções e Procedimentos – 15 – inicio // Seção de Comandos escreva("Digite a idade do indivíduo: ") leia(idade) escreval maioridade(idade) fimalgoritmo Prof. Luiz Alberto - Características Relevantes da Programação Modular • Reutilização de código com aproveitamento da lógica existente no subprograma; • Subprogramas devem ser genéricos o bastante para se adaptarem as diversas situações, visando justamente essa reutilização; • A passagem de parâmetros possibilita o envio de diferentes valores para um mesmo subprograma, que realizará as operações necessárias sobre estes dados; Exercícios 1. 2. 3. 4. 5. 6. Aula 9– Algoritmo – Funções e Procedimentos – 16 – Prof. Luiz Alberto - Faça uma função que verifique o sinal de um número inteiro, retornando -1 se o número for negativo, 0 se o número for nulo e 1 se o número for positivo. Faça uma função que retorne xy , sendo dados x e y inteiro como parâmetros de entrada. Escreva um programa que calcule a potência de um número lido. Faça um programa que lê 3 valores e os envia para uma função que retorna por parâmetro as raízes da formula de baskara. Fazer uma função que receba como parâmetro um número inteiro e retorne VERDADEIRO se ele for primo e FALSO em caso contrário. Use esta função para imprimir todos os números primos entre 0 e 100. Fazer um programa para calcular as áreas de um quadrado e um triângulo retângulo usando funções. O usuário deve informar inicialmente qual área que deseja calcular: quadrado ou triângulo retângulo. Faça um programa que lê 2 valores e uma operação(*,/,+,-) e envia para uma função que retorna pelo parâmetro, o resultado da operação (use escolha). Aula 9– Algoritmo – Funções e Procedimentos – 17 – Prof. Luiz Alberto -