Buscar

Programa para Ordenação de Valores Inteiros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Fundamentos da 
Computação
Priscilla Fonseca de Abreu 
Braz
turmas_uerj@yahoo.com.br
Universidade do Estado do Rio de Janeiro
Instituto de Matemática e Estatística
Exercício - Classificação 
• Elabore um programa que leia 10 valores 
inteiros e classifique-os em ordem 
crescente.
Solução
• Criar uma tabela com 10 valores inteiros
• Ler os 10 valores
• Comparar cada valor com os demais 
elementos do vetor. Caso esteja fora de 
ordem, realizar a troca.
Simulação (1)
pospos valorvalor
11 66
22 55
33 44
44 33
Compara pos(1) com pos(2)
Verifica se está em ordem
Troca se não estiver na ordem
Aux:= 6 
(1)
(3)
pospos valorvalor
11 55
22 66
33 44
44 33
Simulação (2)
pospos valorvalor
11 55
22 66
33 44
44 33
Compara pos(1) com pos(3)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 5 
(1)
(3)
pospos valorvalor
11 44
22 66
33 55
44 33
Simulação (3)
posiposiççãoão valorvalor
11 44
22 66
33 55
44 33
Compara pos(1)com pos(4)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 4 
(1)
(3)
pospos valorvalor
11 33
22 66
33 55
44 44
Simulação (4)
posiposiççãoão valorvalor
11 33
22 66
33 55
44 44
Compara pos(2) com pos(3)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 6 
(1)
(3)
pospos valorvalor
11 33
22 55
33 66
44 44
Simulação (5)
posiposiççãoão valorvalor
11 33
22 55
33 66
44 44
Compara pos(2) com pos(4)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 5
(1)
(3)
pospos valorvalor
11 33
22 44
33 66
44 55
Simulação (6)
pospos valorvalor
11 33
22 44
33 66
44 55
Compara pos(3) com pos(4)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 6 
(1)
(3)
pospos valorvalor
11 33
22 44
33 55
44 66
Responda
• Quantos valores tinha a tabela?
• Na primeira passada comparou-se pos(1) 
com que outros valores?
• Depois, quais foram as comparações?
PROGRAM ORDENA;
VAR
VETOR:ARRAY[1..10] OF INTEGER;
I,J:INTEGER;
AUX:INTEGER;
BEGIN
WRITELN('NÚMEROS LIDOS');
FOR I:= 1 TO 10 DO
BEGIN
WRITE('DIGITE O ',I,#167, ' NUMERO ');READLN(VETOR[I]);
END;
{ROTINA DE ORDENAÇÃO}
FOR I:= 1 TO 9 DO
FOR J:=I+1 TO 10 DO
IF VETOR[I] > VETOR[J] THEN
BEGIN
AUX:=VETOR[I];
VETOR[I]:=VETOR[J];
VETOR[J]:=AUX;
END;
{NUMEROS ORDENADOS}
WRITELN(‘NUMEROS ORDENADOS ');
FOR I:=1 TO 10 DO
WRITELN(' ',VETOR[I]);
READKEY;
END.
Matriz Unidimensional
Nas últimas aulas vimos o conceito de vetor. Vejamos como 
poderíamos declarar um vetor para armazenar as quatro notas 
de um aluno:
notas: array [1..4] of real;
Este vetor poderia ser representado graficamente como:
Para armazenar e percorrer os dados deste vetor necessitamos 
de um contador que terá a função de controlar a posição em 
que cada valor será armazenado neste vetor.
Matriz Multidimensional
– Estrutura de dados com mais de um índice
– Sintaxe: 
– matriz: array[1..tamanho,1..tamanho, ...] of 
tipo;
– Exemplo:
• mat: array[1..10,1..10] of integer;
• mat2: array[1..2,1..5,1..5] of real;
Matriz Multidimensional
– Exemplo:
– E como ficaria sua declaração em Pascal:
– notas: array[1..5,1..4] of real;
Matriz Multidimensional
Para controlar a posição das matrizes (de duas 
dimensões) precisamos de mais um contador, pois 
além da linha a ser controlada é preciso verificar 
também a coluna.
Dessa forma, em uma matriz simples utilizaremos dois 
contadores.
Exemplo:
mat: array[1..3,1..3] of integer;
lin,col: integer;
for lin:=1 to 3 do
for col:=1 to 3 do
mat[lin,col]:= lin+col;
Matriz Multidimensional
program Teste_mat;
uses crt;
var
mat:array [1..2,1..2]of integer;
lin,col:integer;
begin
for lin:=1 to 2 do
for col:=1 to 2 do
begin
writeln('Informe o elemento da linha ',lin,' e coluna ',col);
readln(mat[lin,col]);
end;
writeln;
for lin:=1 to 2 do
begin
for col:=1 to 2 do
write(mat[lin,col],' ');
writeln;
end;
readkey;
end.
Matriz Multidimensional
Exemplo: 
Matriz Multidimensional
• Exemplo: 
Criar uma matriz identidade
matriz:array[1..3,1..3] of integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1 0
2 2
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1 0
2 2 1
2 3
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1 0
2 2 1
2 3 0
3 1
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1 0
2 2 1
2 3 0
3 1 0
3 2
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1 0
2 2 1
2 3 0
3 1 0
3 2 0
3 3
Matriz Multidimensional
•Execução:
matriz:array[1..3,1..3] of 
integer;
for lin:=1 to 3 do
for col:=1 to 3 do
begin
if (lin = col) then
matriz[lin,col] := 1
else
matriz[lin,col]:=0;
end;
Lin Col Matriz[lin,col]
1 1 1
1 2 0
1 3 0
2 1 0
2 2 1
2 3 0
3 1 0
3 2 0
3 3 1
Utilização de Constantes
• Vantagem na utilização de constantes: 
Se houver necessidade de alterar a dimensão 
do vetor, basta alterar o valor da constante 
DIM.
Utilização de Constantes
const
DIM = 100;
var
Lin,col:integer;
Tab:array [1..DIM,1..DIM] OF INTEGER; 
for lin:=1 to DIM do
for col:=1 to DIM do
begin
writeln(‘Linha ’,lin,’ coluna ‘,col);
readln(tab[lin,col]);
end;
for lin:=1 to DIM do
for col:=1 to DIM do
writeln(tab[lin,col]);
end;
Exercícios
Qual o conteúdo das matrizes M e N após a execução do algoritmo 
abaixo?
Exercícios
Qual o conteúdo das matrizes M e N após a execução do algoritmo 
abaixo?
1 2 1 2
1 2 1 2
1 2 1 2
A Z
Z A
M
N
Exercícios
1) Escreva um programa que leia caracteres em uma 
matriz 4x4 e após a leitura imprima os dados lidos.
2) Faça um programa que leia valores inteiros em duas 
matrizes 3x3 e imprima a matriz soma das duas.
3)Escreva um programa que leia os valores inteiros de uma 
matriz e após a leitura multiplique cada elemento dessa 
matriz por 2. Ao final a matriz resultante deve ser 
impressa.
Exercícios
PROGRAM MAT01;
USES CRT;
VAR
MAT:ARRAY[1..4,1..4] OF INTEGER;
LIN, COL:INTEGER;
BEGIN
FOR LIN:=1 TO 4 DO
BEGIN
FOR COL:=1 TO 4 DO
BEGIN
WRITELN('INFORME O VALOR PARA A POSIÇÃO [',LIN,',',COL,']');READLN(MAT[LIN,COL]);
END;
END;
FOR LIN:=1 TO 4 DO
BEGIN
FOR COL:=1 TO 4 DO
WRITE(MAT[LIN,COL],' ');
WRITELN;
END;
readkey;
END.
Exercícios
1) Escreva um programa que leia caracteres em uma 
matriz 4x4 e após a leitura imprima os dados lidos.
2) Faça um programa que leia valores inteiros em duas 
matrizes 3x3 e imprima a matriz soma das duas.
3)Escreva um programa que leia os valores inteiros de uma 
matriz e após a leitura multiplique cada elemento dessa 
matriz por 2. Ao final a matriz resultante deve ser 
impressa.
Exercícios
PROGRAM MAT02;
USES CRT;
CONST DIM=3;
VAR
MAT1,MAT2,SOMA:ARRAY[1..DIM,1..DIM] OF INTEGER;
LIN, COL:INTEGER;
BEGIN
FOR LIN:=1 TO DIM DO
FOR COL:=1 TO DIM DO
BEGIN
WRITELN('INFORME O VALOR PARA A POSIÇÃO [',LIN,',',COL,'] DA MATRIZ 1');
READLN(MAT1[LIN,COL]);
END;
FOR LIN:=1 TO DIM DO
FOR COL:=1 TO DIM DO
BEGIN
WRITELN('INFORME O VALOR PARA A POSIÇÃO [',LIN,',',COL,'] DA MATRIZ 2');
READLN(MAT2[LIN,COL]);
SOMA[LIN,COL]:= MAT1[LIN,COL]+MAT2[LIN,COL];
END;
WRITELN('MATRIZ SOMA:');
FOR LIN:=1 TO DIM DO
BEGIN
FOR COL:=1 TO DIM DO
WRITE(SOMA[LIN,COL],' ');
WRITELN;
END;
readkey;
END.
Exercícios
1) Escreva um programa que leia caracteres em uma 
matriz 4x4 e após a leitura imprima os dados lidos.
2) Faça um programa que leia valores inteiros em duas 
matrizes 3x3 e imprima a matriz soma das duas.
3)Escreva um programa que leia os valores inteiros de uma 
matriz 3X3 e após a leitura multiplique cada elemento 
dessa matriz por 2. Ao final a matriz resultante deve ser 
impressa.
Exercícios
PROGRAM MAT03;
USES CRT;
CONST DIM=3;
VAR
MAT1:ARRAY[1..DIM,1..DIM] OF INTEGER;
LIN, COL:INTEGER;
BEGIN
FOR LIN:=1 TO DIM DO
FOR COL:=1 TO DIM DO
BEGIN
WRITELN('INFORME O VALOR PARA A POSIÇÃO [',LIN,',',COL,'] DA 
MATRIZ 1');
READLN(MAT1[LIN,COL]);
MAT1[LIN,COL]:=MAT1[LIN,COL]*2;
END;
WRITELN('MATRIZ RESULTANTE:');
FOR LIN:=1 TO DIM DO
BEGIN
FOR COL:=1 TO DIM DO
WRITE(MAT1[LIN,COL],' ');
WRITELN;
END;
readkey;
END.

Outros materiais