Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

28
Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP

Transcript of Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Page 1: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Aula 2Aula 2

Igor Ebrahim (ies)

if669 - Introdução à Programação

Monitoria de IP

Page 2: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Agenda

• Estruturas de Repetição• Recursão• Exceção• Encapsulamento

Page 3: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Estruturas de Repetição

• Estruturas de repetição permitem executar um trecho de código várias vezes;

• Loops;• Assim como as estruturas condicionais, estruturas

de repetição também são controladas por expressões booleanas;

• Três tipos de estruturas de repetição:– while;– do... while;– for;

• Cada situação pede um tipo de loop diferente!

Page 4: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Instrução while

• Sintaxe: while ( condicao ) { instrucao;}

• Se condicao for true então instrucao é executada;

• Após a execução ter sido realizada, se condicao continuar true, instrucao é realizada novamente;

• A execução se repete indefinidamente até a condicao tornar-se false.

Page 5: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Lógica do while

instrução

true false

avaliacondição

Page 6: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Instrução while

• Exemplo:MiniJavaSystem console;console = new MiniJavaSystem();int count = 1;while (count <= 5){ console.println (count); count = count + 1;}

• Caso a condição já fosse false na primeira avaliada, então a instrução não seria executada, e o bloco seria pulado;

• Valor Sentinela;• Robustez;

Page 7: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Loop Infinito

• Caso a condição do loop nunca seja false, então aquele laço será executado “para sempre”;

• Erro de lógica muito comum;• Exemplo:

MiniJavaSystem console;console = new MiniJavaSystem(); int count = 1;while (count <= 25){ console.println (count); count = count - 1;}

Page 8: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Loop Aninhado

• Um loop pode conter uma outra estrutura de repetição dentro do seu corpo;

• Para cada iteração externa, deve-se completar a interna.

MiniJavaSystem console;console = new MiniJavaSystem();count1 = 1;while (count1 <= 10){ count2 = 1; while (count2 <= 20){ console.println ("Aqui"); count2 = count2 + 1; } count1 = count1 + 1;}

Page 9: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Instrução do...while

• Sintaxe: do { instrucao;} while ( condicao )

• A instrucao é executada uma primeira vez;• A condicao é avaliada e caso seja true, a instrucao é executada novamente;

• A instrucao se repete indefinidamente até a condicao tornar-se false.

Page 10: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Lógica do do...while

true

avaliacondição

instrução

false

Page 11: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Instrução do...while

• Exemplo:MiniJavaSystem console;console = new MiniJavaSystem();int count = 0;do { count = count + 1; console.println (count);} while (count < 5);

• O corpo de um do...while executa pelo menos uma vez;

Page 12: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Instrução for

• Sintaxe:

for ( inicializacao ; condicao ; incremento ) instrucao;

A inicializacaoé executada uma vez antes do loop começar

A instrucao éexecutada até a

condicao tornar-se false

O incremento é executado ao final de cada iteração

Page 13: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Lógica do for

intrução

true

avaliacondição

false

incremento

inicialização

Page 14: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Instrução for

• Exemplo:MiniJavaSystem console;console = new MiniJavaSystem()for (int count=1; count <= 5; count++) System.out.println (count);

• O campo de inicialização pode ser usado para declarar uma variável;

• O campo de incremento pode ser calculado da forma que o programador quiser;

• Usa-se o for quando sabemos o número de iterações ou quando ele é facilmente calculado.

Page 15: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Recursão

• Toda definição recursiva deve ter uma parte não recursiva;

• Caso ela não tivesse, a recursão não teria fim;• A parte não recursiva também é chamada de caso

base;• Exemplo:

– !n É o fatorial de n, ou seja, o produto de todos os inteiros entre 1 e n;

– O fatorial pode ser definido de forma recursiva:1! = 1

n! = n * (n-1)!

– O caso base desta recursão é o 1!;

Page 16: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Recursão

5!

5 * 4!

4 * 3!

3 * 2!

2 * 1!

1

2

6

24

120

Page 17: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Recursão

• Um método que chama a ele mesmo em seu corpo é dito recursivo;

• Métodos recursivos tem que ser implementados para trabalhar com o caso base e os casos recursivos;// Este método retorna a soma de 1 a n

public int soma (int num){

int resultado;

if (num == 1)

resultado = 1;

else

resultado = num + soma (n-1);

return resultado;

}

Page 18: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Exceção

• Objeto que descreve um erro;• São lançadas (thrown) por um programa e podem

ser capturadas (caught) e tratadas (handled) por uma outra parte do programa;

• Java tem predefinida uma série de exceções que podem ser lançadas em um programa;

• Um programa Java pode lidar de três maneiras com as exceções:– Ignorando;– Tratando onde ela ocorre;– Tratando em outra parte do programa.

Page 19: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Exceção

• Java possui uma série de exceções predefinidas que podem ser lançadas;

• Um programa Java pode lidar com exceções de três maneiras diferentes:– Ignorando;– Tratando onde a exceção ocorre;– Tratando em outra parte do programa;

• Caso seja ignorada, o programa terminará sua execução de uma forma anormal, produzindo uma mensagem apropriada Stack Trace:– Linha onde ocorreu a exceção;– O caminho pelo qual o método que levantou a exceção

foi chamado.

Page 20: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Exceção

public class Zero {

public static void main (String[] args){

MiniJavaSystem console;

console = new MiniJavaSystem();

int numerator = 10;

int denominator = 0;

console.println (numerator / denominator);

console.println ("This text will not be printed.");

}

}

Page 21: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

try...catch

• Para tratar uma exceção, a linha que a lança é colocada dentro de um bloco try;

• Um bloco try é seguido por uma ou mais cláusulas catch.

• Quando uma exceção ocorre, a execução do programa pula para o primeiro catch e procura qual é o que possui a mesma exceção;

Page 22: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

finally

• finally é uma cláusula opcional que pode vir depois do catch.

• As instruções dento do bloco finally são executadas sempre;

• Se nenhuma exceção for levantada pelo bloco try, mesmo assim as instruções do bloco finally são executadas;

• Se uma exceção for lançada, o bloco finally é executado após a cláusula catch apropriada;

Page 23: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

throws / throw

• A exceção pode se propagar através do caminho pelo qual o método que o levantou foi chamado;

• Todos os tipos de exceção que podem ser levantados pelo método, devem ser declarados em sua assinatura usando o throws;

• Exceções são lançadas usando o throw ;public double dividir(double d, double f)

throws DividirPorZeroException {

double retorno = 0;

if(f != 0) retorno = d/f;

else throw new DividirPorZeroException();

}

Page 24: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Encapsulamento

• Visões de objetos:– Interna - atributos e métodos da classe que o define;

– Externa - os serviços que um objeto proporciona e como ele interage com o resto do sistema;

• Externamente, um objeto é uma entidade encapsulada;

• Um objeto pode usar os serviços providos por outro – mas não deve saber como estes serviços são implementados;

• Qualquer mudança no estado de algum atributo do objeto usado deve ser feito através de seus métodos – dificultar (tornar impossível) a mudança direta de atributos fora da própria classe;

Page 25: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Encapsulamento

• Pode-se pensar no objeto encapsulamento como sendo uma caixa preta;

Métodos

Atributos

Cliente

Page 26: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Modificadores de Acesso

• Java torna possível o encapsulamento através dos modificadores de acesso;

• Um modificador é uma palavra reservada que especifica uma característica particular de um método ou atributo;

• Java possui três modificadores de acesso: public, protected e private;

Page 27: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Modificadores de Acesso

• Membros que são declarados como:– public podem ser referenciados em qualquer parte;– private só podem ser referenciados dentro da própria

classe;

• Membros que são declarados sem modificadores de acesso têm visibilidade default e podem ser referenciados por qualquer classe do mesmo pacote;

Page 28: Aula 2 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.

Modificadores de Acesso

public private

Variables

Methods Provide servicesto clients

Support othermethods in the

class

Enforceencapsulation

Violateencapsulation