Pular para o conteúdo principal

Questão de Arquitetura de Software — Software — FCC 2023

Arquitetura de SoftwareSoftware
Código
fc069488
Banca
FCC
Órgão
TRT - 12ª Região (SC)
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Área de Apoio Especializado (Especialidade Tecnologia da Informação)

Considere a função em PHP abaixo que gera uma string aleatória formada por caracteres restritos a letras maiúsculas e números. O tamanho da string é passado como parâmetro e a string resultante tem essa quantidade de caracteres.


function gera$tringAleatoria($tamanho) {

$caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

$stringAleatoria = ' ';

for ($i = 0; $i < $tamanho; $i++) {

}

return $stringAleatoria;

}


Para que esta função, posteriormente, seja incluída em um código e testada em condições ideais, a lacuna I deve ser corretamente preenchida com:

  1. A$stringAleatoria .= caracteres[rand(0strlen(caracteres[rand(0 strlen(caracteres) - 1)];
  2. B$stringAleatoria = caracteres[random(0,strlen(caracteres[random(0, strlen(caracteres))];
  3. C$stringAleatoria = caracteres[srand(1,strlength(caracteres[srand(1, strlength(caracteres-1))];
  4. D$stringAleatoria =. caracteres[rand(0,strlen(caracteres[rand(0, strlen(caracteres) - 1)];
  5. E$stringAleatoria += caracteres[random(1,strlen(caracteres[random(1, strlen(caracteres))];
Revelar gabarito e comentário

GabaritoA — $stringAleatoria .= $caracteres[rand(0 strlen($caracteres) - 1)];

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”.

Preenchimento de lacuna em PHP: geração de string aleatória

Gabarito: letra A. A única alternativa que emprega corretamente a função rand() para gerar um índice aleatório válido e o operador de concatenação .= é a alternativa A, desde que considerada a vírgula entre os argumentos (como na sintaxe padrão rand(0, strlen($caracteres) - 1)). As demais alternativas apresentam funções inexistentes, operadores equivocados ou índices fora do intervalo.

A função gera$tringAleatoria recebe um inteiro $tamanho e deve retornar uma string com esse número de caracteres, cada um sorteado do conjunto 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' (36 caracteres). O índice deve variar de 0 a 35, portanto o limite superior é strlen($caracteres) - 1 = 35. A cada iteração, um caractere é concatenado à string acumuladora.

  1. 1Concatenar com .=
  2. 2Índice: rand(0, strlen-1)
  3. 3Apenas A é correta
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

$stringAleatoria .= $caracteres[rand(0, strlen($caracteres) - 1)];

  • Usa o operador de concatenação com atribuição .= (ponto seguido de igual), que adiciona o caractere sorteado ao final da string.

  • Chama rand(0, $max) com dois argumentos separados por vírgula, gerando um inteiro aleatório entre 0 e 35, que é um índice válido do array de caracteres.

  • A expressão strlen($caracteres) - 1 calcula corretamente o último índice.

SE LIGUE NESSA!

Na transcrição fornecida, a alternativa A aparece sem a vírgula entre 0 e strlen, o que geraria erro de sintaxe no PHP. Porém, o gabarito oficial (FCC) considera a alternativa correta, indicando que na prova original a vírgula estava presente ou que o erro de digitação é irrelevante para o julgamento. Em questões de concurso, prevalece a intenção da banca.

Alternativa B — ❌ Incorreta

$stringAleatoria = $caracteres[random(0, strlen($caracteres))];

  • A função random() não existe no PHP. As funções nativas para números aleatórios são rand(), mt_rand(), random_int(), etc.

  • O índice máximo é strlen($caracteres) = 36, que está fora do intervalo válido (0 a 35), causando acesso a posição inexistente.

  • Em vez de concatenar, a atribuição simples = sobrescreve a string a cada iteração.

Alternativa C — ❌ Incorreta

$stringAleatoria = $caracteres[srand(1, strlength($caracteres-1))];

  • srand() é a função de semente (seed) do gerador, não retorna um número aleatório.

  • strlength não existe; o nome correto é strlen.

  • $caracteres-1 é inválido: não se pode subtrair um inteiro de uma string.

  • Novamente, usa = em vez de .=.

Alternativa D — ❌ Incorreta

$stringAleatoria =. $caracteres[rand(0, strlen($caracteres) - 1)];

  • O operador =. (ponto seguido de igual) não é reconhecido pelo PHP. O operador correto é .= (a ordem dos símbolos é invertida).

  • Embora o restante da sintaxe esteja correto, esse erro de digitação invalida a alternativa.

Alternativa E — ❌ Incorreta

$stringAleatoria += $caracteres[random(1, strlen($caracteres))];

  • += é operador de adição aritmética, não de concatenação de strings.

  • random() não existe.

  • O índice começa em 1, ignorando o primeiro caractere ('A'), e o limite superior é strlen($caracteres) = 36, novamente fora do intervalo.

Gabarito: letra A.

Link permanente: /questoes/fc069488