Upload
trantram
View
218
Download
0
Embed Size (px)
Citation preview
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.
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.