algoritmos ii aula 11 funções e procedimentos - unisulpaginas.unisul.br/max.pereira/algoritmos ii...

22
Algoritmos II Aula 11 – Funções e Procedimentos Professor: Max Pereira [email protected] Ciência da Computação

Upload: trantram

Post on 10-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Algoritmos IIAula 11 – Funções e Procedimentos

Professor: Max Pereira

[email protected]ência da Computação

Programação Estruturada ouProgramação Modular

• 1960 crise do software;

• Programas grandes e caros (manutenção);

• Ausência de metodologia;

• Alta probabilidade de erros na programação;

• Manutenções diárias.

Programação Estruturada ouProgramação Modular

• Maior complexidade e pressão por redução de custos.

• Surgimento de metodologias de desenvolvimento de software: “Programação Estruturada”.

• Decompor o problema em partes ou blocos.

• Desenvolvimento de algoritmos em partes integradas.

• Maior legibilidade, facilidade de uso e manutenção.

Modularização

• Decompor em partes os problemas complexos, ou seja, resolver o problema em etapas.

• Construir algoritmos para cada uma das partes independente uma das outras.

Problema

• Precisamos construir um programa para uma empresa prestadora de serviços. O programa deverá realizar a entrada de dados para cada funcionário da empresa, executar o cálculo da folha de pagamento e, por fim, emitir os contracheques e a relação bancária.

• Um problema bem mais complexo do que os vistos até agora!

Problema

• Podemos separar o problema em partes, construir pequenos módulos, testá-los e depois integrá-los para alcançar o objetivo final.

• Com esse procedimento, a complexidade do algoritmo diminui, os testes se tornam mais rápidos.

Problema

Folha de Pagamento

Entrada de Dados

Movimento Saídas

Funcionários Dependentes

Programação Estruturada

• Os módulos são independentes, mas todos eles estão integrados ao módulo principal do programa – Folha de pagamento.

• A partir desse módulo é que os outros são chamados como entrada de dados, saídas, etc..

• Uma forma estruturada de trabalhar!

Programação Estruturada

• Nossos programas terão agora um módulo principal, chamado programa principal e diversos outros módulos, que irão compor todo o programa.

• Cada módulo é chamado a partir do programa principal.

• Quando isso acontece, os comandos definidos dentro do módulo são executados.

• Quando finalizados, o controle volta para o programa principal.

• Nas linguagens de programação cada módulo é chamado de função ou procedimento.

Procedimentos e Funções

• Os procedimentos e funções são sub-rotinas ou um módulo do algoritmo principal.

• Cada procedimento ou função são independentes.

• Dentro dessas sub-rotinas são executados comandos que realizam alguma tarefa específica.

• Quando todos os comandos dentro do procedimento ou função forem executados, o controle do programa voltará para o programa principal.

Procedimentos e Funções

• Por que usar?

– Reaproveitamento de código já construído.

– Evitar que um trecho do código seja repetido várias vezes dentro de um mesmo programa.

– Permitir a alteração de um trecho de código de forma mais rápida.

– Para que os blocos do programa não fiquem grandes demais.

– Facilitar a leitura e manutenção do programa

Procedimentos e Funções

• Procedimentos: são estruturas que executam um conjunto de comandos quando o procedimento é chamado.

• Funções: são procedimentos que retornam um valor quando terminam.

Funções - declaração

<tipo> nome_da_função (<tipo> arg1, <tipo> arg2, ..., <tipo> argN) {

<comandos>

return valor_de_retorno;}

int soma (int n1, int n2) {

int s;

s = n1 + n2;

return s;

}

Funções - declaração

int soma (int n1, int n2) {

int s;

s = n1 + n2;

return s;

}

Toda função deve ter um tipo(String, int, float), que indicará o tipo do valor de retorno (saída).

Os argumentos ou parâmetros indicam o tipo e quais valores são esperados para serem utilizados pela função (entrada).

A expressão contida no comando return é chamada de valor de retorno da função. Esse comando é o último a ser executado. As funções só podem ser declaradas fora de outras funções. main (String[] args) é uma função!

Funções

• Invocando ou chamando uma função

– Atribuindo o seu valor a uma variável:• resultado = soma(x, y);

– O resultado da chamada de uma função é uma expressão e pode ser usada em qualquer lugar que aceite uma expressão:• System.out.println(“Soma = “+soma(x, y));

Funçõespublic class Exemplo01 {

public static int soma (int n1, int n2) {

int s;

s = n1 + n2;

return s;

}

public static void main(String[] args) {

int x=5;

int y=12;

int resultado;

resultado = soma(x,y);

System.out.println(resultado);

}

}

public class Exemplo03 {

public static double media(double n1, double n2, double n3) {

double m;

m = (n1+n2+n3)/3;

return m;

}

public static void main(String[] args) {

double nota1, nota2, nota3;

nota1 = Double.parseDouble(JOptionPane.showInputDialog("Nota 1"));

nota2 = Double.parseDouble(JOptionPane.showInputDialog("Nota 2"));

nota3 = Double.parseDouble(JOptionPane.showInputDialog("Nota 3"));

System.out.println("A média é "+media(nota1,nota2,nota3));

}

}

Procedimentos – o tipo void

• O tipo void é utilizado em procedimentos.

• É um tipo que representa “o nada” .

• Indica que a função não retorna nenhum valor, ou seja, é um procedimento.

void nome_do_procedimento (<tipo> arg1, <tipo> arg2, ..., <tipo> argn) {

<comandos>

}

Procedimento

public class Exemplo02 {

public static void imprimeDobro(int n1) {

System.out.println("O dobro de x é "+ 2*n1);

}

public static void main(String[] args) {

int x=6;

imprimeDobro(x);

}

}

public class Exemplo04 {

public static void cabecalho() {

System.out.println("-----CALCULAR A POTÊNCIA DE UM NÚMERO-----");

}

public static int potencia(int n, int p) {

int resultado=n;

for (int i=2; i<=p; i++)

resultado = resultado*n;

return resultado;

}

public static void main(String[] args) {

int x=6;

int y=2;

cabecalho();

System.out.println(x+" elevado a "+y+" é igual a "+potencia(x,y));

System.out.println(y+" elevado a "+x+" é igual a "+potencia(y,x));

}

}

Exercícios

1. Escreva uma função para receber o ano corrente e o ano de nascimento de uma pessoa e retorne a idade da pessoa.

2. Escreva uma função que recebe a média final de um aluno e retorna o seu conceito:

Nota Conceito

de 0 até 4,9 D

de 5 até 6,9 C

de 7 até 8,9 B

de 9 até 10 A

Exercícios

3. Escreva uma função que receba um valor inteiro e retorna o seu fatorial.

4. Escreva uma função que receba um número inteiro referente a um mês do ano e imprima o nome do mês. Por exemplo, para 2 a saída deve ser “fevereiro”.

5. Escreva uma função que receba dois valores inteiros e retorne a soma dos números entre eles. Por exemplo, para 2 e 5 a saída dever ser a soma de 2+3+4+5, ou seja, 14.