Curso Introdução à Programação

Assuntos

Página do Curso 14 min Texto por
User Image
Allan Garcia

Vejamos agora um pouco sobre as listas de que existem no Neps para nos auxiliar na resolução dos nossos exercícios.

Nós já vimos que, ao abrirmos a seção de exercícios do Neps, temos a oportunidade de ver vários exercícios que podem ser ordenados por nível de dificuldade, pontuação, quantidade de resoluções etc. Note, no entanto, que apesar dessa possibilidade de ordenação, é muito difícil do aluno encontrar questões específicas sobre determinado assunto. Não se preocupe, nós vamos aprender todos esses assuntos durante os próximos cursos 😄.

Para auxiliar, há a seção dos assuntos. Nessa página, você pode perceber que há diversos assuntos diferentes. Com isso, ao você selecionar o assunto de sua preferência, será redirecionado a uma página com vários exercícios do assunto selecionado.

Resolução de Exercícios

Tomemos agora um exemplo de resolução de exercício a partir do exercício Média Inteira, que pode ser feita a partir apenas da leitura de variáveis e da aplicação de operações aritméticas.

Entendimento da Questão

Note a estrutura do exercício: primeiramente, você encontrar um texto mostrando o que o exercício pede e, depois, tem-se a descrição detalhada de como será feita a entrada dos dados e de como deverá ser a saída do programa. Por último, tem-se alguns exemplos, mais comumente chamados de casos de teste.

Com isso, percebe-se que o item pede que se faça um programa capaz de ler dois valores inteiros A e B e imprimir a média inteira entre eles. Note que a entrada será feita em duas linhas (a primeira para A e a segunda para B) e a saída consistirá em apenas uma linha contendo o valor desejado.

Perceba os exemplos de entrada e exemplos de saída. Eles têm um significado muito importante: para cada entrada daquelas, o Juiz Online esperará exatamente a saída em questão.

Criação do Programa

Vamos agora, resolver a questão. Abrindo o Code::Blocks, crie um arquivo C e salve-o em um local de sua preferência. Vamos começar fazendo a estrutura básica do programa em C:

#include <stdio.h>

int main() {
    
}

Podemos começar com a entrada dos dados. Lembre-se que, ao lermos um valor, precisamos armazená-lo em algum lugar; nesse caso, uma variável. Note que devemos fazer a leitura de dois números inteiros, portanto devemos fazer a declaração de duas variáveis do tipo inteiro.

#include <stdio.h>

int main() {
    int A, B;  // Declaração de duas variáveis inteiras A e B
}

Para realizarmos a leitura, vimos que precisamos utilizar o comando scanf(" ", ), ao qual devemos passar a formatação de entrada e o endereço das variáveis que vão receber os valores. Nesse caso, utilizamos a formatação "%d%d", indicando justamente a entrada de dois valores do tipo inteiro. Sobre o endereço das variáveis, passamos &A, &B, indicando que o primeiro valor será armazenado na variável A e o segundo, na variável B. Lembre-se que é muito importante colocar o &, pois é ele quem indica que estamos tratando da posição de memória das variáveis em questão. Veja como fica:

#include <stdio.h>

int main() {
    int A, B;               // Declaração de duas variáveis inteiras A e B
    scanf("%d%d", &A, &B);  // Entrada de dados às variáveis A e B
}

Podemos, por fim, imprimir a média inteira desses valores. Para isso, usamos o comando printf(), ao qual passaremos a formatação %d indicando que é um inteiro e a expressão (A + B) / 2 representando o cálculo da média em si.

#include <stdio.h>

int main() {
    int A, B;                   // Declaração de duas variáveis inteiras A e B
    scanf("%d%d", &A, &B);      // Entrada de dados às variáveis A e B
    printf("%d", (A + B) / 2);  // Impressão da média inteira
}

Submissão do código

Agora, podemos testar usando os casos de teste aprensentados no enunciado usando a própria IDE, se tudo der certo podemos submeter o código. Para isso clique em Escrever Solução, no lado direito da tela, e copie o código completo para a página do exercício.

Não se esqueça de selecionar a linguagem correta, como demonstrado abaixo.

Figura 1

Agora basta clicar em Enviar e esperar o julgamento do Juiz. Após alguns segundos verificamos que o nosso código atendeu às exigências e foi aceito.

Erros Comuns

Durante a resolução de exercícios, é comum nos depararmos com alguns erros. Vejamos agora os mais comuns nessa questão.

Esquecer dos Parêntesis

Note, abaixo, que não foram colocados parêntesis durante o cálculo da média inteira dentro do comando printf().

#include <stdio.h>

int main() {
    int A, B;
    scanf("%d%d", &A, &B);
    printf("%d", A + B / 2);  // Impressão da média inteira calculada errada
}

Lembre-se que, em C, há a precedência dos operadores assim como na matemática e, assim, a multiplicação tem prioridade sobre adição. Dessa forma, primeiro será calculado o B / 2 para depois ser somado ao A.

Imagine o caso de teste A = 2, B = 10. Normalmente, a média deveria ser 6, pois (A + B) / 2 = (2 + 10) / 2 = 12 / 2 = 6. Nesse último código, entretanto, o sistema imprimira 7, pois primeiro calcularia o 10 / 2 para só então somar ao 2.

Impressões Desnecessárias

Muitas vezes, ao submeter no Neps, recebe-se erro porque a saída do programa não foi igual ao que o juiz esperava em decorrência de impressões que não foram definidas no problema. Imagine abaixo:

#include <stdio.h>

int main() {
    int A, B;
    printf("Digite o primeiro valor: ");
    scanf("%d", &A);

    printf("Digite o segundo valor: ");
    scanf("%d", &B);

    printf("%d", (A + B) / 2);  
}

O programa, em si, está correto. Ele lê as entradas corretamente e imprime a média. Perceba, no entanto, que o Juiz Online não analisa apenas o valor da média, ele analisa toda a saída do programa, incluindo essas impressões que foram feitas para pedir para digitar os valores. Ele, então, verifica se essa saída é exatamente igual aos casos de teste e só aceita se isso realmente acontecer. Por isso, o código acima não seria aceito.

Por agora, ficamos por aqui. Até a próxima e bons estudos!