FRQ workshop: the 4 question types · Workshop FRQ: os 4 tipos de questões
The free-response section
- The AP CSA exam has two parts. Part 1 is multiple choice. Part 2 is free response (you write Java by hand).
- There are always 4 free-response questions (FRQs), and they come in the same 4 types every year.
- This lesson is a quick map of the 4 types. Knowing the pattern makes the exam much less scary. You can do this!
A seção de resposta livre
- A prova AP CSA tem duas partes. A Parte 1 é múltipla escolha. A Parte 2 é resposta livre (você escreve Java à mão).
- Sempre há 4 perguntas de resposta livre (FRQs), e elas vêm nos mesmos 4 tipos todo ano.
- Esta aula é um mapa rápido dos 4 tipos. Conocer o padrão torna a prova muito menos assustadora. Você consegue!
Type 1: Methods and Control Structures
- You write one or two methods using loops,
if, and simple math onint,double,boolean, andString. - No class to design — the class is given. You just fill in the method body.
- This is the most "plain coding" question. Lessons 1–8 cover everything you need.
Tipo 1: Métodos e Estruturas de Controle
- Você escreve um ou dois métodos usando loops,
ife matemática simples emint,double,booleaneString. - Nenhuma classe para desenhar — a classe é dada. Você apenas preenche o corpo do método.
- Esta é a questão mais "código puro". As lições 1–8 cobrem tudo o que você precisa.
public class Grades {
// Count the scores that are 60 or more.
public static int countPassing(int[] scores) {
int count = 0;
for (int s : scores) {
if (s >= 60) {
count = count + 1;
}
}
return count;
}
public static void main(String[] args) {
int[] scores = {72, 40, 95, 60, 33};
System.out.println(countPassing(scores)); // 3
}
}
Type 2: Class Design
- You are given a description of a class and must write the whole class.
- That means: instance variables, a constructor, and the methods they ask for.
- Remember
privatefields, the constructor with the same name as the class, andthis.field = field. Lesson 6 covers this.
Tipo 2: Design de Classe
- Você recebe uma descrição de uma classe e deve escrever a classe inteira.
- Isso significa: variáveis de instância, um construtor e os métodos que pedem.
- Lembre-se
privatefields, o construtor com o mesmo nome da classe ethis.field = field. A lição 6 cobre isso.
public class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public int getScore() {
return score;
}
}
Type 3: Array / ArrayList
- You work with an
ArrayList(or sometimes an array) and write code that traverses it. - Common jobs: find a value, count items, remove items, or build a new list.
- Watch the index carefully when you remove while looping. Lessons 9–11 cover this.
Tipo 3: Array / ArrayList
- Você trabalha com um
ArrayList(ou às vezes um array) e escreve código que o percorre. - Tarefas comuns: encontrar um valor, contar itens, remover itens ou construir uma nova lista.
- Cuidado com o índice quando você remove enquanto loopa. Lições 9–11 cobrem isso.
// Count the Strings longer than 3 letters.
int count = 0;
for (int i = 0; i < words.size(); i++) {
if (words.get(i).length() > 3) {
count++;
}
}
return count;
Type 4: 2-D Array
- You work with a 2-D array (a grid of rows and columns).
- You use nested loops: an outer loop for rows, an inner loop for columns.
- Common jobs: sum a row, sum a column, find the largest value, or count matches. Lesson 12 covers this.
Tipo 4: Matriz 2-D
- Você trabalha com um array 2-D (uma grade de linhas e colunas).
- Você usa loops aninhados: um loop externo para linhas, um loop interno para colunas.
- Tarefas comuns: somar uma linha, somar uma coluna, encontrar o maior valor ou contar correspondências. A Lição 12 cobre isso.
// Add up every value in the grid.
int total = 0;
for (int r = 0; r < grid.length; r++) {
for (int c = 0; c < grid[r].length; c++) {
total += grid[r][c];
}
}
return total;
Exam strategy: read carefully
- Read the whole question first. Underline what the method must return and what its parameters are.
- Look at the example table they give. It shows exactly what your code should produce.
- Copy the method header they give you. Do not change its name, parameters, or return type.
Estratégia de exame: leia com cuidado
- Leia a pergunta inteira primeiro. Sublinhe o que o método deve retornar e quais são seus parâmetros.
- Olhe para a tabela de exemplo que eles fornecem. Ela mostra exatamente o que seu código deve produzir.
- Copie o cabeçalho do método que eles fornecem. Não altere seu nome, parâmetros ou tipo de retorno.
Exam strategy: write methods that work
- Write the base of a loop first, then fill in the body. Get it running in your head step by step.
- Traverse correctly: start the index at
0, stop atlength(orsize()); check the edges. - Use
returnwith the right type. If the header saysint, return anint.
Estratégia de exame: escreva métodos que funcionem
- Escreva a base de um loop primeiro, depois preencha o corpo. Faça-o funcionar na sua mente passo a passo.
- Percorra corretamente: inicie o índice em
0, pare emlength(ousize()); verifique as bordas. - Use
returncom o tipo correto. Se o cabeçalho dizint, retorne umint.
Exam strategy: small wins add up
- You get points for parts that work, even if the whole method is not perfect. Always write something.
- Use only Java you know from this course. Simple, correct code beats clever code.
- Check your work with the example values from the question before you move on.
Estratégia de exame: pequenas vitórias se acumulam
- Você ganha pontos pelas partes que funcionam, mesmo que o método inteiro não seja perfeito. Sempre escreva algo.
- Use apenas Java que você conhece deste curso. Código simples e correto vence código esperto.
- Verifique seu trabalho com os valores de exemplo da pergunta antes de prosseguir.
You are ready
- The 4 types never change: methods, class design, array/ArrayList, and 2-D array.
- Every skill you need for these four FRQ types is in lessons 1–12. Practice each type a few times and the pattern becomes familiar.
- Stay calm, read carefully, and write the code you know. Good luck on the exam!
Você está pronto
- Os 4 tipos nunca mudam: métodos, design de classe, array/ArrayList e array 2-D.
- Toda habilidade necessária para esses quatro tipos de FRQ está nas lições 1–12. Pratique cada tipo algumas vezes e o padrão se tornará familiar.
- Fique calmo, leia com atenção e escreva o código que você conhece. Boa sorte no exame!
Common mistakes
- Match the method header exactly: the return type and the parameters.
- Read the whole prompt before you start coding.
Erros comuns
- Combine o cabeçalho do método exatamente: o tipo de retorno e os parâmetros.
- Leia todo o prompt antes de começar a codificar.
Now you try
- Try one FRQ-style method yourself — the same shape as Type 1 above.
- Press Check answer to compile and run it on the server.
Agora você tenta
- Tente um método estilo FRQ sozinho — a mesma forma do Tipo 1 acima.
- Pressione Check answer para compilar e executá-lo no servidor.
FRQ practice — Type 1 (Methods). Complete countAtLeast(int[] scores, int limit) so it returns how many values in scores are at least limit (greater than or equal). Use a loop and an if, like the worked example above. · Prática FRQ — Tipo 1 (Métodos). Complete countAtLeast(int[] scores, int limit) para que retorne quantos valores em scores são pelo menos limit (maior ou igual). Use um loop e um if, como no exemplo resolvido acima.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
FRQ practice — Type 2 (Class design). Complete the Rectangle class: store width and · e height from the constructor, and finish area() so it returns width × height. This is exactly what a Type 2 FRQ asks for. · Prática FRQ — Tipo 2 (Design de Classe). Complete a classe Rectangle: armazene width e height do construtor, e termine area() para que retorne largura × altura. Isso é exatamente o que uma FRQ Tipo 2 pede.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.