Resumo Detalhado - Semana 9
Exame Java
Estudo
Resumo do Capítulo 1 - Introdução a Computadores, Programas e Java
1. Objetivos
● Compreender conceitos básicos de computadores, sistemas operacionais e
programas.
● Entender a relação entre a linguagem Java e a Internet.
● Definir termos como API, JDK e IDE.
● Criar, compilar e executar um programa em Java.
● Compreender erros de sintaxe, de execução e de lógica.
● Utilizar boas práticas de estilo e documentação em programação Java.
2. Conceitos Básicos de Computadores
● CPU: A unidade central de processamento é o "cérebro" do computador. Processa
instruções e executa cálculos na frequência medida em hertz (GHz atualmente).
● Memória: Armazena temporariamente dados e instruções para o CPU. A memória é
volátil, ou seja, perde dados ao desligar o computador.
● Dispositivos de armazenamento: Mantêm dados e programas permanentemente
(e.g., discos rígidos, CDs, USBs).
● Dispositivos de entrada/saída: Permitem comunicação entre o usuário e o
computador (e.g., teclado, monitor, impressora).
● Dispositivos de comunicação: Facilitam a conexão em redes (e.g., modems,
placas de rede).
3. Linguagens de Programação
● Linguagem de máquina: Binária, difícil de ler e modificar.
● Linguagem de montagem (assembly): Facilita a leitura, mas precisa ser convertida
para código de máquina.
● Linguagem de alto nível (Java): Próxima do inglês, facilita a programação e
manutenção.
4. Compilação e Interpretação de Código
● Interpretação: Tradução e execução de cada linha de código em tempo real.
● Compilação: Tradução de todo o código-fonte para código de máquina (bytecode
em Java), que pode ser executado em qualquer plataforma com a JVM.
5. Por que Java?
● Independente de plataforma: O código Java compilado em bytecode pode rodar
em qualquer sistema com JVM.
● Distribuído: Ideal para aplicações na Internet e sistemas em rede.
● Orientado a Objetos: Java facilita a modularização e reutilização de código.
● Seguro e robusto: Oferece mecanismos para evitar erros e garantir segurança na
execução.
6. Ferramentas de Desenvolvimento (IDEs)
● NetBeans e Eclipse são populares para desenvolver aplicações em Java.
7. Erros de Programação
● Erro de Sintaxe: Detectado pelo compilador (e.g., falta de ponto e vírgula).
● Erro de Execução: Ocorre durante a execução do programa (e.g., divisão por zero).
● Erro Lógico: Gera resultados inesperados, mas o programa roda sem falhas.
Exemplo Simples em Java
public class Welcome {
public static void main(String[] args) {
[Link]("Welcome to Java!");
}
}
Este exemplo mostra como imprimir uma mensagem no console utilizando a estrutura
básica de um programa Java.
Perguntas de Múltipla Escolha e Fill in the Blank
Múltipla Escolha
1. What is the purpose of the CPU?
○ a) Store data permanently
○ b) Execute program instructions
○ c) Display graphical information
○ d) Connect to a local network
2. What is the result of an interpreted program?
○ a) It is translated and executed line by line.
○ b) It is compiled into machine code.
○ c) It runs directly on hardware without JVM.
○ d) It cannot run on multiple platforms.
3. Which tool translates the entire source code into a machine-code file?
○ a) Assembler
○ b) Interpreter
○ c) Compiler
○ d) Debugger
4. Which error occurs when the program runs but produces an incorrect result?
○ a) Syntax error
○ b) Runtime error
○ c) Logic error
○ d) Compilation error
5. Which of the following is a characteristic of Java?
○ a) Java is only used for web development.
○ b) Java is platform-dependent.
○ c) Java programs run directly on hardware.
○ d) Java is object-oriented.
6. What is the role of the JDK (Java Development Kit)?
○ a) To execute Java bytecode.
○ b) To provide tools for developing Java programs.
○ c) To connect Java applications to the Internet.
○ d) To design graphical user interfaces.
Fill in the Blank
1. A computer’s memory is considered __________ because it loses its content when
the power is off.
2. Java programs are compiled into __________, which can run on any platform with a
JVM.
3. An IDE like __________ or __________ helps developers write, compile, and debug
Java programs.
4. Java programs are translated into a special type of machine code called
__________.
5. The software that interprets Java bytecode and allows it to run on any platform is
called the __________.
6. A __________ is a software that converts high-level code into machine code, which
the computer can execute.
Respostas
Múltipla Escolha
1. b) Execute program instructions
2. a) It is translated and executed line by line.
3. c) Compiler
4. c) Logic error
5. d) Java is object-oriented
6. b) To provide tools for developing Java programs
Fill in the Blank
1. volatile
2. bytecode
3. NetBeans, Eclipse
4. bytecode
5. JVM
6. compiler
Resumo do Capítulo 2 - Programação Elementar
1. Motivação
Neste capítulo, você aprenderá como resolver problemas práticos com Java. Os tópicos
incluem tipos primitivos, variáveis, operadores, entrada/saída, e desenvolvimento de
programas simples.
2. Objetivos do Capítulo
● Escrever programas Java para cálculos simples.
● Obter entrada do console com a classe Scanner.
● Nomear variáveis, constantes e classes seguindo convenções.
● Usar operadores e expressões matemáticas.
● Manipular tipos numéricos primitivos como int, float, double.
● Trabalhar com incrementos e decrementos, operadores de atribuição e casting de
tipos.
● Aplicar boas práticas de desenvolvimento com exemplos simples.
3. Variáveis e Constantes
Variáveis: Usadas para armazenar dados temporários. Devem ser declaradas antes de
int x = 5;
double radius = 2.5;
●
Constantes: São valores imutáveis durante a execução. Definidas com a palavra-chave
final. Exemplo:
final double PI = 3.14159;
●
4. Entrada com Scanner
Para ler dados do usuário no console:
Scanner input = new Scanner([Link]);
int value = [Link](); // Lê um inteiro
double d = [Link](); // Lê um número decimal
5. Operadores Matemáticos
● Aritméticos: +, -, *, /, % (resto).
● Exponenciação: Utiliza [Link](base, expoente). Exemplo: [Link](2,
3) resulta em 8.
6. Incremento e Decremento
● Pré-incremento (++i): Incrementa antes de usar o valor.
Pós-incremento (i++): Usa o valor atual e depois incrementa. Exemplo:
java
Copiar código
int i = 1;
int j = ++i; // j = 2, i = 2
int k = i++; // k = 2, i = 3
●
7. Casting de Tipos
● Casting implícito: Converte tipos menores para maiores automaticamente.
Exemplo: double d = 3; (converte int para double).
Casting explícito: Precisa ser especificado. Exemplo:
int i = (int) 3.9; // Trunca para 3
●
8. Erro de Divisão por Inteiros
A divisão entre dois inteiros retorna um resultado inteiro. Exemplo:
int result = 5 / 2; // Resultado: 2
Para evitar erros, use pelo menos um número decimal:
double result = 5.0 / 2; // Resultado: 2.5
9. Processo de Desenvolvimento de Software
● Especificação de Requisitos: Entender e documentar o problema.
● Análise e Design do Sistema: Planejar a arquitetura e definir classes e interfaces.
● Implementação: Escrever e testar o código.
● Testes: Validar se o sistema atende aos requisitos.
● Manutenção: Corrigir erros e adaptar o software.
10. Erros Comuns
● Variáveis não inicializadas: Usar uma variável sem atribuir valor.
● Overflow: Quando um valor excede o limite de armazenamento do tipo.
● Erros de arredondamento: Em operações com ponto flutuante.
Exemplo de Programa - Cálculo da Área de um Círculo
public class ComputeArea {
public static void main(String[] args) {
double radius = 20;
double area = radius * radius * 3.14159;
[Link]("The area for the circle of radius " +
radius + " is " + area);
}
}
Com este resumo, você tem uma visão abrangente dos conceitos abordados no Capítulo 2.
Agora vamos praticar com algumas perguntas!
Perguntas e Respostas - Capítulo 2
Múltipla Escolha
1. What will be the result of the following code?
int result = 5 / 2;
[Link](result);
○ a) 2.5
○ b) 2
○ c) 2.0
○ d) Error
2. What is the value of x after the following code executes?
int x = 5;
int y = ++x;
○ a) 5
○ b) 6
○ c) 7
○ d) 4
3. What is the result of the following expression?
[Link](10 % 3);
○ a) 0
○ b) 1
○ c) 2
○ d) 3
4. What happens if you try to store a value larger than the range of the variable's
type?
○ a) A syntax error occurs.
○ b) The program will crash.
○ c) An overflow occurs, and the value wraps around.
○ d) The program will ignore the assignment.
5. What will be printed by the following code?
[Link](1.0 / 2);
○ a) 0
○ b) 0.5
○ c) 1
○ d) Error
Fill in the Blank
1. To read user input from the console, you can use the __________ class.
2. The operator used to calculate the remainder of a division is __________.
3. In Java, a variable declared as final is called a __________.
4. The __________ operator can be used to raise a number to a specific power in Java.
5. The process of converting a higher data type to a lower one explicitly is called
__________.
Múltipla Escolha
1. b) 2
2. b) 6
3. b) 1
4. c) An overflow occurs, and the value wraps around.
5. b) 0.5
Fill in the Blank
1. Scanner
2. %
3. constant
4. [Link](X, Y)
5. casting
Resumo do Capítulo 7 - Arrays Unidimensionais
1. Introdução aos Arrays
Um array é uma estrutura de dados que armazena uma coleção de elementos do mesmo
tipo. Ele facilita o armazenamento e acesso eficiente de dados em massa, como uma lista
de números ou strings.
2. Declaração e Criação de Arrays
Declaração:
int[] numbers; // Declaração
●
Criação:
numbers = new int[10]; // Cria um array com 10 posições
●
É possível combinar as duas operações:
int[] numbers = new int[10];
3. Acessando Elementos de um Array
Os elementos de um array são acessados por índices, que começam em 0.
Exemplo:
numbers[0] = 5; // Atribui 5 ao primeiro elemento
int x = numbers[1]; // Acessa o segundo elemento
●
4. Inicialização Rápida de Arrays
Inicialização direta:
double[] myList = {1.2, 3.4, 5.6};
●
Este método é equivalente a:
double[] myList = new double[3];
myList[0] = 1.2;
myList[1] = 3.4;
myList[2] = 5.6;
5. Comprimento e Valores Padrão
● O tamanho do array é fixo após a criação e pode ser acessado usando
[Link].
● Valores padrão:
○ 0 para tipos numéricos.
○ false para booleanos.
○ '\u0000' para caracteres.
6. Loop For-each
O loop for-each simplifica a iteração sobre arrays:
for (double value : myList) {
[Link](value);
}
7. Operações Comuns em Arrays
Soma de Elementos:
double sum = 0;
for (double value : myList) {
sum += value;
}
●
Encontrar o Maior Valor:
double max = myList[0];
for (int i = 1; i < [Link]; i++) {
if (myList[i] > max) max = myList[i];
}
●
Embaralhar Elementos Aleatoriamente:
for (int i = 0; i < [Link]; i++) {
int j = (int)([Link]() * [Link]);
double temp = myList[i];
myList[i] = myList[j];
myList[j] = temp;
}
●
8. Passagem de Arrays para Métodos
Em Java, os arrays são passados por referência, ou seja, modificações feitas no array
dentro do método afetam o array original.
public static void modifyArray(int[] list) {
list[0] = 100;
}
9. Pesquisa em Arrays
Pesquisa Linear: Verifica todos os elementos até encontrar o valor desejado.
public static int linearSearch(int[] list, int key) {
for (int i = 0; i < [Link]; i++) {
if (list[i] == key) return i;
}
return -1;
}
●
Pesquisa Binária: Requer que o array esteja ordenado.
public static int binarySearch(int[] list, int key) {
int low = 0, high = [Link] - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (list[mid] == key) return mid;
else if (list[mid] < key) low = mid + 1;
else high = mid - 1;
}
return -1;
}
●
10. Ordenação de Arrays
Selection Sort: Encontra o menor elemento e o move para o início.
public static void selectionSort(double[] list) {
for (int i = 0; i < [Link]; i++) {
double min = list[i];
int minIndex = i;
for (int j = i + 1; j < [Link]; j++) {
if (list[j] < min) {
min = list[j];
minIndex = j;
}
}
if (minIndex != i) {
double temp = list[i];
list[i] = list[minIndex];
list[minIndex] = temp;
}
}
}
●
11. Arrays Anônimos
Um array anônimo é criado sem uma variável de referência:
printArray(new int[]{1, 2, 3, 4});
Exemplo Completo - Soma dos Elementos de um Array
import [Link];
public class SumArray {
public static void main(String[] args) {
Scanner input = new Scanner([Link]);
double[] myList = new double[5];
[Link]("Enter " + [Link] + " values: ");
for (int i = 0; i < [Link]; i++) {
myList[i] = [Link]();
}
double sum = 0;
for (double value : myList) {
sum += value;
}
[Link]("The sum is " + sum);
}
}
erguntas e Respostas - Capítulo 7
Múltipla Escolha
1. What is the default value of an element in an int array?
○ a) 1
○ b) 0
○ c) null
○ d) NaN
2. How are array elements accessed in Java?
○ a) Using parentheses ()
○ b) Using curly braces {}
○ c) Using square brackets []
○ d) Using angle brackets <>
3. What happens if you try to access an index that is out of the array's bounds?
○ a) The element at index 0 is returned.
○ b) The program skips that index silently.
○ c) A runtime exception occurs.
○ d) The value null is returned.
4. Which loop is recommended to traverse arrays if you don’t need the index?
○ a) while loop
○ b) for-each loop
○ c) traditional for loop
○ d) do-while loop
5. What is a valid way to initialize an array with values?
○ a) int[] array = {1, 2, 3};
○ b) int array = new int[3]{1, 2, 3};
○ c) int array[] = (1, 2, 3);
○ d) int[] array(1, 2, 3);
Fill in the Blank
1. Array elements in Java are accessed using __________ brackets.
2. A __________ exception occurs when accessing an array element out of bounds.
3. The __________ search algorithm divides the search space in half at each step.
4. The __________ loop in Java is ideal for traversing all elements in an array
sequentially.
5. Arrays in Java are passed to methods by __________.
Múltipla Escolha
1. b) 0
2. c) Using square brackets []
3. c) A runtime exception occurs
4. b) for-each loop
5. a) int[] array = {1, 2, 3};
Fill in the Blank
1. square
2. runtime
3. binary
4. for-each
5. reference
Resumo do Capítulo 8 - Arrays Multidimensionais
1. Introdução aos Arrays Multidimensionais
● Arrays multidimensionais permitem organizar dados em forma de tabelas ou
matrizes.
● Um array bidimensional é utilizado para representar dados organizados em linhas
e colunas, como uma planilha ou um tabuleiro de jogo.
2. Declaração e Criação de Arrays Bidimensionais
Declaração:
int[][] matrix;
●
Criação:
matrix = new int[3][4]; // 3 linhas por 4 colunas
●
Declaração e criação combinadas:
int[][] matrix = new int[3][4];
●
3. Inicialização e Acesso a Elementos
Acessamos os elementos por meio de índices:
matrix[0][1] = 5; // Atribui 5 ao elemento na primeira linha,
segunda coluna
int value = matrix[2][3]; // Acessa o elemento na terceira linha,
quarta coluna
●
Também é possível inicializar diretamente:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
●
4. Arrays Irregulares (Ragged Arrays)
Cada linha de um array bidimensional pode ter comprimentos diferentes:
int[][] ragged = {
{1, 2, 3},
{4, 5},
{6}
};
●
● Acessamos o comprimento de cada linha usando matrix[i].length.
5. Operações Comuns em Arrays Bidimensionais
Imprimir todos os elementos:
for (int row = 0; row < [Link]; row++) {
for (int col = 0; col < matrix[row].length; col++) {
[Link](matrix[row][col] + " ");
}
[Link]();
}
●
Somar todos os elementos:
int total = 0;
for (int[] row : matrix) {
for (int value : row) {
total += value;
}
}
●
Soma por coluna:
for (int col = 0; col < matrix[0].length; col++) {
int sum = 0;
for (int row = 0; row < [Link]; row++) {
sum += matrix[row][col];
}
[Link]("Soma da coluna " + col + ": " + sum);
}
●
6. Passando Arrays Bidimensionais para Métodos
Os arrays são passados por referência:
public static void printMatrix(int[][] matrix) {
for (int[] row : matrix) {
for (int value : row) {
[Link](value + " ");
}
[Link]();
}
}
●
7. Aplicações Práticas
● Validação de Sudoku: Verifica se uma solução do Sudoku é válida, verificando
linhas, colunas e blocos 3x3.
● Problema de Ponto mais Próximo: Calcula a distância mínima entre pontos
armazenados em um array bidimensional.
● Exemplo de múltiplas escolhas: Armazena respostas de alunos e calcula a
pontuação.
Exemplo de Código:
Gravação de Notas de Alunos:
public class GradeExam {
public static void main(String[] args) {
char[][] answers = {
{'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'}
};
char[] key = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A',
'D'};
for (int i = 0; i < [Link]; i++) {
int correctCount = 0;
for (int j = 0; j < answers[i].length; j++) {
if (answers[i][j] == key[j]) correctCount++;
}
[Link]("Student " + i + "'s correct count is
" + correctCount);
}
}
}
●