Julgue o próximo item, a respeito de uso de softwares avançados em estatística.No código a seguir, a substituição de [1] por MAKE show_result(make_, type_); e de [2] por END; define uma macro de nome show_result() que recebe os parâmetros make_ e type_ para exibir as vendas de carros por marca e tipo.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Macros em SAS: sintaxe %MACRO e %MEND
Gabarito: letra E (ERRADO). A substituição proposta está incorreta porque, na linguagem SAS, a definição de uma macro é delimitada por %MACRO nome(parâmetros); e %MEND nome; — e não por MAKE ... END;. A sintaxe MAKE show_result(make_, type_); e END; não pertence à linguagem SAS, o que torna a afirmação do enunciado falsa.
O SAS (Statistical Analysis System) é um software amplamente utilizado em estatística e análise de dados, e uma de suas funcionalidades mais poderosas é o macro facility (facilidade de macros). Uma macro no SAS é um bloco de código que pode ser reutilizado, permitindo gerar código SAS dinamicamente e reduzir a repetição. A definição de uma macro segue uma sintaxe rígida e específica, que é diferente daquela apresentada no enunciado.
A estrutura correta para definir uma macro no SAS é:
%MACRO nome_da_macro(parâmetro1, parâmetro2);
/* corpo da macro */
%MEND nome_da_macro;
O comando %MACRO inicia a definição, e o comando %MEND a encerra. Os parâmetros são opcionais e, quando presentes, são listados entre parênteses após o nome da macro. Dentro do corpo da macro, os parâmetros são referenciados com o prefixo & (por exemplo, &make_ e &type_).
A questão apresenta a substituição de [1] por MAKE show_result(make_, type_); e de [2] por END;. Essa sintaxe não é válida no SAS. O comando MAKE não existe na linguagem SAS para definir macros, e END; é usado para encerrar blocos DO ou PROC, não para finalizar uma definição de macro. Portanto, a afirmação de que essa substituição define uma macro de nome show_result() está incorreta.
A pegadinha aqui é que o candidato pode se confundir com a sintaxe de outras linguagens ou com comandos de outros softwares estatísticos. Por exemplo, em algumas linguagens como MATLAB, a palavra-chave function é usada para definir funções, e em outras, como Python, usa-se def. No entanto, no SAS, a palavra-chave é %MACRO. A banca explora exatamente essa confusão, apresentando uma sintaxe genérica que não corresponde à do SAS.
Para resolver questões como esta, é fundamental conhecer a sintaxe específica da linguagem SAS, especialmente os comandos %MACRO e %MEND. Além disso, é importante lembrar que os parâmetros de uma macro SAS são referenciados com & dentro do corpo da macro, e não com os nomes simples como make_ e type_.
1%MACRO nome(parâmetros);
2Corpo da macro (&parâmetro)
3%MEND nome;
LEVEL · soulevel.com.br
Item — ❌ ERRADO
A afirmação está errada porque a sintaxe apresentada não é a correta para definir uma macro no SAS. A definição correta utiliza %MACRO e %MEND, e não MAKE e END. Além disso, os parâmetros make_ e type_ seriam referenciados como &make_ e &type_ dentro do corpo da macro, e não como make_ e type_ diretamente. Portanto, a substituição proposta não define uma macro válida.
NÃO CAIA NESSA!
A banca troca a sintaxe correta do SAS (%MACRO/%MEND) por uma sintaxe genérica (MAKE/END) que não existe na linguagem. O candidato que não conhece a sintaxe específica do SAS pode ser induzido a acreditar que a afirmação está correta, mas a palavra-chave MAKE não é usada para definir macros no SAS.
NÃO CAIA NESSA!
Para questões sobre SAS, memorize a estrutura básica de uma macro: %MACRO nome(parâmetros); ... %MEND nome;. Lembre-se de que os parâmetros são referenciados com & dentro do corpo da macro. Essa é uma das pegadinhas mais comuns em provas que cobram a linguagem SAS.