1. Questões do teste (Código HTML completo)

<form action='correcao.php' method=post>

1. Um objetivo educacional é formulado em termos operacionais, PORQUE
 ele expressa o que se pretende que o aluno aprenda ao final de uma unidade
Resposta:
<select name=q1>
<option value=a> A </option>
<option value=b> B </option>
<option value=c> C </option>
<option value=d> D </option>
</select>

<input type=submit value='Correção automática do teste'>

</form>

Questões do teste (Código HTML comentado)

Nota sobre código HTML: Todas as TAGs (operações especiais) dentro de um arquivo HTML ficam entre os sinais < e >. Por exemplo, para tornar uma parte do texto negrito:
"Isto é um texto. <b>Esta parte</b> ficará em negrito."

Agora passaremos a analisar o arquivo com as questões:

<form action='correcao.php' method=post>

A TAG form cria um espaço onde o usuário escreve ou seleciona alternativas no documento para uso futuro. Nesse caso, os dados serão enviados para "correcao.php", o arquivo que faz as correções automáticas.

<select name=q1>
<option value=a> A </option>
<option value=b> B </option>
<option value=c> C </option>
<option value=d> D </option>
</select>

A TAG select é onde algumas alternativas serão disponibilizadas para o usuário. Cada conjunto de alternativas precisa ter um nome distinto, o nome desta é "q1".
Entre as TAGs que dão início e terminam o conjunto select estão as opções disponíveis: A, B, C e D.

<input type=submit value='Correção automática do teste'>

A TAG input com type definido como "submit", cria um botão que envia os dados das respostas para o arquivo definido na primeira TAG form. O arquivo definido fará as correções, suprido com as respostas selecionadas neste documento.

2. Correção do teste automático (Código PHP completo)

<?php

$respostas[1] = 'd';
$respostas[2] = 'a';
$respostas[3] = 'b';
$respostas[4] = 'b';
$respostas[5] = 'c';
$respostas[6] = 'a';
$respostas[7] = 'a';
$respostas[8] = 'a';
$respostas[9] = 'b';
$respostas[10] = 'd';

$corretas=0;
$erradas=0;

foreach( $respostas AS $questao_numero => $resposta ) {
	$questao_nome = 'q'.$questao_numero;
	unset( $correta );
	if( $resposta == $_POST[$questao_nome] ) { $correta = TRUE; }
	$alternativa_aluno = strtoupper( $_POST[$questao_nome] );
	$alternativa_correta = strtoupper( $resposta );
	echo "Questão {$questao_numero}:";
	if( $correta ) {
		echo " Correta! Alternativa {$alternativa_correta}.";
		$corretas++;
	} else {
		echo " <font color=red>Errada. Selecionada alternativa {$alternativa_aluno}.
		 Correta: {$alternativa_correta}.</font>";
		$erradas++;
	} // else
	echo "<br>";
} // foreach

$respostas_numero = count($respostas);

$nivel = 80;

$percentual = $corretas * ( 100 / $respostas_numero );

if( $percentual >= $nivel ) {
	$cor = '#efe';
	$msg = "Você atingiu o percentual necessário de acertos! Passe para o próximo módulo.";
} else {
	$cor = '#fee';
	$msg = "Você não atingiu o percentual necessário de acertos! Siga as instruções do fluxograma.";
} // else

echo "<p><div style='background: {$cor}; padding: 10px; font-weight: bold; text-align: center;'>
Você acertou {$corretas} questão(ões). Errou {$erradas}. Percentual de acertos: {$percentual}%.
<br>{$msg}
</div>";

?>

Questões do teste (Código PHP comentado)

Nota sobre código PHP: Trata-se de uma linguagem de programação, portanto uma das coisas mais importantes são as variáveis. Variável é algo que armazena uma informação, como uma pasta que guarda um documento. Para guardar uma informação numa variável, primeiro damos nome à ela usando o símbolo $, depois mandamos que ela guarde uma informação qualquer, usando o símbolo =. Por exemplo:

$fruta = 'laranja';

Depois podemos usar a informação guardada nessa variável chamando ela pelo nome. Por exemplo:

echo "A minha fruta favorita é $fruta, e a sua?";

Agora passaremos a analisar o código de correção:

<?php

Qualquer código PHP deve iniciar com a TAG <?php e terminar com a TAG ?>.

$respostas[1] = 'd';
$respostas[2] = 'a';
$respostas[3] = 'b';
$respostas[4] = 'b';
$respostas[5] = 'c';
$respostas[6] = 'a';
$respostas[7] = 'a';
$respostas[8] = 'a';
$respostas[9] = 'b';
$respostas[10] = 'd';

Esse conjunto de variáveis guarda as 10 respostas corretas do teste: D, A, B, B, etc.

foreach( $respostas AS $questao_numero => $resposta ) {

O comando foreach acessa cada uma das respostas e permite fazermos qualquer coisa com qualquer uma delas.

$questao_nome = 'q'.$questao_numero;
unset( $correta );
if( $resposta == $_POST[$questao_nome] ) { $correta = TRUE; }
$alternativa_aluno = strtoupper( $_POST[$questao_nome] );
$alternativa_correta = strtoupper( $resposta );
echo "Questão {$questao_numero}:";

Essa complexa seqüência de código lembra do nome da alternativa e compara a reposta do usuário com a resposta correta. O símbolo para comparar duas variáveis é ==.

$respostas_numero = count($respostas);

$nivel = 80;

$percentual = $corretas * ( 100 / $respostas_numero );

if( $percentual >= $nivel ) {
	$cor = '#efe';
	$msg = "Você atingiu o percentual necessário de acertos! Passe para o próximo módulo.";
} else {
	$cor = '#fee';
	$msg = "Você não atingiu o percentual necessário de acertos! Siga as instruções do fluxograma.";
} // else

Essa parte estabelece uma exigência de acertos de 80%: $nivel = 80;
Depois calcula se a quantidade de acertos do usuário atinge o percentual exigido: if( $percentual >= $nivel )
Então gera duas mensagens, uma para sucesso no percentual exigido, e outra para falha.

echo "<p><div style='background: {$cor}; padding: 10px; font-weight: bold; text-align: center;'>
Você acertou {$corretas} questão(ões). Errou {$erradas}. Percentual de acertos: {$percentual}%.
<br>{$msg}
</div>";

A última parte mistura código HTML e PHP, para gerar a mensagem final para o usuário, dizendo se ele foi bem sucedido. A mensagem tem cor de fundo, fonte em estilo negrito, e é alinhada no centro da linha.

Com isso, terminamos a explicação de como é feito um teste com correção automática pela Internet! Para aprender mais sobre HTML e PHP, acesse os sites www.w3.org e www.php.net ou procure por cursos impressos ou on-line.