O documento descreve diferentes tipos de laços (loops) em programação, como while e do-while. Enquanto o while testa a condição antes de executar o corpo do laço, o do-while executa o corpo primeiro e só então testa a condição. Ambos os laços podem ser aninhados e são equivalentes em sua funcionalidade. O documento também menciona o laço for, que é útil quando se tem uma variável de controle que é incrementada em cada iteração.
O documento discute como implementar um método para truncar valores em Java de modo a exibir apenas duas casas decimais. Inicialmente, o método usa type casting para converter o valor para inteiro, multiplicado por 100, armazenar e depois dividir por 100 para retornar um double. Posteriormente, é discutido como usar o operador módulo % para truncar de forma mais elegante, evitando problemas de conversão de tipo. O documento também aborda a declaração de atributos como valores globais para todo o programa.
O documento discute como copiar um arranjo para outro arranjo em Java. A primeira tentativa de fazer a2 = a1 não funciona corretamente, pois ambos os arranjos acabam referenciando o mesmo bloco de memória. Para resolver isso, é necessário copiar cada elemento do arranjo a1 para o arranjo a2 usando um loop e os índices dos arranjos.
O documento descreve uma aula sobre como criar um primeiro programa em Java para calcular a área total de uma casa. Ele explica como adicionar comentários informativos ao usuário, realizar cálculos matemáticos básicos e exibir os resultados usando comandos println. O documento também discute erros comuns em expressões aritméticas e a importância de agrupar operações dentro de parênteses.
O documento discute instruções de controle de fluxo em Java, como if/else, switch/case, loops (while, do-while e for) e manipulação de exceções com try/catch/finally. Inclui detalhes sobre como usar cada instrução e exemplos de código.
O documento discute condicionais aninhados em Java, mostrando exemplos de como testar múltiplas condições em sequência usando if/else dentro de outros if/else. Primeiro, mostra como testar dois parâmetros em uma função usando if aninhados. Em seguida, explica que qualquer tipo de comando, incluindo outros condicionais, podem ser usados dentro de um if/else. Por fim, detalha quando cada comando em um exemplo complexo de if aninhados será executado dependendo dos valores de verdade das condições.
O documento discute classes e objetos em Java. Ele explica como construtores podem ser usados para inicializar atributos de objetos e simplificar o uso de métodos. Também discute a diferença entre atributos e métodos de classe versus objetos e como eles são acessados e armazenados na memória.
O documento discute herança em classes. Foi quebrada a classe AreaCasa em subclasses Casa, CasaQuad e CasaRet. A classe Residência foi modificada para receber uma instância de Casa (superclasse) em vez de AreaCasa, permitindo o uso de CasaQuad e CasaRet. Isso é demonstrado em um exemplo de código.
Apresentação da semana 11 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.
O documento discute como implementar um método para truncar valores em Java de modo a exibir apenas duas casas decimais. Inicialmente, o método usa type casting para converter o valor para inteiro, multiplicado por 100, armazenar e depois dividir por 100 para retornar um double. Posteriormente, é discutido como usar o operador módulo % para truncar de forma mais elegante, evitando problemas de conversão de tipo. O documento também aborda a declaração de atributos como valores globais para todo o programa.
O documento discute como copiar um arranjo para outro arranjo em Java. A primeira tentativa de fazer a2 = a1 não funciona corretamente, pois ambos os arranjos acabam referenciando o mesmo bloco de memória. Para resolver isso, é necessário copiar cada elemento do arranjo a1 para o arranjo a2 usando um loop e os índices dos arranjos.
O documento descreve uma aula sobre como criar um primeiro programa em Java para calcular a área total de uma casa. Ele explica como adicionar comentários informativos ao usuário, realizar cálculos matemáticos básicos e exibir os resultados usando comandos println. O documento também discute erros comuns em expressões aritméticas e a importância de agrupar operações dentro de parênteses.
O documento discute instruções de controle de fluxo em Java, como if/else, switch/case, loops (while, do-while e for) e manipulação de exceções com try/catch/finally. Inclui detalhes sobre como usar cada instrução e exemplos de código.
O documento discute condicionais aninhados em Java, mostrando exemplos de como testar múltiplas condições em sequência usando if/else dentro de outros if/else. Primeiro, mostra como testar dois parâmetros em uma função usando if aninhados. Em seguida, explica que qualquer tipo de comando, incluindo outros condicionais, podem ser usados dentro de um if/else. Por fim, detalha quando cada comando em um exemplo complexo de if aninhados será executado dependendo dos valores de verdade das condições.
O documento discute classes e objetos em Java. Ele explica como construtores podem ser usados para inicializar atributos de objetos e simplificar o uso de métodos. Também discute a diferença entre atributos e métodos de classe versus objetos e como eles são acessados e armazenados na memória.
O documento discute herança em classes. Foi quebrada a classe AreaCasa em subclasses Casa, CasaQuad e CasaRet. A classe Residência foi modificada para receber uma instância de Casa (superclasse) em vez de AreaCasa, permitindo o uso de CasaQuad e CasaRet. Isso é demonstrado em um exemplo de código.
Apresentação da semana 11 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
O documento discute estimativas de erro em modelos de aprendizagem de máquina. Explica que o erro esperado no conjunto de teste tende a ser maior que no conjunto de treino, devido ao ajuste do modelo aos dados de treino. Também aborda medidas como viés e variância para avaliar estimadores, e como o erro quadrático médio equilibra ambos para medir o desvio total esperado entre a estimativa e o valor real.
O documento discute a avaliação de desempenho de classificadores treinados. Explica que é necessário testar o modelo em um conjunto de dados independente para medir seu desempenho em dados novos. Também apresenta métricas como taxa de erro e curva de aprendizagem para avaliar quantitativamente o modelo.
O documento descreve o algoritmo de máquina de vetor de suporte (SVM), explicando como ele busca encontrar o hiperplano separador de margem máxima entre os dados de treinamento de duas classes. O SVM define fronteiras lineares ótimas para dados linearmente separáveis, maximizando a distância entre o hiperplano separador e os exemplos de treinamento mais próximos, chamados de vetores de suporte. O problema é formulado como um problema de otimização para encontrar os parâmetros ω e b que maximizam essa distância de separação.
O documento descreve as redes neurais e o perceptron. Ele explica que as redes neurais se inspiram nos neurônios biológicos e como o perceptron funciona como a unidade básica de uma rede neural, recebendo sinais de entrada e aplicando uma função de ativação. Também discute possíveis funções de ativação como a função degrau e sigmóide e como os pesos das conexões, incluindo o viés, determinam se um perceptron é ativado ou não.
O documento discute árvores de decisão e florestas aleatórias. Ele explica que árvores de decisão são uma das formas mais simples de aprendizado de máquina, representando uma sequência de regras "se...então" para classificar ou prever saídas com base em atributos de entrada. O documento também descreve características como nós internos representando testes de atributos e folhas especificando saídas, e discute expressividade e variações de árvores de decisão.
O documento discute aprendizado supervisionado bayesiano. Ele introduz o aprendizado bayesiano como um método probabilístico e descreve que o aprendizado supervisionado tem como objetivo classificação ou regressão para mapear entradas em saídas com base em exemplos.
O documento descreve a regra de Bayes e redes Bayesianas. Ele fornece um exemplo detalhado sobre como calcular a probabilidade de uma mulher ter câncer de mama dado um resultado positivo em um mamograma usando a regra de Bayes. Ele também define brevemente o que são redes Bayesianas, que representam dependências probabilísticas entre variáveis aleatórias através de um grafo direcionado acíclico.
O documento discute o tratamento de incerteza em inteligência artificial. Aborda como a probabilidade e a teoria da decisão podem ser usadas para tomar decisões racionais quando os resultados são incertos, levando em conta a probabilidade de cada resultado e sua utilidade segundo as preferências de quem decide.
O documento discute representação do conhecimento através de ontologias, incluindo taxonomias e herança. Ontologias organizam o conhecimento em categorias hierárquicas e permitem raciocinar sobre objetos classificados. Categorias podem ser representadas como predicados ou objetos. A herança permite que propriedades sejam herdadas por subcategorias.
O documento descreve o funcionamento do algoritmo de backward chaining em programação lógica, começando com uma explicação geral do processo de raciocínio de trás para frente a partir de um objetivo. Em seguida, apresenta formalmente o algoritmo de backward chaining, explicando cada parte do processo de forma recursiva para encontrar substituições que satisfaçam a query dada uma base de conhecimento. Por fim, exemplifica o algoritmo em uma base de conhecimento sobre venda de armas.
O documento descreve os passos para executar resolução e encadeamento para frente em lógica de primeira ordem. Primeiro, as expressões lógicas devem ser convertidas para forma clausal sem quantificadores. Em seguida, as variáveis devem ser substituídas durante a resolução usando o processo de unificação. Por fim, a resolução é executada para derivar novas conclusões.
O documento descreve as bases de dados em lógica de primeira ordem, como interagir com elas fazendo buscas (queries) por meio de sentenças lógicas em LPO, e como qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente. As bases de dados contêm axiomas com informações básicas e teoremas derivados dos axiomas, e o documento discute técnicas como forward chaining, backward chaining e resolução para realizar inferência nas bases de dados.
O documento descreve uma aula sobre lógica de primeira ordem. Apresenta os elementos básicos da lógica de primeira ordem, incluindo termos, predicados e a gramática formal para construir sentenças. Também explica como modelos e interpretações funcionam na lógica de primeira ordem, diferentemente da lógica proposicional.
O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
O documento descreve um algoritmo de busca retroativa para resolver problemas de satisfação de restrições, utilizando forward checking e heurísticas como valores restantes mínimos, grau e valor menos restritivo. O algoritmo é demonstrado passo a passo em um exemplo de coloração de grafos, definindo variáveis, valores e propagando escolhas.
O documento descreve problemas de satisfação de restrições (CSPs), definidos por um conjunto de variáveis, domínios de valores para cada variável, e restrições sobre combinações de valores de variáveis. Apresenta exemplos de agendamento de aulas e coloração de mapas como CSPs, definindo suas variáveis, domínios e restrições.
O documento discute algoritmos genéticos e representação de cromossomos. Ele explica que os cromossomos podem ser representados de várias formas, incluindo binária, valores inteiros e reais. A representação binária é a mais simples, onde o cromossomo consiste de uma sequência de bits. A mutação e o cruzamento ocorrem durante o algoritmo genético para gerar novas soluções.
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Betel, Ordenança para exercer a fé, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Central Gospel, Os Mortos Em Cristo, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
O Que é Um Ménage à Trois?
A sociedade contemporânea está passando por grandes mudanças comportamentais no âmbito da sexualidade humana, tendo inversão de valores indescritíveis, que assusta as famílias tradicionais instituídas na Palavra de Deus.
Atividade letra da música - Espalhe Amor, Anavitória.Mary Alvarenga
A música 'Espalhe Amor', interpretada pela cantora Anavitória é uma celebração do amor e de sua capacidade de transformar e conectar as pessoas. A letra sugere uma reflexão sobre como o amor, quando verdadeiramente compartilhado, pode ultrapassar barreiras alcançando outros corações e provocando mudanças positivas.
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...Eró Cunha
XIV Concurso de Desenhos Afro/24
TEMA: Racismo Ambiental e Direitos Humanos
PARTICIPANTES/PÚBLICO: Estudantes regularmente matriculados em escolas públicas estaduais, municipais, IEMA e IFMA (Ensino Fundamental, Médio e EJA).
CATEGORIAS: O Concurso de Desenhos Afro acontecerá em 4 categorias:
- CATEGORIA I: Ensino Fundamental I (4º e 5º ano)
- CATEGORIA II: Ensino Fundamental II (do 6º ao 9º ano)
- CATEGORIA III: Ensino Médio (1º, 2º e 3º séries)
- CATEGORIA IV: Estudantes com Deficiência (do Ensino Fundamental e Médio)
Realização: Unidade Regional de Educação de Imperatriz/MA (UREI), através da Coordenação da Educação da Igualdade Racial de Imperatriz (CEIRI) e parceiros
OBJETIVO:
- Realizar a 14ª edição do Concurso e Exposição de Desenhos Afro/24, produzidos por estudantes de escolas públicas de Imperatriz e região tocantina. Os trabalhos deverão ser produzidos a partir de estudo, pesquisas e produção, sob orientação da equipe docente das escolas. As obras devem retratar de forma crítica, criativa e positivada a população negra e os povos originários.
- Intensificar o trabalho com as Leis 10.639/2003 e 11.645/2008, buscando, através das artes visuais, a concretização das práticas pedagógicas antirracistas.
- Instigar o reconhecimento da história, ciência, tecnologia, personalidades e cultura, ressaltando a presença e contribuição da população negra e indígena na reafirmação dos Direitos Humanos, conservação e preservação do Meio Ambiente.
Imperatriz/MA, 15 de fevereiro de 2024.
Produtora Executiva e Coordenadora Geral: Eronilde dos Santos Cunha (Eró Cunha)
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
(ACH2001) Introdução à Programação - Aula 09
1. Aula 09 – La¸cos (cont.)
Norton Trevisan Roman
19 de mar¸co de 2020
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 1 / 47
2. Do ... While
Existe ainda um outro tipo de la¸co: do...while
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 2 / 47
3. Do ... While
Existe ainda um outro tipo de la¸co: do...while
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
public static void main(String[] args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´AreatValor");
do {
System.out.println(area+"t"+
valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 2 / 47
4. Do ... While
O while faz o teste antes de
rodar o la¸co pela primeira vez
O do...while faz o teste depois
de rodar o la¸co pela primeira
vez
Rodando novamente apenas se o
teste for positivo
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 3 / 47
5. Do ... While
E quando usar um ou o outro?
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 4 / 47
6. Do ... While
E quando usar um ou o outro?
Depende de quando o teste
deve ser feito:
Se antes ou depois do corpo do la¸co
rodar uma vez
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 4 / 47
7. Do ... While
E qual dentre o while e do...while ´e melhor?
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
8. Do ... While
E qual dentre o while e do...while ´e melhor?
S˜ao totalmente equivalentes
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
9. Do ... While
E qual dentre o while e do...while ´e melhor?
S˜ao totalmente equivalentes
Todo while pode ser escrito
como do... while
while (condi¸c~ao) {
comando;
}
if (condi¸c~ao) {
do {
comando;
} while (condi¸c~ao);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
10. Do ... While
E qual dentre o while e do...while ´e melhor?
E vice versa:
do {
comando;
} while (condi¸c~ao);
condi¸c~ao = true;
while (condi¸c~ao) {
comando;
recalcula_condi¸c~ao;
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 6 / 47
11. Do ... While
O que ditar´a qual deles ser´a
usado ´e a conveniˆencia para o
programador
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 7 / 47
12. Do ... While
O que ditar´a qual deles ser´a
usado ´e a conveniˆencia para o
programador
Ser´a escolhido, naturalmente,
aquele que exigir a escrita de
menos c´odigo
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 7 / 47
13. Do ... While
Em nosso c´odigo, esses trechos s˜ao equivalentes:
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
while (area <= 200) {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
if (area <= 200) {
do {
System.out.println(area+
"t"+
valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 8 / 47
14. Do ... While
Nesse caso, contudo, o if sempre ser´a verdadeiro
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
while (area <= 200) {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
if (area <= 200) {
do {
System.out.println(area+
"t"+
valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 9 / 47
15. Do ... While
Ent˜ao podemos removˆe-lo
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
while (area <= 200) {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
do {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 10 / 47
16. Do ... While
Da mesma forma, esses trechos s˜ao equivalentes:
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"t
t"+valorPiscina(area,
tipo));
tipo = tipo+1;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
if (tipo <= PLASTICO) {
do {
System.out.println(tipo+
"tt"+valorPiscina(area,
tipo));
tipo = tipo + 1;
} while (tipo <= PLASTICO);
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 11 / 47
17. Do ... While
Tamb´em aqui o if era redundante
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"t
t"+valorPiscina(area,
tipo));
tipo = tipo+1;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
do {
System.out.println(tipo+"t
t"+valorPiscina(area,
tipo));
tipo = tipo + 1;
} while (tipo <= PLASTICO);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 12 / 47
18. Do ... While
E, finalmente,
assim como no
while...
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterialt
Valor");
while (area <= 200) {
tipo = ALVENARIA;
while (tipo <= PLASTICO) {
System.out.println(area+"t"+tipo+
"tt"+valorPiscina(area,tipo));
tipo = tipo+1;
}
area = area+50;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 13 / 47
19. Do ... While
Tamb´em o
do...while
pode estar
aninhado
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterialt
Valor");
do {
tipo = ALVENARIA;
do {
System.out.println(area+"t"+tipo+
"tt"+valorPiscina(area,tipo));
tipo = tipo+1;
} while (tipo <= PLASTICO);
area = area+50;
} while (area <= 200);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 14 / 47
20. Em Suma...
while (condi¸c~ao) {
comando;
}
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
21. Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
22. Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
Se ela for verdadeira,
executa o la¸co (corpo do
while)
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
23. Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
Se ela for verdadeira,
executa o la¸co (corpo do
while)
do {
comando;
} while (condi¸c~ao);
Primeiro executa o la¸co
(corpo do do...while)
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
24. Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
Se ela for verdadeira,
executa o la¸co (corpo do
while)
do {
comando;
} while (condi¸c~ao);
Primeiro executa o la¸co
(corpo do do...while)
Ao final do corpo, testa
ent˜ao a condi¸c˜ao
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
25. Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
26. Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
while
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
27. Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
while
do {
comando;
} while (condi¸c~ao);
Se a condi¸c˜ao for
verdadeira, executa o la¸co
novamente
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
28. Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
while
do {
comando;
} while (condi¸c~ao);
Se a condi¸c˜ao for
verdadeira, executa o la¸co
novamente
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
do...while
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
29. Em Suma...
Fonte: Meme de autor desconhecido
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 17 / 47
30. For
Os while vistos
tinham
caracter´ısticas em
comum em suas
vari´aveis de controle:
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 18 / 47
31. For
Os while vistos
tinham
caracter´ısticas em
comum em suas
vari´aveis de controle:
Ambos variavam em
passos constantes (de
1 em 1 ou de 50 em
50)
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 18 / 47
32. For
N˜ao haveria um
modo de deixar esse
c´odigo mais enxuto?
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 19 / 47
33. For
N˜ao haveria um
modo de deixar esse
c´odigo mais enxuto?
Um modo de dizer
“para tipo
come¸cando em 0,
variando de 1 em 1,
at´e 3, fa¸ca...”
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 19 / 47
34. For
Ou “para area
come¸cando em 50,
variando de 50 em
50, at´e 200, fa¸ca...”
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´AreatValor");
while (area <= 200) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
area = area+50;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 20 / 47
35. For
O la¸co for:
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
36. For
O la¸co for:
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Primeiro, h´a a inicializa¸c˜ao das vari´aveis de controle
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
37. For
O la¸co for:
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Primeiro, h´a a inicializa¸c˜ao das vari´aveis de controle
Esse passo ´e executado uma ´unica vez
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
42. For
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Ao final do corpo, ´e executada a atualiza¸c˜ao
Inicia-se o la¸co novamente, voltando ao teste da
condi¸c˜ao
Se a condi¸c˜ao for falsa, o corpo ´e ignorado
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
43. For
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
public static void main(String[]
args) {
double area = 100;
System.out.println("Materialt
Valor");
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
}
}
S˜ao totalmente equivalentes: dependem da
conveniˆencia do programador
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 24 / 47
44. For
´E poss´ıvel declarar
a vari´avel de
controle dentro do
for
Nesse caso, seu
escopo ´e o
corpo do for
public static void main(String[]
args) {
double area = 100;
System.out.println("Materialt
Valor");
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 25 / 47
45. For
Nada impede,
contudo, que seja
declarada antes,
para ser vis´ıvel a
mais algu´em:
public static void main(String[]
args) {
double area = 100;
System.out.println("Materialt
Valor");
int tipo;
for(tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 26 / 47
46. For
Incremento de um em um n˜ao ´e s´o o que o for ´e
capaz de fazer:
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´AreatValor");
while (area <= 200) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 27 / 47
47. For
Qualquer express˜ao
alg´ebrica pode ser
usada
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 28 / 47
48. For
Qualquer express˜ao
alg´ebrica pode ser
usada
At´e mesmo coisas
como
area = 2*area +
Math.pow(area,3)
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 28 / 47
49. For
E n˜ao ´e apenas o
int que pode ser
usado como
vari´avel de controle
Podemos tamb´em
usar outros tipos –
Cuidado com
compara¸c˜oes em
ponto flutuante!!!
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 29 / 47
50. For
Da mesma forma,
na condi¸c˜ao
qualquer express˜ao
l´ogica ou relacional
pode ser usada
Ex:
(area <= 200)||
(area == 300)
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 30 / 47
51. For
Tamb´em nada nos
impede de fazer um
decremento
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 200; area >= 50;
area = area-50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 31 / 47
52. For
E o resultado seria
apenas a invers˜ao
da tabela:
´Area Valor
200.0 300000.0
150.0 225000.0
100.0 150000.0
50.0 75000.0
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 200; area >= 50;
area = area-50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 32 / 47
53. For Aninhado
La¸cos for podem tamb´em ser aninhados
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterial
tValor");
while (area <= 200) {
tipo = ALVENARIA;
while (tipo <= PLASTICO) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
area = area+50;
}
}
public static void main(String[] args) {
System.out.println("´AreatMaterial
tValor");
for(double area = 50; area <= 200;
area = area+50) {
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
}
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 33 / 47
54. For Aninhado
La¸cos for podem tamb´em ser aninhados
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterial
tValor");
while (area <= 200) {
tipo = ALVENARIA;
while (tipo <= PLASTICO) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
area = area+50;
}
}
public static void main(String[] args) {
System.out.println("´AreatMaterial
tValor");
for(double area = 50; area <= 200;
area = area+50) {
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
}
}
}
Podem ficar at´e mais f´aceis de serem entendidos
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 33 / 47
55. For
Embora a condi¸c˜ao
tenha que ser ´unica
int a;
int b;
for(???; a<b; ???) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
56. For
Embora a condi¸c˜ao
tenha que ser ´unica
Aceita m´ultiplas
inicializa¸c˜oes
Separadas por v´ırgula
int a;
int b;
for(a=1, b=4; a<b; ???) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Declaradas fora do for
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
57. For
Embora a condi¸c˜ao
tenha que ser ´unica
Aceita m´ultiplas
inicializa¸c˜oes
Separadas por v´ırgula
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Declaradas fora do for
E m´ultiplas atualiza¸c˜oes
Tamb´em separadas por v´ırgula
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
58. For
Embora a condi¸c˜ao
tenha que ser ´unica
Aceita m´ultiplas
inicializa¸c˜oes
Separadas por v´ırgula
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Declaradas fora do for
E m´ultiplas atualiza¸c˜oes
Tamb´em separadas por v´ırgula
a++? b--?
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
59. Express˜oes Contra´ıdas
S˜ao “atalhos” →
Express˜oes contra´ıdas int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 35 / 47
60. Express˜oes Contra´ıdas
S˜ao “atalhos” →
Express˜oes contra´ıdas
´Uteis para realizar a
opera¸c˜ao e armazenar
o resultado na mesma
vari´avel
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 35 / 47
61. Express˜oes Contra´ıdas
Express˜ao Contra´ıda
x = x + 5 x += 5
x = x - 5 x -= 5
x = x * 5 x *= 5
x = x / 5 x /= 5
x = x % 5 x %= 5
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 36 / 47
62. Express˜oes Contra´ıdas
Express˜ao Contra´ıda
x = x + 5 x += 5
x = x - 5 x -= 5
x = x * 5 x *= 5
x = x / 5 x /= 5
x = x % 5 x %= 5
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
E o ++?
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 36 / 47
63. Express˜oes Contra´ıdas
Tem duas formas: x++
ou ++x
int x = 2;
int y = 2;
x++;
++y;
System.out.println("x = "
+x+", y = "+y);
Sa´ıda:
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
64. Express˜oes Contra´ıdas
Tem duas formas: x++
ou ++x
int x = 2;
int y = 2;
x++;
++y;
System.out.println("x = "
+x+", y = "+y);
Sa´ıda:
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
65. Express˜oes Contra´ıdas
Tem duas formas: x++
ou ++x
Usados isoladamente,
tanto ++x quanto x++
correspondem a
x = x+1
int x = 2;
int y = 2;
x++;
++y;
System.out.println("x = "
+x+", y = "+y);
Sa´ıda:
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
66. Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
67. Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
O que houve?
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
68. Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
O que houve?
x++ ´e um
p´os-incremento
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
69. Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
O que houve?
x++ ´e um
p´os-incremento
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Diz que o compilador deve usar o valor que est´a em
x e s´o ent˜ao increment´a-lo
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
70. Express˜oes Contra´ıdas
++x ´e um
pr´e-incremento
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 39 / 47
71. Express˜oes Contra´ıdas
++x ´e um
pr´e-incremento
Diz que o compilador
deve primeiro
incrementar o valor de
x, e s´o ent˜ao us´a-lo
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 39 / 47
72. Express˜oes Contra´ıdas
De forma semelhante
ao ++, o --
decrementa, em vez
de incrementar
Tamb´em em suas duas
formas: x-- e --x
int x = 2;
int y = 2;
System.out.println("x = "+
x-- +", y = "+ --y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 40 / 47
73. Express˜oes Contra´ıdas
De forma semelhante
ao ++, o --
decrementa, em vez
de incrementar
Tamb´em em suas duas
formas: x-- e --x
int x = 2;
int y = 2;
System.out.println("x = "+
x-- +", y = "+ --y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 1
x = 1, y = 1
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 40 / 47
74. Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
75. Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 3, y = 2
x = 4, z = 4
y = x++ far´a y conter 2, se x contiver 2
antes do ++
z = ++x far´a z conter 4,
se x contiver 3 antes do ++
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
76. Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 3, y = 2
x = 4, z = 4
y = x++ far´a y conter 2, se x contiver 2
antes do ++
z = ++x far´a z conter 4,
se x contiver 3 antes do ++
C´odigo
int x = 1;
int y = x++ + 4;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x + 4;
System.out.println("x = "+ x +", z = "+ z);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
77. Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 3, y = 2
x = 4, z = 4
y = x++ far´a y conter 2, se x contiver 2
antes do ++
z = ++x far´a z conter 4,
se x contiver 3 antes do ++
C´odigo
int x = 1;
int y = x++ + 4;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x + 4;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 2, y = 5
x = 3, z = 7
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
78. La¸cos
Considere o c´odigo ao
lado:
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
79. La¸cos
Considere o c´odigo ao
lado:
O que ser´a impresso?
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
80. La¸cos
Considere o c´odigo ao
lado:
O que ser´a impresso?
1 2 3 4
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
81. La¸cos
Considere o c´odigo ao
lado:
O que ser´a impresso?
1 2 3 4
A inicializa¸c˜ao em um
la¸co for ´e opcional
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
82. La¸cos
Considere agora esse
c´odigo: public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
83. La¸cos
Considere agora esse
c´odigo:
O que ser´a impresso?
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
84. La¸cos
Considere agora esse
c´odigo:
O que ser´a impresso?
1 1 1 1 1 1 1 1 1...
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
85. La¸cos
Considere agora esse
c´odigo:
O que ser´a impresso?
1 1 1 1 1 1 1 1 1...
La¸co infinito: a
condi¸c˜ao de parada
nunca ´e satisfeita
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
86. La¸cos
Tamb´em a atualiza¸c˜ao
da vari´avel de controle
´e opcional
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 44 / 47
87. La¸cos
E esse c´odigo?
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
88. La¸cos
E esse c´odigo?
1 2 3 4 5 6 7 8...
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
89. La¸cos
E esse c´odigo?
1 2 3 4 5 6 7 8...
De novo! Ningu´em
disse ao la¸co o que
testar para parar
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
90. La¸cos
E esse c´odigo?
1 2 3 4 5 6 7 8...
De novo! Ningu´em
disse ao la¸co o que
testar para parar
A condi¸c˜ao de parada
em um la¸co for
tamb´em ´e opcional
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
91. La¸cos
Em Suma:
Inicializa¸c˜ao, condi¸c˜ao e atualiza¸c˜ao s˜ao opcionais
A condi¸c˜ao aceita qualquer express˜ao que resulte em
verdadeiro ou falso (express˜oes l´ogicas e relacionais)
Inicializa¸c˜ao e atualiza¸c˜ao s˜ao apenas c´odigos
rodados, respectivamente, antes da primeira
itera¸c˜ao e ao fim de cada itera¸c˜ao do la¸co
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 46 / 47