Você está na página 1de 57

Modularizao em Java

Introduo Programao
Prof. Fabiano Madeira
2
Definies de mdulos
procedimentos
funes
Introduo criao de mtodos em Java:
mtodos estticos:
sem retorno (procedimento):
sem parmetros
com parmetros
Modularizao
Introduo Programao - Prof. Fabiano Madeira
3
Decomposio: Dividir para Conquistar
Decomposio de problemas
Dividir um problema em partes menores
Resolver as partes menores (mais fceis,
chamadas mdulos)
Juntar corretamente as solues das partes
menores para compor a soluo do problema
original
Se alguma parte menor continua complexa,
o subproblema dividido novamente:
refinamento sucessivo
Introduo Programao - Prof. Fabiano Madeira
4
Modularizao
Modularizao a tcnica para desenvolver
algoritmos, denominados mdulos, por
meio de refinamentos sucessivos.
Cada mdulo:
resolve um subproblema;
um algoritmo completo, com incio, meio e
fim, entrada e sada, objetivos, variveis, etc.
Denominamos Mdulo Principal aquele que
resolve o problema original, chamando
convenientemente os mdulos menores.
Introduo Programao - Prof. Fabiano Madeira
5
Tipos de Mdulos
Definimos dois tipos de mdulos:
procedimentos
conjuntos de instrues que realizam uma
determinada tarefa
conhecidos por sub-rotina ou procedure
funes
semelhantes a procedimentos, porm retornam
valores (como funes matemticas) que podem ser
usados em expresses.
Introduo Programao - Prof. Fabiano Madeira
Modularizao
Parte 1 - Procedimentos
7
Procedimentos Parte 1
Um mdulo do tipo procedimento envolve
dois momentos bem diferentes:
sua criao:
para criar um procedimento, basta codific-lo
(escrever o algoritmo)
sua execuo:
um procedimento executado quando algum outro
mdulo o invocar, isto , quando outro mdulo
cham-lo (muitas vezes esse outro mdulo o
principal).
Introduo Programao - Prof. Fabiano Madeira
8
Procedimentos - Criao
Todo procedimento possui:
uma assinatura (ou interface), que define um
nome para o procedimento e uma lista de
parmetros (argumentos de entrada)

um corpo, dentro do qual so declaradas
variveis locais e so codificadas as instrues.
Introduo Programao - Prof. Fabiano Madeira
9
Procedimentos - Chamada
(execuo)
Um procedimento executado quando
algum mdulo o cham-lo pelo nome e
informar parmetros compatveis com a
lista de parmetros dada na assinatura do
procedimento.
Introduo Programao - Prof. Fabiano Madeira
10
Mtodos em Java
Em Java, os mdulos (procedimentos e
funes) so representados por classes ou
mtodos.

No momento, trataremos apenas mtodos,
do tipo estticos (que no dependem da
criao de objetos para que sejam
executados).
Introduo Programao - Prof. Fabiano Madeira
11
Mtodos Estticos p/ Procedimentos
Criao de procedimento em Java:
definio da assinatura e codificao do corpo

public static void nomeProcedim ( <listaParam> )
{ ... Codificao do corpo ... }

Chamada (execuo):
instruo de chamada de mtodo do tipo
procedimento, externamente:

nomeProcedim ( <parametros> ) ;


Introduo Programao - Prof. Fabiano Madeira
12
Assinatura de Procedimentos
public static void nomeProcedim ( <listaParam> )

O nome do procedimento segue as mesmas
regras de nomeao de variveis
A lista de parmetros:
segue as regras de declarao de variveis; cada
parmetro separado por vrgulas
pode ser vazia (os parnteses aparecem vazios)
Exemplos:
public static void calcula ( ) // proced. sem parmetros
public static void grava ( int i , char c ) // com parmetros
Introduo Programao - Prof. Fabiano Madeira
13
Chamada de Procedimentos
nomeProcedim ( <parametros> ) ;

Os parmetros fornecidos na chamada devem
ser compatveis com a lista de parmetros da
assinatura
deixar parnteses vazios se no houver
parmetros
separar por vrgulas quando houver mais de um
Exemplos:
calcula ( ) ; // chamada de proced. sem parmetros
grava ( 2 , c ) ; // chamada de proced. com parmetros
Introduo Programao - Prof. Fabiano Madeira
14
Chamada de Procedimentos
A sintaxe definida vale para chamadas de
procedimentos que so codificados no
mesmo arquivo (mesma classe)

possvel chamarmos procedimentos
codificados em outras classes, bastando
informar o nome da classe:

NomeDaClasse.nomeProcedim ( <parametros> ) ;
Introduo Programao - Prof. Fabiano Madeira
15
Exemplos de Procedimentos
Com freqncia ns temos usado chamada
a procedimentos em Java:

JOptionPane.showMessageDialog (null,msg) ;


E sempre estamos codificamos um
procedimento em Java (mtodo esttico):

public static void main ( String args[ ] )
Mtodo esttico pr-codificado na classe JOptionPane
Assinatura do mtodo esttico que contm
o mdulo PRINCIPAL (ou seja, o programa)
Introduo Programao - Prof. Fabiano Madeira
16
Procedimento Principal
Como dissemos antes, o Mdulo Principal
resolve o problema original, chamando
convenientemente os mdulos menores

Em Java, o mdulo principal descrito no
mtodo main, que nada mais do que um
procedimento que contm as instrues do
programa.
Introduo Programao - Prof. Fabiano Madeira
17
Procedimento Principal
Portanto, quando selecionamos, por exemplo
no Eclipse a opo

Run As Java Application,

acionada a execuo das instrues do main

(da 1 ltima instruo, e eventualmente so invocados
outros mdulos).
Introduo Programao - Prof. Fabiano Madeira
18
Exemplo: Codificao de
Procedimento com Parmetros (1/8)
Problema: Considere o algoritmo da Eleio,
modularizar parte dele para reutilizar cdigo.

Nome: Eleio
Objetivo: Conforme definido
Variveis:
caracter voto, continua
inteiro totalA, totalB, totalC, total

Incio
continua S
totalA 0
totalB 0
totalC 0
. . .
Introduo Programao - Prof. Fabiano Madeira
19
Exemplo: Codificao de
Procedimento com Parmetros (2/8)

ENQUANTO continua = S FAA
LEIA voto
ESCOLHA voto
Caso A:
totalA totalA + 1
Caso B:
totalB totalB + 1
Caso C:
totalC totalC + 1
Caso P:
total totalA + totalB + totalC
Escreva totalA / total * 100.0
Escreva totalB / total * 100.0
Escreva totalC / total * 100.0
FIM_ESCOLHA

LEIA continua
FIM_ENQUANTO

Introduo Programao - Prof. Fabiano Madeira
20
Exemplo: Codificao de
Procedimento com Parmetros (3/8)

ESCREVA totalA
ESCREVA totalB
ESCREVA totalC
total totalA + totalB + totalC
ESCREVA totalA / total * 100
ESCREVA totalB / total * 100
ESCREVA totalC / total * 100

SE totalA > totalB e totalA > totalC ENTO
Escreva Venceu A!!
SENO
SE totalB > totalC ENTO
Escreva Venceu B!!
SENO
Escreva Venceu C!!
FIM_SE
FIM_SE
FIM
Cdigo que se repete:
pode virar um mdulo
Introduo Programao - Prof. Fabiano Madeira
21
Exemplo: Codificao de
Procedimento com Parmetros (4/8)

// transcrio em Java:

package anacristina;
import javax.swing.JOptionPane;
public class EleicaoModularizada1 {

public static void main (String args[]) {

char voto, continua;
int totalA, totalB, totalC;
String entrada, saida;

continua = 'S';
totalA=0;
totalB=0;
totalC=0;
. . .
Introduo Programao - Prof. Fabiano Madeira
22
Exemplo: Codificao de
Procedimento com Parmetros (5/8)

while (continua == 'S') {
entrada = JOptionPane.showInputDialog ("Vote: A, B ou C,\n"+
"ou digite P para obter as parciais");
voto = entrada.charAt(0);
switch (voto) {
case 'A':
totalA = totalA + 1;
break;
case 'B':
totalB = totalB + 1;
break;
case 'C':
totalC = totalC + 1;
break;
case 'P':
mostraPercentuais (totalA, totalB, totalC); // chamada ao proced.
break;
}
Chamada ao procedimento
mostraPercentuais, com
trs parmetros inteiros
Introduo Programao - Prof. Fabiano Madeira
23
Exemplo: Codificao de
Procedimento com Parmetros (6/8)

. . .
entrada = JOptionPane.showInputDialog("Continua?");
continua = entrada.charAt(0);

} // fim do while

saida = "A recebeu " + totalA + " votos\n" +
"B recebeu " + totalB + " votos\n" +
"C recebeu " + totalC + " votos\n" ;
JOptionPane.showMessageDialog(null,saida);

mostraPercentuais (totalA, totalB, totalC); // chamada ao procedimento


. . .
Introduo Programao - Prof. Fabiano Madeira
24
Exemplo: Codificao de
Procedimento com Parmetros (7/8)

if (totalA > totalB && totalA > totalC) {
JOptionPane.showMessageDialog(null,"Venceu A!");
}
else {
if (totalB > totalC) {
JOptionPane.showMessageDialog(null,"Venceu B!");
}
else {
JOptionPane.showMessageDialog(null,"Venceu C!");
}
}

} // fim do mtodo main

. . .
Introduo Programao - Prof. Fabiano Madeira
25
Exemplo: Codificao de
Procedimento com Parmetros (8/8)

/* Mtodo: mostraPercentuais
* Objetivo: Calcular e exibir percentuais de valores dados.
* Entrada: trs totais inteiros
* Sada: exibio do percentual relativo a cada total
*/
public static void mostraPercentuais ( int tA , int tB , int tC ) {
// variveis locais ao procedimento:
double total;
String saida;

total = tA + tB + tC;
saida = "A recebeu " + (( tA / total ) * 100) + "% dos votos\n";
saida += "B recebeu " + (( tB / total ) * 100) + "% dos votos\n";
saida += "C recebeu " + (( tC / total ) * 100) + "% dos votos\n";
JOptionPane.showMessageDialog(null,saida);
} // fim do mtodo mostraPercentuais

} // fim da classe (do programa e do arquivo)
Lista de parmetros
Introduo Programao - Prof. Fabiano Madeira
Depurao No Eclipse
O ambiente Eclipse permite a depurao de cdigo,
com acompanhamento passo a passo da execuo
das instrues e da visualizao dos valores de
variveis:
marcar breakpoint
acionar Run Debug as Java application
teclar F6 (step over) para acompanhar as
instrues, sem entrar nos mdulos
teclar F5 (step into) para acompanhar as instrues
dentro de cada mdulo (ateno: instrues de
JOptionPane no podem ser vistas: tecle F6)
Introduo Programao - Prof. Fabiano Madeira 26
27
Exemplo 2: Codificao de
Procedimento com Parmetros (1/5)
Problema 2: Escrever um novo mdulo no programa da
Eleio, que exiba uma mensagem numa caixa de dilogo.
O objetivo deste mdulo tornar mais claro o cdigo do
mdulo principal e de outros mdulos.
// codificao em Java:

package anacristina;
import javax.swing.JOptionPane;
public class EleicaoModularizada2 {

public static void main (String args[]) {

// cdigo inicial idntico ao EleicaoModularizada1
. . .
Introduo Programao - Prof. Fabiano Madeira
28
Exemplo 2: Codificao de
Procedimento com Parmetros (2/5)

. . .

} // fim do while

saida = "A recebeu " + totalA + " votos\n" +
"B recebeu " + totalB + " votos\n" +
"C recebeu " + totalC + " votos\n" ;

exibeMsg (saida); // chamada ao novo procedimento exibeMsg

mostraPercentuais (totalA, totalB, totalC); // chamada ao procedimento


. . .
Introduo Programao - Prof. Fabiano Madeira
29
Exemplo 2: Codificao de
Procedimento com Parmetros (3/5)

if (totalA > totalB && totalA > totalC) {

exibeMsg ( "Venceu A! ); // chamada ao procedimento
}
else {
if (totalB > totalC) {
exibeMsg ( "Venceu B! );
}
else {
exibeMsg ( "Venceu C! );
}
}

} // fim do mtodo main

. . .
Introduo Programao - Prof. Fabiano Madeira
30
Exemplo 2: Codificao de
Procedimento com Parmetros (4/5)

/* Mtodo: mostraPercentuais
* Objetivo: Calcular e exibir percentuais de valores dados.
* Entrada: trs totais inteiros
* Sada: exibio do percentual relativo a cada total
*/
public static void mostraPercentuais ( int tA , int tB , int tC ) {
// variveis locais ao procedimento:
double total;
String saida;

total = tA + tB + tC;
saida = "A recebeu " + (( tA / total ) * 100) + "% dos votos\n";
saida += "B recebeu " + (( tB / total ) * 100) + "% dos votos\n";
saida += "C recebeu " + (( tC / total ) * 100) + "% dos votos\n";
exibeMsg (saida); // chamada ao procedimento exibeMsg

}// fim do mtodo mostraPercentuais

. . .
Um procedimento declarado
como public pode ser chamado
de qualquer outro mdulo
Introduo Programao - Prof. Fabiano Madeira
31
Exemplo 2: Codificao de
Procedimento com Parmetros (5/5)

. . .

/* Mtodo: exibeMsg
* Objetivo: Exibir uma mensagem.
* Entrada: uma mensagem dada na forma de cadeia de caracteres.
* Sada: exibio da mensagem
*/

public static void exibeMsg ( String msg ) {

JOptionPane.showMessageDialog( null , msg );

} // fim do mtodo exibeMsg

} // fim da classe (do programa e do arquivo)
Lista de parmetros
Introduo Programao - Prof. Fabiano Madeira
32
Exerccio 1: Procedimentos
Escreva um novo programa para o problema da Eleio
chamado EleicaoModularizada3. Nele, acrescente um
novo procedimento de nome exibeVencedor, que:
recebe como parmetros trs inteiros (totais de cada
candidato)
descobre qual o maior inteiro dentre os recebidos
exibe uma mensagem dizendo qual candidato venceu
o procedimento exibeVencedor deve usar
necessariamente o procedimento exibeMsg
Faa as correes necessrias no mdulo principal para
utilizar o procedimento acima.
Introduo Programao - Prof. Fabiano Madeira
33
Exerccio 2: Procedimentos
Em EleicaoModularizada4, acrescente um novo
procedimento de nome exibeTotaisEPercentuais, que:
recebe como parmetros trs inteiros (totais de cada
candidato)
exibe os totais de votos recebidos por cada candidato
exibe os percentuais de cada candidato
o procedimento exibeTotaisEPercentuais deve usar
necessariamente os procedimentos exibeMsg e
mostraPercentuais
Faa as correes necessrias no mdulo principal para
utilizar o procedimento acima.
Observe a simplificao do mdulo principal main.
Introduo Programao - Prof. Fabiano Madeira
Modularizao
Parte 2 - Funes
35
Mtodos estticos em Java:
com retorno (funes)
Modularizao - Parte 2
Introduo Programao - Prof. Fabiano Madeira
36
Tipos de Mdulos
Definimos dois tipos de mdulos:
procedimentos
conjuntos de instrues que realizam uma
determinada tarefa
funes
semelhantes a procedimentos, porm retornam
valores (como funes matemticas) que podem ser
usados em expresses.
Introduo Programao - Prof. Fabiano Madeira
37
Funes
Assim como em mdulos do tipo
procedimento, um mdulo do tipo funo
envolve dois momentos bem diferentes:
sua criao:
para criar uma funo, basta codific-la (escrever o
algoritmo)
sua execuo:
uma funo executada quando algum outro mdulo
a invocar e usar o resultado obtido.
Introduo Programao - Prof. Fabiano Madeira
38
Funes - Criao
Toda funo possui:
uma assinatura (interface), que define:
um nome para da funo;
uma lista de parmetros (dados de entrada);
identificao do tipo de dado de retorno (resposta).
um corpo, dentro do qual so:
declaradas variveis locais;
codificadas as instrues;
calculada uma resposta a ser devolvida a quem
invocou a funo.
Introduo Programao - Prof. Fabiano Madeira
39
Funes - Chamada (execuo)
Uma funo executada quando algum
mdulo a cham-lo pelo nome e informar
parmetros compatveis com a lista de
parmetros dada na assinatura da funo.
Como a funo devolve uma resposta
(algum valor), ela pode ser aproveitada
como um termo dentro de expresses.
Exemplos:
a = soma(x, y);
w = cubo(u) * raizQuadrada(v);
Introduo Programao - Prof. Fabiano Madeira
40
Assinatura de Funes
public static <tipoRetorno>nomeFuncao (<listaParam>)

O nome da funo segue as mesmas regras de
nomeao de variveis
A lista de parmetros <listaParam>:
segue as regras de declarao de variveis; cada parmetro
separado por vrgulas
pode ser vazia (os parnteses aparecem vazios)
O tipo de retorno <tipoRetorno> o tipo do dado
devolvido como resposta da funo. Pode ser tipo
primitivo ou referncia para tipo composto.
Introduo Programao - Prof. Fabiano Madeira
41
Corpo de Funes
Como funes devolvem uma resposta,
obrigatrio que, no corpo de uma funo,
haja a instruo de retorno:
return umCertoValor;

Onde umCertoValor um valor ou o nome
de uma varivel
valor/varivel deve ter o mesmo tipo declarado
na assinatura da funo, em <tipoRetorno>
Introduo Programao - Prof. Fabiano Madeira
42
Criao de Funes - Exemplo
public static <tipoRetorno>nomeFuncao(<listaParam>)

public static int soma ( int a, int b ) {

// codificao: corpo da funo

int resultado; // varivel do mesmo tipo do retorno

resultado = . . .

return resultado; // finalizao da funo, com
} // devoluo da resposta
Introduo Programao - Prof. Fabiano Madeira
43
Chamada de Funes
A sintaxe que definimos vale para chamadas
de funes que so codificadas no mesmo
arquivo (mesma classe)

possvel chamarmos funes codificadas
em outras classes, bastando informar o
nome da classe:
NomeDaClasse.nomeFuncao ( <parametros> )
Introduo Programao - Prof. Fabiano Madeira
44
Exemplos de Funes
Com freqncia ns temos usado chamada a
funes em Java:

entrada = JOptionPane.showInputDialog ( umaMsg ) ;




valor = Integer.parseInt ( umaString ) ;
Mtodo esttico pr-codificado na
classe JOptionPane, que devolve
uma String como resposta
Varivel do tipo String,
que recebe a resposta da
funo showInputDialog
Varivel do tipo int, que recebe a
resposta da funo parseInt
Mtodo esttico pr-codificado na classe
Integer, que devolve um int como resposta
Introduo Programao - Prof. Fabiano Madeira
45
Exemplos de Funes
Vamos criar funes que interagem com o usurio,
para que ele digite dados via teclado.
Essas funes sero reutilizadas em todos os
exerccios de hoje em diante.
Para tanto,
Crie um projeto chamado Modularizacao
Crie um pacote com seuNome
Crie uma classe chamada EntradaSaida
Todos os demais programas devem estar neste
projeto/pack, para terem acesso a EntradaSaida
Introduo Programao - Prof. Fabiano Madeira
46
Funes: Classe EntradaSaida
Interfaces das funes que codificaremos:

public static int leInteiro ( String umaMsg )
public static double leReal ( String umaMsg )
public static String leCadeia ( String umaMsg )
public static char leCaractere ( String umaMsg )

As funes acima recebem um texto a ser exibido
para o usurio, para inform-lo sobre o que deve
ser digitado; retornam o dado conforme seu tipo.
Introduo Programao - Prof. Fabiano Madeira
47
Classe EntradaSaida (1/4)

Package anacristina;
import javax.swing.JOptionPane;

public class EntradaSaida {
// mtodo esttico que retorna um inteiro lido do usurio:
public static int leInteiro (String msg) {

String ent;
int i=0;

ent = JOptionPane.showInputDialog ( msg );
i = Integer.parseInt( ent );

return i; // devolve um tipo int como resposta


} // fim do mtodo leInteiro

Introduo Programao - Prof. Fabiano Madeira
48
Classe EntradaSaida (2/4)

// mtodo esttico que retorna um nmero real lido do usurio:
public static double leReal (String msg) {
String ent;
ent = JOptionPane.showInputDialog ( msg );
return Double.parseDouble( ent ); // devolve um tipo
//double como resposta
} // fim do mtodo leReal


// mtodo esttico que retorna um texto do usurio:
public static String leCadeia (String msg) {
String ent;
ent = JOptionPane.showInputDialog ( msg );
return ent; // devolve um tipo String como resposta

} // fim do mtodo leCadeia

Introduo Programao - Prof. Fabiano Madeira
49
Classe EntradaSaida (3/4)

// mtodo esttico que retorna um caractere do usurio:
public static char leCaractere (String msg) {

String ent;

ent = leCadeia (msg); // chama a funo leCadeia desta classe

return ent.charAt(0); // retorna o 1 caractere, ignora os demais

} // fim do mtodo leCaractere

Introduo Programao - Prof. Fabiano Madeira
50
Classe EntradaSaida (4/4)
Por fim, vamos acrescentar classe
EntradaSaida o procedimento exibeMsg
que codificamos na ltima aula:

// mtodo que exibe uma mensagem para o usurio:

public static void exibeMsg (String msg) {

JOptionPane.showMessageDialog ( null, msg );

} // fim do mtodo exibeMsg

} // fim da classe EntradaSaida
Introduo Programao - Prof. Fabiano Madeira
51
Teste da Classe EntradaSaida
Codifique e compile o cdigo da Classe EntradaSaida,
dos slides anteriores (pegar cdigo pronto no moodle).

Testar a classe EntradaSaida, escrevendo outros
programas, que contenham o mdulo principal (mtodo
main), que o cdigo executado quando pedimos a
execuo do programa (Run as Java Application).

Para cada programa, crie nova classe, dentro de seu
pacote, no projeto Modularizacao:
NO crie main na classe EntradaSaida!
Use os mtodos de EntradaSaida (deixe de usar
JOptionPane explicitamente!)
Introduo Programao - Prof. Fabiano Madeira
52
Teste da Classe EntradaSaida (1/4)
Problema: escrever um programa modularizado que
calcula a rea de um Tringulo, dada sua base e
altura, usando a classe EntradaSaida.

Nome: TestaCalculoArea
Objetivo: Ilustrar chamada de Funes
Variveis:
real b, a, area
Inicio
LEIA b
LEIA a
area calculaArea ( b, a ) <efetua a chamada funo>
ESCREVA area
Fim
Introduo Programao - Prof. Fabiano Madeira
53
Teste da Classe EntradaSaida (2/4)

Continuao do Algoritmo :

Funo real calculaArea ( real base, real altura )
Objetivo: Ilustrar codificao de Funo
Variveis:
real resultado
Inicio
resultado ( base * altura ) / 2
Retorna resultado <encerra a funo devolvendo a resposta>
Fim
Introduo Programao - Prof. Fabiano Madeira
54
Teste da Classe EntradaSaida (3/4)

// transcrio em Java:
package anacristina; // note que no preciso importar JOptionPane
public class TestaCalculoArea {

public static void main ( String args[ ] ) {

double b, a, area;

b = EntradaSaida.leReal ( "Digite o valor da base do tringulo: );
a = EntradaSaida.leReal ( "Digite o valor da altura do tringulo: );



area = calculaArea (b,a);
EntradaSaida.exibeMsg ( "A rea do tringulo de base " + b +
" e altura " + a + " igual a " + area);
} // fim do mtodo main (mdulo principal)
. . . continua . . .
Chamada da funo leReal,
que est codificada na
classe EntradaSaida
Chamada da funo
calculaArea, que est
codificada nesta classe
Introduo Programao - Prof. Fabiano Madeira
55
Teste da Classe EntradaSaida (4/4)

. . . continuao . . .
/* Funo calculaArea:
* Recebe valores de base e altura de um tringulo
* Devolve a rea respectiva
*/
public static double calculaArea ( double base, double altura ) {

double resultado; // varivel do mesmo tipo de retorno

resultado = ( base * altura ) / 2;

return resultado; // devolve a rea guardada em resultado

} // fim da funo calculaArea

} // fim da classe TestaCalculoArea (fim do arquivo)



Introduo Programao - Prof. Fabiano Madeira
56
Exerccio 3: Funes
Crie uma nova classe chamada Medias, que contm as
seguintes funes, identificadas pelas assinaturas:
public static double media ( double n1, double n2 )
public static double percentual (double valor, double total )

A funo media recebe duas notas (n1 e n2, entre 0 e 10) e
retorna a mdia ponderada dada por (n1 + 2*n2) / 3
A funo percentual recebe um valor e um total, e retorna
um nmero que representa o percentual do total,
relativamente ao valor. Exemplo:
a chamada percentual ( 3.0 , 4.0 ) recebe como resposta
o valor 75.0 (pois 3 equivale a 75% de 4)
Introduo Programao - Prof. Fabiano Madeira
57
Exerccio 4: Funes
Na classe Medias, codifique o main que:
em um lao, l duas notas para cada aluno; calcula a mdia usando
a funo media, do exerccio anterior; conta quantos alunos foram
aprovados e quanto foram reprovados. A primeira nota negativa
fornecida encerra o lao.
O programa exibe os totais de aprovados e reprovados na forma de
percentual (use a funo percentual).
Considere que a mdia para aprovao 6.0.
Use necessariamente os mtodos da classe EntradaSaida (e no
use JOptionPane no cdigo do main)
Introduo Programao - Prof. Fabiano Madeira