Questão de Programação — .Net — Avança SP 2023
- Código
- qq830507
- Banca
- Avança SP
- Órgão
- Câmara de Jaguariúna - SP
- Ano
- 2023
- Nível
- Médio
- Cargo
- Técnico em Informática e Audiovisual
- AImports
- BNamespace
- COptions
- DFunction()
- ESub Main()
GabaritoE — Sub Main()
Gabarito: letra E. Em um programa Visual Basic .NET, o código que deve ser executado ao iniciar a aplicação precisa estar dentro do procedimento Sub Main(), que é o ponto de entrada padrão do programa — é nele que o runtime do .NET inicia a execução. As demais alternativas representam outros elementos da estrutura de um programa, mas não são o escopo de execução inicial.
O Visual Basic .NET é uma linguagem que segue o paradigma de programação estruturada e orientada a objetos, e todo programa executável precisa de um ponto de partida definido. Esse ponto de partida é o método Main. Em Visual Basic .NET, ele é declarado como Sub Main() (um procedimento que não retorna valor) ou Function Main() (que pode retornar um valor inteiro, geralmente o código de saída do programa). Quando o programa é compilado e executado, o runtime procura por esse método para começar a executar as instruções.
A estrutura típica de um programa Visual Basic .NET inclui, em ordem:
Imports: diretivas que permitem usar tipos de outros namespaces sem qualificação completa (equivalente ao using em C#).
Namespace: um contêiner lógico para organizar tipos relacionados, como classes e módulos.
Module ou Class: contém os membros do programa, incluindo o método Main.
Sub Main(): o procedimento que contém o código a ser executado quando o programa inicia.
Por exemplo, um programa simples de soma poderia ser:
Module Program
Sub Main()
Dim a As Integer = 5
Dim b As Integer = 3
Dim soma As Integer = a + b
Console.WriteLine("Soma: " & soma)
End Sub
End ModuleNesse exemplo, o código que realiza a soma e exibe o resultado está dentro de Sub Main(). Sem esse procedimento, o compilador não sabe por onde começar a execução, e o programa não roda.
A pegadinha desta questão está em confundir os elementos estruturais do código: Imports, Namespace, Options e Function() são partes válidas de um programa, mas não são o escopo onde o código de execução principal deve ser inserido. O candidato que não conhece a estrutura de um programa VB.NET pode marcar Namespace ou Function(), mas o ponto de entrada é sempre Sub Main().
Guarde o critério decisivo: o escopo que contém o código a ser executado no início do programa é o procedimento Sub Main() — é nele que o runtime inicia a execução. As demais opções são elementos de organização ou declaração, não o ponto de entrada.
Imports é uma diretiva que permite usar tipos de outros namespaces sem qualificação completa. Ela não é um escopo de execução; é apenas uma declaração que facilita a referência a tipos. O código de execução não pode ser inserido diretamente em Imports.
Namespace é um contêiner lógico para organizar tipos, como classes e módulos. Ele define um escopo de declaração, mas não é o ponto de entrada do programa. O código de execução deve estar dentro de um procedimento, não diretamente em um Namespace.
Options não é uma palavra-chave válida em Visual Basic .NET para definir escopo de execução. Em VB.NET, existem diretivas como Option Explicit e Option Strict, mas elas são configurações do compilador, não escopos onde o código é inserido.
Function() é um procedimento que retorna um valor, mas não é o ponto de entrada padrão do programa. Em VB.NET, o ponto de entrada é Sub Main() ou Function Main(). A alternativa apresenta Function() sem o nome Main, o que não é um escopo de execução válido para o início do programa.
Sub Main() é o procedimento que define o ponto de entrada do programa em Visual Basic .NET. O runtime do .NET inicia a execução pelo método Main, e todo o código que deve ser executado ao iniciar o programa precisa estar dentro desse procedimento. É exatamente o que a alternativa afirma.
Gabarito: letra E — o código deve ser inserido no escopo Sub Main(), que é o ponto de entrada do programa em Visual Basic .NET.
Link permanente: /questoes/qq830507