Algoritmos e Estruturas de Dados I – Tipos de dados Profa. Mercedes Gonzales Márquez Dados • Os algoritmos irão manipular dados, que normalmente são fornecidos pelos usuários, e entregar resultados para estes usuários. • Uma pergunta importante neste momento é: que tipo de dados poderemos manipular? As linguagens de programação estabelecem regras precisas para definir que tipos de dados irão manipular. Dados • • A representação por pseudo-código, que será adotada nesta matéria, também estabelece, ainda que informalmente, algumas regras que limitam o conjunto de dados existentes na natureza e que poderão ser manipulados pelos algoritmos. Existem três tipos básicos de dados que a linguagem irá manipular: Dados numéricos Dados literais ou alfa-numéricos Dados Lógicos Dados (1) Dados Numéricos: Dois tipos: inteiros e reais • O conjunto dos dados inteiros pode ser definido como Z={...,-3,-2,0,1,2,...}. • O conjunto dos números reais inclui o conjunto dos números inteiros, dos números fracionários e dos números irracionais. • O conjunto dos números fracionários pode ser formalmente definido como Q={p/q | p,q pertencem a Z}. • O conjunto dos números irracionais engloba aqueles que não podem ser representados por uma fração, por exemplo o número PI=3.141515... Dados • Os números irracionais são armazenados até um certo número de casas decimais que o computador consegue representar a partir daí as casas decimais são descartadas. (1) Inteiro Exemplos: a) 15 b) -1 (2) Real Exemplos: a) 3,141592; b) -0,91 Dados (2) Dados literais ou alfa-numéricos Dados literais servem para tratamento de textos e normalmente são compostos por uma seqüência de caracteres contendo letras, algarismos e caracteres de pontuação. Nos algoritmos são normalmente representados por uma seqüência de caracteres entre aspas, por exemplo: (a) “JOSÉ GONÇALVES” b) “12345” c) “x1y2w3” d) “*A!B:-” e) “23/03/10” f) “falso” Dados (3) Dados Lógicos •Os dados lógicos ou também chamados booleanos somente podem assumir dois valores: verdadeiro e falso. Computadores tomam decisões, durante o processamento de um algoritmo, baseados nestes dois valores. •Portanto, este tipo de dados é intensamente aplicado durante o processo de tomada de decisões que o computador frequentemente é obrigado a fazer. Variáveis • Uma entidade destinada a guardar um dado cujo valor pode variar ao longo do tempo durante a execução do algoritmo. • A cada variável corresponde uma posição na memória. • Ela assume somente um valor de cada vez. • Toda variável é identificada por um nome ou identificador. Variáveis - Identificadores • • O identificador escolhido para rotular as variáveis deve obedecer as seguintes regras - O primeiro caractere deve ser uma letra - Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto: {A,B,...,X,Y,W,Z,0,1,...,8,9,_} Utiliza-se nomes de variáveis elucidativos. Exemplo se a variável vai armazenar o nome de um empregado, deve-se usar o identificador nome para representá-la. Variáveis - Declaração • • • As variáveis também são classificadas como numéricas, lógicas e literais. Para indicar o tipo de uma variável é usada a declaração de variáveis. Quando se declara uma variável é feita uma associação do identificador com a respectiva posição de memória que este vai simbolizar. Variáveis - Declaração •Uma vez declarada a variável, qualquer referência que se faça ao seu identificador implica a referência ao conteúdo do local da memória representado pelo mesmo. Variáveis – Sintaxe da declaração tipo_dado : identificador_da_variável Exemplos: Real: x,y,z,w Inteiro: num_alunos Literal: nome_aluno Logico: sim Variáveis – Operadores aritméticos •Além de limitar o conjunto de dados, a declaração de tipos define o conjunto de operadores que podem agir sobre a variável. Operadores aritméticos: Variáveis – Operadores aritméticos Símbolo Função Tipos disponíveis Adição Inteiro,real subtração Exponenciação ” ” ” ” MOD Resto da divisão inteira Inteiro DIV Quociente da divisão inteira Inteiro + * / ** Multiplicação Divisão real Operadores aritméticos -Prioridades 1º prioridade : Exponenciação 2º prioridade : Divisão, multiplicação 3º prioridade : Adição, subtração Operadores relacionais Função Símbolo = <> >= <= Tipos disponíveis Igual Todos Diferente Todos Maior ou igual que Todos Menor ou igual que Todos O resultado obtido de uma relação é sempre um valor lógico. Exemplos: (a) A<>B (b) nome=“Maria” (c) B**2-4*A*C<0 Operadores relacionais Dadas as variáveis numéricas x,y,z e as variáveis literais NOME e COR, observar os resultados obtidos para as relações a partir dos valores atribuídos a estas variáveis. VARIÁVEIS X Y Z COR RELAÇÕES NOME X2 +Y>Z COR=“AZUL” NOME<>”JOSE” 1 2 5 “AZUL” “PAULO” Falso Verdade Verdade 4 3 1 “VERDE” “JOSE” Falso Falso 1 1 2 “BRANCO” “PEDRO” Falso Falso Verdade 1 2 1 “AZUL” Verdade Falso “JOSE” Verdade Verdade Operadores relacionais Dadas as variáveis numéricas A e B, e as variáveis literais NOME e PROFISSÃO, completar o quadro a seguir. VARIÁVEIS A B NOME PROFISSÃO 3 16 “MIRIAM ” “ADVOGADO” 5 64 “PEDRO” “MÉDICO” 2,5 9 “ANA” “PROFESSOR” RELAÇÕES A+2 > B NOME<>”ANA ” PROFISSÃO=“MEDICO” Operadores lógicos Símbolo Função e Conjunção Tipos disponíveis Lógico Ou Disjunção Lógico Não Negação Lógico Operadores lógicos - e A conjunção de duas proposições p e q representa-se por: p e q e é verdadeira se e somente se ambas as proposições são verdadeiras. p V V F F q V F V F peq V F F F Operadores lógicos - e Sejam as seguintes proposições p: ok, onde ok é uma variável lógica cujo conteúdo é verdadeiro q: A=0, onde o valor de A é 3. r: teste, onde teste é uma variável lógica cujo conteúdo é falso. s: B<>1, onde o conteúdo de B é 2 Qual é o valor lógico das conjunções (a) p e s (b) p e r (c) q e s (d) q e r Operadores lógicos - ou A disjunção de duas proposições p e q representa-se por: p ou q e é verdadeira se e somente se, pelo menos, uma delas for verdadeira. p V V F F q p ou q V V F V V V F F Operadores lógicos - ou Para as quatro proposições do exemplo anterior qual será o valor lógico das disjunções: (a) p ou s (b) p ou r (c) q ou s (d) q ou r Operadores lógicos - não O operador negação (não) atribui o valor lógico falso a uma proposição com valor verdade, e o valor lógico verdade a uma proposição com valor falso. Assim p não (p) V F F V Operadores - Prioridades 1º prioridade : aritmético 2º prioridade : relacional 3º prioridade : não 4º prioridade : e 5º prioridade : ou Funções primitivas • Representa uma operação exercida sobre um valor para obter como resultado um valor numérico. • Assumiremos que as funções da tabela estão disponíveis no nosso computador hipotético Função Resultado Sen(x) Seno de um ângulo Cos(x) Coseno de um ângulo Tg(x) Tangente do ângulo Exp(x) O número e elevado a x. Ln(x) Logaritmo neperiano de x Sqr(x) Raiz quadrada de x Abs(x) Valor absoluto de x Operadores - Prioridades nas expressões mistas 1º prioridade : parênteses mais internos 2º prioridade : funções 3º prioridade : potências e raízes 4º prioridade : divisão e multiplicação 5º prioridade : adições e subtrações 6º prioridade : operadores relacionais 7º prioridade : operador lógico não 8º prioridade : operador lógico e 9º prioridade : operador lógico ou Expressões mistas Exercícios de fixação 1.5.5.1. e 1.5.5.2. do livro Algoritmos Estruturados de Harry Farrer e outros.