Você está na página 1de 27

BC0505 - Processamento da Informacao

Modularizacao de C
odigo

Marcio K. Oikawa (Teoria)

Marco/2015

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Introducao

Estudaremos nesta aula:


O que e modularizacao?
Quais sao as vantagens de um c
odigo modularizado?
O que e parametrizacao?

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Introducao

Modularizacao e:
Um processo para desenvolvimento e organizacao de codigo;
Uma forma de reutilizacao de c
odigo;

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

O que e modularizacao?

Definicao de metodos;
Chamada de metodos;
Parametrizacao;
Escopo de variaveis;
Passagem de parametros por valor e referencia;

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Metodos em Java

A maioria das linguagens imperativas oferece formas de


modularizar codigo;
M
odulos sao trechos de c
odigo com prop
osito especfico,
usados para melhorar a legibilidade, organizacao e reutilizacao
de comandos;
uma estrategia excelente para programar grandes sistemas;
E
Cada linguagem possui um termo especial para caracterizar
seu modulo. Os termos mais comuns sao funcoes e
procedimentos. Em Java, o m
odulo e chamado m
etodo.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Declaracao do Metodo

A declaracao de um metodo consiste em definir um trecho de


codigo que sera executado todas as vezes que o metodo for
chamado.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Definicao e Chamada de Metodo

Durante o desenvolvimento de c
odigos durante o quadrimestre,
pudemos usar (mesmo sem saber) metodos que foram u
teis para o
desenvolvimento de nossos trabalhos. Podemos citar alguns deles:
Math.sqrt(double): Calcula a raiz quadrada de um n
umero;
Math.random(): Calcula um n
umero aleat
orio;
System.out.println(String): Exibe uma mensagem na tela;
...
O que eles tem em comum?

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Definicao e Chamada de Metodo


O que eles tem em comum?
Alguem os desenvolveu, mas voce nao precisou saber como foi
feito (Encapsulamento);
Voce pode usar esses metodos varias vezes, em diferentes
algoritmos (Reutilizacao de c
odigo);
Eles certamente facilitaram o desenvolvimento de seus
algoritmos, deixando o seu c
odigo mais claro.
Chamada de Metodo
Quando o seu algoritmo usa um metodo, costumamos dizer que ele
esta chamando o metodo. Sempre existe um metodo chamador e
um metodo chamado.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo

Vamos estudar um pouco da estrutura de um metodo.


int somaInteiros ( int a, int b ){
int res;
res = a + b;
return res;
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo
tipo de retorno
int somaInteiros ( int a, int b ){
int res;
res = a + b;
return res;
}
Tipo de retorno
Alguns metodos realizam calculos, gerando um resultado final que
sera usado pelo codigo que o chamou. O tipo de retorno representa
o tipo do dado que sera devolvido para o metodo chamador.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo
nome
int somaInteiros ( int a, int b ){
int res;
res = a + b;
return res;
}
Nome
O nome do metodo e o identificador do metodo. As regras para
definicao de um nome sao as mesmas de variaveis e constantes.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo
parametros
int somaInteiros ( int a, int b ){
int res;
res = a + b;
return res;
}
Parametros
Parametros sao essenciais para qualquer metodo. Representam os
valores de entrada que o metodo necessita para realizar suas
operacoes. Os parametros devem ser declarados no metodo como
variaveis comuns (indicando seu tipo). A ordem os parametros e
sua quantidade devem ser respeitados todas as vezes que metodo
for chamado.
Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo

int somaInteiros ( int a, int b ){


int res;
res = a + b;

c
odigo

return res;
}
Codigo
Sao os comandos que realizam o processamento das informacoes
dentro do metodo.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo
int somaInteiros ( int a, int b ){
int res;
res = a + b;
return res;

retorno

}
Retorno
O retorno e uma parte essencial da estrutura do metodo. Apos
finalizado o processamento, o retorno devera devolver o resultado
final do processamento para o c
odigo chamador. O valor retornado
deve ser do mesmo tipo de retorno.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Estrutura de um Metodo
...
int x, y;
x = 23;
y = -4;

somaInteiros(23, -4)

int k = somaInteiros(x, y);


System.out.println(k);
...
int somaInteiros (int a, int b){
int res;
res = a + b;
return res;
}
res = 19

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo

Vamos criar uma classe com varios metodos, que realizam


ordenacao de um vetor, tentando compara-los em termos de
eficiencia.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exemplo

O primeiro algoritmo que faremos e o Bubble Sort. Antes, porem


vamos escrever um metodo para realizar a troca de valores entre
duas variaveis, que e uma operacao que usamos em varios os
algoritmos.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Bubble Sort

Vamos tentar simplificar o Bubble Sort, criando um metodo que


realiza troca de valores entre variaveis.
int tmp;
for (int i=0; i<V.length-1; i++){
for (int j=0; j<V.length-i-1; j++){
if (V[j] > V[j+1]){
tmp = V[j];
V[j] = V[j+1];
troca (V[j],
V[j+1] = tmp;
}
}

V[j+1])

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Bubble Sort

Vamos tentar simplificar o Bubble Sort, criando um metodo que


realiza troca de valores entre variaveis.
int tmp;
for (int i=0; i<V.length-1; i++){
for (int j=0; j<V.length-i-1; j++){
if (V[j] > V[j+1]){
troca (V[j],V[j+1]);
}
}
}

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Passagem de parametros

void troca (int x, int y){


int tmp;
tmp = x;
x = y;
y = tmp;
return;
}
Passagem de parametros
Este codigo funciona para o Bubblesort?

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Passagem de parametros

Qual problema apresenta o c


odigo do metodo que troca
valores?
Como resolver?

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Passagem de parametros

void troca (int V, int x, int y){


//x e y agora sao
ndices do vetor V
int tmp;
tmp = V[x];
V[x] = V[y];
V[y] = tmp;
return;
}
Passagem de parametros
Por que o comportamento e diferente?

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Passagem de parametros

Existem basicamente dois sistemas de passagem de parametros:


Passagem de par
ametros por valor: Um metodo recebe
uma copia do valor de uma variavel, de modo que alteracoes
ocorridas no metodo nao sao propagadas para a variavel
original.
Passagem de par
ametros por refer
encia: Um metodo
recebe o endereco de mem
oria da variavel (ou seja, a propria
variavel), de modo que alterac
oes ocorridas no metodo sao
propagadas para a variavel original.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Passagem de parametros

Em Java, o sistema de passagem de parametros e definido pelo


tipo da variavel:
Variaveis de tipos primitivos sao passados por valor;
Variaveis de tipos classe (objetos de classe) sao passados por
referencia.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exerccios

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exerccio 1

Construa um modulo que verifica se um n


umero e, ou nao, primo.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Exerccio 2

Construa modulos que recebem um vetor e o ordenam. Escolha um


dos algoritmos de ordenacao ja vistos em aula.

Marcio K. Oikawa (Teoria)

BC0505 - Processamento da Informac


ao

Você também pode gostar