Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computação
Unidade VIII:
1
Escola Nacional de Ciências Estatísticas
Introdução
Em seguida gere um relatório que liste todas as notas e indique as que estão acima da
média.
2
Escola Nacional de Ciências Estatísticas
program UsaFlag;
var VET_NOTAS: array[1..100] of real; {vetor com as notas}
QTD_NOTAS: integer; {quantidade de notas do vetor}
DISC: string; {nome da disciplina}
MEDIA: real; {média das notas}
SOMA: real; {soma das notas}
AUX: real; {auxiliar: recebe nota da disciplina}
I: integer; {usada no loop for-do}
begin
writeln('Programa Notas Finais');
writeln('=====================');
writeln;
3
Escola Nacional de Ciências Estatísticas
program UsaPergunta;
var VET_NOTAS: array[1..100] of real; {vetor com as notas}
QTD_NOTAS: integer; {quantidade de notas do vetor}
DISC: string; {nome da disciplina}
MEDIA: real; {média das notas}
SOMA: real; {soma das notas}
AUX: real; {auxiliar: recebe nota da disciplina}
I: integer; {usada para armazenar notas no vetor e no loop
for-do}
begin
writeln('Programa Notas Finais');
writeln('====================='); writeln;
4
Escola Nacional de Ciências Estatísticas
repeat
write('Qual eh o total de notas a ser digitado (MAX = 100)? ');
readln(QTD_NOTAS);
if (QTD_NOTAS < 1) or (QTD_NOTAS > 100) then
writeln('VALOR INVALIDO!');
until (QTD_NOTAS <= 100) and (QTD_NOTAS > 0);
5
Escola Nacional de Ciências Estatísticas
Figura VIII.2– Execução do programa das médias resolvido com pergunta ao usuário.
No caso desse programa, a idéia principal foi a de garantir com que o usuário
digitasse um valor correto (entre 1 e 100) para a quantidade de notas no PASSO 2. Depois
disso o problema pôde ser resolvido normalmente, de uma forma muito similar à utilizada
no Exemplo VIII.1.
Na Estatística, existem muitos problemas que podem ser resolvidos apenas quando
o conjunto de dados a ser analisado estiver classificado de alguma maneira. Um exemplo
típico é a obtenção da mediana de uma distribuição, onde é preciso dispor os dados em
ordem de tamanho para que seja possível encontrar “o ponto do meio” (veja o quadro
abaixo).
CALCULO DA MEDIANA
Recorde que, a posição do valor da mediana é dada pela fórmula (N + 1) / 2, onde N representa o
número de casos da distribuição. Quando temos um número ímpar de observações, a mediana é o
caso que recai exatamente no meio da distribuição:
Pela fórmula (8 + 1) / 2 = 4,5, a posição da mediana recai a meio caminho entre o quarto e o quinto
valor. Nesse caso a mediana é igual a (16 + 17) / 2 = 16,5.
6
Escola Nacional de Ciências Estatísticas
Existem muitos outros problemas práticos que precisam de casos ordenados ou que,
ao menos, tornam-se mais fáceis de serem resolvidos quando as observações estão
ordenadas. Exemplos:
1
Uma outra alternativa consiste em usar um algoritmo que já insira os dados de forma ordenada, no entanto
esse processo é mais custoso e complicado.
7
Escola Nacional de Ciências Estatísticas
• Ao final da primeira fase, o maior elemento terá sido empurrado para o mais alta
subscrito do vetor (subscrito N). Com isso, na segunda fase, podemos reduzir a
faixa do vetor a ser analisada (agora poderemos analisar da posição 1 até a
posição N-1). Ao final da segunda fase, o segundo maior elemento terá sido
empurrado para a penúltima posição do vetor. Com isso, a partir da terceira fase,
podemos reduzir novamente a faixa do vetor a ser analisada (agora podemos
examinar do subscrito 1 até o subscrito N-2).
1a FASE – Será preciso analisar todos os elementos. No fim desta fase, o valor 65 será
empurrado para a quinta posição do vetor.
ITERAÇÃO 1.1: Compara-se 55 (valor da posição 1) com 41 (valor da posição 2). Como 55
é maior do que 41, os dois são trocados de posição.
1 2 3 4 5
V 55 41 39 65 20
ITERAÇÃO 1.2: Compara-se 55 (valor da posição 2) com 39 (valor da posição 3). 55 > 39,
então os dois são trocados de posição.
2
Na prática, o algoritmo Bubble Sort apresenta um desempenho muito inferior ao de outros algoritmos de
ordenação, como o QuickSort, por exemplo. Em contrapartida, ele é muito mais simples de ser entendido. Por
esta razão costuma ser introduzido nos cursos de iniciais de programação.
8
Escola Nacional de Ciências Estatísticas
1 2 3 4 5
V 41 55 39 65 20
ITERAÇÃO 1.3: Compara-se 55 (valor da posição 3) com 65 (valor da posição 4). Como 55
é menor do que 65, os dois elementos NÃO são trocados de lugar!
1 2 3 4 5
V 41 39 55 65 20
ITERAÇÃO 1.4: Compara-se 65 (valor da posição 4) com 20 (valor da posição 5). 65 > 20,
então os dois são trocados de posição.
1 2 3 4 5
V 41 39 55 65 20
1 2 3 4 5
V 41 39 55 20 65
2a FASE – Agora eu não preciso analisar o último subscrito do vetor, pois já sei que ele
contém o maior elemento.
ITERAÇÃO 2.1: Comparação entre 41 (valor da posição 1) e 39 (valor da posição 2). 41 > 39
- são trocados de posição.
1 2 3 4 5
V 41 39 55 20 65
ITERAÇÃO 2.2: Comparação de 41 com 55. 41 < 55 - NÃO são trocados de posição.
1 2 3 4 5
V 39 41 55 20 65
9
Escola Nacional de Ciências Estatísticas
1 2 3 4 5
V 39 41 20 55 65
ITERAÇÃO 3.1: Comparação entre 39 e 41. 39 > 41 – NÃO são trocados de posição.
1 2 3 4 5
V 39 41 20 55 65
1 2 3 4 5
V 39 20 41 55 65
4a FASE – ÚLTIMA FASE – é preciso comparar apenas os dois primeiros elementos do vetor.
1 2 3 4 5
V 20 39 41 55 65
Observações:
1. Para ordenar o vetor de tamanho 5, foi preciso executar um total de 4 fases. Para
um vetor de tamanho N, o algoritmo executa N – 1 fases.
10
Escola Nacional de Ciências Estatísticas
end;
Figura VIII.4 – Bubble Sort implementado em Pascal
1. A variável aux deve ser do mesmo tipo de dado do vetor a ser ordenado. Se
estamos ordenando um vetor de reais, aux deve ser do tipo real. Se for um vetor
de inteiros, aux tem que ser do tipo inteiro.
2. x
Crie um programa que leia uma distribuição composta por, no máximo, 1000 observações e
que determine o valor da mediana.
program CalculaMediana;
const MAX = 1000;
var VET: array[1..MAX] of real; {vetor com as observações}
N, I, FASE: integer; {variáveis usadas pelo BubbleSort}
aux: real; {auxliar para a troca de elementos no
Bubble Sort}
MEDIANA: real;
begin
writeln('Programa Mediana');
11
Escola Nacional de Ciências Estatísticas
writeln;
for FASE := 1 to N – 1 do
for I:=1 to N – FASE do
if VET[I] > VET[I+1] then
begin
aux:= VET[I];
VET[I]:= VET[I+1];
VET[I+1] := aux;
end;
I := (N + 1) DIV 2;
if (N MOD 2 = 1) then {N é impar}
MEDIANA := VET[I]
else {N é par}
MEDIANA := (VET[I] + VET[I+1]) / 2;
writeln('Mediana = ',MEDIANA:6:2);
readln;
end.
12
Escola Nacional de Ciências Estatísticas
1) (3,0 PONTOS) Crie um programa que leia N números reais (10 ≤ N ≤ 500) e armazene em um
vetor. Em seguida ordene o vetor e imprima os números localizados nos 5 primeiros subscritos e
os números localizados nos 5 últimos subscritos do vetor.
2) (7,0 PONTOS) CÁLCULO DO MODA: A moda é o valor mais freqüente, mais típico em uma
distribuição. Por exemplo:
Faça um programa que leia uma distribuição com, no máximo, 400 valores inteiros e que
determine qual é a moda.
Observações:
1. Antes de fazer o programa, elabore um algoritmo que descreva os passos da sua idéia
para a resolução do problema. Não tente sair programando direto! É sempre melhor
projetar uma solução antes, com o uso de diagramas e da descrição dos passos em
Português.
2. A resolução deste problema torna-se mais simples se você ordenar o conjunto de valores
que compõem a distribuição.
3. Seu programa deve ser esperto o suficiente para identificar distribuições que contenham 2
ou mais modas. Exemplo: no conjunto 6, 6, 7, 2, 6, 1, 3, 2, 2, 4 os valores 2 e 6 ocorrem
ambos com a maior freqüência. Portanto, trata-se de uma distribuição com duas modas
(distribuição bimodal).
13