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 descreve a criação de métodos para calcular áreas de forma separada. São criados os métodos "areaCasa()" para calcular a área da casa e "areaPiscina()" para calcular a área da piscina, dividindo assim o programa em partes distintas e evitando confusão. O documento também explica o significado de void e como criar métodos para organizar melhor o código.
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 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 boas práticas e refatoração de código, incluindo o uso de interfaces, herança, strings, nomes significativos, métodos pequenos e comentários.
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 arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
O documento discute o conceito de refatoração de código e apresenta um exemplo de como refatorar um código para melhorar sua estrutura e legibilidade. O Capitão Nascimento explica que a refatoração envolve reescrever um programa preservando seu comportamento para facilitar a manutenção e entendimento do código. Ele também destaca a importância de testar o código e sentir quando ele tem "mau cheiro" para identificar onde pode ser refatorado.
O documento descreve a criação de métodos para calcular áreas de forma separada. São criados os métodos "areaCasa()" para calcular a área da casa e "areaPiscina()" para calcular a área da piscina, dividindo assim o programa em partes distintas e evitando confusão. O documento também explica o significado de void e como criar métodos para organizar melhor o código.
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 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 boas práticas e refatoração de código, incluindo o uso de interfaces, herança, strings, nomes significativos, métodos pequenos e comentários.
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 arquivos e exceções em Java. Primeiramente, explica que dados de configuração precisam ser salvos em arquivos para serem preservados entre execuções do programa. Em seguida, descreve como objetos da classe File representam caminhos para arquivos e diretórios, e que escrever dados em arquivos requer objetos FileWriter. Por fim, discute que métodos que manipulam arquivos podem lançar exceções IOException, as quais precisam ser capturadas ou declaradas no método.
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
O documento discute o conceito de refatoração de código e apresenta um exemplo de como refatorar um código para melhorar sua estrutura e legibilidade. O Capitão Nascimento explica que a refatoração envolve reescrever um programa preservando seu comportamento para facilitar a manutenção e entendimento do código. Ele também destaca a importância de testar o código e sentir quando ele tem "mau cheiro" para identificar onde pode ser refatorado.
1. O documento introduz conceitos básicos de Java, incluindo a criação de um programa "Olá Mundo", pacotes, tipos primitivos e manipulação de dados.
2. Bibliotecas Swing e JavaFX são discutidas como formas de criar interfaces gráficas, com Swing permitindo interfaces de janelas.
3. Vários operadores, estruturas condicionais e de repetição são explicados como formas de manipular dados e fluxos de programação em Java.
Videoulas de algoritmos e lógica de programaçãoaldoirjava
O documento apresenta exemplos de algoritmos para resolver diferentes problemas. Nos exemplos, são mostrados passo a passo como ler dados de entrada, fazer cálculos e exibir resultados. Problemas como calcular média, trocar valores de variáveis, calcular salário com comissão e outros são demonstrados com algoritmos de programação.
1) O documento discute o cálculo do preço de duas casas em regiões geográficas diferentes, onde o preço do m2 é diferente entre as regiões.
2) Propõe-se criar objetos para representar cada casa individualmente, de modo que o valor do m2 seja intrínseco a cada objeto casa.
3) Isso permite calcular o preço de cada casa de forma independente, sem precisar modificar variáveis em outras classes.
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.
O documento apresenta exemplos de códigos Java para controle de programa usando estruturas condicionais e repetitivas e arrays unidimensionais e bidimensionais. Também apresenta o esboço de um sistema de agendamento de visitas comerciais com classes como Cliente, Produto, Vendedor e Visita.
This document provides a tutorial on graphical programming in Java using Swing. It covers creating basic Swing elements like frames and buttons, using layout managers, handling events, and building a simple window application.
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.
Mais conteúdo relacionado
Semelhante a (ACH2001) Introdução à Programação - Aula 04
1. O documento introduz conceitos básicos de Java, incluindo a criação de um programa "Olá Mundo", pacotes, tipos primitivos e manipulação de dados.
2. Bibliotecas Swing e JavaFX são discutidas como formas de criar interfaces gráficas, com Swing permitindo interfaces de janelas.
3. Vários operadores, estruturas condicionais e de repetição são explicados como formas de manipular dados e fluxos de programação em Java.
Videoulas de algoritmos e lógica de programaçãoaldoirjava
O documento apresenta exemplos de algoritmos para resolver diferentes problemas. Nos exemplos, são mostrados passo a passo como ler dados de entrada, fazer cálculos e exibir resultados. Problemas como calcular média, trocar valores de variáveis, calcular salário com comissão e outros são demonstrados com algoritmos de programação.
1) O documento discute o cálculo do preço de duas casas em regiões geográficas diferentes, onde o preço do m2 é diferente entre as regiões.
2) Propõe-se criar objetos para representar cada casa individualmente, de modo que o valor do m2 seja intrínseco a cada objeto casa.
3) Isso permite calcular o preço de cada casa de forma independente, sem precisar modificar variáveis em outras classes.
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.
O documento apresenta exemplos de códigos Java para controle de programa usando estruturas condicionais e repetitivas e arrays unidimensionais e bidimensionais. Também apresenta o esboço de um sistema de agendamento de visitas comerciais com classes como Cliente, Produto, Vendedor e Visita.
This document provides a tutorial on graphical programming in Java using Swing. It covers creating basic Swing elements like frames and buttons, using layout managers, handling events, and building a simple window application.
Semelhante a (ACH2001) Introdução à Programação - Aula 04 (8)
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.
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.
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.
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)Centro Jacques Delors
Estrutura de apresentação:
- Apresentação do Centro de Informação Europeia Jacques Delors (CIEJD);
- Documentação;
- Informação;
- Atividade editorial;
- Atividades pedagógicas, formativas e conteúdos;
- O CIEJD Digital;
- Contactos.
Para mais informações, consulte o portal Eurocid:
- https://eurocid.mne.gov.pt/quem-somos
Autor: Centro de Informação Europeia Jacques Delors
Fonte: https://infoeuropa.mne.gov.pt/Nyron/Library/Catalog/winlibimg.aspx?doc=48197&img=9267
Versão em inglês [EN] também disponível em:
https://infoeuropa.mne.gov.pt/Nyron/Library/Catalog/winlibimg.aspx?doc=48197&img=9266
Data de conceção: setembro/2019.
Data de atualização: maio-junho 2024.
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
(ACH2001) Introdução à Programação - Aula 04
1. Aula 04 – Um Primeiro Programa
(Cont.)
Norton Trevisan Roman
19 de mar¸co de 2020
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 1 / 35
2. Sa´ıda B´asica
Seria interessante darmos tamb´em uma mensagem
situando o usu´ario:
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 2 / 35
3. Sa´ıda B´asica
Seria interessante darmos tamb´em uma mensagem
situando o usu´ario:
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
}
}
E o que isso faz ao rodarmos javac CasaRet.java e
java CasaRet?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 2 / 35
4. Sa´ıda B´asica
Seria interessante darmos tamb´em uma mensagem
situando o usu´ario:
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
}
}
E o que isso faz ao rodarmos javac CasaRet.java e
java CasaRet?
Escreve: “Programa para c´alculo da ´area da casa”
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 2 / 35
5. Sa´ıda B´asica
E se quis´essemos escrever
Programa para c´alculo
da ´area da casa
Como far´ıamos?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 3 / 35
6. Sa´ıda B´asica
E se quis´essemos escrever
Programa para c´alculo
da ´area da casa
Como far´ıamos?
Alternativa 1: separando em dois comandos
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo");
System.out.println("da ´area da casa");
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 3 / 35
7. Sa´ıda B´asica
Alternativa 2: usando o caractere especial n
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para
c´alculonda ´area da casa");
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 4 / 35
8. Opera¸c˜oes Aritm´eticas
J´a alertamos o usu´ario
de que o programa
come¸cou
Falta ainda executar a
tarefa
Para isso precisaremos
saber como fazer
c´alculos:
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 5 / 35
9. Opera¸c˜oes Aritm´eticas
J´a alertamos o usu´ario
de que o programa
come¸cou
Falta ainda executar a
tarefa
Para isso precisaremos
saber como fazer
c´alculos:
Matem´atica Java
2 + 3 2 + 3
2 − 3 2 − 3
2 × 3 2 ∗ 3
2 ÷ 3 2/3
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 5 / 35
10. Relembrando o problema e o algoritmo
Calcular a ´area da sala
Multiplicar a largura
pelo comprimento da
sala
Dizer ao usu´ario
Calcular a ´area do quarto
Multiplicar a largura
pelo comprimento do
quarto
Dizer ao usu´ario
Calcular a ´area do banheiro
Ser´a igual `a do quarto
Dizer ao usu´ario
Sala
Quarto
Banheiro
10m
5m
10m
7m
Calcular a ´area total
Somar as ´areas do
quarto, banheiro e sala
Dizer ao usu´ario
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 6 / 35
11. Opera¸c˜oes Aritm´eticas
Como incluir no c´odigo os c´alculos necess´arios?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 7 / 35
12. Opera¸c˜oes Aritm´eticas
Como incluir no c´odigo os c´alculos necess´arios?
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo da ´area
da casa");
10*10;
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 7 / 35
13. Opera¸c˜oes Aritm´eticas
Como incluir no c´odigo os c´alculos necess´arios?
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo da ´area
da casa");
10*10;
}
}
Funciona?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 7 / 35
14. Opera¸c˜oes Aritm´eticas
Como incluir no c´odigo os c´alculos necess´arios?
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo da ´area
da casa");
10*10;
}
}
Funciona?
$ javac CasaRet.java
CasaRet.java:10: not a statement
10*10;
^
1 error
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 7 / 35
15. Opera¸c˜oes Aritm´eticas
O que faltou?
$ javac CasaRet.java
CasaRet.java:10: not a statement
10*10;
^
1 error
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 8 / 35
16. Opera¸c˜oes Aritm´eticas
O que faltou?
Onde guardamos o
resultado? N˜ao
guardamos em lugar
nenhum
$ javac CasaRet.java
CasaRet.java:10: not a statement
10*10;
^
1 error
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 8 / 35
17. Opera¸c˜oes Aritm´eticas
O que faltou?
Onde guardamos o
resultado? N˜ao
guardamos em lugar
nenhum
$ javac CasaRet.java
CasaRet.java:10: not a statement
10*10;
^
1 error
Uma solu¸c˜ao seria usarmos o println para calcular o
resultado
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 8 / 35
18. Opera¸c˜oes Aritm´eticas
O que faltou?
Onde guardamos o
resultado? N˜ao
guardamos em lugar
nenhum
$ javac CasaRet.java
CasaRet.java:10: not a statement
10*10;
^
1 error
Uma solu¸c˜ao seria usarmos o println para calcular o
resultado
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
System.out.println(10*10);
} }
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 8 / 35
19. Opera¸c˜oes Aritm´eticas
O que faltou?
Onde guardamos o
resultado? N˜ao
guardamos em lugar
nenhum
$ javac CasaRet.java
CasaRet.java:10: not a statement
10*10;
^
1 error
Uma solu¸c˜ao seria usarmos o println para calcular o
resultado
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
System.out.println(10*10);
} }
Nesse caso, o resultado seria trabalhado internamente (mais
adiante veremos)
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 8 / 35
20. Opera¸c˜oes Aritm´eticas
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
System.out.println(10*10);
} }
E...
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 9 / 35
21. Opera¸c˜oes Aritm´eticas
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
System.out.println(10*10);
} }
E...
$ javac CasaRet.java
$ java CasaRet
Programa para c´alculo da ´area da casa
100
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 9 / 35
22. Opera¸c˜oes Aritm´eticas
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo
da ´area da casa");
System.out.println(10*10);
} }
E...
$ javac CasaRet.java
$ java CasaRet
Programa para c´alculo da ´area da casa
100
Funcionou. Meio feio, mas funcional
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 9 / 35
23. Opera¸c˜oes Aritm´eticas
Ent˜ao...
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para c´alculo da ´area
da casa");
System.out.println("A ´area da sala ´e " + 10*10);
System.out.println("A ´area do quarto ´e " + 5*7);
System.out.println("A ´area do banheiro ´e " + 5*7);
System.out.println("A ´area total ´e " + 10*10 + 5*7
+ 5*7);
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 10 / 35
25. Opera¸c˜oes Aritm´eticas
Vai funcionar?
$ javac CasaRet.java
$ java CasaRet
Programa para c´alculo da ´area da casa
A ´area da sala ´e 100
A ´area do quarto ´e 35
A ´area do banheiro ´e 35
A ´area total ´e 1003535
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 11 / 35
26. Opera¸c˜oes Aritm´eticas
Vai funcionar?
$ javac CasaRet.java
$ java CasaRet
Programa para c´alculo da ´area da casa
A ´area da sala ´e 100
A ´area do quarto ´e 35
A ´area do banheiro ´e 35
A ´area total ´e 1003535
1003535????
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 11 / 35
27. Opera¸c˜oes Aritm´eticas
O que houve?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 12 / 35
28. Opera¸c˜oes Aritm´eticas
O que houve?
Ao fazermos
System.out.println("A ´area total ´e " + 10*10
+ 5*7 + 5*7);
dissemos ao sistema: “escreva o resultado de 10 × 10 e
ent˜ao de 5 × 7 e ent˜ao de 5 × 7”
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 12 / 35
29. Opera¸c˜oes Aritm´eticas
O que houve?
Ao fazermos
System.out.println("A ´area total ´e " + 10*10
+ 5*7 + 5*7);
dissemos ao sistema: “escreva o resultado de 10 × 10 e
ent˜ao de 5 × 7 e ent˜ao de 5 × 7”
Que fazer?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 12 / 35
30. Opera¸c˜oes Aritm´eticas
O que houve?
Ao fazermos
System.out.println("A ´area total ´e " + 10*10
+ 5*7 + 5*7);
dissemos ao sistema: “escreva o resultado de 10 × 10 e
ent˜ao de 5 × 7 e ent˜ao de 5 × 7”
Que fazer?
System.out.println("A ´area total ´e "+ (10*10 + 5*7
+ 5*7));
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 12 / 35
31. Opera¸c˜oes Aritm´eticas
O que houve?
Ao fazermos
System.out.println("A ´area total ´e " + 10*10
+ 5*7 + 5*7);
dissemos ao sistema: “escreva o resultado de 10 × 10 e
ent˜ao de 5 × 7 e ent˜ao de 5 × 7”
Que fazer?
System.out.println("A ´area total ´e "+ (10*10 + 5*7
+ 5*7));
Agora dissemos: “calcule o resultado de 10 × 10 + 5 × 7+
5 × 7 e escreva”
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 12 / 35
32. Opera¸c˜oes Aritm´eticas
E...
$ javac CasaRet.java
$ java CasaRet
Programa para c´alculo da ´area da casa
A ´area da sala ´e 100
A ´area do quarto ´e 35
A ´area do banheiro ´e 35
A ´area total ´e 170
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 13 / 35
33. Opera¸c˜oes Aritm´eticas
E como o compilador sabe em que ordem deve
executar as opera¸c˜oes?
Ex: 10*10 + 5*7 + 5*7
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 14 / 35
34. Opera¸c˜oes Aritm´eticas
E como o compilador sabe em que ordem deve
executar as opera¸c˜oes?
Ex: 10*10 + 5*7 + 5*7
Precedˆencia de operadores:
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 14 / 35
35. Opera¸c˜oes Aritm´eticas
E como o compilador sabe em que ordem deve
executar as opera¸c˜oes?
Ex: 10*10 + 5*7 + 5*7
Precedˆencia de operadores:
Multiplica¸c˜ao e divis˜ao tˆem precedˆencia sobre soma e
subtra¸c˜ao
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 14 / 35
36. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
37. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Ex: 27 / 3 * 3
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
38. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Ex: 27 / 3 * 3
A express˜ao ´e analisada da esquerda para a direita
(resultando em 27)
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
39. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Ex: 27 / 3 * 3
A express˜ao ´e analisada da esquerda para a direita
(resultando em 27)
E como mudar isso?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
40. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Ex: 27 / 3 * 3
A express˜ao ´e analisada da esquerda para a direita
(resultando em 27)
E como mudar isso?
27 / (3 * 3)
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
41. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Ex: 27 / 3 * 3
A express˜ao ´e analisada da esquerda para a direita
(resultando em 27)
E como mudar isso?
27 / (3 * 3)
Os parˆenteses mudam a precedˆencia
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
42. Opera¸c˜oes Aritm´eticas
E quando temos express˜oes com operadores de igual
precedˆencia?
Ex: 27 / 3 * 3
A express˜ao ´e analisada da esquerda para a direita
(resultando em 27)
E como mudar isso?
27 / (3 * 3)
Os parˆenteses mudam a precedˆencia
O compilador calcula primeiro o que est´a dentro deles
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 15 / 35
43. Vari´aveis
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para
c´alculo da ´area da casa");
System.out.println("A ´area da sala ´e "+
10*10);
System.out.println("A ´area do quarto ´e "+
5*7);
System.out.println("A ´area do banheiro ´e "+
5*7);
System.out.println("A ´area total ´e " +
(10*10 + 5*7 + 5*7));
}
}
Algo de
estranho
nesse
programa?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 16 / 35
44. Vari´aveis
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para
c´alculo da ´area da casa");
System.out.println("A ´area da sala ´e "+
10*10);
System.out.println("A ´area do quarto ´e "+
5*7);
System.out.println("A ´area do banheiro ´e "+
5*7);
System.out.println("A ´area total ´e " +
(10*10 + 5*7 + 5*7));
}
}
Algo de
estranho
nesse
programa?
“5*7” ´e
repetido 4
vezes no
c´odigo
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 16 / 35
45. Vari´aveis
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para
c´alculo da ´area da casa");
System.out.println("A ´area da sala ´e "+
10*10);
System.out.println("A ´area do quarto ´e "+
5*7);
System.out.println("A ´area do banheiro ´e "+
5*7);
System.out.println("A ´area total ´e " +
(10*10 + 5*7 + 5*7));
}
}
Algo de
estranho
nesse
programa?
“5*7” ´e
repetido 4
vezes no
c´odigo
“10*10”
repete 2
vezes
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 16 / 35
46. Vari´aveis
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para
c´alculo da ´area da casa");
System.out.println("A ´area da sala ´e "+
10*10);
System.out.println("A ´area do quarto ´e "+
5*7);
System.out.println("A ´area do banheiro ´e "+
5*7);
System.out.println("A ´area total ´e " +
(10*10 + 5*7 + 5*7));
}
}
E se
precisarmos
trocar
algum dos
valores?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 17 / 35
47. Vari´aveis
class CasaRet {
public static void main(String[] args) {
System.out.println("Programa para
c´alculo da ´area da casa");
System.out.println("A ´area da sala ´e "+
10*10);
System.out.println("A ´area do quarto ´e "+
5*7);
System.out.println("A ´area do banheiro ´e "+
5*7);
System.out.println("A ´area total ´e " +
(10*10 + 5*7 + 5*7));
}
}
E se
precisarmos
trocar
algum dos
valores?
Teremos que
trocar em
v´arios
lugares no
c´odigo
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 17 / 35
48. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
49. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Seria interessante ter algo assim:
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
50. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Seria interessante ter algo assim:
Calculamos a ´area da sala e guardamos na mem´oria
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
51. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Seria interessante ter algo assim:
Calculamos a ´area da sala e guardamos na mem´oria
Calculamos a ´area do quarto e guardamos na mem´oria
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
52. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Seria interessante ter algo assim:
Calculamos a ´area da sala e guardamos na mem´oria
Calculamos a ´area do quarto e guardamos na mem´oria
Para a do banheiro, usamos a do quarto, que est´a na
mem´oria
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
53. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Seria interessante ter algo assim:
Calculamos a ´area da sala e guardamos na mem´oria
Calculamos a ´area do quarto e guardamos na mem´oria
Para a do banheiro, usamos a do quarto, que est´a na
mem´oria
Para a ´area total, somamos a da sala com 2 vezes a do
banheiro
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
54. Vari´aveis
Que fazer ent˜ao para evitar as repeti¸c˜oes?
Seria interessante ter algo assim:
Calculamos a ´area da sala e guardamos na mem´oria
Calculamos a ´area do quarto e guardamos na mem´oria
Para a do banheiro, usamos a do quarto, que est´a na
mem´oria
Para a ´area total, somamos a da sala com 2 vezes a do
banheiro
Todas em mem´oria
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 18 / 35
55. Vari´aveis
Como guardar algo na mem´oria?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 19 / 35
56. Vari´aveis
Como guardar algo na mem´oria?
Primeiro, temos que reservar um espa¸co (aloca¸c˜ao)
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 19 / 35
57. Vari´aveis
Como guardar algo na mem´oria?
Primeiro, temos que reservar um espa¸co (aloca¸c˜ao)
De que tamanho?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 19 / 35
58. Vari´aveis
Como guardar algo na mem´oria?
Primeiro, temos que reservar um espa¸co (aloca¸c˜ao)
De que tamanho?
O suficiente para guardar o valor que queremos → um inteiro
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 19 / 35
59. Vari´aveis
Como guardar algo na mem´oria?
Primeiro, temos que reservar um espa¸co (aloca¸c˜ao)
De que tamanho?
O suficiente para guardar o valor que queremos → um inteiro
Como?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 19 / 35
60. Vari´aveis
class CasaRet {
public static void main
(String[] args) {
// ´area do quarto
int areaq;
// ´area da sala
int areas;
// ´area total
int areat;
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 20 / 35
61. Vari´aveis
class CasaRet {
public static void main
(String[] args) {
// ´area do quarto
int areaq;
// ´area da sala
int areas;
// ´area total
int areat;
}
}
Isso diz ao compilador
para reservar (alocar)
espa¸co na mem´oria
suficiente para 3
inteiros, dando a eles o
nome de “areaq”,
“areas” e “areat”
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 20 / 35
62. Vari´aveis
class CasaRet {
public static void main
(String[] args) {
// ´area do quarto
int areaq;
// ´area da sala
int areas;
// ´area total
int areat;
}
}
Isso diz ao compilador
para reservar (alocar)
espa¸co na mem´oria
suficiente para 3
inteiros, dando a eles o
nome de “areaq”,
“areas” e “areat”
areaq, areas e areat s˜ao vari´aveis
int ´e seu tipo
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 20 / 35
63. Vari´aveis
class CasaRet {
public static void main
(String[] args) {
// ´area do quarto
int areaq;
// ´area da sala
int areas;
// ´area total
int areat;
}
}
Esquema da mem´oria:
areaq 0 areas 0
areat 0
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 21 / 35
64. Vari´aveis
Alocado o espa¸co, podemos por algo l´a → atribui¸c˜ao
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 22 / 35
65. Vari´aveis
Alocado o espa¸co, podemos por algo l´a → atribui¸c˜ao
class CasaRet {
public static void main(String[] args) {
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
System.out.println("Programa para c´alculo da ´area da casa");
areas = 10*10;
System.out.println("A ´area da sala ´e "+areas);
areaq = 7*5;
System.out.println("A ´area do quarto ´e "+areaq);
System.out.println("A ´area do banheiro ´e "+areaq);
areat = areas + 2*areaq;
System.out.println("A ´area total ´e " + areat);
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 22 / 35
66. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
67. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
68. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq areas
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
69. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq areas
areat
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
70. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq areas 100
areat
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
71. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq 35 areas 100
areat
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
72. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq 35 areas 100
areat 170
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
73. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq 35 areas 100
areat 170
N˜ao ´e um igual
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
74. Vari´aveis
class CasaRet {
public static void main
(String[] args)
{
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
areas = 10*10;
...
areaq = 7*5;
...
areat = areas + 2*areaq;
...
}
}
Ao fazermos
nome_var = valor;
estamos armazenando
valor na regi˜ao da mem´oria
correspondente a nome var
areaq 35 areas 100
areat 170
N˜ao ´e um igual
A vari´avel que recebe
sempre est´a `a esquerda
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 23 / 35
75. Divis˜ao Inteira
Que outros detalhes podemos notar da cabana?
Sala
Quarto
Banheiro
10m
5m
10m
7m
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 24 / 35
76. Divis˜ao Inteira
Que outros detalhes podemos notar da cabana?
A sala ´e quadrada → basta sabermos o lado
Sala
Quarto
Banheiro
10m
5m
10m
7m
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 24 / 35
77. Divis˜ao Inteira
Que outros detalhes podemos notar da cabana?
A sala ´e quadrada → basta sabermos o lado
Tanto o quarto quanto
o banheiro possuem
metade do lado da sala Sala
Quarto
Banheiro
10m
5m
10m
7m
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 24 / 35
78. Divis˜ao Inteira
Que outros detalhes podemos notar da cabana?
A sala ´e quadrada → basta sabermos o lado
Tanto o quarto quanto
o banheiro possuem
metade do lado da sala
Vamos reescrever o
programa...
Sala
Quarto
Banheiro
10m
5m
10m
7m
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 24 / 35
79. Divis˜ao Inteira
class CasaRet {
public static void main(String[] args) {
int lateral = 10; // comprimento da lateral da cabana
int cquarto = 7; // comprimento da lateral maior do quarto
int areaq; // ´area do quarto
int areas; // ´area da sala
int areat; // ´area total
System.out.println("Programa para c´alculo da ´area da casa");
areas = lateral*lateral;
System.out.println("A ´area da sala ´e "+areas);
areaq = cquarto*(lateral/2);
System.out.println("A ´area do quarto ´e "+areaq);
System.out.println("A ´area do banheiro ´e "+areaq);
areat = areas + 2*areaq;
System.out.println("A ´area total ´e "+areat);
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 25 / 35
80. Divis˜ao Inteira
E qual a vantagem disso?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 26 / 35
81. Divis˜ao Inteira
E qual a vantagem disso?
Reduz nossa dependˆencia a valores externos: antes eram 3
(10, 7 e 5), agora s˜ao 2 (10 e 7)
Reduz a chance de erros na substitui¸c˜ao
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 26 / 35
82. Divis˜ao Inteira
E qual a vantagem disso?
Reduz nossa dependˆencia a valores externos: antes eram 3
(10, 7 e 5), agora s˜ao 2 (10 e 7)
Reduz a chance de erros na substitui¸c˜ao
E a desvantagem?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 26 / 35
83. Divis˜ao Inteira
E qual a vantagem disso?
Reduz nossa dependˆencia a valores externos: antes eram 3
(10, 7 e 5), agora s˜ao 2 (10 e 7)
Reduz a chance de erros na substitui¸c˜ao
E a desvantagem?
Gasta mais mem´oria, com as vari´aveis lateral e cquarto
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 26 / 35
84. Divis˜ao Inteira
class CasaRet {
public static void main(
String[] args) {
int lateral = 11;
int cquarto = 7;
...
System.out.println(...);
areas = lateral*lateral;
System.out.println(...);
areaq = cquarto*(lateral/2);
System.out.println(...);
System.out.println(...);
System.out.println("A ´area
total ´e " + areat);
}
}
E se a lateral for 11?
Qual a sa´ıda?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 27 / 35
85. Divis˜ao Inteira
class CasaRet {
public static void main(
String[] args) {
int lateral = 11;
int cquarto = 7;
...
System.out.println(...);
areas = lateral*lateral;
System.out.println(...);
areaq = cquarto*(lateral/2);
System.out.println(...);
System.out.println(...);
System.out.println("A ´area
total ´e " + areat);
}
}
E se a lateral for 11?
Qual a sa´ıda?
Programa para c´alculo da
´area da casa
A ´area da sala ´e 121
A ´area do banheiro ´e 35
A ´area do quarto ´e 35
A ´area total ´e 191
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 27 / 35
86. Divis˜ao Inteira
class CasaRet {
public static void main(
String[] args) {
int lateral = 11;
int cquarto = 7;
...
System.out.println(...);
areas = lateral*lateral;
System.out.println(...);
areaq = cquarto*(lateral/2);
System.out.println(...);
System.out.println(...);
System.out.println("A ´area
total ´e " + areat);
}
}
E se a lateral for 11?
Qual a sa´ıda?
Programa para c´alculo da
´area da casa
A ´area da sala ´e 121
A ´area do banheiro ´e 35
A ´area do quarto ´e 35
A ´area total ´e 191
Fez 11 ÷ 2 = 5 ... Por
quˆe?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 27 / 35
87. Divis˜ao Inteira
O problema est´a na linha
areaq = cquarto*(lateral/2);
Como tanto lateral quanto 2 s˜ao inteiros, o
compilador acha que essa ´e uma divis˜ao inteira,
dando somente o quociente da divis˜ao:
11 2
1 5
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 28 / 35
88. Divis˜ao Inteira
E como obtemos o resto da divis˜ao?
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 29 / 35
89. Divis˜ao Inteira
E como obtemos o resto da divis˜ao?
Usando % em vez de /. Ex:
public static void main(String[] args) {
System.out.println("Parte inteira: " + 11/2);
System.out.println("Resto: " + 11%2);
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 29 / 35
90. Divis˜ao Inteira
E como obtemos o resto da divis˜ao?
Usando % em vez de /. Ex:
public static void main(String[] args) {
System.out.println("Parte inteira: " + 11/2);
System.out.println("Resto: " + 11%2);
}
E a sa´ıda ser´a:
Parte inteira: 5
Resto: 1
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 29 / 35
91. Divis˜ao Inteira
Mas isso n˜ao resolve nosso problema
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 30 / 35
92. Divis˜ao Inteira
Mas isso n˜ao resolve nosso problema
Queremos ver 38.5 na tela
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 30 / 35
93. Divis˜ao Inteira
Mas isso n˜ao resolve nosso problema
Queremos ver 38.5 na tela
Problema:
38.5 ´e um n´umero real, e nossas vari´aveis s˜ao inteiras
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 30 / 35
94. Divis˜ao Inteira
Mas isso n˜ao resolve nosso problema
Queremos ver 38.5 na tela
Problema:
38.5 ´e um n´umero real, e nossas vari´aveis s˜ao inteiras
Solu¸c˜ao:
Troque o tipo das vari´aveis
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 30 / 35
95. Divis˜ao Inteira
class CasaRet {
public static void main(String[] args) {
float lateral = 11;
float cquarto = 7;
float areaq;
float areas;
float areat;
System.out.println("Programa para c´alculo da ´area da casa");
areas = lateral*lateral;
System.out.println("A ´area da sala ´e "+areas);
areaq = cquarto*(lateral/2);
System.out.println("A ´area do quarto ´e "+areaq);
System.out.println("A ´area do banheiro ´e "+areaq);
areat = areas + 2*areaq;
System.out.println("A ´area total ´e " + areat);
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 31 / 35
96. Tipos Num´ericos
Tipo Conjunto Valor m´ınimo Valor m´aximo Bits
byte inteiro -128 127 8
short inteiro -32.768 32.767 16
int inteiro -2.147.483.648 2.147.483.647 32
long inteiro -9.223.372.036.854.775.808 9.223.372.036.854.775.807 64
float real – – 32
double real – – 64
float e double obedecem ao IEEE Standard for
Binary Floating-Point Arithmetic, ANSI/IEEE
Standard 754-1985
Tem representa¸c˜oes para infinito (positivo e negativo) e para
valores n˜ao num´ericos (NaN), usado, por exemplo, em casos
de divis˜ao por zero, raiz de n´umero negativo etc
https://docs.oracle.com/javase/specs/#4.2.3
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 32 / 35
97. Tipos Num´ericos
O seguinte c´odigo ir´a dar problema:
class CasaRet {
public static void main(String[] args) {
float x = 1.8;
}
}
N˜ao h´a nada errado com ele – o java, quando vˆe um
n´umero assim, pressup˜oe ser double
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 33 / 35
98. Tipos Num´ericos
O seguinte c´odigo ir´a dar problema:
class CasaRet {
public static void main(String[] args) {
float x = 1.8F;
}
}
N˜ao h´a nada errado com ele – o java, quando vˆe um
n´umero assim, pressup˜oe ser double
Devemos ent˜ao dizer a ele que ´e um float
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 33 / 35
99. Tipos Num´ericos
Curiosidade: gerando o NaN...
class CasaRet {
public static void main(String[] args) {
double x = 0;
double y = 0;
System.out.println(x/y);
}
}
Norton Trevisan Roman Aula 04 – Um Primeiro Programa (Cont.) 19 de mar¸co de 2020 34 / 35