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.
Aula 2Aula 2
Igor Ebrahim (ies)
if669 - Introdução à Programação
Monitoria de IP
Agenda
• Estruturas de Repetição• Recursão• Exceção• Encapsulamento
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!
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.
Lógica do while
instrução
true false
avaliacondição
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;
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;}
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;}
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.
Lógica do do...while
true
avaliacondição
instrução
false
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;
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
Lógica do for
intrução
true
avaliacondição
false
incremento
inicialização
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.
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!;
Recursão
5!
5 * 4!
4 * 3!
3 * 2!
2 * 1!
1
2
6
24
120
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;
}
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.
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.
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.");
}
}
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;
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;
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();
}
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;
Encapsulamento
• Pode-se pensar no objeto encapsulamento como sendo uma caixa preta;
Métodos
Atributos
Cliente
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;
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;
Modificadores de Acesso
public private
Variables
Methods Provide servicesto clients
Support othermethods in the
class
Enforceencapsulation
Violateencapsulation