Manual PSInf - Modulo 5

1,120 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,120
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Manual PSInf - Modulo 5

  1. 1. Bibliografia <ul><li>Bases de Programação da Plátano Editora, </li></ul><ul><li>Bases de Programação da Porto Editora, </li></ul><ul><li>Cardoso, Vasco, Fundamental do Turbo Pascal 6 e 7. Lisboa:FCA,1997 </li></ul><ul><li>Guerreiro, Pedro,Pascal, Técnicas de Programação- 3ª edição, Europa América </li></ul><ul><li>Byron S.Gottfried, Programação em Pascal, MC Graw-Hill </li></ul><ul><li>Internet </li></ul>
  2. 2. Programação Sistemas Informação Módulo V: Estrutura de Dados Compostas Módulo VI : Estrutura de Dados Dinâmicas Módulo VII: Tratamento de Ficheiros Módulo VIII: Conceitos Avançados de Programação Módulo IX: Introdução à Programação Orientada a Objectos Módulo X: Programação Orientada a Objectos Isabel Martins Gonçalves
  3. 3. Módulo V: Estrutura de Dados Compostas
  4. 4. Dados Estruturados <ul><li>Array </li></ul>Um array é um tipo estruturado que pode agrupar numa mesma variável um conjunto de valores todos do mesmo tipo. <ul><li>Arrays Unidimensionais ou vectores </li></ul><ul><li>Arrays Multidimensionais </li></ul><ul><li>Arrays Unidimensionais – Conjunto de elementos representados </li></ul><ul><li>por um identificador e um índice; o índice varia entre um limite inferior </li></ul><ul><li>e um limite superior em correspondência com o número de </li></ul><ul><li>elementos do conjunto </li></ul>
  5. 5. Dados Estruturados Representação de um array unidimensional, ou vector com 5 elementos 10 12 8 9 15 A1 A3 A4 A2 A5 A5 A3 A2 A4 A1 10 12 8 15 9
  6. 6. <ul><li>Um array pode ser declarado : </li></ul><ul><ul><li>a) Como tipo – TYPE – e, em seguida, serem definidas variáveis com base nesse mesmo tipo; </li></ul></ul><ul><li>b) Directamente como uma variável. </li></ul><ul><li>Exemplo: </li></ul><ul><li> a) Como tipo – TYPE </li></ul><ul><li>Type <identificador de tipo> = Array [limites] of <tipo de Dados> </li></ul><ul><li>Type gastosmes = Array [1..12] of integer; </li></ul><ul><li>Com base neste tipo, podemos ter uma ou mais variáveis deste tipo </li></ul><ul><li> Exemplo: </li></ul><ul><li>Var gastossector1, gastos2,g3: gastosmes; </li></ul>Dados Estruturados
  7. 7. <ul><li>Declaração de um Array Directamente como uma variável. </li></ul><ul><li>Var <identificador > : Array [limites] of <tipo de Dados> </li></ul><ul><ul><li>Var gastosmes : Array [1..12] of integer; </li></ul></ul><ul><ul><ul><li>Var- indica que se pretende definir uma variável; </li></ul></ul></ul><ul><ul><ul><li>Gastosmes – é o identificador ou nome atribuído a essa variável; </li></ul></ul></ul><ul><ul><ul><li>: array – indica que a variável é do tipo array; </li></ul></ul></ul><ul><ul><ul><li>[1..12] – define o número de elementos da variável e ao mesmo tempo o intervalo dos seus índices, neste caso entre 1 e 12; </li></ul></ul></ul><ul><ul><ul><li>Of integer- indica qual o tipo-base dos elementos do array </li></ul></ul></ul>Dados Estruturados
  8. 8. <ul><li>Depois de declarada ou definida uma variável do tipo array, a designação individual de cada um dos seus elementos, faz-se: </li></ul><ul><ul><li>Escrevendo o identificador da variável, seguido do seu índice entre parêntesis rectos </li></ul></ul><ul><ul><li>De um modo geral, cada elemento desta variável de tipo array designa-se por: </li></ul></ul><ul><ul><li>gastosmes [i] </li></ul></ul><ul><ul><li>Em que [i] representa a posição do elemento no conjunto que compõem o array, ou seja, neste caso, o número do mês que se pretende designar. </li></ul></ul><ul><ul><li>Exemplo: </li></ul></ul><ul><ul><li>Identificador Gastos do mês </li></ul></ul><ul><ul><li>Gastosmes[1] Janeiro </li></ul></ul><ul><ul><li>Gastosmes[2] Fevereiro </li></ul></ul><ul><ul><li>………… .. </li></ul></ul><ul><ul><li>Gastosmes[12] Dezembro </li></ul></ul>Dados Estruturados
  9. 9. <ul><li>Nota: </li></ul><ul><ul><li>Não confundir os valores assumidos pelos índices de um array com os valores assumidos pela própria variável: </li></ul></ul><ul><ul><ul><li>Exemplo: </li></ul></ul></ul><ul><ul><ul><ul><li>O mês de Março é representado pelo índice 3 -gastosmes[3]; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>O valor assumido pela variável no índice 3, ou seja, os gastos do mês de Março, será aquele que lhe for atribuído, por uma instrução de atribuição ou de input. </li></ul></ul></ul></ul>Dados Estruturados
  10. 10. <ul><li>Utilização de variáveis do tipo Array com instruções básicas </li></ul><ul><ul><li>(leitura, atribuição, escrita) </li></ul></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><li>Read (gastosmes[1]); </li></ul></ul><ul><ul><li>Faz a leitura dos gastos do mês índice1, ou seja, Janeiro </li></ul></ul><ul><ul><li>gastosmes[4]:=25350; </li></ul></ul><ul><ul><li>Faz com que o elemento índice 4 do array (mês Abril) seja atribuído com o valor de 25350; </li></ul></ul><ul><ul><li>Write(‘Gastos do mês de Dezembro: ‘, gastosmes[12]); </li></ul></ul><ul><ul><li>Escreve a mensagem da string indicada seguida do valor dos gastos do mês de Dezembro </li></ul></ul>Dados Estruturados
  11. 11. <ul><li>Exercício: </li></ul><ul><ul><li>Elabore um programa para calcular o total anual dos gastos de um departamento, sendo dados (introduzidos pelo utilizador) os valores dos respectivos gastos mensais; no mesmo programa pretendemos calcular também a média dos gastos mensais. </li></ul></ul><ul><ul><li>Resolução </li></ul></ul>Dados Estruturados
  12. 12. <ul><li>program meses; </li></ul><ul><li>var m:integer; </li></ul><ul><li>totalano, mediames: real; </li></ul><ul><li>gastosmes: array [1..12] of real; </li></ul><ul><li>begin </li></ul><ul><li>totalano:=0; </li></ul><ul><li>For m:=1 to 12 do </li></ul><ul><li>begin </li></ul><ul><li>write('introduza o gastomes[' ,m,’]); </li></ul><ul><li>read(gastosmes[m]); </li></ul><ul><li>totalano:=totalano+ gastosmes[m]; </li></ul><ul><li>end; </li></ul><ul><li>mediames:= totalano/12; </li></ul><ul><li>writeln('O total dos gastos anuais foi:', totalano:2:2 ); </li></ul><ul><li>writeln('a media dos gastos do mes e:', mediames:2:2); </li></ul><ul><li>readln; </li></ul><ul><li>end. </li></ul>Dados Estruturados
  13. 13. <ul><li>Explicação do Exercício: </li></ul><ul><ul><li>A variável m é utilizada como contador do ciclo For e, dentro desse ciclo, é utilizada também para indicar o número de ordem de cada mês. </li></ul></ul><ul><ul><li>A variável gastosmes é definida como um array de 12 elementos do tipo-base real. </li></ul></ul><ul><ul><ul><li>Esta variável do tipo array vai ser utilizada no ciclo For em duas situações distintas: </li></ul></ul></ul><ul><ul><ul><ul><li>Numa instrução de leitura, para receber a entrada do utilizador em cada iteração do ciclo; é evidente que, de cada vez que o contador do ciclo incrementa uma unidade, o índice do array também é incrementado, passando assim a representar cada um dos 12 meses do ano; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Numa instrução de atribuição feita com a variável totalano, que efectua o somatório ou o total dos gastos nos 12 meses, mediante a técnica já conhecida: inicializa-se a variável a zero antes de começar o ciclo e dentro do ciclo, essa mesma variável vai acumulando os sucessivos valores introduzidos como gastos de cada mês. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Uma vez calculado o somatório ou total dos gastos nos 12 meses, é só calcular a média: basta dividir o total encontrado pelo numero de valores introduzidos, que neste caso é 12. </li></ul></ul></ul></ul>Dados Estruturados
  14. 14. <ul><li>Elabore um Algoritmo que permita inserir 15 valores e depois apresente todos os números inseridos superiores a 10. Não necessita utilizar procedimentos. </li></ul><ul><li>Grave o programa com o nome numeros_vector.PAS. </li></ul><ul><ul><ul><li>Resolução </li></ul></ul></ul>Dados Estruturados
  15. 15. <ul><li>Program numeros_vector; </li></ul><ul><li>var i:integer; </li></ul><ul><li>inicio:array [1..15] of integer; </li></ul><ul><li>begin </li></ul><ul><li>for i:=1 to 15 do </li></ul><ul><li>Begin </li></ul><ul><li>writeln(' digite os numeros'); </li></ul><ul><li>readln (inicio[i]); </li></ul><ul><li>end; </li></ul><ul><li>For i:=1 to 15 do </li></ul><ul><li>begin </li></ul><ul><li>If inicio[i]>10 then </li></ul><ul><li>writeln (' inicio [',i,']=',inicio [i]); </li></ul><ul><li>end; </li></ul><ul><li>readln; </li></ul><ul><li>end. </li></ul>Dados Estruturados
  16. 17. <ul><li>Elabore um Algoritmo que permita apresentar a soma de dois vectores, com 5 índices de posição. Apresente o resultado. </li></ul><ul><li>Utilize os seguintes procedimentos: </li></ul><ul><li>Inserir; </li></ul><ul><li>Calcular. </li></ul><ul><li>Grave o programa com o nome soma_vectores.PAS </li></ul><ul><li>Resolução </li></ul>Dados Estruturados
  17. 18. <ul><li>Elabore um algoritmo que permita inserir a notas de PsinF de dez alunos, deve ser apresentada a média das notas obtidas e ainda o número de alunos com nota superior à média. </li></ul><ul><li>Este algoritmo deve ser feito com base nos seguintes procedimentos: </li></ul><ul><li>- Procedimento Inserir; </li></ul><ul><li>- Procedimento Somatorio; </li></ul><ul><li>- Procedimento Verificar_Superior; </li></ul><ul><li>- Procedimento Sair. </li></ul><ul><li>Grave o programa com o nome notas_alunos_vector_.PAS. </li></ul><ul><li>Resolução </li></ul>Dados Estruturados
  18. 19. <ul><li>Programa com o nome notas_alunos_vector_.PAS. </li></ul><ul><li>Program notas_alunos_vector; </li></ul><ul><li>type </li></ul><ul><li>notas=array[1..10] of integer; </li></ul><ul><li>var </li></ul><ul><li>nota:notas; </li></ul><ul><li>somanotas, cont, i:integer; </li></ul><ul><li>media:real; </li></ul><ul><li>op:char; </li></ul><ul><li>Procedure Inserir; </li></ul><ul><li>begin </li></ul><ul><li>for i:=1 to 10 do </li></ul><ul><li>begin </li></ul><ul><li>write (' Introduza a nota'); </li></ul><ul><li>read (nota[i]); </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul><ul><li>Procedure somatorio; </li></ul><ul><li>begin </li></ul><ul><li>somanotas:=0; </li></ul><ul><li>For i:=1 to 10 do </li></ul><ul><li>begin </li></ul><ul><li>somanotas:=somanotas + nota[i]; </li></ul><ul><li>media:=somanotas/10; </li></ul><ul><li>writeln (' A média das notas, : ', media:8:2); </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul><ul><li>Procedure verificarsuperior; </li></ul><ul><li>begin </li></ul><ul><li>cont:=0; </li></ul><ul><li>for i:=1 to 10 do </li></ul><ul><li>begin </li></ul><ul><li>if (nota[i]>media)then </li></ul><ul><li>cont:=cont+1; </li></ul><ul><li>writeln(' Existem', cont,'alunos com a nota superior a:', media:8:2); </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul><ul><li>Procedure continuar; </li></ul><ul><li>begin </li></ul><ul><li>writeln(' Quer continuar?'); </li></ul><ul><li>read (op); </li></ul><ul><li>end; </li></ul><ul><li>begin </li></ul><ul><li>repeat </li></ul><ul><li>inserir; </li></ul><ul><li>somatorio; </li></ul><ul><li>verificarsuperior; </li></ul><ul><li>continuar; </li></ul><ul><li>until (op='n') </li></ul><ul><li>end. </li></ul>
  19. 20. Array ou matriz bidimensional <ul><li>É possível definir um array de arrays – arrays multidimensionais </li></ul><ul><li>Podemos imaginar um armário, com x fiadas de gavetas na horizontal e y colunas na vertical. Dentro de cada gaveta estará, por exemplo, uma determinada quantia de documentos, dinheiro ou outra coisa qualquer. </li></ul><ul><li>Se quisermos referir-nos a uma determinada gaveta do armário, podemos fazê-lo indicando o nº da fila e o da coluna em que a gaveta se encontra; por exemplo: a gaveta da fila 3, coluna 2, seria representada por: </li></ul><ul><ul><li>Gaveta[3,2] </li></ul></ul><ul><ul><li>Gaveta[i,j] </li></ul></ul>Coluna Fila ou linha
  20. 21. <ul><li>Var gaveta: array [1..4] of array [1..3] of integer; </li></ul><ul><li>Ou </li></ul><ul><li>Var gaveta: array [1..4,1..3] of integer; </li></ul>Array ou matriz bidimensional
  21. 22. <ul><li>Para pedir a introdução de todos os valores da variável gaveta, a melhor técnica é a de dois ciclos encaixados </li></ul><ul><li>Exemplo: </li></ul><ul><ul><li>For i:=1 to 4 do </li></ul></ul><ul><ul><ul><li>For j:=1 to 3 do </li></ul></ul></ul><ul><ul><ul><ul><li>Readln (gaveta [i,j]) </li></ul></ul></ul></ul>Array ou matriz bidimensional
  22. 23. <ul><li>Exercício: </li></ul><ul><ul><li>Programa para resolver a seguinte situação: </li></ul></ul><ul><ul><ul><li>Pretende-se registar as notas de um grupo de alunos, num conjunto de disciplinas comuns a todos eles; </li></ul></ul></ul><ul><ul><ul><li>Fazer média por aluno; </li></ul></ul></ul><ul><ul><ul><li>Fazer médias por disciplina </li></ul></ul></ul><ul><ul><ul><li>Resolução </li></ul></ul></ul>Array ou matriz bidimensional
  23. 24. <ul><li>program notas; </li></ul><ul><li>const nalunos=3; ndiscip=2; </li></ul><ul><li>var i,j: integer; </li></ul><ul><li>nota:array[1..nalunos,1..ndiscip] of real; </li></ul><ul><li>soma,media:real; </li></ul><ul><li>Begin </li></ul><ul><li>for i:=1 to nalunos do </li></ul><ul><li>begin </li></ul><ul><li>writeln(' introduza o ',i,' aluno'); </li></ul><ul><li>for j:=1 to ndiscip do </li></ul><ul><li>begin </li></ul><ul><li>writeln('introduza a nota da ',j,' disciplina'); </li></ul><ul><li>readln(nota[i,j]) </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul><ul><li>for i:=1 to nalunos do </li></ul><ul><li>begin </li></ul><ul><li>Soma:=0; </li></ul><ul><li>for j:=1 to ndiscip do </li></ul><ul><li>soma:= soma+nota[i,j]; </li></ul><ul><li>media:= soma/ndiscip; </li></ul><ul><li>writeln('media do aluno ',i, ' e: ', media:5:1); </li></ul><ul><li>end; </li></ul><ul><li>for j:=1 to ndiscip do </li></ul><ul><li>begin </li></ul><ul><li>Soma:=0; </li></ul><ul><li>for i:=1 to nalunos do </li></ul><ul><li>soma:= soma+nota[i,j]; </li></ul><ul><li>media:= soma/nalunos; </li></ul><ul><li>writeln('media da disciplina ',j, ' e: ', media:5:1); </li></ul><ul><li>end; </li></ul><ul><li>readln; </li></ul><ul><li>end. </li></ul><ul><li>Resolução </li></ul>
  24. 25. Array ou matriz bidimensional
  25. 26. Exemplo de um array ou matriz bidimensional de 4 por 3 150 110 120 160 90 110 115 200 55 80 125 150 Linhas Linhas Linhas Colunas Colunas Colunas Colunas A[1,1] A[1,2] A[1,3] A[1,4] A[2,1] A[2,2] A[2,3] A[2,4] A[3,1] A[3,2] A[3,3] A[3,4]
  26. 27. Records ou Registos: Os Registos são um outro tipo de dados estruturados que permitem agrupar dados de vários tipos diferentes , sob a forma de campos : Exemplo de Informações sobre Pessoas: Nome; Morada; Data de Nascimento; Telefone; Idade; Estado Civil; Etc; Os registos podem ser utilizados com as entidades mais diversificadas que se possa imaginar: artigos de uma empresa, livros de uma Biblioteca, dados estatísticos sobre países ou regiões geográficas, etc. …………………
  27. 28. Records ou Registos: <ul><li>Tal como se passa com outros tipos de dados em Pascal, a definição de um registo pode ser feita directamente como variável, ou como tipo. </li></ul><ul><li>A) definição de um registo directamente como variável: </li></ul><ul><ul><li>Var pessoa: Record </li></ul></ul><ul><ul><ul><ul><ul><li>Nome: string[10]; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Idade: integer; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Altura, peso: real; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>End; </li></ul></ul></ul></ul></ul><ul><li>Formato: Var <identificador>: Record <lista de campos> End </li></ul>
  28. 29. Records ou Registos <ul><li>A) definição de um registo como tipo: </li></ul><ul><li> type pessoa =Record </li></ul><ul><ul><ul><ul><ul><li>Nome: string[10]; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Idade: integer; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Altura, peso: real; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>End; </li></ul></ul></ul></ul></ul>
  29. 30. Isabel Martins Gonçalves Records ou Registos: Formato: Type <identificador> = Record <lista de campos> End <ul><li>Um record definido como uma variável funciona apenas para uma </li></ul><ul><li>Única variável ; </li></ul><ul><li>Se definirmos um record como tipo , podemos, em seguida, definir </li></ul><ul><li>Várias variáveis desse mesmo tipo. </li></ul><ul><li>Exemplo: </li></ul><ul><li>Var p1,p2,aluno,desportista,empregado: pessoa; </li></ul>
  30. 31. Isabel Martins Gonçalves Records ou Registos: Designação e acesso aos campos de um registo: Exemplo: <ul><li>type pessoa =Record </li></ul><ul><ul><ul><ul><ul><li>Nome: string[10]; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Idade: integer; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Altura, peso: real; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>End; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Var aluno, p: pessoa; </li></ul></ul></ul></ul></ul>As variáveis aluno e p são registos que têm os mesmos campos definidos no tipo pessoa
  31. 32. Records ou Registos: <ul><li>Suponhamos que queríamos fazer uma atribuição de valores </li></ul><ul><li>aos campos das variáveis aluno e p . </li></ul><ul><li>Há 2 maneiras possíveis de o fazer: </li></ul><ul><li>Designação conjunta do identificador do record e do campo visado; </li></ul><ul><li>Por intermédio do operador With </li></ul>a) <Identificador do registo> . <Identificador do campo> Exemplo : Se quisermos atribuir ao registo aluno o nome de “Isabel Gonçalves” seria: aluno . nome := ‘Isabel Gonçalves’
  32. 33. Records ou Registos: Exemplo1: Se quisermos fazer a leitura do valor do campo idade do mesmo registo e, em seguida, a escrita desse mesmo dado as instruções poderiam ser: Write (‘idade do aluno:’, aluno . idade); Read (aluno . idade);
  33. 34. B) Por intermédio do operador With Records ou Registos: O operador With permite indicar uma vez o identificador do registo e em seguida trabalhar apenas com os identificadores dos campos Exemplo: With aluno do Begin Writeln (‘ Introduza os dados relativos ao aluno ’ ); Writeln (‘ Nome: ‘); Readln (Nome); Writeln (‘ Idade: ‘); Readln (Idade); Writeln (‘ Altura: ‘); Readln (Altura); Writeln (‘ Peso: ‘); Readln (Peso); End;
  34. 35. Records ou Registos: Exemplo de um programa com registos: Program Registos; type pessoa = record nome: string[10]; idade: integer; end; Var p,q:pessoa; Begin Writeln('Dados relativos a primeira pessoa'); Writeln('Nome: '); Readln(p.nome); Writeln('Idade: '); Readln(p.idade); Writeln('Dados relativos à segunda pessoa'); Writeln('Nome: '); Readln(q.nome); Writeln('Idade: '); Readln(q.idade); if p.idade >q.idade then Writeln ('O aluno mais velho e ', p.nome) else if q.idade >p.idade then Writeln ('O aluno mais velho e ', q.nome) else Writeln(' Os alunos têm a mesma idade'); Readln; End. Programa agenda
  35. 36. Program arrayofrecords; Type ficha = record sexo:char; idade: integer; end; Var pessoa: ficha; grupo :array [1..6]of ficha; i, masc,femin,idadesmasc,idadesfemin:integer; mediamasc,mediafemin: real; Begin For i:=1 to 6 do {introdução dos dados por elemento} begin Writeln('Sexo - m/f: '); Readln(pessoa.sexo); Writeln('Idade:'); Readln(pessoa.idade); grupo[i]:= pessoa; end; masc:=0;femin:=0; idadesmasc:=0;idadesfemin:=0; For i:=1 to 6 do {soma das idades por sexos} begin pessoa:=grupo [i]; if pessoa.sexo = 'm' then begin masc:=masc+1; idadesmasc:=idadesmasc+pessoa.idade; end; if pessoa.sexo= 'f' then begin femin:= femin+1; idadesfemin:=idadesfemin+pessoa.idade end; end; mediamasc:=(idadesmasc/masc); mediafemin:=(idadesfemin/femin); Writeln(' Media de idades sexo masculino', mediamasc:8:1); Writeln(' Media de idades sexo femenino', mediafemin:8:1); readln end.
  36. 37. <ul><li>Program agenda; </li></ul><ul><li>type </li></ul><ul><li>palavra = string [10]; </li></ul><ul><li>tpessoa = record </li></ul><ul><li>nome: palavra; </li></ul><ul><li>morada: palavra; </li></ul><ul><li>telefone: palavra; </li></ul><ul><li>end; </li></ul><ul><li>Tlista= array [1..10]of Tpessoa; </li></ul><ul><li>Var </li></ul><ul><li>pessoa:tpessoa; </li></ul><ul><li>lista_agenda:tlista; </li></ul><ul><li>cont:integer; </li></ul><ul><li>Begin </li></ul><ul><li>for cont:=1 to 10 do </li></ul><ul><li>Begin </li></ul><ul><li>Writeln(' Nome '); </li></ul><ul><li>readln(pessoa.nome); </li></ul><ul><li>Writeln(' Morada '); </li></ul><ul><li>readln(pessoa.morada); </li></ul><ul><li>Writeln(' Telefone '); </li></ul><ul><li>readln(pessoa.telefone); </li></ul><ul><li>lista_agenda[cont]:= pessoa; </li></ul><ul><li>end; </li></ul><ul><li>Writeln('Lista dos nomes'); </li></ul><ul><li>for cont:=1 to 10 do </li></ul><ul><li>begin </li></ul><ul><li>pessoa:=lista_agenda[cont]; </li></ul><ul><li>writeln(pessoa.nome); </li></ul><ul><li>end; </li></ul><ul><li>end. </li></ul>
  37. 38. <ul><li>Program arrayofrecords; </li></ul><ul><li>Type ficha = record </li></ul><ul><li>sexo:char; </li></ul><ul><li>idade: integer; </li></ul><ul><li>end; </li></ul><ul><li>Var pessoa: ficha; </li></ul><ul><li>grupo :array [1..6]of ficha; </li></ul><ul><li>i, masc,femin,idadesmasc,idadesfemin:integer; </li></ul><ul><li>mediamasc,mediafemin: real; </li></ul><ul><li>Begin </li></ul><ul><li>For i:=1 to 6 do {introdução dos dados por elemento} </li></ul><ul><li>begin </li></ul><ul><li>Writeln('Sexo - m/f: '); Readln(pessoa.sexo); </li></ul><ul><li>Writeln('Idade:'); Readln(pessoa.idade); </li></ul><ul><li>grupo[i]:= pessoa; </li></ul><ul><li>end; </li></ul><ul><li>masc:=0;femin:=0; </li></ul><ul><li>idadesmasc:=0;idadesfemin:=0; </li></ul><ul><li>For i:=1 to 6 do {soma das idades por sexos} </li></ul><ul><li>begin </li></ul><ul><li>pessoa:=grupo [i]; </li></ul><ul><li>if pessoa.sexo = 'm' then </li></ul><ul><li>begin </li></ul><ul><li>masc:=masc+1; </li></ul><ul><li>idadesmasc:=idadesmasc+pessoa.idade; </li></ul><ul><li>end; </li></ul><ul><li>if pessoa.sexo= 'f' then </li></ul><ul><li>begin </li></ul><ul><li>femin:= femin+1; </li></ul><ul><li>idadesfemin:=idadesfemin+pessoa.idade </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul><ul><li>mediamasc:=idadesmasc/masc; </li></ul><ul><li>mediafemin:=idadesfemin/femin; </li></ul><ul><li>Writeln(' Media de idades sexo masculino', mediamasc:8:1); </li></ul><ul><li>Writeln(' Media de idades sexo femenino', mediafemin:8:1); </li></ul><ul><li>readln </li></ul><ul><li>end. </li></ul>

×