Você está na página 1de 62

Linguagem de Programao I - JAVA

1. Introduo
A contnua expanso do alcance da informtica faz com que o computador se torne cada vez mais comum e atinja um nmero maior de pessoas. Nessa diversidade de aplicaes destaca-se como relevante figura do programador, por seu papel ativo nesse processo. Fundamental formao do profissional de programao esto a desenvoltura lgica e a construo de algoritmos. A arte de programar vai muito alm de sentarmos frente de um computador e criarmos algo. A programao deve ser vista como um trabalho srio e com metodologias prprias, as quais fornecero ferramentas para que o seu produto final (Sistema Informatizado) tenha, acima de tudo qualidade.

1.1 Algoritmos
a descrio de um padro de comportamento expresso em termos de um repertrio bem definido e finito de aes primitivas. uma seqncia ordenada de passos que quando executados levam a soluo do problema. Um algoritmo , em geral, uma descrio passo a passo de como um problema solucionvel. A descrio deve ser finita, e os passos devem ser bem definidos, sem ambigidades e executveis computacionalmente. Exemplo: Receita de Bolo Troca de Pneu Sair com a namorada Clculo de razes reais. Atividades: Dividir os alunos em grupos de trs. Cada grupo resolver um problema. Para a confeco de um algoritmo necessrio reconhecer o problema e sab-lo resolver.

1.2 Pseudolinguagem (pseudocdigo)


Escrever um algoritmo em portugus visa principalmente facilitar o projetista pensar no problema e no na mquina.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

1.3 Propriedades para bons Algoritmos - Algoritmos X Qualidade


Todo algoritmo deve ser elaborado de maneira lgica e racional, visando principalmente a sua eficincia e clareza. Assim, ao construir algoritmos deve-se: 1. 2. Saber que os algoritmos sero lidos por outras pessoas, alm do autor. Desta forma, os algoritmos devem ser de fcil compreenso e correo. Escrever comentrios na sua elaborao. Algoritmos sem comentrios sinal de amadorismo e um dos grandes erros que programadores cometem. Sua elaborao deve ser clara e resumida, limitando s ocasies de maior detalhamento. Devem acrescentar alguma coisa, no apenas frasear. 3. 4. Os comandos nos dizem o que est sendo feito, os comentrios dizem o porqu. Todo algoritmo deve possuir comentrios no prlogo, explicando o que ele faz e dar instrues para seu uso. Por exemplo: Descrio do que faz o algoritmo; Utilizao; Significado de variveis importantes; Estruturas de dados utilizadas; Mtodos utilizados; Autor e Data. Tambm, toda vez que for modificado o algoritmo, comentrios associados tambm devem ser modificados, pois antes no comentar, do que comentar errado. 5. 6. 7. 8. 9. Utilizar espao e/ou linhas em branco para melhorar a legibilidade. Dar nomes representativos para o programa/variveis. Uma seleo adequada de nomes de variveis o princpio mais importante da legibilidade de algoritmos. Um comando por linha suficiente. Uso de parnteses aumenta a legibilidade e previne erros. Utilize identao, pois mostra a estrutura lgica do algoritmo. Deve ser feita segundo certos padres estabelecidos. 10. O algoritmo deve ser efetivo, ou seja, seus passos devem ser executveis. Ex: Se chover amanh no irei praia Ex: (No executvel) - Se chover amanh, hoje conserto meu guarda-chuva. 11. O algoritmo deve ter zero ou mais entradas de dados. 12. O algoritmo deve ter uma ou mais sadas de resultados. 13. Escreva os algoritmos de uma maneira simples e direta (Keep it simple).

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

1.4 Desenvolvimento de Algoritmos 1.4.1 Como comear?

A maior dificuldade dos iniciantes como vencer a inrcia, como comear. Os passos abaixo podem auxiliar. Ler com ateno a especificao do problema at o final; Os algoritmos devem ser desenvolvidos por refinamentos sucessivos, partindo de uma descrio geral e gradativa e, sucessivamente atacar as mincias e particularidades. Ex: Algoritmo para mudar o pneu furado de um carro. 1- Remova o Pneu furado. 2- Coloque o pneu em bom estado no lugar. Refinando o passo 1, temos: 1. Posicione o macaco sob o carro. 2. Acione o macaco at que o pneu furado esteja livre. 3. Remova as porcas que prendem o pneu. 4. Remova o pneu furado. Refinando o passo 2 temos: 1. 2. 3. 4. Coloque o pneu em bom estado no lugar. Coloque as porcas que prendem o pneu. Acione o macaco at que o pneu toque o cho. Retire o macaco debaixo do carro.

Exerccio: Problemas: Trocar uma Lmpada Queimada. Mostrar todos os passos utilizados para escolher o tipo de roupa com que vai sair. Considere apenas o tempo (bom, nublado ou chuvoso) e a temperatura (quente, moderado ou frio).

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

1.4.2 Passos envolvidos na resoluo de problemas por computador


1. 2. 3. 4. 5. Definio do problema a ser resolvido; Pesquisa e elaborao de um mtodo de soluo; Desenvolvimento de um algoritmo para o mtodo; Codificao do algoritmo em linguagem algortmica - pseudo-linguagem; Teste de mesa - O teste de mesa uma ferramenta muito valiosa para o programador. Ele tem por finalidade encontrar possveis erros no algoritmo, atravs da simulao do seu funcionamento. 6. 7. 8. 9. 10. 11. Codificao do algoritmo em uma linguagem de programao apropriada; Digitao do programa; Correo dos erros de sintaxe (forma como pode ser escrita); Execuo e correo dos erros de lgica (semntica); Utilizao do programa; Manuteno do programa.

1.4.3 Testes de Mesa


O teste de mesa tem por objetivo encontrar possveis erros que o algoritmo ou programa possam ter. O teste de mesa a simulao do funcionamento do algoritmo ou programa. Para realizarmos o teste de mesa, anotamos todas as variveis, seguimos a seqncia lgica dos comandos do algoritmo e atribumos valores s variveis anotadas. S teremos certeza de que um algoritmo est correto depois de test-lo com todas as possibilidades.

2. Fundamentos de Java
Java uma linguagem de programao orientada a objetos, introduzida no mercado em 1995 pela Sun Microsystems.

2.1 Histrico
Em 1991, A Sun Microsystems financiou uma pesquisa corporativa interna com o codinome Green. O projeto resultou no desenvolvimento de uma linguagem baseada em C e C++ que seu criador James Gosling, chamou de Oak (carvalho em ingls) em homenagem a uma rvore que dava para a janela do seu escritrio na Sun. Porm, descobriu-se mais tarde que j havia uma linguagem de computador chamada Oak. Assim, por problemas de copyright, a linguagem precisou ser
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 4

rebatizada. O nome Java (cidade de origem de um tipo de caf importado) foi sugerido e aceito. Mas o projeto Green atravessava dificuldades, pois alm do mercado para dispositivos eletrnicos inteligentes destinados ao consumidor final no se desenvolver na velocidade prevista, um contrato importante pelo qual a Sun competia fora concedido outra empresa. Contudo, com a popularidade da WWW, a equipe viu imediato potencial de utilizar Java para criar pginas da Web com o chamado contedo dinmico. Em maio de 1995, a Sun anunciou Java formalmente.

2.2 Caractersticas da Linguagem Java


A linguagem Java exibe importantes caractersticas, a saber: Orientada a objetos Java uma linguagem puramente orientada a objetos, pois com exceo de seus tipos primitivos de dados, tudo em Java so classes ou instncia de uma classe. Independente de Plataforma por ser uma linguagem interpretada, Java pode ser executado em qualquer plataforma ou equipamento que possua um interpretador Java, e que tenha sido especialmente compilado para o sistema a ser utilizado. Sem ponteiros Java no possui ponteiros, isto , no permite a manipulao direta de endereos de memria nem exige que os objetos criados sejam destrudos livrando os programadores de uma tarefa complexa. Alm disso a JVM (Java Virtual Machine) possui um mecanismo automtico de gerenciamento de memria conhecido como garbage collector, que recupera a memria alocada para objetos no mais referenciados pelo programa. Alm das caractersticas mencionadas, a linguagem Java est incorporando suporte a operaes em Banco de Dados. O JDBC, que uma biblioteca de classes para acesso a banco de dados, permite uma conexo remota a servidores SQL que possuam driver OBDC ou compatvel. Transaes no estilo de Compras, Vendas, Cadastramentos, Alterao de dados pessoais controlada por senha via Internet, so exemplos do que o JDBC permite que seja realizado.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

2.3 Ambiente Java


Para serem executados, os programas Java normalmente passam por cinco fases, a saber:

Edio: Realizado por meio de um programa editor. O programador digita um programa Java e faz correes se necessrio. O programa dever ser salvo em um dispositivo de armazenamento secundrio, como por exemplo disco. Nomes de arquivos de programa Java terminam com a extenso .Java. Exemplo: Mensalista.java.

Compilao: Por meio do comando javac, o compilador Java traduz o programa Java para bytecodes a linguagem entendida pelo interpretador Java. Assim, para compilar o programa Mensalista.Java necessrio digitar: javac Mensalista.java. Se o programa compilar corretamente, ser gerado um arquivo chamado Mensalista.class. Este arquivo contm os bytecodes que sero interpretados durante a fase de execuo.

Carga: Nesta etapa o programa dever ser carregado para a memria antes de poder ser executado. Isso feito pelo carregador de classe. Os aplicativos so carregados na memria e executados utilizando o interpretador Java, por meio do comando Java, isto , para executar um aplicativo Java chamado Mensalista, necessrio digitar: Java Mensalista.

Verificao: Antes dos bytecodes serem executados pelo interpretador Java, eles so verificados pelo verificador de bytecodes, para assegurar que os mesmos sejam vlidos e no violam as restries de segurana de Java.

Execuo: O computador, sob o controle de sua CPU, interpreta o programa, um bytecode por vez, realizando a ao especificada pelo programa.

IDE (Integrated Development Environment):


Netbeans ( www.netbeans.org) Eclipse (www.eclipse.org) JBuilder (www.borland.com) ( www.jcreator.com)

JCreator

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

A Figura abaixo ilustra os procedimentos, desde a escrita do cdigo fonte, at a execuo de uma aplicao:

Fase 1

Editor

Disco

O programa criado no editor e armazenado em disco .java O programa cria bytecodes e os armazena em disco .class

Fase 2

Compilador

Disco
Memria Principal

Fase 3

Carregador de Classe
. . .

O carregador de classe coloca bytecodes na memria

Disco

Memria Principal

Fase 4

Verificador de Bytecode
. . .

O verificador de bytecodes confirma que todos os bytecodes so vlidos e no violam restries de segurana de Java

Memria Principal

Fase 5

Interpretador

. . .

O interpretador l os bytecodes e os traduz para uma linguagem que o computador pode entender, possivelmente armazenando valores dos dados enquanto executa o programa.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

2.4 Estrutura de Aplicaes Java


Uma aplicao Java sempre ter a seguinte estrutura: class NomeDaClasse { public static void main(String args[]) { // corpo do programa } } A aplicao deve ser uma classe Java com um mtodo main. O mtodo main mtodo chamado pelo interpretador Java quando executado. A declarao do mtodo deve ser rigorosamente public static void main(String args[]), que define um mtodo de acesso pblico, que no retorna nada, de classe e que recebe como parmetro um array de strings de tamanho indefinido representado pela varivel args. A nica mudana que pode ser feita nesta declarao o nome do array (args).

2.4.1 Primeira Aplicao


A aplicao a ser construda, deve imprimir na tela uma mensagem qualquer, como Curso de Java. Passos para a construo da aplicao: 1 Abrir um editor de texto, como o Bloco de Notas e escrever o programa

public class App1 { public static void main(String args[]) { //corpo do programa //Escreve na tela Curso de Java System.out.println(Curso de Java); } }
2 - Salvar o arquivo dando a ele o mesmo nome da classe e com a extenso .java. Neste caso, salve o arquivo como App1.java. 3 - Compilar o arquivo .Java gerando um arquivo .class

javac App1.Java
Aps a compilao, foi gerado um arquivo App1.class e este o programa executvel Java. 4 - Execute o programa usando o interpretador java

java App1
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 8

Exemplo:
1 2 3 4 5 6 7 8 9 } public class FirstProgram { public static void main (String args[]) { System.out.println ("Bem vindo a programacao Java!"); } // Este programa exibe a frase: Bem vindo a programao Java!

Explicao:

Linha 1: inicia com //, o que indica que o restante da linha um comentrio Linha 2: simplesmente uma linha em branco. Linhas em branco e caracteres de espao so utilizados para melhorar a legibilidade do programa. Linha 3: public class FirstProgram, inicia uma definio de classe para a classe FirstProgram. Cada programa Java consiste de pelo menos uma definio de classe que definida pelo programador (essas classes so conhecidas como classes definidas pelo programador ou classes definidas pelo usurio). A palavra chave class introduz uma definio de classe em Java e imediatamente seguida pelo nome de classe, no exemplo, FirstProgram. Por conveno, todos os nomes de classe em Java iniciam com uma primeira letra em maiscula e tm uma primeira letra em maiscula para cada palavra no nome de classe. Linha 4: Chave esquerda ({ ), inicia o corpo de cada definio de classe. Uma chave direita ( }) correspondente (na linha 9 do programa exemplo), deve terminar cada definio de classe. Linha 5: public static void main (String args[]) uma parte de todo aplicativo Java. Para uma classe de aplicativo Java, exatamente um desses mtodos deve ser chamado de main. Linha 6: A chave esquerda, {, inicia o corpo da definio de mtodo. Uma chave direita ( }) na linha 8 fecha o corpo da definio do mtodo.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

Linha 7: System.out.println

("Bem

vindo

programacao

Java!"); instrui o

computador a realizar a ao de imprimir o string de caracteres contido entre aspas duplas. Os caracteres de espao em branco em strings no so ignorados pelo compilador. System.out conhecido como objeto de sada padro. Permite aos aplicativos Java exibir strings e outros tipos de informaes na janela de comando a partir da qual o aplicativo Java executado. O mtodo System.out.println exibe uma linha de texto na janela de comando. Quando completa a tarefa, automaticamente posiciona o cursor de sada no incio da prxima linha na janela de comando. NOTA IMPORTANTE Observe que as linhas 5 a 8 esto recuadas. Essa conveno auxilia a legibilidade do programa. Sempre que digitar uma chave de abertura ou chave esquerda ({), imediatamente digite a chave de fechamento ou chave direita (}), pois se as chaves no ocorrem em pares correspondentes, o compilador indica um erro.

Exerccios: 1-Experimente fazer modificaes no programa FirstProgram. Imprima outras mensagens na tela, adicione comentrios.

2.4.2 Passagem de Parmetros


A chamada de uma aplicao Java, passando parmetros feita da seguinte forma:

java <NomeDaClasse> <parametro1> <parametro2> ...


Os parmetros so separados por espao em branco. Para passar um parmetro com brancos no meio, deve-se coloc-lo entre aspas. Como visto anteriormente, parmetros so passados para as aplicaes atravs do vetor de strings do mtodo main. Atravs do mtodo length (arrays) verificase o nmero de parmetros passados e o acesso feito indicando-se a sua posio, iniciando de 0.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

10

2.4.3 Segunda Aplicao Passagem de Parmetros


Uma aplicao em Java pode receber valores a partir da linha de comando do DOS no momento em que executado. Quando um parmetro recebido por um programa, ele pode ser manipulado internamente. A aplicao a seguir, recebe dois parmetros e apenas exibe-os. Caso no sejam passados dois parmetros a aplicao exibe uma mensagem de erro. public class App2 { public static void main(String args[]) { //Imprime o valor do 1. e 2. argumentos passados if (args.length != 2) System.out.println(Nmero de Parmetros Invlido); else { System.out.println (Arg1: + args[0]); System.out.println (Arg2: + args[1]); } } }

2.4 Identificadores e Palavras Reservadas 2.4.1 Identificadores


Um identificador um nome escolhido para designar, por exemplo, o nome da classe, de atributo, de mtodos etc. Um identificador uma srie de caracteres consistindo em letras, dgitos, sublinhados (_) e sinais de cifro ($) que no iniciem com um dgito e no contenham nenhum espao.

Sintaxe:

Letra, $ ou _
Onde: letras de A..Z, a..z dgitos de 0..9 cifro $ underscore _

Dgito ou letra ou $ ou _

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

11

Abaixo so dados exemplos vlidos e no vlidos de identificadores: VLIDOS: MaximoFuncao FirstProgram $value _value maximoFuncao INVLIDOS: Total Vendas 7button Segunda-Feira

NOTA IMPORTANTE Java diferencia letras maisculas de letras minsculas em identificadores. Por exemplo, os pares de identificadores maximofuncao e MaximoFuncao citados no exemplo anterior, so identificadores diferentes. Neste sentido a linguagem sensvel ao contexto. Outro exemplo de linguagem sensvel ao contexto a Linguagem C , ou seja, a varivel X distinta da varivel x. Por conveno, sempre iniciar um nome de classe com a primeira letra maiscula. Evite utilizar identificadores contendo sinais de cifro ($), porque estes so freqentemente utilizados pelo compilador para criar nomes de identificadores.

2.4.2 Palavras Reservadas


A Linguagem Java possui uma srie de palavras reservadas, isto , estas palavras no podero ser usadas para dar nomes a programas ou a variveis; elas esto destinadas a um uso muito especfico no corpo dos programas computacionais. As palavras reservadas so os comandos, nomes dos tipos primitivos, especificadores e modificadores pertencentes a sintaxe de uma linguagem. As palavras reservadas da linguagem Java so as seguintes: abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try void while

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

12

2.5 Tipos de Dados 2.5.1 Tipos numricos de Dados


O Conceito de tipo est relacionado com a noo de abstrao de dados em linguagens de programao. esta noo que permite que a informao armazenada numa determinada posio de memria seja considerada, por exemplo, como um valor inteiro, em vez de simplesmente ser tomado como uma seqncia qualquer de "bits" a ser manipulada. Como ocorre em C e C++, Java exige que todas as variveis tenham um tipo definido antes de serem utilizadas em um programa. Por essa razo, Java referida como uma linguagem fortemente tipada. TIPO byte short int long float double INTERVALO -128 a +127 -32.768 a +32.767 -2.147.483.648 a +2.147.483.647 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 -3.40292347E+38 a +3.40292347E+38 -1.79769313486231570E308 a +1.79769313486231570E308 BYTES 1 2 4 8 4 8

2.5.2 Outros tipos de dados: Tipo boolean: Uma varivel desse tipo pode assumir apenas um entre dois valores
possveis: TRUE ou FALSE.
// Este programa demonstra o uso do tipo nativo boolean. class ExemploTipoBoolean { public static void main(String args[]) { boolean var1,var2,var3; // declarao das variveis var1 = true; // var1 recebe a constante true (verdadeiro) System.out.println("Var1 = " + var1); var2 = (1>2); // valor lgico de uma expresso (false) System.out.println("Var2 = " + var2); var3 = (2+3 == 6); // comparao de expresses (false) System.out.println("Var3 = " + var3); boolean var4 = (1<2) && (3<4); // "E" lgico de duas expresses (true) System.out.println("Var4 = " + var4); boolean var5 = (1<2) || (3<2); // "OU" lgico de duas expresses (true) System.out.println("Var5 = " + var5); boolean var6 = !(false); // "NO" lgico de uma constante (true) System.out.println("Var6 = " + var6); boolean var7 = var1 && (var6 || var2); // mltiplas expresses (true) System.out.println("Var7 = " + var7); boolean var8 = !(var1 && var6) || var2; // mltiplas expresses (false) System.out.println("Var8 = " + var8); } // fim do mtodo main } // fim da classe DemoTipoBoolean

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

13

Tipo char (caracteres): O tipo char permite a representao de caracteres individuais.


//Programa para ilustrar o uso do tipo Char import javax.swing.*; public class ExemploTipoChar { public static void main(String[] argumentos) { char c1,c2,c3,c4; // declarao das variveis c1 = 'a'; // caracter ASCII normal c2 = '!'; // caracter ASCII normal (smbolo) c3 = ''; // caracter especial (portugus) c4 = ''; // caracter especial (alemo) char c5 = 'a'+1; // operao vlida: resultado 'b' char c6 = 'B'-1; // operao vlida: resultado 'A' char c7 = 123; // valor Unicode especificado diretamente: caracter '{' char c8 = 7; // valor Unicode especificado diretamente: sinal sonoro char c9 = '7'; // caracter Unicode '7' - diferente do sinal sonoro char c10 = 1111/17; // caracter Unicode 65 ('A') - at mesmo esta operao vlida. JOptionPane.showMessageDialog(null, "C1 = "+c1+"\nC2 = "+c2+"\nC3 = "+c3+"\nC4 = "+c4+ "\nC5 = "+c5+"\nC6 = "+c6+"\nC7 = "+c7+"\nC8 = "+c8+"\nC9 = "+c9+"\nC10 = "+c10, "Exemplo de Utilizao do tipo Char", JOptionPane.INFORMATION_MESSAGE); } //fim do mtodo main }

String:

O tipo String, em Java, uma classe definida, no um tipo primitivo, usado para representar uma seqncia de caracteres.

2.5.3 Que tipos de dados devem ser usados?


Ao escolher que tipos de dados devem ser usados para que campos, o programador deve considerar em especial a faixa de valores que o campo pode vir a ocupar. Por exemplo, o campo nmeroDeMatrcula poderia ser do tipo long, mas dificilmente teramos necessidade de valores para nmeros de matrcula acima de nove dgitos (que podem perfeitamente ser representados por um int). Similarmente, o tipo short poderia ser usado, mas somente nmeros de matrcula entre 0 e 32767 poderiam ser representados (considerando que no devem existir nmeros de matrcula negativos). Programadores inexperientes podem cair na tentao de sempre usar somente um ou dois tipos de dados, por exemplo, considerando que qualquer valor numrico pode ser representado por um tipo long ou double, pensando que a faixa de valores representveis por estes tipos grande o suficiente para poder representar qualquer valor. A escolha de tipos inadequados para os campos pode ser dispendiosa, criar complexidades desnecessrias e at mesmo criar erros de lgica de programao: se, por exemplo, o campo dia for do tipo long, oito bytes estaro sendo usados onde somente um bastaria. Se, para representar um nmero de registro de aluno, resolvermos usar uma instncia da classe String ao invs de um inteiro, alm do uso desnecessrio de memria para representar os caracteres na string, a tarefa de procurar o
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 14

ltimo (ou maior) nmero de matrcula de uma turma seria mais complexa que o necessrio, j que a comparao entre strings computacionalmente mais custosa do que entre inteiros. Por outro lado, economia de bytes em excesso pode ser prejudicial - consideremos o caso do campo ano, representado por um valor do tipo short, que pode representar valores positivos at 32768. Pode-se argumentar que no existe nenhuma aplicao que hoje necessite calcular ou representar datas mais de 30.000 anos no futuro, mas a alternativa seria usar um valor do tipo byte (valor mximo 127) e acrescentar uma constante quando fosse necessrio. Esta constante seria o ano mnimo representvel pela classe, que poderia ser, por exemplo, 1970. Desta forma, quando o campo contivesse o valor 31, na verdade o ano representado seria (1970+31) = 2001. Usando esta tcnica e um byte para representar o ano, a classe poderia representar anos at (1970+127) = 2097, o que deve ser aceitvel para a maioria das aplicaes, mas a complexidade da representao s nos faz economizar um nico byte, o que realmente no vale pena. Valores de tipos numricos nativos podem ser transformados em outros tipos numricos atravs cast de uma operao, conhecida como cast ou converso explcita. Para efetuar a converso explcita, basta colocar o tipo de dado para o qual se deseja converter entre parnteses antes da expresso a ser convertida (ex.: o valor (byte)100 ser considerado do tipo byte, e o valor (double)100; do tipo double).

2.5.4 Converso de Tipos


x int x=10 float x=2.57 String x=6.34 Converter em float double string int string int float double y recebe float y = (float) x double y=(double) x string y = string.valueOf(x) int y = (int) x String y = String.valueOf(x) int y = Integer.parseInt(x) float y= Float.parseFloat(x) double y=Double.parseDouble(x)

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

15

2.6 Varivel
Nome escolhido pelo programador para representar um determinado espao na memria do computador. As variveis podem ser do tipo int, float, String, boolean etc. onde: Nome um identificador IDENTIFICADORES
VLIDOS

IDENTIFICADORES
INVLIDOS

POR QUE SO INVLIDOS?

nota nome contador flag dia _cidade $int

1a23 1nome 1pedro int float *cidade nome usurio

2.6.1 Declarao de variveis Sintaxe:

Tipo
Exemplo: int float boolean String 2.7 Constantes nota, i,j,k; soma; flag; nome;

Identificador

So valores que no sofrem alteraes ao longo da execuo do programa. Por exemplo, o valor 3.14.15 poder ser atribudo constante pi, e permanecer fixo at o final da execuo.

2.7.1 Declarao de Constantes em Java


Uma constante, em Java, declarada com o modificador final. O valor atribudo permanecer inalterado ao longo do programa, desta forma servem somente como leitura. Exemplo:

final float pi = 3.1415;

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

16

2.8 Expresses
um conjunto de constantes e/ou variveis e/ou funes ligadas por operadores aritmticos ou lgicos.

2.8.1 Expresses Aritmticas


Quando ligadas por operadores aritmticos.

Operadores Aritmticos

Representao em Java

Exemplo 5*x a/b b+3 8-4 4%2 a++ a--

Descrio
Multiplica 5 por x Divide o valor de a por b
O valor de b somado ao valor de 3 subtrado 4 de 8

Produto Diviso Adio Subtrao Mdulo Incremento Decremento


Exemplo:

* / + % ++ --

Retorna o resto da diviso de 4 por 2 Adiciona 1 ao valor de a Subtrai 1 do valor de a.

// Exerccio utilizando os operadores aritmticos public class OperadoresAritmeticos { static public void main (String args[]) { // Declarao e inicializao de variveis int a=5; int b=6; double z=2.5; System.out.println("a % b = " + (a%b)); //resulta 5 System.out.println("a++ = " + (a++)); //resulta 5 System.out.println("a = " + (a)); //resulta 6 System.out.println("++a = " + (++a));//resulta 7 System.out.println("--b = " + (--b));//resulta 5 System.out.println("b = " + (b));//resulta 5 System.out.println("a / b = " + (a/b)); //resulta 1 System.out.println("(float) a/b = " + ((float) a/b)); //resulta 1.4 System.out.println("(int) a/b = " + ((int) a/b)); //resulta 1 System.out.println("a*b = " + (a*b)); //resulta 35 System.out.println("a*z = " + (a*z)); //resulta 17.5 } }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

17

2.8.2 Expresses Lgicas


Quando utiliza operadores relacionais para formar proposies simples e operadores lgicos para formar proposies compostas. O resultado da avaliao de uma expresso lgica pode ser ou o valor TRUE (verdade) ou o valor FALSE (falso).

Operadores Relacionais
Maior > Maior ou igual >= Menor < Menor ou igual <= Igual a = = Diferente de !=
Exemplo:
//Exemplo de Aplicao de Operadores Relacionais //Relacional.java

Exemplo: Supondo a=7, b=5 e c=6

7>5 a>=b 5<7 (b+c)<=5 a= =b b!=c

true true true false false true

public class Relacional { public static void main (String args[]) { int a=8; int b=5; System.out.println("a= "+ a); //resulta 8 System.out.println("b= "+ b); //resulta 5 System.out.println("a == b --> "+ (a==b)); //resulta false System.out.println("a != b --> "+ (a!=b)); //resulta true System.out.println("a < b --> "+ (a<b)); //resulta false System.out.println("a > b --> "+ (a>b)); //resulta true System.out.println("a <= b --> "+ (a<=b)); //resulta false System.out.println("a >= b --> "+ (a>=b)); //resulta true }}

Os operadores booleanos so utilizados na codificao de expresses booleanas [nome devido a George Boole lgico e matemtico sculo XIX].

Operadores Lgicos
Negao ! Conjuno && Disjuno ||

Exemplo: (num1>num2) || (num3=0) ((a+b+c)/2>3) && (x-y =0)

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

18

Exemplo
/* Arquivo: Exemplo03.java * Declarao de variveis e tipos de dados e comentrios */ public class ExemploBoleanos { public static void main (String args[]) // declarao e inicializao de variveis { int x=10; int y=3; double z=4.0; if (x==3 || x==8) System.out.println("Passou no teste x=3 ou x=8"); else if (x==10 && y==3) System.out.println("Passou no teste x=10 && y=3"); // operaes com as variveis }}

Tabela para avaliao de expresses booleanas: (A e B designam valores do tipo booleano) A TRUE TRUE FALSE FALSE B TRUE FALSE TRUE FALSE !A FALSE FALSE TRUE TRUE A && B TRUE FALSE FALSE FALSE A || B TRUE TRUE TRUE FALSE

Exemplos: Se a= 2 e b= 3.7 , ento: (1) ( (a >= 0) && ( a > b) ), ao ser avaliada, devolve FALSE. (2) ( (a >= 0) || ( a > b) ), ao ser avaliada, devolve TRUE.

2.8.3 Hierarquia das Operaes () *, / ou % + ou < <= > >= == !=


=

Parnteses Multiplicativo Aditivo Relacional Igualdade Atribuio

OBS: quando houver indeterminao da esquerda para a direita.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

19

Exemplo: z=p * r % q + w / x y;
6 1 2 4 3 5

2.9 Exerccios de Fixao


1) Determine qual o tipo de informao presente nas sentenas abaixo: a) b) c) d) e) f) g) A placa Pare! tinha dois furos de bala Josefina subiu 5 degraus para pegar uma maa boa Ele tem 15 irmos Seu saldo bancrio de R$ 1500,00 A lmpada pode estar acesa ou apagada Constava na prova: Use somente caneta! Ela tem 1,73 metros de altura _________ _________ _________ _________ _________ _________ _________

2) Assinale os identificadores vlidos: a) (x) e) ab*c b) u2 f) 2gh c) aluno g) inteiro d) b52 h) nomeAluno

3) Supondo que as variveis nb, na, nmat sejam utilizadas para armazenar a nota do aluno, o nome do aluno e o nmero da matrcula. Declare-as corretamente. _______________________________________________________________________ _______________________________________________________________________ _______________________________________________________________________

4) Dar o valor das expresses abaixo:


a) 2*3/4-1+(5*8) c) 9/3- 2*5 e) 4 + (2*8/5) - 4/6 g) 11 % 4 ( ( ( ( ) ) ) ) b) (28 + 3*4)/4 d) (8*4/2-5)/(3*2) f) 2*5*5+3*5+7 h) 0 % 2 ( ( ( ( ) ) ) )

5) Encontre os erros da seguinte declarao de variveis: int String float endereo, nFilhos; idade, x; idade, peso;

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

20

6)Indique com um X quais dos tipos de dados abaixo do tipo inteiro (int). ( ) 1000 ( ) casa 8 ( ) -8 ( ) 0 ( ) 0 ( ) 32767 ( ) -900 ( ) cinco ( ) 25 ( ) True ( ) False ( ) 32800 ( ) -456 ( ) -1.56 ( ) -32800 ( ) 34 ( ) 2.5 ( ) vinte 7)Indique com um X quais dos tipos de dados abaixo do tipo float ou double ( ) -678 ( ) -99.8 ( ) -8 ( ) 0.87 ( ) 0 ( ) 32767 ( ) -900 ( ) cinco ( ) 25 ( ) True ( ) False ( ) 32800 ( ) -456 ( ) -1.56 ( ) -32800 ( ) 34 ( ) 2.5 ( ) 45.8976 8)Indique com um X quais dos tipos de dados abaixo do tipo literal (String). ( ( ( ( ( ( ) ) ) ) ) ) -678 0.87 -900 True -456 34 ( ( ( ( ( ( ) ) ) ) ) ) -99.8 0 cinco False -1.56 2.5 ( ( ( ( ( ( ) ) ) ) ) ) -8 32767 25 32800 -32800 45.8976

9)Indique com um X quais dos tipos de dados abaixo do tipo lgico (boolean). ( ( ( ( ( ( ) ) ) ) ) ) -678 0.87 -900 True -456 34 ( ( ( ( ( ( ) ) ) ) ) ) -99.8 0 cinco False -1.56 2.5 ( ( ( ( ( ( ) ) ) ) ) ) -8 .V. 25 .F. -32800 45.8976

10)Assinale com um X os nomes vlidos para uma varivel ( ( ( ( ( ( ) ) ) ) ) ) endereco 21Brasil fone$com endA6 String cidade3 ( ( ( ( ( ( ) ) ) ) ) ) Cep Cidade #cabecalho logico end_residencial int caracter ( ( ( ( ( ( ) ) ) ) ) ) nome_usuario _Idade float cep x k21

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

21

// Exemplo que calcula expresses aritmticas //ExemploExpressoes.java public class ExExpressoes { public static void main(String[] args) {System.out.println("a "+(double)(2*3/4-1+(5*8))); System.out.println("b "+((28 + 3*4)/4)); System.out.println("c "+(9/3-2*5)); System.out.println("d "+(double)(8*4/2-5)/(3*2)); System.out.println("e "+(4+(2*8/5)-4/6)); System.out.println("f "+(2*5*5+3*5+7)); System.out.println("g "+(11%4)); System.out.println("h "+(1%2)); } }

2.10 Comandos Bsicos 2.10.1 Comentrios


So utilizados para explicar, resumidamente, o porqu da presena de certos comandos, variveis ou procedimentos nos algoritmos e ou programas. Os comentrios auxiliam na legibilidade do programa. Comentrios so textos escritos dentro do cdigo-fonte para explicar ou descrever alguns aspectos relativos ao mesmo. Os comentrios podem ser colocados em qualquer lugar do programa onde um espao em branco possa existir [Santos, 1997]. permitido colocar comentrios de duas formas:

// Indica que o restante da linha um comentrio /* Esse um comentrio de mltiplas linhas.


Ele pode possuir tantas linhas quanto forem necessrias*/ /** comentrio * de documentao */ (Arquivos de documentao)

Exemplo:
/* Programa: Aplicacao1 Autor: Alindacir Data : 01/02/2009 */

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

22

2.10.2 Atribuio
Ao declararmos uma varivel simples, reservamos um determinado espao de memria estando pronta para receber uma determinada expresso do mesmo tipo. O comando de atribuio a descrio de uma ao a ser executada em um dado momento.

Sintaxe: IDENTIFICADOR
Onde: Identificador = Expresso Exemplos: Var int float String a, b, c, x; x1; nome; nome da varivel qual ser atribudo o valor da expresso operador de atribuio expresso, identificador ou constante j estudados

EXPRESSO ;

Considerando as variveis declaradas acima, as seguintes atribuies so vlidas:

a = b + c; x = x + 1; Observaes:
(1) (2) (3) (4) (5)

nome = abacate; b = + 5;

O operador = chamado de operador de atribuio; O valor do lado direito do operador de atribuio que atribudo varivel sua esquerda e no o contrrio. Na atribuio, a varivel e a expresso devem ser de tipos compatveis. A= 3 significa que A passar a ter o valor 3; A=A + 5 significa que A recebe o seu valor anterior mais 5. Assim, se considerarmos que A j havia recebido o valor 3, teremos agora A = 8.

Exerccios de Fixao 1) Seguindo a declarao das variveis abaixo, encontre os erros, caso existir, dos comandos de atribuio: boolean a; float b,c; int d; a) a = b = c; c) c+1=b+c; ( ( ) b) d=b; ) d) c e b := 3.5; ( ( ) )

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

23

2) Preencha o valor final das variveis a) Se a=5 e em seguida a= a + 1 , ento a =______. b) Se var1= 7; var2= 2; se var1= var2, ento var1=_____ e var2=_____. c) Se m= 4; n= 5; p= 10; se m= n + 2*p ento teremos m=____________ , n=____ e p=____. d) Sejam x = 3 e y = -6. Se a= x, x= y e y= a , ento x=____ e y=____. 3) Analise o seguinte trecho de programa: public class Exercicio1 { public static void main (String args[]) { int a,b; float c,d; a = 1; b = 3; c = 5; d = 10; a = 1 + b; a = 10 % 3; c = d / c; a = -1; b = 5 + a; b = -a; c = d * a; } } Quais os valores finais de A________ B________ C________ e D________

2.10.3 Atribuio Composta


Para facilitar a programao, a linguagem Java oferece um tipo de atribuio chamada atribuio composta. Este tipo de atribuio pode ser utilizada quando se deseja atribuir a uma varivel X, o valor de X adicionado ao valor 10, por exemplo. A atribuio composta dada pela unio do operador aritmtico e do operador de atribuio. Exemplos: a += b; //<=> a = a + b; a -= b; //<=> a = a - b; a *= 10;//<=> a = a * 10;

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

24

2.10.4 Incremento e Decremento


Tambm para facilitar a programao, Java oferece uma maneira bastante simples para fazer o incremento ou decremento em variveis. O incremento dado pelo operador ++ e o decremento por --. Este incremento ou decremento pode ser feito antes ou depois da utilizao da varivel. Colocando-se o operador de incremento ou decremento antes da varivel, o incremento ou decremento ser realizado primeiro e depois o valor da varivel ser utilizado. Ao contrrio, o operador aps a varivel, faz com que o valor da varivel seja utilizado primeiro e o incremento ou decremento seja feito depois.

... i++; // <=> i = i + 1; i--; // <=> i = i - 1; ++i; // <=> i = i + 1; --i; // <=> i = i - 1; ... A aplicao abaixo mostra um exemplo da utilizao de incremento e decremento. public class Incremento { public static void main( String args[] ) { int c; c = 5; // inicia a varivel c com o valor 5 System.out.println( c ); // mostra 5 System.out.println( c++ ); // mostra 5, aps incrementa System.out.println( c ); // mostra 6 System.out.println(); // salta uma linha c = 8; //atribui 8 a varivel c. O valor anterior sobreposto System.out.println( c ); // mostra 8 System.out.println( ++c ); // mostra 9, pois primeiro incrementa System.out.println( c ); // mostra 9 System.out.println( --c ); // mostra 8, pois primeiro decrementa System.out.println( c ); //mostra 8 System.out.println( c-- ); //mostra 8, pois primeiro mostra System.out.println( c ); // mostra 7 } } Exerccios de Fixao Escreva o resultado de cada instruo nos espaos destinados aos comentrios. public class ExercicioIncremento { public static void main(String args[]) { int i = 0; //_____________________________________ System.out.println(i vale: + i); //_____________________________________ i += 10; //_____________________________________ System.out.println(i vale: + i); //_____________________________________ System.out.println(i vale: + i++); //_____________________________________ System.out.println(i vale: + ++i); //_____________________________________ } }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

25

2.10.5 Entrada e Sada de Dados Entrada de Dados


A entrada padro realizada por meio do teclado. Ao digitar dados pelo teclado, eles so ecoados na tela do monitor do computador, ou seja, so mostrados na tela conforme vo sendo digitados. A representao, em pseudocdigo (algoritmo), da entrada de dados : ler (varivel);

Sada de Dados
O dispositivo padro de sada o monitor do computador. A representao, em pseudocdigo (algoritmo), da sada de dados : mostrar

1. 2. 3. 4. 5. 6. 7. 8.

O algoritmo a seguir pergunta qual o nome do usurio e o escreve novamente na tela. algoritmo ExEntrada; var nome : literal; incio mostrar(Qual o seu nome?); ler (nome); mostrar(Nome digitado = , nome); fim.

Sobre o algoritmo:
Observando a soluo, percebe-se a necessidade de utilizar uma varivel para representar o armazenamento do nome do usurio; a declarao da referida varivel foi realizada na linha 3. As linhas 5, 6 e 7 so aes necessrias para a realizao da tarefa; na linha 5 est sendo exibida no monitor a mensagem Qual o seu nome?. Mensagens so literais, por esse motivo precisam estar entre aspas (). Na linha 6 indicado o que deve ser lido (fornecido); um valor para a varivel nome. Na linha 7 uma mensagem e o contedo da varivel esto sendo exibidos. Mesmo Exemplo em JAVA 1. import java.util.Scanner; 2. public class ExEntrada { 3. public static void main(String[] args) { 4. Scanner entrada = new Scanner (System.in); 5. String nome; 6. 7. System.out.print ("Digite o seu nome "); 8. nome = entrada.nextLine(); 9. System.out.printf ("Nome digitado = "+nome); 10. }//fim do metodo main 11. }//fim da classe 12. 13. 14.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

26

Sobre o cdigo em Java:


1. A instruo import indica a utilizao do pacote de entrada e sada de dados (java.io.*) da linguagem Java. 2. A instruo public class ExEntrada { indica o nome do programa (classe) 3. public static void main(String[] args) { indica o bloco de instrues que sero seqencialmente executadas quando o programa for requisitado pelo usurio. 4. A instruo Scanner entrada = new Scanner (System.in); efetua a declarao e criao da varivel entrada que ser utilizada para a leitura do teclado. 5. A varivel nome est sendo declarada para receber e armazenar na memria o valor escrito pelo usurio. Como se deseja a entrada de um texto, ela declarada do tipo String. 8. A varivel nome recebe, por meio do mtodo nextLine(), o valor que o usurio escreveu. O mtodo dever sempre ser invocado por meio de um objeto da classe, no caso, entrada. 9. Aps a leitura da varivel, ela mostrada na tela como sada de dados. 10 e 11. As chaves fecham os blocos do mtodo e da classe, respectivamente.

Entrada e Sada de Dados utilizando a Interface Grfica


1. 2. 3. 4. 5. 6. 7. 8. import javax.swing.JOptionPane; public class ExEntradaInterface { public static void main(String[] args) { String nome; nome=JOptionPane.showInputDialog("Digite o seu nome"); JOptionPane.showMessageDialog(null, "Nome digitado = "+ nome); System.exit(0); }}

Sobre o cdigo:
1. Indica a utilizao da classe JOptionPane, utilizada no aplicativo para exibir uma caixa de dilogo de entrada e sada de dados. A classe JOptionPane prov vrios mtodos estticos que geram de forma rpida e fcil caixas de dilogos configurveis. 2. Definio do nome do aplicativo (classe). 3. Indica o bloco de instrues que sero seqencialmente executadas quando o programa for requisitado pelo usurio. 4. Declarao de uma varivel nome, do tipo String (seqncia de caracteres). 5. L um String fornecido pelo usurio e atribui a varivel nome. JOptionPane.showInputDialog(Digite o seu nome) exibe o seguinte dilogo de entrada:
Mensagem especificada entre aspas Campo de texto em que o usurio digita o nome

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

27

6. JOptionPane.showMessageDialog(null, "Nome digitado = "+ nome); exibir o seguinte dilogo de sada:


Mensagem a exibir Exibe o contedo da varivel nome, digitado pelo usurio.

7. Termina o aplicativo 8. As chaves fecham os blocos do mtodo e da classe, respectivamente. Exerccios de Fixao

2.10.6 Manipulao de String


Uma String um conjunto de caracteres agrupados e que podem ser usadas para representar informaes do tipo texto. Strings constituem-se uma cadeia de caracteres entre aspas. Exemplo: disciplina=Linguagem de Programao I. Em Java, as strings so instncias da classe String. Essas strings podem ser manipuladas de vrias formas, ou seja, possvel verificar seu comprimento, retirar um pedao dela, acessar ou mudar caracteres individuais. Existem diversas funes (ou mtodos) para manipulao de strings. Alguns exemplos esto listados a seguir.

Mtodo
length()

Descrio

Sintaxe

charAt()

Utilizada para retornar o tamanho, string.length() em forma de inteiro, de uma determinada String. Exemplo: String nome = Jos Paulo; System.out.println (nome.length()); // aparecer o valor 10 Recebe um ndice inteiro como string.charAt(ndice) parmetro e devolve o caracter que estiver na posio do ndice. Exemplo: Lembrando que em Java, String nome = Jos Paulo; normalmente os valores numerados System.out.println (nome.charAt(0)); comeam com zero. // o caracter J ser mostrado

toUpperCase() e Devolvem o valor de uma String em toLowerCase() letras maisculas - toUpperCase() e em letras minsculas toLowerCase().

string.toUpperCase() string.toLowerCase()
Exemplo: String nome = Jos Paulo; System.out.println (nome.toUpperCase()); // Ser mostrado JOSE PAULO System.out.println (nome.toLowerCase()); // Ser mostrado jose paulo

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

28

Mtodo
replace()

Descrio
Recebe dois caracteres como entrada e substitui um pelo outro na String.

Sintaxe

string.replace(caracter a ser substitudo, substituio)


String nome = Jos Paulo; nome = nome.replace(o,i)); // Substitui o por i: Jis Pauli

String.valueOf() Converte diversos tipos de dados em String.

String.valueOf(varivel a ser convertida)


Exemplo: int a = 5; float b = 7.25; String valores = String.valueOf(a)+#+String.valueOf(b); // A string valores fica: 5#7.25

substring()

trim()

Utilizada para retornar uma cpia de string.substring(ndice inicial, [ndice final]) caracteres de uma string a partir de dois ndices inteiros especificados. Exemplo: String frase=Aprendendo Java; System.out.prinln(frase); // Exibe: Aprendendo Java System.out.println(frase.substring(2)); // Exibe do 3 caracter at o fim System.out.println(frase.substring(11,15); // Exibe do 12 character at o 15 Remove todos os espaos em branco string.trim() que aparecem no incio e no final de uma determinada string. Exemplo: String frase= Aprendendo Java ; System.out.prinln(Com espaos +frase); System.out.println(Sem espaos +frase.trim());

2.10.7 Classe Math (funes matemticas)


As funes matemticas permitem efetuar diversos tipos de clculos matemticos. Para realizar esses clculos, so utilizados os mtodos da classe Math que devem apresentar a seguinte sintaxe: Math.<nome da funo>(argumentos ou lista de argumentos>) No necessrio importar a classe Math em um programa para poder utilizar seus recursos, pois ela j faz parte do pacote java.lang, importado automaticamente pelo compilador do Java. A classe Math define duas constantes matemticas, Math.PI - o valor de pi ( = 3.14159265358979323846) e Math.E que se refere ao valor da base para logaritmos naturais (2.7182818284590452354).

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

29

A seguir, so apresentadas as principais funes da classe Math. Mtodo


round()

Descrio

Exemplo

ceil()

floor()

max() e min()

sqrt()

pow()

random()

Este mtodo utilizado para arredondar um double a = 4.8, b = 5.3; valor double. O valor resultante um int double c = Math.round(a); // c recebe 5 double d = Math.round(b); // d recebe 5 arredondado. Sintaxe: Math.round(valor do tipo double); Este mtodo utilizado para arredondar um double a = 4.8, b = 5.3; valor double para o seu prximo inteiro. O double c = Math.ceil(a); // c recebe 5 valor resultante um double arredondado double d = Math.ceil(b); // d recebe 6 para cima, com parte decimal nula. Sintaxe: Math.ceil(valor do tipo double); Este mtodo utilizado para arredondar um double a = 4.8, b = 5.3; valor double para o seu inteiro anterior. O double c = Math.floor(a); // c recebe 4 double d = Math.floor(b); // d recebe 5 valor resultante um double arredondado para baixo, com parte decimal nula. Sintaxe: Math.floor(valor do tipo double); double a = 4.8, b = 5.3; As duas funes recebem dois valores numricos e devolve apenas um. A funo double c = Math.max(a,b); // c recebe 5.3 max() devolve o valor do maior e a funo double d = Math.min(a,b); // d recebe 4.8 min() devolve o valor do menor. Sintaxe: Math.max(valor1, valor2); Math.min(valor1, valor2); double num=81; Utilizada para calcular a raiz quadrada de um determinado nmero. O nmero que se System.out.println(Raiz quadrada de +num+ = + Math.sqrt(num)); deseja extrair a raiz quadrada deve ser do tipo doubl e o resultado obtido tambm. Sintaxe: Math.sqrt(valor do tipo double) double base=5.5, potencia=2; Utilizada para calcular a potncia de um System.out.println(5.5 elevado a 2 e = nmero. +Math.pow(base, potencia); Sintaxe: Math.pow(base, potncia) System.out.prinln((int) Math.random() * 100); Utilizada para gerar valores de forma aleatria. O valor gerado do tipo double //gera e mostra um nmero entre 0 e 99, inclusive; entre 0.0 e 1.0 (o valor 1.0 nunca sorteado). Sintaxe: Math.random()

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

30

Exemplo: // Testa os mtodos da classe Math public class MathTest { public static void main( String args[] ) { System.out.println( "Math.abs( 23.7 ) = " + Math.abs( 23.7 ) ); System.out.println( "Math.abs( 0.0 ) = " + Math.abs( 0.0 ) ); System.out.println( "Math.abs( -23.7 ) = " + Math.abs( -23.7 ) ); System.out.println( "Math.ceil( 9.2 ) = " + Math.ceil( 9.2 ) ); System.out.println( "Math.ceil( -9.8 ) = " + Math.ceil( -9.8 ) ); System.out.println( "Math.cos( 0.0 ) = " + Math.cos( 0.0 ) ); System.out.println( "Math.floor( 9.2 ) = " + Math.floor( 9.2 ) ); System.out.println( "Math.floor( -9.8 ) = " + Math.floor( -9.8 ) ); System.out.println( "Math.max( 2.3, 12.7 ) = " + Math.max( 2.3, 12.7 ) ); System.out.println( "Math.max( -2.3, -12.7 ) = " + Math.max( -2.3, -12.7 ) ); System.out.println( "Math.min( 2.3, 12.7 ) = " + Math.min( 2.3, 12.7 ) ); System.out.println( "Math.min( -2.3, -12.7 ) = " + Math.min( -2.3, -12.7 ) ); System.out.println( "Math.pow( 2, 7 ) = " + Math.pow( 2, 7 ) ); System.out.println( "Math.pow( 9, .5 ) = " + Math.pow( 9, .5 ) ); System.out.println( "Math.sin( 0.0 ) = " + Math.sin( 0.0 ) ); System.out.println( "Math.sqrt( 25.0 ) = " + Math.sqrt( 25.0 ) ); System.out.println( "Math.tan( 0.0 ) = " + Math.tan( 0.0 ) ); }}

Exerccios de Fixao: 1. Elabore um aplicativo para mostrar a quantidade de caracteres de uma frase qualquer. 2. Elabore um aplicativo que tenha como entrada uma frase qualquer e como sada a mesma frase alterada da seguinte forma: Todas as ocorrncias de s devem ser substitudas por x. 3. Elabore um aplicativo para ler uma frase em letra minscula e retorn-la em letra maiscula. 4. Elabore um aplicativo para calcular e mostrar a raiz quadrada de um nmero informado pelo usurio. 5. Elabore um aplicativo para solicitar dois valores. O programa dever mostrar o maior dos dois.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

31

2.10.8 Estruturas de Controle


Um programa de computador uma seqncia de instrues organizadas de forma a produzir a soluo de um determinado problema. Essas instrues so executadas em seqncia, o que se denomina fluxo seqencial de execuo. Porm, existem situaes em que necessrio executar as instrues de um programa em uma ordem diferente da estritamente seqencial. Tais situaes so caracterizadas pela necessidade de desvio do fluxo de execuo e repetio de instrues individuais ou de grupos. A Figura abaixo ilustra estas situaes.

2.10.8.1 Comandos Condicionais


So comandos que causam desvio do processamento, permitindo que uma determinada seqncia possa ser escolhida para ser executada. Os comandos condicionais so usados em todas as linguagens de programao e possibilitam que a execuo de um programa seja desviada de acordo com certas condies. Os comandos condicionais usados em Java so if-else e switch-case. Essas duas estruturas de desvio existentes na linguagem Java possibilitam executar diferentes trechos de um programa de acordo com certas condies. Estas estruturas so utilizadas quando existe a necessidade de verificar condies para a realizao de uma instruo ou de uma seqncia de instrues.
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 32

Uso da Estrutura if-else


O if, em conjunto com o else, um comando que permite a seleo entre dois caminhos distintos para execuo, dependendo do resultado (verdadeiro ou falso) de uma expresso lgica. Neste tipo de estrutura, se a condio for verdadeira, sero executadas as instrues que estiverem posicionadas entre os comandos if/else. Sendo a condio falsa, sero executadas as instrues que estiverem aps a instruo else. A sintaxe para a utilizao do conjunto if/else demonstrada em seguida. Observe que a condio sempre deve aparecer entre parnteses, item obrigatrio na linguagem Java. if (<Condio>) { <Instrues para condio verdadeira>} else { <Instrues para condio falsa>} Assim como a maioria das instrues em Java, o conjunto if/else deve ser utilizado em minsculas e caso haja apenas uma instruo a ser executada, tanto no if como no else, o uso das chaves se faz desnecessrio. Lembre-se de que as chaves so utilizadas quando se necessita que um bloco de instrues seja executado.

Exemplo:
/* Programa para calcular a media de um aluno e mostrar se o mesmo foi aprovado*/ import javax.swing.*; import java.text.DecimalFormat; public class ExemploIfElseDos{ public static void main (String args[]){ float nota1,nota2,nota3,nota4; double media; DecimalFormat oneDecimal = new DecimalFormat("0.0"); DecimalFormat twoDecimal = new DecimalFormat("0.00"); nota1=Float.parseFloat(args[0]); nota2=Float.parseFloat(args[1]); nota3=Float.parseFloat(args[2]); nota4=Float.parseFloat(args[3]); media=(double)(nota1+nota2+nota3+nota4)/4; System.out.println("Nota1 = "+oneDecimal.format(nota1)); System.out.println("Nota2 = "+oneDecimal.format(nota2)); System.out.println("Nota3 = "+oneDecimal.format(nota3)); System.out.println("Nota4 = "+oneDecimal.format(nota4));

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

33

if (media >= 6.0) System.out.println("O Aluno foi Aprovado com Media = "+twoDecimal.format(media)+"\n"); else System.out.println("O Aluno foi Reprovado com Media= "+twoDecimal.format(media)+"\n"); } }

Tratamento de Erros em Java


O Java oferece duas importantes estruturas para o controle de erros muito semelhantes as estruturas existentes na linguagem C++: try catch e try finally. Ambas tm o propsito de evitar que o programador tenha que realizar testes de verificao e avaliao antes da realizao de certas operaes, desviando automaticamente o fluxo de execuo para rotinas de tratamento de erro. Atravs destas diretivas, delimita-se um trecho de cdigo que ser monitorado automaticamente pelo sistema. A ocorrncia de erros no Java sinalizada atravs de excees, isto , objetos especiais que carregam informao sobre o tipo de erro detectado. Existem vrias classes de exceo adequadas para o tratamento dos problemas mais comuns em Java, usualmente inclusas nos respectivos pacotes. Excees especiais podem ser criadas em adio s existentes ampliando as possibilidades detratamento de erro. Com o try catch a ocorrncia de erros de um ou mais tipos dentro do trecho de cdigo delimitado desvia a execuo automaticamente para uma rotina designada para o tratamento especfico deste erro. A sintaxe do try catch a seguinte: try { diretiva_normal; } catch (exception1) { diretiva_de_tratamento_de erro1; } catch (exception2) { diretiva_de_tratamento_de erro2; }

Com o try finally tem-se um comportamento bastante diferente: uma rotina de finalizao garantidamente executada, isto , o trecho particular de cdigo contido na clusula finally sempre executado ocorrendo ou no erros dentro do trecho delimitado pela clusula try. A sintaxe do try finally colocada a seguir: try { diretiva_normal; } finally { diretiva_de_tratamento_de erro; }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

34

Isto particularmente interessante quando certos recursos do sistema ou estruturas de dados devem ser liberadas, independentemente de sua utilizao. O exemplo abaixo mostra um uso prtico do if/else contendo dois conjuntos de instrues usadas para validar as entradas do usurio. Este exemplo realiza trs validaes. Em primeiro lugar, verifica se o usurio realmente entrou com um argumento na linha de comando, depois verifica se o argumento digitado um valor numrico, logo a seguir verifica se esse valor est compreendido entre 0 e 10 (a faixa de valores possveis, uma vez que uma nota deve assumir apenas valores entre 0 e 10). /** Arquivo ExemploIfElse.java * Recebe um argumento (nota de um aluno) * e mostra se um valor vlido (0 a 10) */ public class ExemploIfElse{ public static void main (String args[]){ if (args.length==1){ try{ float x = Float.parseFloat(args[0]); if (x<=10 && x>=0) System.out.println("Nota = "+ x +" - valor valido"); else System.out.println("Nota = "+ x +" - valor invalido"); } catch(NumberFormatException e){ System.out.println("Digite apenas valores numricos"); } } else{ System.out.println("Numero de argumentos invalidos"); } } } Observaes sobre o exemplo anterior: Quando este exemplo for executado, o usurio dever entrar na linha de comando com um argumento. Ao executar o programa, no vetor args, a posio 0 (args[0]) receber um elemento. O comando if (args.length==1) verifica se o nmero de argumentos digitados igual a 1, isto , verifica se o usurio entrou com um, e apenas um, argumento na linha de comando. Isso verificado com o uso do length, ou seja, ele retorna a quantidade de elementos que args contm. Se o nmero de argumentos passados for igual a 1, executa o trecho entre chaves na seqncia. A instruo else no final do programa ser executada caso o usurio entre com um nmero de argumentos diferente de um. Experimente entrar com diferentes quantidades de argumentos e
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 35

verifique o resultado. O bloco try catch o responsvel por verificar se o usurio digitou um valor numrico como argumento, uma vez que valores indevidos provocaro erros de converso. O comando if (x<=10 && x>=0) contm a instruo if responsvel por verificar se o valor da nota, digitado pelo usurio, est compreendido entre os valores 0 e 10. Se a comparao for verdadeira, envia uma mensagem positiva; caso a comparao seja falsa, envia uma mensagem negativa. Para realizar vrias comparaes em um mesmo if, podem ser utilizados os operadores lgicos nas seguintes formas: if (x>y && x>7), if (x>y || x>z || x>k). Todas as comparaes devem estar entre parnteses.

Exerccios de Fixao 1. 2. Elaborar um programa que leia trs valores inteiros e imprima o menor deles. Dados trs valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se um tringulo eqiltero, issceles ou escaleno. Se eles no formarem um tringulo, escrever uma mensagem. OBS: Nenhum dos lados pode ser igual a zero. O comprimento de cada lado de um tringulo menor do que a soma dos comprimentos dos outros dois lados. Chama-se tringulo eqiltero ao tringulo que tem os comprimentos dos trs lados iguais Chama-se tringulo issceles ao tringulo que tem os comprimentos de dois lados iguais. Chama-se tringulo escaleno ao tringulo que tem os comprimentos dos trs lados diferentes. Dados trs valores distintos, fazer um programa que, aps a leitura destes dados, coloque-os em ordem crescente. Dados trs valores inteiros, elaborar um programa para contar quantos desses nmeros so pares e quantos so mpares. Identifique e corrija os erros em cada uma das seguintes instrues: a) if (c < 7); JoptionPane.showMessageDialog( null, c menor que 7); b) if ( c => 7) JoptionPane.showMessageDialog( null, c igual ou menor que 7);

3. 4. 5.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

36

Escreva uma instruo para realizar o que solicitado: Declare que um programa calcular o produto de trs inteiros Declare as variveis x, y, z e result como sendo do tipo int. Declare as variveis xVal, yVal, zVal como sendo do tipo String. Solicite ao usurio para inserir o primeiro valor, leia o valor e armazene-o na varivel xVal. Solicite ao usurio para inserir o segundo valor, leia o valor e armazene-o na varivel yVal. Solicite ao usurio para inserir o terceiro valor, leia o valor e armazene-o na varivel zVal. Converta xVal em um int e armazene o resultado na varivel x. Converta yVal em um int e armazene o resultado na varivel y. Converta zVal em um int e armazene o resultado na varivel z. Compute o produto dos trs inteiros contidos nas variveis x, y e z e atribua o resultado varivel result. Exiba um dilogo O produto e seguido pelo valor da varivel result. Retorne um valor de main para indicar que o programa terminou com sucesso. 7. Escreva um aplicativo que l trs inteiros digitados pelo usurio e exiba a soma, a mdia, o produto, o maior e o menor desses nmeros em um dilogo de mensagem de informao. OBS: Utilize a estrutura de deciso if...else para definir o maior e o menor dos nmeros. 8. Elabore um aplicativo para calcular a distncia e a quantidade de combustvel consumida em uma viagem. Informe a velocidade mdia, o tempo gasto, a distncia percorrida e a quantidade consumida de combustvel. 9. Elabore um aplicativo para calcular as razes de uma equao de 2 grau. 10. Elabore um aplicativo para calcular a mdia aritmtica entre quatro avaliaes e informar: Aprovado Para os alunos com mdia superior ou igual a 6.0 Reprovado Para os alunos com mdia inferior a 4.0 Em exame Para os alunos com mdia superior a 4.0 e inferior a 6.0. Para estes alunos, informar tambm a quantidade de pontos a ser obtida no exame. 11. Escreva um aplicativo que l trs inteiros digitados pelo usurio e exiba a soma, a mdia, o produto, o maior e o menor desses nmeros. OBS: Utilize a estrutura de deciso if...else para definir o maior e o menor dos nmeros. 12. Escreva um aplicativo que l um inteiro e imprima se ele mpar ou no. Faa uma verso utilizando o operador % (resto da diviso) e outra utilizando a funo da classe Math. 13. Escreva um aplicativo que l dois inteiros e imprime se o primeiro mltiplo do segundo. 14. Elaborar um programa que verifique quantos dias tem o ms digitado. 15. Uma pessoa precisa saber se ela esta apta a prestar o servio militar. Prepare um programa para informar a situao da pessoa. 16. O custo de um carro novo ao consumidor composto da soma do custo de fbrica com a percentagem do distribuidor e dos impostos (Aplicados ao custo de fbrica). Supondo que a percentagem do distribuidor seja de 12% e os impostos de 45%, preparar um programa para ler o custo de fbrica e imprimir o custo ao consumidor que exceder o valor de um carro popular. 17. Faa um programa que receba dois nmeros e diga se o primeiro maior que o segundo, se so iguais ou se o segundo maior que o primeiro. 18. Faa um programa que receba cinco nmeros e diga a quantidade de nmeros negativos 19. Faa um programa que receba o cdigo de um produto e seu valor. Baseado na tabela de aumento abaixo, o seu programa dever dizer qual o novo preo do produto.
Cdigo 1 3 4 8 Percentual de aumento % 15 20 35 40 37

6.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

20. Faa um programa que receba o valor de um depsito e o valor da taxa de juros. Calcule e imprima o valor do rendimento e o valor total depois do rendimento. 21. Uma empresa decide dar um aumento de 30% aos funcionrios cujo salrio inferior a 500 reais. Escreva um programa que receba o salrio de um funcionrio e imprima o valor do salrio reajustado ou uma mensagem caso o funcionrio no tenha direito ao aumento. 22. Faa um programa que verifique a validade de uma senha fornecida pelo usurio. A senha formada por um conjunto de caracteres que so: - ASDFG. O programa deve imprimir mensagem de permisso ou negao de acesso. 23. Faa um programa que receba a idade de uma pessoa e imprima mensagem de maioridade ou no. 24. Faa um programa que calcule e imprima o salrio reajustado de um funcionrio de acordo com a seguinte regra: salrios at R$ 300,00 - reajuste de 50% salrios maiores que R$ 300,00 - reajuste de 30% 25. Faa um programa que receba a altura (H) e o sexo de uma pessoa, calcule e imprima o seu peso ideal, utilizando as seguintes frmulas: para homens: (72.7 * H) - 58 para mulheres: (62.1 * H) - 44.7 26. Escreva um aplicativo que l dois inteiros digitados pelo usurio e exiba o maior e o menor desses nmeros em um dilogo de mensagem de informao. Funes max() e min() As duas funes recebem dois valores numricos e devolve apenas um. A funo max() devolve o valor do maior e a funo min() devolve o valor do menor. Exemplo:
double a = 4.8, b = 5.3; double c = Math.max(a,b); // c recebe 5.3 double d = Math.min(a,b); // d recebe 4.8

27. Escreva um aplicativo que l uma entrada do usurio definindo o raio de um crculo e que imprime o dimetro, a circunferncia e a rea do crculo. Utilize a constante Math.PI predefinida para o valor . Essa constante mais precisa que o valor 3,14159. A classe Math definida no pacote java.lang, desta forma, no necessrio import-la. Frmulas: (r o raio) Dimetro = 2r Circunferncia=2r rea= r2 28. A empresa L&L Ltda. concedeu bnus de 20% do valor do salrio a todos os funcionrios com tempo de trabalho na empresa igual ou superior a 5 anos. Aos demais funcionrios, o bnus foi de 10%. Calcular e exibir o valor do bnus.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

38

Estrutura Switch-case (Seleo de Mltipla Escolha)


A estrutura switch-case se refere a uma outra modalidade de desvio da execuo do programa de acordo com certas condies, semelhante ao uso da instruo if. Ao trabalhar com uma grande quantidade de desvios condicionais contendo instrues if, pode-se comprometer a legibilidade do programa, deixando-o difcil de ser interpretado. A estrutura switch-case fornece uma forma mais adequada e eficiente de atender a este tipo de situao, constituindo-se uma estrutura de controle com mltipla escolha. A estrutura switch-case equivale a um conjunto de instrues if encadeadas, fornecendo maior legibilidade e eficincia durante a execuo. Sua sintaxe a seguinte:

switch (<expresso>){ case 1: instrues; break; case 2: instrues; break; case 3: instrues; break, default: instrues; }
Na primeira linha do switch avaliado o resultado da expresso, que normalmente se refere a uma varivel simples. O resultado dessa expresso comparado nas diretivas case, executando o bloco de instrues quando a expresso coincidir com o valor colocado na frente do case. Em outras palavras, supondo que o valor da expresso seja igual a 2, ento sero executadas as instrues localizadas entre case 2: e break. A cada case, o programa compara o valor da expresso com o valor colocado na frente do case. Caso os valores sejam iguais, todas as instrues so executadas at que seja encontrada uma instruo break, que encerra o switch e faz a execuo do programa desviar para o ponto aps a chave de encerramento do switch. O programa percorre todas as diretivas case at que uma delas seja igual expresso inserida no switch. Caso nenhuma diretiva case possua o valor correspondente da expresso, sero executadas as instrues localizadas na diretiva default que opcional. O exemplo abaixo demonstra de forma clara a utilizao e o programa retorna o extenso desse nmero. da estrutura switch-case, simulando a aplicao de uma impressora de cheques, em que usurio entra com um nmero inteiro

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

39

/** Arquivo ExemploSwitchCase.java * Recebe um nmero inteiro de 0 a 9 e mostra o seu valor por extenso */ import javax.swing.JOptionPane; public class ExemploSwitchCase{ public static void main (String args[]){ int x; x = Integer.parseInt(JOptionPane.showInputDialog("Digite um nmero de 0 a 9")); switch(x){ case 0: JOptionPane.showMessageDialog(null,"zero"); break; case 1: JOptionPane.showMessageDialog(null,"um"); break; case 2: JOptionPane.showMessageDialog(null,"dois"); break; case 3: JOptionPane.showMessageDialog(null,"trs"); break; case 4: JOptionPane.showMessageDialog(null,"quatro");break; case 5: JOptionPane.showMessageDialog(null,"cinco"); break; case 6: JOptionPane.showMessageDialog(null,"seis"); break; case 7: JOptionPane.showMessageDialog(null,"sete"); break; case 8: JOptionPane.showMessageDialog(null,"oito"); break; case 9: JOptionPane.showMessageDialog(null,"nove"); break; default: JOptionPane.showMessageDialog(null,"invlido"); } System.exit(0); } }
Funcionalidades mais importantes do exemplo anterior: Quando este exemplo for executado, o usurio dever fornecer um nmero inteiro entre 0 e 9. O comando switch (x) faz com que o programa procure nas instrues case envolvidas pelas chaves se existe a ocorrncia do contedo armazenado na varivel x. Observe que toda linha do case necessita da instruo break em seu final. S ser executada a linha do case que satisfizer a condio estabelecida pelo switch. Caso nenhuma condio seja satisfeita, isto , se o usurio entrou com um nmero diferente de 0 a 9, ento a instruo default ser executada.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

40

//Exemplo da Estrutura Switch


import java.io.*; public class ExemploSwitch { public static void main (String args[]) { int tam; tam=args.length; if ( tam > 0 ) { switch(args[0].charAt(0)) { case 'a': case 'A':System.out.println("Vogal A"); break; case 'e': case 'E':System.out.println("Vogal E"); break; case 'i': case 'I':System.out.println("Vogal I"); break; case 'o': case 'O':System.out.println("Vogal O"); break; case 'u: case 'U':System.out.println("Vogal U"); break; default:System.out.println("Nao e uma vogal"); } } else { System.out.println("No foi fornecido argumento"); } } } Mesmo exemplo, mas com Interface Grfica //Exemplo1Switch.java import javax.swing.*; public class Exemplo1Switch { public static void main (String args[]) { String frase; frase=JOptionPane.showInputDialog("Digite uma letra"); switch (frase.charAt(0)) { case 'a': case 'A':JOptionPane.showMessageDialog(null,"Vogal \"A\" "); break; case 'e': case 'E':JOptionPane.showMessageDialog(null,"Vogal \"E\" "); break;
case 'i': case 'I':System.out.println("Vogal I"); break; case 'o': case 'O':System.out.println("Vogal O"); break; case 'u: case 'U':System.out.println("Vogal U"); break;

default:JOptionPane.showMessageDialog(null,"No vogal"); System.exit(0); }}

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

41

Exerccios Propostos: 1. Determine se cada uma das afirmaes seguintes verdadeira ou falsa. Se falsa, explicar por qu. a) O caso default necessrio na estrutura de seleo switch. b) A instruo break necessria no caso default de uma estrutura de seleo switch c) A expresso (x>y && a< b) verdadeira se x>y for verdadeira ou a<b for verdadeira d) Uma expresso contendo o operador || verdadeira se um ou ambos de seus operandos forem verdadeiros.

Iterao
O conceito de iterao utilizado quando se deseja repetir um certo trecho de instrues por um nmero de vezes conhecido a priori ou no. Uma iterao controlada por um comando repetitivo. Os laos de repetio (looping) formam uma importante estrutura nas linguagens de programao por possibilitarem a repetio da execuo de um bloco de instrues em um programa. Dessa forma, os laos de repetio determinam que um certo bloco seja executado repetidamente at que uma determina da condio ocorra. O mtodo da repetio uma das prticas mais usadas em programao, possibilitando a criao de contadores, temporizadores, rotinas para classificao, obteno e recuperao de dados. Em uma aplicao, provavelmente sempre existir pelo menos um lao de repetio. As linguagens de programao tipicamente possuem diversas estruturas de programao destinadas ao controle do fluxo de execuo, isto , estruturas que permitem a repetio e o desvio do fluxo de execuo. As principais formas de criao de laos de repetio em Java so construdas a partir das estruturas for e while.

Estrutura de Repetio Condicional


As estruturas de repetio condicionais so estruturas de repetio cujo controle de execuo feito pela avaliao de expresses condicionais. Estas estruturas so adequadas para permitir a execuo repetida de um conjunto de instrues por um nmero indeterminado de vezes, isto , um nmero que no conhecido durante a fase de programao, mas que pode ser determinado durante a execuo do programa tal como um valor a ser fornecido pelo usurio, obtido de um arquivo ou ainda de clculos realizados com dados alimentados pelo usurio ou lido de arquivos.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

42

Estrutura de Repetio while


O while o que chamamos de lao condicional, isto , um conjunto de instrues que repetido enquanto o resultado de uma expresso lgica (uma condio) avaliado como verdadeiro. Comportamento da estrutura de repetio while. Sintaxe: while (expresso_lgica) {Conjunto de Instrues}
falsa
Expresso lgica

verdadeira

Instrues

Conforme esboado na Figura Comportamento da estrutura de repetio while, inicialmente testado o valor da expresso lgica. Se ela for verdadeira, ento so executadas as instrues associadas ao comando while. Depois se testa novamente o valor da expresso lgica. Se esta continuar ainda verdadeira, ento a seqncia novamente executada e assim sucessivamente, at que a expresso lgica seja falsa. Note que o inicialmente falsa. Observe tambm que para terminar a execuo do comando while, em algum momento a expresso lgica deve-se tornar falsa. Caso contrrio, o processo de repetio ocorrer indefinidamente e a execuo do programa no qual encontra-se inserido o comando while, no termina. Programa Exemplo: Analise o programa seguinte, procure entend-lo e coloque comentrios funcionais nos locais em que considerar pertinente. while avalia o resultado da expresso antes de executar a(s) instrues associada(s). Assim possvel que as instrues nunca sejam executadas caso a condio seja

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

43

1) // exemploWhile.java public class exemploWhile { public static void main (String args[]) { int j = 10; while (j > Integer.parseInt(args[0])) { System.out.println(""+j); j--; } } } 2) /** Arquivo ExemploTabuadaWhile.java * Mostra a tabuada de um nmero n fornecido pelo usurio */ import javax.swing.JOptionPane; public class ExemploTabuadaWhile{ public static void main (String args[]){ int n,i; n = Integer.parseInt(JOptionPane.showInputDialog( "Digite um nmero")); i = 0; while (i<=10) { JOptionPane.showMessageDialog(null,n+" * "+i+" = "+(n*i)); i++; } System.exit(0); } } Exerccios: 1. O que h de errado com o trecho de programa abaixo: .
. .

i=1; while (i != 10) { System.out.println(i); I+=2; } .


.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

44

2. Identifique e corrija os erros em cada uma das instrues seguintes: a) while (c<=5) { produto *=c; ++c; b) if (s==1) System.out.println (Mulher); else; System.out.println (Homem); c) while (z>=0) suma+=z;

Estrutura de Repetio do ... while


O do while tambm um lao condicional, isto , tal como o while um conjunto de instrues repetido enquanto o resultado da condio avaliada como verdadeira mas, diferentemente do while, a diretiva associada executada antes da avaliao da expresso lgica e assim temos que esta diretiva executada pelo menos uma vez. Segue a sintaxe da diretiva do while e uma ilustrao do seu comportamento. Sintaxe: do { Instrues } while (expresso lgica);
verdadeira Expresso lgica Instrues Comportamento da estrutura de repetio do...while.

falsa

O do...while age de forma muito parecida com o while. A principal diferena que no do ... while, as instrues so executadas antes de se testar o valor da expresso lgica. Assim, a seqncia de instrues executada pelo menos uma vez, independentemente do valor inicial da expresso lgica. A seqncia de instrues controlada, portanto, executada pelo menos uma vez, sendo o processo repetitivo interrompido quando a avaliao da expresso lgica, ao final de uma execuo da seqncia de instrues controlada, for falsa.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

45

Programa Exemplo: Analise o programa seguinte, procure entend-lo e coloque comentrios funcionais nos locais em que considerar pertinente. 1) public class ExemploDoWhile { public static void main(String args[]) { int i = (int)(Math.random() * 200); //Math.random() gera valores double entre 0.0 e 1.0 do { System.out.println(i); i = (int)(Math.random() * 200); //redefine o i } while (i < 10); System.out.println ("Saiu com i=" + i); } } 2) /** Arquivo ExemploTabuadaDoWhile.java * Mostra a tabuada de um nmero n * fornecido pelo usurio */ import javax.swing.JOptionPane; public class ExemploTabuadaDoWhile{ public static void main (String args[]){ int n; n = Integer.parseInt(JOptionPane.showInputDialog( "Digite um nmero")); int i = 0; do {JOptionPane.showMessageDialog(null,n+" * "+i+" = "+(n*i)); i++; } while (i<=10); System.exit(0); } } Exerccios: 1. Considere o seguinte trecho de programa: . . i=1; while (i<= 5) { System.out.println(i); i++; }
. . .

Complete a lacuna abaixo de forma a se obter os mesmos resultados do trecho acima:


. . .

i= ____ do { System.out.println(i); i____; } while _______;

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

46

Estrutura de Repetio for


A estrutura de repetio for cuida de todos os detalhes da repetio controlada por contador. Sintaxe: for ( expresso1; expresso2; expresso3) { Instrues; } onde: expresso1 nomeia a varivel de controle do lao e fornece o seu valor inicial expresso2 a condio de continuao do lao (contendo o valor final da varivel de controle) expresso3 o passo com que a varivel de controle ser acrescida ou decrescida. Esse incremento pode ser realizado por meio de uma varivel inteira ou com ponto flutuante, permitindo pequenos incrementos decimais caso seja necessrio.
falsa verdadeira i++ int i=1

Comportamento da estrutura de repetio for.

i<=10

Instrues

Exemplo: for (int cont=1; cont<=10; cont++) { Instrues; } Esta sintaxe pode ser interpretada como: inicie cont com um e repita o conjunto de instrues enquanto o valor de cont for menor ou igual a 10. Cada vez que o conjunto de instrues executado, o valor do cont incrementado (cont++). Outros exemplos: for (double x=5; x<=10; x=x+0.5) Explicao: conta de 5 at 10 com passo de 0.5, ou seja: 5.0 , 5.5 , 6.0 , 6.5 , ... , 9.5 , 10.0.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

47

for (int x=10; x>=0; x=x-2) Explicao: conta de 10 at 0 com passo de -2, ou seja: 10, 8 , 6 ,4 , 2 , 0. for (char x='a'; x<='d' ;x++) Explicao: conta de a at d com passo de 1. Programa Exemplo: Analise o programa seguinte, procure entend-lo e coloque comentrios funcionais nos locais em que considerar pertinente. //ExemploFor.java public class ExemploFor { public static void main (String args[]) { for (int j=0; j<=10; j++) { System.out.println(" " + j); } } }
Sada:

2./** Arquivo ExemploTabuadaFor.java * Mostra a tabuada de um nmero n * fornecido pelo usurio */ import javax.swing.JOptionPane; public class ExemploTabuadaFor{ public static void main (String args[]){ int n; n = Integer.parseInt(JOptionPane.showInputDialog( "Digite um nmero")); for (int i=0; i<=10; i++) { JOptionPane.showMessageDialog(null,n+" * "+i+" = "+(n*i)); } System.exit(0); } } OBS: A declarao da varivel de controle pode ser feita no cabealho, porm seu valor s conhecido dentro da estrutura for. As trs expresses na estrutura for so opcionais. Se expresso2 for omitida, Java assume que a condio de continuao do lao true, criando assim um lao infinito. Pode-se omitir a expresso1 se a varivel de controle for inicializada em outra parte no programa antes do lao. Podese omitir a expresso3 se o incremento for calculado por instrues no corpo do for.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

48

Exerccios de Fixao:
1. Escreva um aplicativo que exibe continuamente os mltiplos do inteiro 2, a saber: 2, 4, 8, 16, 32, 64 etc. Seu lao deve terminar quando o usurio pressionar a tecla ESC. 2. O tringulo de Floyd tem o seguinte formato: 1 2 4 7 11 ... Escreva um aplicativo que gere um tringulo de Floyd com m linhas. 3. Considere a seqncia de Fibonacci, em que o n-simo nmero dado pela seguinte frmula de recorrncia: F1 = 1, F2 = 1 , Fn = Fn-1 + Fn-2, para n>=3. Faa um programa que calcule e exibe o 20 primeiros nmeros da seqncia. 4. Escreva um aplicativo que estima o valor da constante matemtica e utilizando a frmula: 3 5 8 12 6 9 13 10 14 15

e =1+

x x2 x3 + + + ... 1! 2! 3!

5. Escreva um aplicativo que localiza o menor de vrios inteiros. Assuma que o primeiro valor lido especifica o nmero de valores a serem digitados pelo usurio. 6. Escreva um aplicativo para ler N nmeros e exibe quantos nmeros negativos, quantos positivos e quantos zeros foram lidos. 7. Escreva um aplicativo que calcula o produto dos inteiros mpares de 1 a 15 e ento exibe os resultado. 8. Uma pessoa investe R$ 1000,00 em uma conta poupana que rende juros de 5% ao ano. Assumindo que todo juro deixado em depsito, calcule e imprima a quantidade de dinheiro na conta no fim de cada ano, por 10 anos. Utilize a seguinte frmula para determinar essas quantidades: a=p(1+r)n. Onde: p a quantidade original investida (isto , o principal) r a taxa de juros anual n o nmero de anos a a quantidade em depsito no fim do n-simo ano.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

49

9. Uma empresa de pedidos pelo correio vende cinco produtos diferentes cujos preos de varejo so: Produto 1 R$ 2,98 Produto 2 R$ 4,50 Produto 3 R$ 9,98 Produto 4 R$ 4,49 Produto 5 R$ 6,87 Escreva um aplicativo que leia uma srie de pares de nmeros como segue: a) Nmero do produto b) Quantidade vendida no dia. O programa deve calcular e exibir o valor total no varejo de todos os produtos vendidos na semana (utilizar a estrutura de mltipla escolha para ajudar a determinar o preo de varejo de cada produto). O programa dever ser encerrado quando o usurio pressionar a tecla ESC ou em caso de menu, a opo FIM. 10. Escreva um aplicativo que imprime a seguinte forma de losango. Utilize estruturas de repetio. * *** ***** ******* ********* ******* ***** *** * 11. Elabore um programa que simula 10 rolagens de um dado de seis lados e mostre o valor de cada rolagem. 12. Elabore um programa que simula 6000 rolagens de um dado de seis lados e mostre a freqncia de cada lado. 13. Escreva um aplicativo para exibir a seguinte figura: * *** ***** ******* ********* ******* ***** *** *

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

50

14. Escreva um aplicativo para exibir a seguinte figura: * ****** ** ***** *** **** **** *** ***** ** ****** *

2.10.9 Manipulao de Agregados Homogneos (Arrays)


Em determinadas situaes conveniente representar dados no em termos de valores isolados (variveis simples), mas como uma agregao de valores (variveis compostas). Uma varivel de um tipo simples contm um valor do tipo associado a essa varivel. Ela contm precisamente o ltimo valor nela depositado. A cada atribuio, o valor anteriormente depositado se perde. Desta forma, existem situaes em que necessrio representar dados no em termos de valores isolados, mas como agregao de valores. Correspondem a posies de memria, identificadas por um mesmo nome, referenciadas por um ndice e que possuem um mesmo tipo. Agrupam sob um mesmo nome um conjunto de variveis do mesmo tipo. Geralmente so manipulados dentro de estruturas de repetio, por serem variveis indexadas. Necessidade: quando eventos similares so organizados, possvel represent-los por ndices, que faro o papel do elemento diferenciador. Estas variveis se dividem em duas categorias: as unidimensionais (Vetores) e as multidimensionais (Matrizes), dependendo da quantidade de ndices que so necessrios para a individualizao de cada elemento do conjunto. Agregados homogneos (Arrays) em Java so objetos que podem ser passados e acoplados a outros objetos. Podem conter qualquer tipo de elemento valorado (tipos primitivos ou objetos), mas no pode armazenar diferentes tipos em um simples array, ou seja, permitido ter um array de inteiros, ou um array de Strings, ou um array de array, mas no pode ter um array que contenha ambos os objetos Strings e inteiros. A restrio acima descrita significa que os arrays implementados em Java so genricos homogneos, ou seja, um nico array pode armazenar qualquer tipo de objeto com a restrio que todos sejam da mesma classe.

Vetores (Unidimensionais)
Vetor uma estrutura que necessita apenas de um ndice para a identificao de um elemento
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 51

nele contido. Sendo assim, para manipular um valor em um vetor necessrio fornecer o nome (identificador) do vetor e o ndice do elemento desejado. O ndice determina a posio na estrutura onde o elemento est inserido. Cada posio de um vetor contm exatamente um valor que pode ser manipulado individulamente.

Declarao: A declarao de um vetor dever ser escrita da seguinte forma:


String difficult[]; double mdia[]; int temp[];

Outra alternativa de declarao:


String[] difficult; double[] mdia; int[] temp;

Criando Objetos Arrays:


Um dos caminhos usar o operador new para criar uma nova instncia de um array, por exemplo: int temps[] = new int[9]; Graficamente este vetor (array) poder ser representado por: temps
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9

Quando um objeto array criado usando o operador new, todos os ndices so inicializados (0 para arrays numricos, falso para boolean, \0 para caracteres, e NULL para objetos). possvel criar e inicializar um array ao mesmo tempo. String nomes[] = new String { Paulo, Fernando, Leticia , Carlos, Andr}; Graficamente este vetor (array) poder ser representado por: nomes
Paulo 0 Fernando 1 Letcia 2 Carlos 3 Andr 4

Cada um dos elementos internos deve ser do mesmo tipo e deve ser tambm do mesmo tipo que a varivel que armazena o array. O exemplo acima cria um array de Strings chamado nomes que contm 5 elementos.
______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi 52

Acessando os Elementos do Array:


Uma vez que voc tem um array com valores iniciais, voc pode testar e mudar os valores em cada ndice de cada array. Os arrays em Java sempre iniciam na posio 0 como no C++. Por exemplo: String[] arr= new String[10]; arr[10]=fora do limite; Isto provoca um erro de compilao pois o ndice 10 no existe. Como inicia na posio 0, 10 est fora do limite do array. arr[9] = dentro do limite; Esta operao de atribuio vlida e insere na posio 9 do array, a String dentro do limite. Obtendo o tamanho do array: char [ ] alfabeto = new char [26]; int tamAlfabeto = alfabeto.length; // tamAlfabeto == 26

String [ ] mosqueteiros = { ioumle, iodoisle, iotrsle }; int num = mosqueteiros.length; // num == 3 A forma de acesso a um determinado elemento do array feita simplesmente fazendo referncia ao ndice do mesmo. O acesso a um elemento do array feito colocando uma expresso de valor inteiro entre colchetes aps o nome do array. nota
6.0 0 7.0 1 9.0 2 5.5 3 9.1 4 10.0 5 4.7 6 7.5 7 8.6 8 8.0 9

nota[3] faz referncia ao elemento do vetor, cujo contedo 5.5. Desta forma, para se ter acesso a qualquer uma das notas armazenadas basta utilizar uma varivel inteira qualquer (a ttulo de exemplo a varivel i) como sendo o ndice. Supondo i=5, uma referncia a nota[i], i seria substitudo pelo seu contedo no dado instante e neste caso, o elemento referenciado = 10.0. O exemplo a seguir cria um array de inteiros chamado tecladoNum e depois preenche o array com inteiros de 0 a 9: int tecladoNum[ ] = new int [10]; for ( int i = 0; i < tecladoNum.length; i++) tecladoNum [i] = i;

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

53

Tentar acessar um elemento fora do intervalo do array gera uma ArraylndexOutOfBoundsException. Esse e um tipo de RuntimeException, e por isso voc pode apanh-la e trat-la, ou ento ignor-la: String [ ] estados = new String [10]; try { estados[0] = Par; estados[1] = Amazonas; estados[25]=Amap; // Erro: array fora dos limites } catch (Arraylndex0utOfBoundsException erro ) JOptionPane.showMessageDialog(null, Erro tratado: +erro.getMessage( )); Exemplo 1: Dado um conjunto com os seguintes elementos: 1, 2, 4, 8, 6, 7, 15, 9, 10, 18. Elabore um aplicativo para calcular a soma desses elementos. // Calcula a soma dos elementos de um vetor import javax.swing.*; public class SomaVetor { public static void main( String args[] ) { int a[] = { 1, 2, 4, 8, 6, 7, 15, 9, 10, 18 }; int total = 0; String saida="Elementos do vetor\n"; for ( int i = 0; i < a.length; i++ ) { saida+=a[i]+" "; total += a[ i ];} JOptionPane.showMessageDialog( null, saida +"\nSoma do elementos do vetor " + total, "Soma os elementos do vetor", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

54

Exemplo 2: Entrada de dados pelo usurio. //Arquivo ExemploVetor.java //Cria e permite o preenchimento pelo usurio de um vetor com //10 elementos do tipo int e ao final mostra seus elementos import javax.swing.*; public class ExemploVetor{ public static void main (String args[]) { int v[]=new int[10]; for (int i=0; i<v.length; i++) { v[i]=Integer.parseInt( JOptionPane.showInputDialog( "Digite o valor do "+(i+1)+ " elemento (posio "+i+")")); } String resposta="Posio\tValor"; for (int i=0; i<v.length; i++) { resposta+="\nv["+i+"]\t"+v[i]; } JTextArea saida = new JTextArea(11,10); saida.setText(resposta); JOptionPane.showMessageDialog(null,saida); System.exit(0); } }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

55

Exemplo 3 - Consulta /*Cria e permite o preenchimento pelo usurio de um vetor com *10 elementos do tipo int e ao final mostra seus elementos *e permite a consulta dos valores pela posio */ import javax.swing.*; public class ExemploVetorConsulta{ public static void main (String args[]) { int v[]=new int[10]; for (int i=0; i<v.length; i++) { v[i]=Integer.parseInt( JOptionPane.showInputDialog( "Digite o valor do "+(i+1)+ " elemento (posio "+i+")")); } String resposta="Posio\tValor"; for (int i=0; i<v.length; i++) { resposta+="\nv["+i+"]\t"+v[i]; } JTextArea saida = new JTextArea(11,10); saida.setText(resposta); JOptionPane.showMessageDialog(null,saida); int consulta = Integer.parseInt( JOptionPane.showInputDialog( "Digite uma posio vlida para consulta (0-9)")); while ((consulta>=0) && (consulta<=9)) { JOptionPane.showMessageDialog( null,"Posio: "+consulta+" ---> Valor: "+v[consulta]); JOptionPane.showMessageDialog(null,saida); consulta = Integer.parseInt( JOptionPane.showInputDialog( "Digite uma posio vlida para consulta (0-9)")); } System.exit(0); } } Exerccios Propostos: 1- Para uma turma de 40 alunos, elaborar um aplicativo que calcule a mdia geral da turma e quantos alunos obtiveram a mdia acima da mdia geral. 2- Dado um vetor com 20 elementos, obter o produto de seus elementos pelas suas respectivas posies 3- Dado dois vetores a e b com 5 elementos cada, elabore um aplicativo para calcular o produto de cada elemento do vetor a, pelo elemento do vetor b, cujo ndice seja o mesmo. 4- Dado um vetor com 10 elementos distintos, encontrar o menor elemento e a sua respectiva posio.

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

56

Arrays Multidimensionais
Estruturas indexadas que necessitam de mais que um ndice para identificar um de seus elementos so chamadas de matrizes de dimenso n, onde n representa o nmero de ndices requeridos. Uma matriz de duas dimenses (dois subscritos) pode ser compreendida como uma tabela de valores consistindo em informaes organizadas em linhas e colunas. Por conveno, o primeiro subscrito identifica a linha do elemento e o segundo identifica a coluna do elemento. Os arrays que necessitam de dois subscritos para identificar um elemento especfico so chamados de arrays bidimensionais.

Exemplo: Coluna 0 a [0] [0] a [1] [0] a [2] [0] Coluna 1 a [0] [1] a [1] [1] a [2] [1] Coluna 2 a [0] [2] a [1] [2] a [2] [2] Coluna 3 a [0] [3] a [1] [3] a [2] [3]

Linha 0 Linha 1 Linha 2

Declarao: A declarao de uma matriz dever ser escrita da seguinte forma:


int vendas [][]; double notasProvas[][]; Arrays multidimensionais podem podem ser iniciados em declaraes da mesma forma que um array unidimendional, isto : int vendas [][]={{1,2},{3,4}}; Essa matriz poderia ser graficamente representada por:

Linha 0 Linha 1

Coluna 0 1 3

Coluna 1 2 4

Assim como ocorre com arrays unidimensionais, os elementos de um array multidimenional so automaticamente iniciados quando new cria o objeto array. Exemplo: int b[][]; b=new int [3] []; //aloca linhas b[0] = new int [5]; //aloca colunas para a linha 0 b[1] = new int [3]; //aloca colunas para a linha 1
57

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

Exemplo: Dada uma matriz quadrada de ordem M, separar os elementos da diagonal

principal em um vetor.
import javax.swing.*; public class DiagonalPrincipal{ public static void main (String args[]) { int mat[][], diag[],lin,col; lin=Integer.parseInt(JOptionPane.showInputDialog("Quantas linhas tem a matriz")); col=lin; mat=new int[lin][col]; diag=new int[lin]; for (int linha=0; linha<mat.length; linha++) { for (int coluna=0; coluna< mat[linha].length; coluna++) { mat[linha][coluna]=(int)(Math.random()*10); } } String resposta="Colunas\t0\t1\t2\t3"; resposta+="\nLinhas"; for (int linha=0; linha<mat.length; linha++) { resposta+="\n"+linha; for (int coluna=0; coluna<mat[linha].length; coluna++) { resposta+="\t"+mat[linha][coluna]; } } resposta+="\n\nDIAGONAL PRINCIPAL"; for (int linha=0; linha<mat.length; linha++) {diag[linha]=mat[linha][linha]; resposta+="\t"+diag[linha];} JTextArea saida = new JTextArea(resposta); JOptionPane.showMessageDialog(null,saida); System.exit(0); } }

Exerccios de Fixao: 1. Achar a somatria de cada uma das linhas de uma matriz A(7 X 5), armazenada 2. 3. 4. 5. 6. 7. 8.
randomicamente. Encontrar o maior elemento e sua respectiva posio de um matriz B de dimenso 2x3. Dada uma matriz quadrada, verificar se ela e simtrica. Preparar um programa que tenha como dado de entrada uma matriz N x M e retorne um vetor contendo a soma das linhas da matriz. Preparar um programa que tenha como entrada uma matriz N x M e retorne a mdia dos elementos da 1a coluna. Elabore um programa que encontre a somatria de cada uma das linhas de uma matriz 3 x 4 e a mdia de cada uma das colunas desta matriz. Preparar um programa que calcule o produto de duas matrizes. Dado uma matriz gerar a sua transposta.
58

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

9. Preparar um programa para somar a primeira linha de uma matriz quadrada a todas as
demais linhas, incluindo ela mesma.

10. Supondo

Entrada:

que os dados estejam armazenados conforme matriz Entrada, execute a simulao do trecho do programa preenchendo a matriz Sada: Qual ser a disposio dos elementos da Matriz? Em caso de erro (s) indicar o (s) local (is)
Sada: O E R A Q * E * * E U * I S T S

import javax.swing.*; public class TesteMesaMatriz{ public static void main (String args[]) { char mat[][]= new char[4][4]; char aux=' '; .
. .

for (int li=0; li<4; li++) { for (int c=li+1; c<4; c++) { aux=mat[li][c]; mat[li][c]=mat[c][li]; mat[c][li]=aux; } } aux=mat[0][0]; mat[0][0]=mat[3][3]; mat[3][3]=aux; aux=mat[1][1]; mat[1][1]=mat[2][2]; mat[2][2]=aux;

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

59

2.10.10 Mtodos em Java


Mtodos so trechos de programa (sub-rotinas, funes) que recebem um determinado nome e podem ser acionados vrias vezes durante a execuo de um programa, isto , o mtodo pode ser chamado toda vez que sua funcionalidade for necessria. Para escrever mtodos em Java, utiliza-se a seguinte sintaxe: modificador_de_acesso tipo/classe_de_retorno nome_do_mtodo (lista_de_argumentos) { conjunto de instrues; } onde: modificador_de_acesso: So elementos que caracterizam o mtodo quanto visibilidade (escopo). Os modificadores mais utilizados so: public (pode ser invocado livremente), protected (pode ser utilizado apenas no mesmo pacote e em subclasses), private (pode ser invocado apenas na classe), final (no pode ser sobrescrito), static (pode ser incovado a partir do nome da classe). tipo/classe_de_retorno: Indica o tipo de valor retornado pelo mtodo. Esse tipo pode ser um tipo primitivo(int, double, char, boolean etc), uma classe (String, Date etc) ou void, no caso do retorno ser vazio. nome_do_mtodo: lista_de_argumentos: um identificador vlido da linguagem. Indica a lista de argumentos que sero passados como parmetros para o mtodo. Todos os argumentos possuem tipo e identificador. Vrios argumentos so separados por vrgula.

Exemplo: Calcular o no de combinaes de m elementos tomados n a n.


m Cn =

m! (m n)!n!

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

60

Soluo sem utilizar mtodos:


import javax.swing.*; public class Combinacoes { public static void main(String[] args) { int m, n; double fatM, fatN, fatM_N; double comb; m=Integer.parseInt(JOptionPane.showInputDialog("Digite o valor de m")); n=Integer.parseInt(JOptionPane.showInputDialog("Digite o valor de n")); //Clculo de m! if (m==0||m==1) {fatM=1;} else {fatM=1; int cont=1; while(cont<=m) {fatM=fatM*cont; cont++;} } //Clculo de n! if (n==0||n==1) {fatN=1;} else {fatN=1; int cont=1; while(cont<=n) {fatN=fatN*cont; cont++;} } //Clculo de (m-n)! if ((m-n)==0||(m-n)==1) {fatM_N=1;} else {fatM_N=1; int cont=1; while(cont<=(m-n)) {fatM_N=fatM_N*cont; cont++;} } comb=fatM/(fatM_N*fatN); JOptionPane.showMessageDialog(null, "O nmero de combinaes = "+comb); System.exit(0); } }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

61

Soluo utilizando mtodos:


import javax.swing.*; public class Combinacoes_with_Metodo { public static void main(String[] args) { int m, n; double comb; m=Integer.parseInt(JOptionPane.showInputDialog("Digite o valor de m")); n=Integer.parseInt(JOptionPane.showInputDialog("Digite o valor de n")); comb=fatorial(m)/(fatorial(m-n)*fatorial(n)); JOptionPane.showMessageDialog(null, "O nmero de combinaes = "+comb); System.exit(0); } public static double fatorial(double num) { double fat=0; int cont=0; if (num==0||num==1) {fat=1;} else { fat=1; cont=1; while(cont<=num) { fat=fat*cont; cont++;} } return fat; } }

______________________________________________________________________ Notas de Aula da Disciplina Linguagem de Programao Java - Prof Alindacir Grassi

62