• Nenhum resultado encontrado

Aula 07 - Estruturas de Dados

N/A
N/A
Protected

Academic year: 2021

Share "Aula 07 - Estruturas de Dados"

Copied!
7
0
0

Texto

(1)

Lógica e Linguagem de Programação

Prof. Eng. Derig Almeida Vidal

Mestre em Computação Aplicada, Engenheiro de Produção e Tecnólogo em Automática

Aula 07

Estruturas de Dados

Prof. Derig Almeida Vidal, MSc

Sumário

• Introdução • Vetores • Matrizes • Exercícios

Prof. Derig Almeida Vidal, MSc

Introdução

• Ao utilizamos variáveis, podemos armazenar apenas um valor por vez.

• Agora, imagine um programa onde precisa-se armazenar as notas de 5 provas realizadas por um aluno.

• Para isso seria necessário criar cinco variáveis para armazenar as notas.

• Desta forma:

NOTA1, NOTA2, NOTA3, NOTA4, NOTA5 : real;

Prof. Derig Almeida Vidal, MSc

Introdução

• Em Pascal existem estruturas que nos permitem agrupar várias informações dentro de uma mesma variável.

• Estas estruturas são chamadas de: – Vetores; e,

(2)

Prof. Derig Almeida Vidal, MSc

Vetores

• Este tipo de estrutura é também chamado de

matriz unidimensional.

• Um vetor é representado por seu nome, tamanho e seu tipo. Sintaxe:

Nome_da_variável : ARRAY[tamanho] of tipo_de_dado;

• O tamanho é o tamanho atribuído ao vetor, em número de elementos e tipo_de_dado é o tipo de elemento armazenado (inteiro, real, etc.).

Prof. Derig Almeida Vidal, MSc

Vetores

• Os vetores poderão armazenar mais de um valor por vez, pois são dimensionados exatamente para este fim.

• Exemplo de declaração:

NOTAS : array[1..5] of real;

• A leitura e exibição de vetores são feitas indicando individualmente quais elementos se deseja ler ou imprimir.

Vetores

• Vejamos como inserir as notas do aluno: NOTAS[1] := 5.2;

NOTAS[2] := 8.0; NOTAS[3] := 9.2; NOTAS[4] := 7.5; NOTAS[5] := 8.3;

• Observe que o nome é um só, o que muda é a informação indicada dentro dos colchetes.

• A esta informação dá-se o nome de índice, sendo

este o endereço onde o valor está armazenado, ou seja, a nota do aluno.

Vetores

• Podemos imaginar o vetor como uma tabela com cinco colunas:

(3)

Prof. Derig Almeida Vidal, MSc

Vetores

• Exemplo:

• Para ler dados do teclado e atribuir a um vetor: for i:=1 to 7 do

readln(vetor[i]);

• Para imprimir os elementos de um vetor: for i:=1 to 7 do

writeln(vetor[i]);

Prof. Derig Almeida Vidal, MSc

Vetores

program vetor;

var a: array[1..10] of real; i: integer;

begin

for i:=1 to 10 do begin

writeln(‘digite o elemento ’,i,’ do vetor’); readln(a[i]);

end;

writeln(‘elementos do vetor em ordem inversa’); for i:=10 downto 1 do

writeln(a[i]:8:2); end. i ← 1,10,1 Fim Inicio a [ i ] I ← 10,1,1 a [ i ]

Prof. Derig Almeida Vidal, MSc

Exercícios

1. Leia e exiba o nome de 5 pessoas, armazenando anteriormente em um vetor.

2. Faça um programa que carregue 2 vetores com 5 elementos numéricos cada um e imprima um vetor resultante da intercalação desses 2 vetores.

3. Faça um programa que carregue 1 vetor de 6 elementos inteiros; calcule e imprima a quantidade de números pares e a quantidade de números ímpares.

4. Faça um programa que leia as notas da primeira prova de 5 alunos e armazene essas notas em um vetor. Receba as notas da segunda prova e armazene essas em um outro vetor. Calcule e imprima a média entre essas 2 notas de cada aluno.

Prof. Derig Almeida Vidal, MSc

1ª Questão

Program questao_1;

Var NOME : array[1..5] of string; I: integer;

begin

writeln('Lista de nomes'); for I := 1 to 5 do

begin

write('Digite o ', I:2, ' o. nome: '); readln(NOME[I]);

end;

for I := 1 to 5 do

writeln('Nome: ' , I:2, ' --> ', NOME[I]); end. I ← 1,5,1 Fim Inicio NOME [ I ] I ← 1,5,1 NOME [ I ]

(4)

Prof. Derig Almeida Vidal, MSc

2ª Questão

Program questao_2 ; var I,indece : integer;

A,B : array[1..5] of integer; C : array[1..10] of integer; begin

indice := 1; for I:= 1 to 5 do

begin

writeln('Digite valores de A'); readln(A[I]); end; for I:= 1 to 5 do begin writeln('Digite valores de B'); readln(B[I]); end; for I:= 1 to 5 do begin C[indice] := A[I]; indice:=indice+1; C[indice] := B[I]; indice:=indice+1; end; writeln('Valores Intercalados'); for indice:= 1 to 10 do begin writeln(C[indice]); end; End.

Prof. Derig Almeida Vidal, MSc I ← 1,5,1 Fim Inicio A[ I ] indice ← 1 C[Indice] indice ← 1,10,1 indice ← indice+1 I ← 1,5,1 B[ I ] C[indice] ← A[ I ] C[indice] ← B[ I ] indice ← indice+1

3ª Questão

Program questao_3 ;

var A : array[1..6] of integer; i,qtdp,qtdi: integer begin qtdp :=0; qtdi :=0; for i:= 1 to 6 do begin writeln('Digite os numeros'); readln(A[i]); end; for i:= 1 to 6 do begin

if (A[i] mod 2 = 0) then

qtdp = qtdp +1; else

qtdi = qtdi +1; end;

writeln(‘O total de pares eh',qtdp); writeln(‘O total de impares eh',qtdi); End. i ← 1,6,1 Fim Inicio qtdp = qtdp +1 qtdi ← 0 qtdi = qtdi +1 A[i] mod 2 = 0 qtdp ← 0 A [ i ] A [ i ] i ← 1,6,1

(5)

Prof. Derig Almeida Vidal, MSc

4ª Questão

Program questao_4 ;

var A,B : array[1..5] of integer; i : integer;

C : array[1..5] of real; begin

for i:= 1 to 5 do begin

writeln('Digite a 1a nota do',i,‘o Aluno');

readln(A[i]); end;

for i:= 1 to 5 do begin

writeln('Digite a 2a nota do',i,‘o

Aluno'); readln(B[i]); end; for i:= 1 to 5 do begin C[i]:=((A[i]+B[i])/2); end; for i:= 1 to 5 do begin

writeln('A media do aluno ',i,'º Eh:',C[i]);

end; End.

Prof. Derig Almeida Vidal, MSc I ← 1,5,1 Fim Inicio A[ i ] I ← 1,5,1 C[i] ← ((A[i]+B[i])/2 I ← 1,5,1 B[ i ]

Prof. Derig Almeida Vidal, MSc

Matrizes

• Vamos imaginar que queremos reescrever o programa das notas do aluno, agora mantendo o controle para cinco alunos ao invés de apenas um. • Seria necessário criar cinco vetores (matrizes

unidimensionais), um para cada aluno.

• Para facilitar o trabalho com estruturas deste porte, existem as chamadas matrizes (ou matrizes

multidimensionais).

• A mais comum é a matriz de duas dimensões.

Prof. Derig Almeida Vidal, MSc

Matrizes

• Uma matriz de duas dimensões estará sempre fazendo menção a linhas e colunas e será representada por seu nome e seu tamanho. • Sintaxe:

Nome_matriz : array [dimensão_linha, dimensão_coluna] of <tipo_de_dado>;

• Dimensão_linha é o tamanho da matriz em número de linhas, dimensão_coluna é o tamanho da matriz em número de colunas e tipo_de_dado é o tipo do elemento armazenado(inteiros, reais...).

(6)

Prof. Derig Almeida Vidal, MSc

Matrizes

• Vejamos como ficaria a matriz das notas dos nossos 5 alunos:

• Em Pascal:

NOTAS : array[1..5,1..4] of real;

Prof. Derig Almeida Vidal, MSc

Matrizes

• Para atribuir valores:

{Atribui o valor 5 a primeira linha da quarta coluna} X[1,4]:=5;

{Atribui a palavra a primeira linha da quarta coluna} Mat[2,3]:=‘Dia’;

Matrizes

• Para ler valores:

for i:=1 to 5 do begin

for j:= 1 to 3 do readln(mat[i,j]); end;

• Para escrever valores:

for i:=1 to 5 do begin for j:= 1 to 3 do writeln(mat[i,j]); end;

Matrizes

program nota_aluno;

var notas : array[1..5,1..4] of real; i, j : integer;

begin

writeln(‘leitura e apresentacao da notas’); for i := 1 to 5 do

begin

writeln(‘informe as notas do ’, i:2, ‘o. aluno: ’); for j:= 1 to 4 do begin write(‘nota’, j:2, ‘:’); readln(notas[i, j]); end; end; for i:= 1 to 5 do begin

write(‘as notas do aluno ’, i:2, ‘ são: ’); for j := 1 to 4 do

write(notas[i, j] :2 :2, ‘ ’); end; end.

(7)

Prof. Derig Almeida Vidal, MSc

Exercícios

1. Leia e exiba o nome (1º coluna) e sobrenome (2º coluna) de 5 pessoas.

2. Faça um programa que carregue duas matrizes 3 x 4 com números inteiros, calcule e imprima a matriz resultante da soma dessas duas matrizes.

3. Faça um programa que carregue uma matriz 2 x 2 com números reais, calcule e imprima a soma dos elementos da diagonal principal.

4. Faça um programa que carregue uma matriz 3 x 2 com números inteiros, calcule e imprima o maior elemento da matriz e com a sua respectiva posição (linha e coluna).

Prof. Derig Almeida Vidal, MSc

Exercícios

5. Desenvolver um programa de agenda que cadastre o nome, endereço, CEP, bairro e telefone de 10

pessoas.

Prof. Derig Almeida Vidal, MSc

Bibliografia

• ASCENCIO, Ana Fernanda Gomes. Lógica de Programação com Pascal. São Paulo: Makron Books, 2003.

Prof. Derig Almeida Vidal, MSc

Observações

• Exercícios resolvidos e fluxogramas elaborados por Aldemir Alencar Alves (inspiracaoal@hotmail.com) • Visite o site do professor Derig Almeida Vidal

(https://sites.google.com/site/derigalmeida/) • Caso encontre erros, favor nos informar.

Referências

Documentos relacionados

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

Mesmo possuindo permeabilidade e porosidade sensivelmente diferentes entre as formações estudadas, os plugues 02 e 04 apresentaram as maiores eficiências de recuperação

• Árvores são ideais para armazenar hierarquias, além de serem mais rápidas e eficientes do que as estruturas de dados lineares... • É formada por um “conjunto de

– Os elementos devem estar ordenados – Realizar a busca pelo meio do vetor.

• Estas árvore podem assumir diferentes formas quando criadas ou modificadas. – A ordem de inserção ou remoção influem no formato

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo