Você está na página 1de 42

MRSC - Programao em Comunicaes

Programao Orientada por Objectos com Java


Ademar Aguiar
www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt

MRSC, Programao em Comunicaes

Introduo ao Java

MRSC, Programao em Comunicaes

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Objectivos
Ser capaz de:
?

Identificar os elementos principais do Java Descrever a Java Virtual Machine (JVM) Comparar a utilizao do Java para a construo de applets e de aplicaes Identificar os componentes principais do Java Development Kit (JDK) Descrever as opes de instalao do Java (deployment)
MRSC, Programao em Comunicaes

O que o Java?
?

Concebido pela Sun para a electrnica de consumo, mas rapidamente alcanou a WWW Uma linguagem orientada por objectos e uma biblioteca de classes Utiliza uma mquina virtual para a execuo de programas

MRSC, Programao em Comunicaes

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Vantagens Principais do Java


?

Orientado por objectos Interpretado e independente da plataforma Dinmico e distribudo Multithreaded Robustez e segurana

MRSC, Programao em Comunicaes

Independente da Plataforma
?

O cdigo Java armazenada num ficheiro .java Um programa .java compilada para ficheiros .class Bytecodes so interpretados em tempo de execuo
Compile (javac) movie.java JVM (java) movie.class executar programa
6

MRSC, Programao em Comunicaes

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Ambiente de Segurana do Java


Linguagem e Compilador

Verificador de Bytecode

Carregador de Classes

Interfaces especficas

MRSC, Programao em Comunicaes

Applets Java
?

A forma mais comum de utilizao do Java, inicialmente Vocacionada para utilizao em pginas HTML Pode incluir contedos activos (forms, audio, imagens, vdeo) Aparece num browser e pode comunicar com o servidor

MRSC, Programao em Comunicaes

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Aplicaes Java
?

Instalao no lado do cliente:


JVM corre em aplicaes autnomas No necessita de carregar classes pela rede

Instalao do lado do servidor:


Pode servir mltiplos clientes a partir de uma mesma origem Encaixa bem com modelos multi-camada para computao na Internet

MRSC, Programao em Comunicaes

JVM - Java Virtual Machine


Operating system Browser

JVM

JVM

aplicao

Applet

MRSC, Programao em Comunicaes

10

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Como funciona a JVM


?

O JVM class loader carrega todas as classes necessrias. O JVM verifier verifica os bytecodes ilegais. O gestor de memria da JVM liberta memria de volta ao sistema operativo.

MRSC, Programao em Comunicaes

11

Compiladores Just-in-Time (JIT)


?

Melhoram a performance So teis se os mesmos bytecodes forem executados repetidas vezes Traduz bytecodes para instrues nativas Optimizam cdigo repetitivo, tais como ciclos

MRSC, Programao em Comunicaes

12

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Java e Computao na Internet


?

A computao na Internet podem consistir em trs diferentes camadas:

Client

Application server

Data server

Java pode ser usada em todas estas camadas.

MRSC, Programao em Comunicaes

13

Resumo
?

O cdigo Java compilado em bytecodes independentes da plataforma. Os bytecodes so interpretados por uma JVM. As applets correm num browser no cliente. As aplicaes Java so executadas de forma autnoma tanto no cliente como no servidor.

MRSC, Programao em Comunicaes

14

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Conceitos Bsicos do Java

MRSC, Programao em Comunicaes

15

Objectivos
Ser capaz de:
?

Identificar os elementos principais do Java Identificar a sntaxe bsica do Java Descrever ficheiros .java e .class

MRSC, Programao em Comunicaes

16

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Tpicos
?

Componentes Java Convenes Classes, objectos e mtodos Utilizao de Javadoc Compilar e executar programas Java

MRSC, Programao em Comunicaes

17

JDK - Java Development Kit


O JDK da Sun fornece:
?

Compilador (javac) Visualizador de applets (appletviewer) Interpretador de bytecode (java) Gerador de documentao (javadoc)

MRSC, Programao em Comunicaes

18

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

JDK - Java Development Kit


O JDK da Sun fornece pacotes standard para:
?

linguagem Sistema de janelas Controlo de Applets Entrada/Sada Comunicao em Rede

MRSC, Programao em Comunicaes

19

JDK - Java Development Kit


O JDK da Sun fornece suporte de documentao para:
?

Comentrios
Implementao Documentao

Gerador de Documentao

MRSC, Programao em Comunicaes

20

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Convenes de Nomes
As convenes incluem:
?

Nomes de ficheiros
Customer.java, RentalItem.java

Nomes de Classes
Customer, RentalItem, InventoryItem

Nomes de Mtodos
getCustomerName(), setRentalItemPrice()

MRSC, Programao em Comunicaes

21

Convenes de Nomes...
?

Standard para variveis


customerName, customerCreditLimit

Standard para constantes


MIN_WIDTH, MAX_NUMBER_OF_ITEMS

Utilizao de caracteres maisculos e minsculos Nmeros e caracteres especiais

MRSC, Programao em Comunicaes

22

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Definio de Classes
?

A definio de classes normalmente inclui:


Modificador de acesso: public, private A palavra-chave class Campos das instncias Constructores Mtodos das instncias Campos da classe Mtodos da classe

MRSC, Programao em Comunicaes

23

Definio de Classes...
public class Customer { // Instance variveis String customerName; String customerPostalCode; float customerAmountDue; // Instance mtodos float getAmountDue (String cust) { } } Declarao

Varivel de Instncia

Mtodo da Instncia

MRSC, Programao em Comunicaes

24

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Definio de Mtodos
?

Sempre dentro de uma classe Especificam:


Modificador de acesso Palavra-chave static Argumentos Tipo de retorno
[access-modifiers] [static] <mtodo-name> <return-tipo> ([arguments]) <java code block>

MRSC, Programao em Comunicaes

25

Definio de Mtodos
float getAmountDue (String cust) { // mtodo variveis int numberOfDays; float due; float lateCharge = 1.50; String customerName; // mtodo body numberOfDays = this.getOverDueDays(); due = numberOfDays * lateCharge; customerName = getCustomerName(cust); return due; } Declarao

Variveis de mtodo

Instrues de mtodo Retorno

MRSC, Programao em Comunicaes

26

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Regras para Declarao de Variveis e Constantes


? ?

Devem ser declaradas antes de ser utilizadas Uma declarao por linha No incio de um bloco de cdigo O bloco de cdigo define o mbito Inicializao

MRSC, Programao em Comunicaes

27

Regras para Declarao de Variveis e Constantes


float getAmountDue (String cust) { float due = 0; int numberOfDays = 0; float lateFee = 1.50; {int tempCount = 1; // new code block due = numberOfDays * lateFee; tempCount++; } // end code block return due; } Variveis de mtodo

Variveis temporrias

MRSC, Programao em Comunicaes

28

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Regras para a criao de blocos de cdigo


?

Agrupar todas as declaraes de classe.

Agrupar todas as declaraes de mtodos. Agrupar outros segmentos de cdigo relacionado entre si.
public class SayHello { public static void main(String[] args) { System.out.println("Hello world"); } }

MRSC, Programao em Comunicaes

29

Regras para a criao de instrues


? ?

As instrues terminam sempre com um ponto-evrgula (;) Instrues compostas so definidas dentro de chavetas { }. Utilizar chavetas para instrues de controlo.

MRSC, Programao em Comunicaes

30

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Compilar e Executar uma Aplicao Java


?

Para compilar um ficheiro .java:


prompt> javac SayHello.java compiler output

Para executar um ficheiro .class:


prompt> java SayHello Hello world prompt>

Ateno s maisculas e minsculas!

MRSC, Programao em Comunicaes

31

Resumo
?

O JDK fornece as ferramentas Java essenciais. O JDK fornece um conjunto valioso de classes e mtodos pr-definidos. Os programas Java so constitudos por classes, objectos, e mtodos. A adopo de normas de programao facilita a leitura e reutilizao de cdigo.

MRSC, Programao em Comunicaes

32

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Exemplos Prticos
?

Explorar um programa fonte em Java Inspeccionar classes, mtodos e variveis Compilar e executar uma aplicao

MRSC, Programao em Comunicaes

33

Tipos de Dados e Operadores

MRSC, Programao em Comunicaes

34

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Objectivos
Ser capaz de:
?

Descrever os tipos de dados primitivos Declarar e inicializar variveis primitivas Utilizar operadores para manipular o valor de uma varivel primitiva

MRSC, Programao em Comunicaes

35

Tpicos
?

O Java oferece primitivas para os tipos de dados bsicos. As primitivas so a fundao para armazenar e utilizar informao. Declarar e inicializar primitivas a bse da construo de tipos definidos pelo utilizador.

MRSC, Programao em Comunicaes

36

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Tpicos
?

Os operadores manipulam dados e objectos. Aceitam um ou mais argumentos e produzem um valor. Java oferece 44 operadores diferentes. Alguns operadores alteram o valor do operando.

MRSC, Programao em Comunicaes

37

Variveis
?

Uma varivel a unidade bsica de armazenamento. As variveis devem ser declaradas explicitamente. Cada varivel tem um tipo, um identificador, e um mbito. As variveis podem ser inicializadas.
Tipo int myAge; boolean isAMovie; float maxItemCost = 17.98;
38

Identifier

MRSC, Programao em Comunicaes

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Nomes de Variveis
?

Os nomes das variveis devem comear por uma letra do alfabeto, um underscore, ou um $. Os outros caracteres podem incluir digitos. Deve-se utilizar nomes elucidativos para as variveis; por exemplo, customerFirstName, ageNextBirthday.

?
a itemCost item$Cost item_Cost _itemCost itemCost2 item#Cost item*Cost 2itemCost
MRSC, Programao em Comunicaes

item-Cost abstract

39

Palavras Reservadas
boolean byte char double float int long short void false null true abstract final native private protected public static synchronized transient volatile break case catch continue default do else finally for if return switch throw try while class extends implements interface throws import package instanceof new super this

MRSC, Programao em Comunicaes

40

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Tipos de Variveis
?

Oito tipos de dados primitivos:


Seis tipos numricos Tipo char, para caracteres Tipo Booleano, para valores verdadeiro ou falso

Tipos definidos pelo utilizador


Classes Interfaces Arrays

MRSC, Programao em Comunicaes

41

Tipos de Dados Primitivos


Integer Floating Point float double Character True False boolean

byte short int long 1,2,3,42 07 0xff

char

3.0 .3337 4.022E23

'a' '\141' '\u0061' '\n'

true false

MRSC, Programao em Comunicaes

42

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Declarao de Variveis
?

A forma bsica de declarao de uma varivel:


tipo identifier [ = valor]
public static void main(String[] args) { int itemsRented; float itemCost; int i, j, k; double interestRate; }

As variveis podem ser inicializadas quando declaradas.


MRSC, Programao em Comunicaes

43

Declarao de Variveis
?

As variveis locais esto contidas apenas num mtodo ou bloco de cdigo. As variveis locais devem ser inicializadas antes de ser usadas.
class Rental { private int instVar; // instance varivel

public void addItem() { float itemCost = 3.50; // local varivel int numOfDays = 3; // local varivel } }

MRSC, Programao em Comunicaes

44

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Literais Nmericos
0 1 42 -23795 02 077 0123 Literais Inteiros 0x0 0x2a 0X1FF 365L 077L 0x1000L 1.0 4.2 .47 1.22e19 4.61E-9 6.2f 6.21F (decimal) (octal) (hex) (long)

Literais Floating-point Floating-

MRSC, Programao em Comunicaes

45

Literais no-Nmericos
Literais Booleanos true Literais Caracter Literais String false '\t' '\077'

'a' '\n' '\u006F'

"Hello, world\n"

MRSC, Programao em Comunicaes

46

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Exerccio: Declarao de variveis


?

Encontrar os erros no cdigo abaixo e corrigi-los.


1 2 3 4 5 6 7 8 9 10 11 byte sizeof = 200; short mom = 43; short hello mom; int big = sizeof * sizeof * sizeof; long bigger = big + big + big // ouch double old = 78.0; double new = 0.1; boolean consequence = true; boolean max = big > bigger; char maine = "New England state"; char ming = 'd';

MRSC, Programao em Comunicaes

47

Operadores
Cinco tipos de operadores:
?

Atribuio Aritmticos Manipulao de bits Relacionais Booleanos

MRSC, Programao em Comunicaes

48

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Operador de Atribuio
?

A expresso da direita atribuda varivel da esquerda:


int var1 = 0, var2 = 0; var1 = 50; // var1 now equals 50 var2 = var1 + 10; // var2 now equals 60

A expresso da direita sempre avaliada antes da atribuio. As atribuies podem ser agrupadas:
var1 = var2 = var3 = 50;

MRSC, Programao em Comunicaes

49

Operadores Aritmticos
?

Realizam operaes aritmticas bsicas Operam sobre variveis e literais nmericos


int a = b = c = d = e = a, b, c, d; 2 + 2; // addition a * 3; // multiplication b - 2; // subtraction b / 2; // division b % 2; // returns the remainder of division

MRSC, Programao em Comunicaes

50

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Operadores Aritmticos...
?

A maioria das operaes resultam num int ou long:


byte b1 = 1, b2 = 2, b3; b3 = b1 + b2; // error: result is an int // b3 is byte

Valores byte, char, e short so promovidos a int antes da operao. Se algum argumento for long, o outro promovido a long, e o resultado long.

MRSC, Programao em Comunicaes

51

Converses e Casts
?

O Java converte automaticamente valores de um tipo numrico para outro tipo maior.

byte

short

int

long

O Java no faz automaticamente o downcast.


byte short int long

MRSC, Programao em Comunicaes

52

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Incrementar e Decrementar
?

O operador ++ incrementa 1 unidade:


int var1 = 3; var1++; // var1 now equals 4

O operador ++ pode ser usado de duas maneiras:


int var1 = 3, var2 = 0; var2 = ++var1; // Prefix: // var2 = var1++; // Postfix: // Increment var1 then assign to Assign to var2 then increment first, var2. first, var1.

O operador -- decrementa 1 unidade.


MRSC, Programao em Comunicaes

53

Comparaes
?

Operadores relacionais e de igualdade:


> >= < <= == != greater than greater than or equal to less than less than or equal to equal to not equal to

int var1 = 7, var2 = 13; boolean res = true; res = (var1 == var2); res = (var2 > var1);

// res now equals false // res now equals true

MRSC, Programao em Comunicaes

54

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Operadores Lgicos
?

Os resultados de expresses Booleanas podem ser combinados usando operadores lgicos:


&& || ^ ! & | e (with / without short-circuit evaluation) or (with / without short-circuit evaluation) exclusive or not

int var0 = 0, var1 = 1, var2 = 2; boolean res = true; res = (var2 > var1) & (var0 == 3); res = !res;

// now false // now true

MRSC, Programao em Comunicaes

55

Atribuio Composta
?

O operador de atribuio pode ser combinado com qualquer operador binrio convencional:
double total=0, num = 1; double percentage = .50; total = total + num; // total is now total += num; total -= num; total *= percentage;

// total is now 2 // total is now 1 // total is now .5

MRSC, Programao em Comunicaes

56

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Precedncia de Operadores
Order 1 2 3 4 5 6 7 8 9 10 11 12 13 Operadores ++ -- + - ~ !(tipo) * / % + - + << >> >>> < > <= >= instanceof == != & ^ | && || ?: = op= Comments Unary operadores Multiply, divide, remainder Add, subtract, add string Shift (>>> is zero-fill shift) Relational, tipo compare Equality Bit/logical e Bit/logical exclusive OR Bit/logical inclusive OR Logical e Logical OR Conditional operador Assignment operadores Assoc. R L L L L L L L L L L R R

MRSC, Programao em Comunicaes

57

Precedncias
?

A precedncia de um operador determina a ordem pela qual os operadores so executados:


int var1 = 0; var1 = 2 + 3 * 4; // var1 now equals 14

Operadores com a mesma precedncia so executados da esquerda para a direita (ver nota):
int var1 = 0; var1 = 12 - 6 + 3; // var1 now equals 9

Os parentesis permitem alterar a ordem definida.


MRSC, Programao em Comunicaes

58

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Concatenao de String s
?

O operador + cria e concatena strings:

String String String name =

name = "Jane "; lastName = "Hathaway"; fullName; name + lastName; // name is now //"Jane Hathaway" // OR name += lastName; // same result fullName = name;

MRSC, Programao em Comunicaes

59

Resumo
?

O Java tem oito tipos de dados primitivos. Uma varivel deve ser declarada antes de ser usada. O Java dispe de um bom conjunto de operadores. Casting explcitos podem ser necessrios se utilizar tipos de dados menores do que int. Os operadores + e += podem ser usados para criar e concatenar strings.

MRSC, Programao em Comunicaes

60

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Exerccio Prtico
?

Declarar e inicializar variveis Utilizar vrios operadores para calcular novos valores Mostrar os resultados no cran

MRSC, Programao em Comunicaes

61

Instrues de Controlo de Fluxo

MRSC, Programao em Comunicaes

62

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Objectivos
Ser capaz de:
?

Utilizar construes para tomar decises Realizar ciclos de operaes

MRSC, Programao em Comunicaes

63

Tpicos
?

O cdigo por defeito executa sequencialmente. Cdigo mais complexo exige uma execuo condicional. Existem instrues que necessitam de ser executadas repetidamente. O Java dispe de mecanismos de controlo standard.

MRSC, Programao em Comunicaes

64

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Tipos Bsicos de Controlo


?

Controlo de fluxo pode ser categorizado em quatro tipos:


Sequencial

Seleco

Iterao

Transferncia

MRSC, Programao em Comunicaes

65

Controlo de Fluxo em Java


?

Agrupar instrues utilizando chavetas para formar uma instruo composta, i.e. um bloco. Cada bloco executado como uma nica instruo dentro da estrutura de controlo de fluxo.
{ boolean finished = true; System.out.println("i = " + i); i++; }

MRSC, Programao em Comunicaes

66

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

if ... else
Forma geral: if ( boolean_expr ) statement1; [else] statement2; if (i % 2 == 0) System.out.println("Even"); else System.out.println("Odd"); if (i % 2 == 0) { System.out.println(i); System.out.println(" is even"); }
MRSC, Programao em Comunicaes

Exemplos:

67

if...if...if...else if...else
if (speed >= 25) if (speed > 65) System.out.println("Speed over 65"); else System.out.println("Speed over 25"); else System.out.println("Speed under 25"); if (speed > 65) System.out.println("Speed over 65"); else if (speed >= 25) System.out.println("Speed over 25"); else System.out.println("Speed under 25");
68

MRSC, Programao em Comunicaes

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Operador Condicional ( ? : )
?

( boolean_expr ? expr1 : expr2)


boolean_expr ? expr1 : expr2

uma alternativa til ao if else: Se boolean_expr=true, o resultado expr1, seno o resultado expr2:
int val1 = 120, val2 = 0; int highest; highest = (val1 > val2) ? 100 : 200; System.out.println("Highest value is " + highest);

MRSC, Programao em Comunicaes

69

Exerccio: Descubra os Erros!


int x = 3, y = 5; if (x >= 0) if (y < x) System.out.println("y is less than x"); else System.out.println("x is negative"); int x = 7; if (x = 0) System.out.println("x is zero"); int x = 15, y = 24; if ( x % 2 == 0 && y % 2 == 0 ); System.out.println("x and y are even");

MRSC, Programao em Comunicaes

70

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

switch...case
?

til para seleccionar um entre vrios valores inteiros alternativos

switch ( integer_expr ) { case constant_expr1: statement1; break; case constant_expr2: statement2; break; [default: statement3; break;] }

MRSC, Programao em Comunicaes

71

switch...case
?

As etiquetas de case devem ser constantes. Utilizar break para saltar fora do switch. Dar sempre uma alternativa default.

switch (choice) { case 37: System.out.println("Coffee?"); break; case 45: System.out.println("Tea?"); break; default: System.out.println("???"); break; }
MRSC, Programao em Comunicaes

72

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Ciclos
?

Em Java existem trs tipos de ciclos:


while do while for

Todos os ciclos tm quatro partes:


Inicializao Iterao Corpo Terminao

MRSC, Programao em Comunicaes

73

while...
?

O while o mais simples de todos os ciclos: Exemplo:


while ( boolean_expr ) statement;

int i = 0; while (i < 10) { System.out.println("i = " + i); i++; }

MRSC, Programao em Comunicaes

74

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

dowhile
?

Os ciclos do while tm o teste no fim do ciclo: Exemplo:


do statement; while ( termination );

int i = 0; do { System.out.println("i = " + i); i++; } while (i < 10);

MRSC, Programao em Comunicaes

75

for...
?

Os ciclos for so os mais comuns:


for ( initialization; termination; iteration ) statement;

Exemplo:
for (i = 0; i < 10; i++) System.out.println(i);

Qual o ciclo while equivalente?

MRSC, Programao em Comunicaes

76

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

for...
?

Podem ser declaradas variveis na parte de inicializao do ciclo for:


for (int i = 0; i < 10; i++) System.out.println("i = " + i);

As partes de inicializao e iterao podem consistir de uma lista de expresses separadas por vrgulas:
for (int i = 0, j = 10; i < j; i++, j--) { System.out.println("i = " + i); System.out.println("j = " + j); }

MRSC, Programao em Comunicaes

77

Exerccio: Descubra os Erros!


int x = 10; while (x > 0); System.out.println(x--); System.out.println("We have lift off!"); int x = 10; while (x > 0) System.out.println("x is " + x); x--; int sum = 0; for (; i < 10; sum += i++); System.out.println("Sum is " + sum);

MRSC, Programao em Comunicaes

78

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

break
?

Interrompe um ciclo ou uma instruo switch: Transfere o controlo para a primeira instruo depois do corpo do ciclo ou instruo switch Pode simplificar o cdigo
while (age <= 65) { balance = (balance+payment) * (1 + interest)); if (balance >= 250000) break; age++; }

MRSC, Programao em Comunicaes

79

continue
?

Apenas pode ser usado em ciclos Abandona a iterao em curso e salta para a prxima iterao do ciclo
for (int year = 2000; year < 2099; year++) { if ((year % 100 == 0) && (year % 400 != 0)) continue; if (year % 4 == 0) System.out.println(year); }

MRSC, Programao em Comunicaes

80

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

labeled break, continue


?

Pode ser usado para saltar fora de ciclos encaixados, ou continuar um ciclo exterior ao ciclo corrente
outer_loop: for (int i = 0; i < 10; i++) { for (int j = 0; j < 5; j++) { System.out.println(i, j); if (i + j > 7) break outer_loop; } }
MRSC, Programao em Comunicaes

81

Resumo
?

A intruo if...else a forma principal de implementar decises. Java tambm dispe de instruo switch. Java oferece trs instrues de ciclos:
while do while for

A utilizao de break e continue deve ser feita criteriosamente.

MRSC, Programao em Comunicaes

82

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

MRSC - Programao em Comunicaes

Exerccios Prticos
?

Realizar testes utilizando instrues if else Utilizar o operador condicional ternrio ?: Utilizar ciclos while e for paa realizar operaes iterativas Utilizar break para abandonar um ciclo Utilizar os operadores &&, ||, e ! Expresses booleanas

MRSC, Programao em Comunicaes

83

Fim

MRSC, Programao em Comunicaes

84

Faculdade de Engenharia da Universidade do Porto, 2001 Ademar Aguiar

Você também pode gostar