Baixe o app para aproveitar ainda mais
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.
Compartilhar