Vous êtes sur la page 1sur 7

APIB-12BC

VETORES Como fazer para armazenar um conjunto de dados do mesmo tipo? Em Pascal, para declarar uma varivel que armazena um conjunto de dados do mesmo tipo utilizada a palavra array. Vamos supor que desejamos declarar uma varivel para armazenar o nome de uma pessoa. Como um nome constitudo por caracteres a declarao poderia ser, Var nome: array [1..100] of char; Esta declarao informa o computador para reservar 100 espaos em memria do tipo char , para armazenar o nome da pessoa. J o a q u i m C a n t a n t e

100 elementos

Na declarao entre parnteses retos colocado o nmero mximo de elementos do array. Neste caso, como no sabemos antecipadamente qual vai ser o tamanho do nome, colocamos um nmero grande. Exemplo 1: Dado o nome de uma pessoa, determinar o nmero de vogais contidos no nome. Para determinar o nmero de vogais vamos utilizar um contador. A cada passo vamos comparando os caracteres um por um e quando encontrar uma vogal vamos acrescentar 1 ao contador. Para verificar cada caracter dentro do array, vamos tambm precisar de um contador. Para evitar inserir o nome carcter a carcter, declaramos a varivel nome, na forma de string (funciona como um array de caracteres, mas permite ler o nome de uma s vez). Program Vogais; Var nome : string[100]; contador, i : integer; Begin contador:= 0; Readln (nome); For i:=1 to 100 do Begin if (nome[i] = 'a') then contador:=contador if (nome[i] = 'e') then contador:=contador if (nome[i] = 'i') then contador:=contador if (nome[i] = 'o') then contador:=contador if (nome[i] = 'u') then contador:=contador End; Writeln ('O nmero de vogais : ', contador); end. Exerccio:

+ + + + +

1; 1; 1; 1; 1;

Modifica o cdigo anterior de forma a contar cada uma das cinco vogais contidas num nome.
FM2012 1

APIB-12BC
Exemplo 2: Consideremos a situao de registo de temperaturas de um determinado sensor, ao longo de uma semana.
Temp[1] Temp[2] Temp[3] Temp[4] Temp[5] Temp[6] Temp[7]

25.0

27.2

28.6

26.5

22.0

19.2

17.5

Cada uma das temperaturas est numa posio do vetor (array) identificada pelo nome que se lhe atribuiu seguido do ndice da posio dessa temperatura. Este vetor poder ser declarado como var temp: array[1..7] of real; Como utilizar estes dados? Vamos ver alguns exemplos: 1 Ler as temperaturas: For i:=1 to 7 do Read(temp[i]); 2 - Para mostrar a temperatura do terceiro dia, bastaria escrever, Writeln(Temperatura de Quarta-feira = ,temp[3]); 3 - Mostrar as temperaturas todas: For i:=1 to 7 do Writeln('Temperatura do dia ',i,': = ',temp[i]);

FM2012

APIB-12BC
MATRIZES Uma matriz um array de duas dimenses. Uma matriz til por exemplo para armazenar tabelas, fazer clculos matemticos, fazer desenhos, resolver problemas, etc. Imagina que queremos guardar no computador uma lista de alunos com suas respetivas notas em todas as disciplinas lecionadas durante o ano. Por exemplo a tabela seguinte mostra uma lista de 10 alunos e as notas em 8 disciplinas.

Joo Pedro Gabriela Roberto Paulo Gisela Vera Jorge Paulo Flvio

d1 14

d2 14

d3 16

d4 18

d5 10

d6 12

d7 12

d8 18

mdia 14.25

Pretende-se fazer um programa para armazenar esta tabela e depois poder calcular por exemplo a mdia de todas as notas de todos os alunos. Em Pascal, uma matriz definida de forma muito semelhante a um vetor: Var notas : array [1..10,1..8] of integer; O nmero 10 indica o nmero mximo de linhas e o nmero 8 indica o nmero mximo de colunas. Se no soubermos com antecedncia qual o tamanho da matriz necessria, podemos reservar um nmero grande de linhas e colunas. Para tratar dados deste tipo, organizados na forma da tabela acima, no possvel faz-lo coma nica matriz, pois no se pode ter dados de tipos diferentes numa nica estrutura. Assim, vamos armazenar as notas numa matriz de nmeros inteiros. Exemplo 3: Um programa que l as notas dos alunos, calcula as mdias, guarda-as num vetor e mostra os resultados. Program Turma; {Esta matriz recebe no maximo 10 alunos e 8 disciplinas} Var notas: array [1..10,1..8] of integer; Media: array [1..8] of real; Soma: real; i,j,N,D: integer; Begin Write('NUMERO DE ALUNOS: '); Readln(N);
FM2012 3

APIB-12BC
Write('NUMERO DE DISCIPLINAS: '); Readln(D); For i:=1 to N do Begin For j:=1 to D do Begin {ler as notas dos alunos em cada disciplina} Write('ALUNO:',i,' :::: NOTA[',j,']='); Readln (notas[i][j]); End; End; {Processamento de Dados} For i:=1 to N do Begin Soma:=0; {inicializa a soma das notas do aluno i} For j:=1 to D do Begin {adiciona a soma, as notas da disciplina j} Soma:=Soma + notas[i][j]; End; Media[i]:=Soma/D; End; {Saida de Resultados} For i:=1 to N do Begin Writeln('NOTA MEDIA DO ALUNO ',i,' : ',Media[i]); End; End.

FM2012

APIB-12BC
Exemplo 4: Um programa que l os nomes dos alunos, as respetivas notas, calcula as mdias, guarda-as num vetor e mostra os resultados. Vamos agora modificar o programa anterior para tambm armazenar os nomes dos alunos num vetor de strings.
Notas[i,j] Nomes[i]
1 2 3 4 5 1 1 2 3 4 5 2 3 4 5 6

Z Jota Rui Kaka Xana

10

12

15

14

13

17

O programa dever ler os nomes dos alunos para um vetor de strings e as notas para uma matriz de inteiros. Program Turma; Var notas: array [1..10,1..8] of integer; Media: array [1..8] of real; aluno: array [1..10] of string; Soma: real; i,j,N,M: integer; Begin Write('NUMERO DE ALUNOS: '); Readln(N); Write('NUMERO DE DISCIPLINAS: '); Readln(M); For i:=1 to N do Begin Write('NOME DO ALUNO ',i,' : '); Readln(aluno[i]); For j:=1 to M do Begin Write('DISCIPLINA: ',j,' :: NOTA[',j,']='); Readln (notas[i][j]); End; End; For i:=1 to N do Begin Soma:=0; For j:=1 to M do Begin Soma:=Soma + notas[i][j]; End; Media[i]:=Soma/M; End; For i:=1 to N do Begin Writeln('MEDIA DO ALUNO ',aluno[i],' : ',Media[i]); End; End.
FM2012 5

APIB-12BC
Um exemplo de execuo do cdigo anterior:

Exerccios propostos
1- O misterioso algarismo do bilhete de identidade. J reparou que o seu B.I./C.C. tem um dgito suplementar depois do seu nmero. Para que serve? Trata-se apenas de um check digit (dgito de controlo) que atesta a veracidade do nmero do BI. Como o calcular?
O algoritmo simples. Basta multiplicar cada algarismo que compe o nmero do BI pelo valor da sua posio, sabendo que o algarismo de controlo ocupa a casa 1, e o algarismo que est sua esquerda ocupa a casa 2, e assim sucessivamente. No segundo exemplo ao lado, o nmero 9651593-7, (7 o algarismo de controlo) se aplicarmos o algoritmo de controlo, ficar assim: 9x8+6x7+5x6+1x5+5x 4 + 9 x 3 + 3 x 2 = 72 + 42 + 30 + 5 + 20 + 27 + 6 = 202 202 11 = 18,364 (NO D RESTO ZERO), mas se lhe adicionarmos 7, j d! 202 + 7 = 209 209 11 = 19 e resto zero!!!

Elabora um programa para calcular o dgito de controlo de qualquer BI. 2- Palimdromes - Uma cadeia de caracteres uma palndrome se a sequncia dos caracteres da cadeia da esquerda para direita igual sequncia de caracteres da direita para esquerda. Exemplos: ARARA, RADAR, AKASAKA, ANNA.

FM2012

APIB-12BC
Fazer um programa que reconhea se uma cadeia de caracteres palndrome. Usar a funo Length(s) para saber o tamanho da cadeia s. 3- Fazer um programa que dadas duas matrizes A e B, determina a soma de A e B. A soma de duas matrizes obtida pela soma dos elementos correspondentes de cada matriz e o resultado colocado numa outra matriz. Exemplo de soma de duas matrizes A e B de tamanho 3x3: A | 1 4 2 | | 0 5 1 | | 2 2 8 | B | 1 2 3 | | 1 0 1 | | 2 3 2 | C | 2 6 5 | | 1 5 2 | | 4 5 10|

4- Escreva um programa que, dada uma matriz quadrada de dimenso N, apresente: a) A soma da sua diagonal principal; b) A soma da sua diagonal secundria; c) As somas das linhas; d) As somas das colunas; e) A soma de todos os seus elementos;

FM2012

Vous aimerez peut-être aussi