Tipos Simples
So divididos em:
Tipos Estruturados Permite manuipular vrios
valores ao mesmo tempo
Tipos simples
Predefinidos ou primitivos
Subintervalo (subrange)
Enumerado (enummerated)
Booleano (boolean)
Caracter (char)
Inteiro (integer)
Tipos ordinais
Type IdentificadorTipoSubrange = <valor_inferior> .. <valor_superior> ; Aonde <valor_inferior> .. <valor_superior: definem um intervalo em um tipo ordinal existente. Pode ser declarado na clausula TYPE ou pode ser associado diretamente a uma declarao de variavel.
Como Usar:
2. Defina um novo tipo Subrange ou declare uma variavel usando um intervalo: Type Var diames: diasValidos; {declarao de uma variavel do tipo diasValidos} mesesAno: 1..12; {declarao de uma variavel do tipo subrange sem identificador} minusculas: a..z; 2. Pode ser usada normalmente como uma variavel do tipo ordinal basico (ex: no caso acima, as variaveis funcionam como inteiros). diasValidos = 1 ..31; {criao de novo tipo chamado diasValidos}
Exemplo
retorna a posicao do valor de var no intervalo diames:= 4; retorna o sucessor de <varsubrange> retorna o antecessor de <varsubrange>
Ord (diames)= 4 Succ (diames) = 5 Pred (diames) = 3
Exercicio para casa / laboratrio: Faa um programa que leia 2 datas no formato dd / mm e calcule quantos dias decorreram entre as datas (do mesmo ano). Usar Tipos SUBRANGE
Pergunta: O que acontece se associarmos variavel um valor que no est no intervalo? Ex: diames := 32;
Predefinidos ou primitivos
Agregado (array)
Registro (record)
Conjunto (set)
Arquivo (file)
1.
tipo_ndice um tipo simples ordenado (inteiro, caracter, booleano, etc.) formado por [li..ls ], onde li= limite inferior e ls= limite superior. Pode ser utilizado tanto na declarao de variveis, constantes, como tambm na definio de novos tipos (sesso TYPE). Definio de constante do tipo Array: identificadorConst: tipo_array = (lista de valores) ;
Ex: Const naipes: array [1..4] of string[7] = ( copas, ouro, espadas, paus);
Ex3:
Ex4: Ex5:
Type vetsemana = array [1..7] of string [3]; Const dias_semana: vetsemana = (DOM, SEG, TER, QUA, QUI, SEX, SAB);
Manipulao dos elementos de um Vetor Basta usar em expresses, instrues de atribuio, instrues de entrada e saida (read e write), sempre referenciando-se um elemento especifico do Vetor com o uso da posio que ele ocupa no vetor. Identificador_array [posio_elemento] Exemplo:
Considere o seguinte vetor
writeln (lista[5]); read (lista[i]); { i deve ser do tipo inteiro} x:= lista[i+j]; { i e j devem ser do tipo inteiro}
Exemplo
Algoritmo de busca sequencial de elementos no vetor
Considere um vetor Idades com 30 elementos (valores inteiros). Verificar se existe um elemento igual a K no vetor. Se existir mostrar a posio em que se encontra, seno imprimir "no encontrei K no vetor".
Manipulao dos elementos de uma Matriz Da mesma forma que no Vetor, usamos matrizes em expresses, instrues de atribuio, instrues de entrada e saida. Cada elemento da matriz identificado por: Identificador_matriz [coordenada_elemento] Exemplo:
Considere a seguinte matriz
writeln (matrizA[3,2]); {elemento da linha 3 coluna 2} matrizA[i,j] := succ(matrizA[i,j]); { acrescenta 1 ao valor original do elemento da posio i,j}
Exemplo 1:
Este programa cria uma matriz de nmeros inteiros de dimenses 3x3 e calcula a soma dos elementos da diagonal principal. Ao final mostra a matriz e a soma.
Exemplo 2:
Elabore um programa que crie uma matriz constante de inteiros de dimensso 3x3 com os valores {1,2,3,4,5,6,7,8,9}. Some os elementos de cada linha da matriz para gerar elementos de um vetor
Matriz
Vetor
6 15 24
Tipo Estruturado: Registro Registro ou Record: So estruturas heterogneas - compostas de elementos de tipos diferentes. Cada elemento uma parte do registro:
elemento = CAMPO
25 Programador 950,00
Campo Salario
Registros - RECORD Em Pascal, o registro definido como um tipo RECORD. Podemos definir registros em Pascal na sesso TYPE ou diretamente declarar variveis do tipo RECORD.
Ex: Type Funcionario= Record nome: string[40]; idade: integer; funcao: string[30]; salario: real; End; Var FuncionarioUFBA: Funcionario ;
VAR FuncionarioUFBA: Record nome: string[40]; idade: integer; funcao: string[30]; salario: real; End;
Exercicio 1
Crie um tipo registro com a seguinte estrutura:
Nome do funcionario . 60 caracteres Data de admissao dd mm-aaaa, onde dd contem um valor de {1,,31} e mm de {1,..,12} Salario base nao pode ser menor que o salario minimo (crie separadamente uma constante SALMINIMO) Dias trabalhados nos ultimos 12 meses, indique o mes de ferias com o valor 1
Manipulao de Registros
Acesso a campos individuais: a) uso da notao <identif_Registro>.<campo>
Ex: write('Nome: '); readln(funcionarioUFBA.nome); {acesso ao campo nome }
Exercicio 2
Crie um trecho de algoritmo que faa uma consulta a um funcionrio j cadastrado:
O usuario deve fornecer o primeiro nome do funcionario, ou parte do nome. Caso encontre, o programa deve mostrar o nome completo e pedir confirmao se este o funcionario procurado. Se for, deve informar o salrio, a data de admisso e se ja tirou frias neste ano e em que ms.
Exercicio 3
Modifique o programa anterior para criar um conjunto de funcionarios. Crie um trecho de algoritmo que faa uma consulta a um funcionario ja cadastrado:
O usuario deve fornecer o primeiro nome do funcionario, ou parte do nome. O programa deve mostrar todos os funcionarios encontrados que cujos nomes coincidem com o conteudo da busca e solicitar qual deles o procurado. Para este funcionario, deve ento mostrar o salrio, a data de admisso e se ja tirou frias neste ano e em que ms.
Modularizao - Procedimentos e Funes A modularizao de programas divide o programa em partes que possuem uma certa independncia Vantagens da modularizao :
Aumenta a manutenibilidade do programa Facilita a depurao de erros Aumenta a legibilidade do programa Aumenta o reuso de cdigo