Questão de Programação — Conceitos básicos de programação — FUNDATEC 2024
Programação›Conceitos básicos de programação
Código
qg164388
Banca
FUNDATEC
Órgão
IF Sul - MG
Ano
2024
Nível
Superior
Cargo
Professor do Ensino Básico, técnico e Tecnológico: MCH-02 - Informática
Analise o código abaixo, que foi escrito em um ambiente Arduino, e cujo objetivo é a conexão com uma rede WiFi:A linha 9 contém um erro sintático. Qual das alternativas abaixo corresponde à correção desse erro?
AWiFi.begin(ssid, password);
BWiFi.disconnect(ssid);
CWiFi.config(ssid, password);
DWiFi.begin();
EWiFi.getSocket(password);
Revelar gabarito e comentário▾
GabaritoA — WiFi.begin(ssid, password);
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”.
Arduino: conexão WiFi e a sintaxe do método WiFi.begin()
Gabarito: letra A. O erro sintático na linha 9 do código é resolvido chamando o método WiFi.begin(ssid, password), que é a forma correta de iniciar a conexão com uma rede WiFi na biblioteca padrão do Arduino. As demais alternativas usam métodos que não existem ou que não recebem os parâmetros adequados para essa finalidade.
O ambiente Arduino, apesar de ser programado em uma variação de C/C++, possui uma biblioteca própria para comunicação WiFi, geralmente a WiFi.h (ou ESP8266WiFi.h / WiFi.h no ESP32). Essa biblioteca expõe a classe WiFi, que contém métodos estáticos para gerenciar a conexão. O método central é o begin(), que aceita diferentes assinaturas dependendo do modo de operação (station, access point, etc.).
No modo mais comum, o de conectar o dispositivo a uma rede existente (modo station), a chamada correta é WiFi.begin(ssid, password), onde ssid é o nome da rede (String ou const char) e password é a senha (String ou const char). Essa chamada inicia o processo de associação à rede. É importante notar que o método begin() não bloqueia a execução até a conexão ser estabelecida; ele apenas inicia o processo, e o programador deve verificar o status com WiFi.status() em um loop.
A banca explora aqui um erro sintático comum: o uso de um método inexistente ou com parâmetros incorretos. O candidato que conhece a API da biblioteca WiFi do Arduino identifica imediatamente que WiFi.begin(ssid, password) é a forma correta. Vamos analisar cada alternativa para entender o erro específico de cada uma.
A pegadinha central é que a banca mistura métodos que existem na biblioteca (como disconnect() e config()) com outros que não existem (getSocket()), e também usa assinaturas incorretas para os métodos existentes. O candidato que decora a sintaxe exata do begin() resolve a questão sem hesitar.
WiFi.begin()
1Modo station (conectar a rede)
begin(ssid, password)
begin() sem args (não usa as variáveis)
2Modo AP (access point)
begin() sem args
3Métodos que não conectam
disconnect() — encerra conexão
config() — define IP/gateway/subnet
getSocket() — não existe na API
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta é a correção exata do erro. O método WiFi.begin(ssid, password) é a forma canônica de iniciar a conexão WiFi no modo station. Ele recebe dois parâmetros: o SSID (nome da rede) e a senha. Essa chamada é a que está faltando na linha 9 do código, que provavelmente continha algo como WiFi.begin(ssid) ou WiFi.begin(password) — ou seja, faltava um dos argumentos ou a ordem estava errada. A alternativa A corrige exatamente isso, fornecendo os dois argumentos na ordem correta.
Alternativa B — ❌ Incorreta
O método WiFi.disconnect() existe na biblioteca, mas ele não recebe parâmetros como ssid. A função de disconnect() é encerrar a conexão WiFi atual, não iniciar uma nova. A assinatura correta é WiFi.disconnect() (sem argumentos) ou, em algumas versões, WiFi.disconnect(wifioff) onde wifioff é um booleano opcional. Passar ssid como argumento é um erro sintático e semântico: o método não espera esse parâmetro e a intenção (conectar) é oposta à função do método (desconectar).
Alternativa C — ❌ Incorreta
O método WiFi.config() existe na biblioteca, mas sua finalidade é diferente. Ele é usado para configurar o IP local, gateway e máscara de sub-rede antes de chamar begin(). A assinatura típica é WiFi.config(local_ip, gateway, subnet), e não WiFi.config(ssid, password). Passar o SSID e a senha para config() é um erro: esses parâmetros não são esperados e a configuração de IP não estabelece conexão com a rede. A confusão aqui é entre configurar a interface de rede e conectar-se a uma rede.
Alternativa D — ❌ Incorreta
WiFi.begin() sem argumentos é uma chamada válida em alguns contextos, mas não para conectar a uma rede com SSID e senha. Essa forma é usada para iniciar o WiFi em modo Access Point (AP) ou para reconectar usando configurações salvas em memória (como no ESP8266 com WiFi.begin() que tenta reconectar à última rede). No entanto, no código da questão, o objetivo é conectar a uma rede específica, e as variáveis ssid e password estão disponíveis. Chamar begin() sem argumentos não usaria essas variáveis, portanto não atende ao objetivo do código. A alternativa A é mais completa e correta para o cenário descrito.
Alternativa E — ❌ Incorreta
O método WiFi.getSocket() não existe na biblioteca WiFi padrão do Arduino. Não há uma função pública com esse nome na classe WiFi. A confusão pode ser com métodos de socket de outras bibliotecas (como WiFiClient), mas não é o caso aqui. Além disso, passar password como argumento não faz sentido, pois o método não existe e, mesmo que existisse, não seria para iniciar uma conexão. Essa alternativa é um distrator puro, inventando um método que não faz parte da API.