Algoritmos e Programação _ Departamento de Informática 5 TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. De um modo geral estas informações podem ser classificadas em dois tipos: • Instruções - que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados dos dados. • Dados - que correspondem à porção das informações a serem processadas pelo computador. 5.1 CLASSIFICAÇÃO DOS DADOS DE ACORDO COM O TIPO 5.1.1 Dados Numéricos • Conjunto dos números naturais representados por N; N = {0,1,2,3,4,5.....} • Conjunto dos números inteiros (Z); Z = {...,-4,-3,-2,-1,0,1,2,3,4,...} • Conjunto dos números fracionários (Q); Q = {p/q | p,q pertencem a Z} • Conjunto dos números reais (R); _________________________________________________________________________________ Professor: Ivo Mário Mathias 16 Algoritmos e Programação _ Departamento de Informática Do ponto de vista do computacional (algorítmico) os dados numéricos representáveis num computador são divididos em apenas duas classes: inteiros e reais. 5.1.2 Dados Literais (Alfanuméricos) Constituído por uma sequência de caracteres contendo letras, dígitos e/ou símbolos especiais. Este tipo de dados é também chamado de alfanumérico, cadeia (ou cordão) de caracteres ou ainda do inglês string. Usualmente, os dados literais são representados nos algoritmos e nas linguagens de programação pela coleção de caracteres, delimitada em seu início e termino com o caracter aspas (") ou aspas simples - plicas ('). O comprimento ou tamanho de um dado literal é dado pelo número de caracteres nele contido (inclusive espaços em branco). 5.1.3 Dados Lógicos A existência deste tipo de dado de certo modo é um reflexo da maneira como os computadores funcionam. São também chamados de booleanos, em função da significativa contribuição BOOLE à área da lógica matemática. São usados para representar dois únicos valores lógicos possíveis: Verdadeiro/Falso - Sim/Não - 1/0 - True/False. Exemplo de representação a ser adotada nos algoritmos: .V. - valor lógico verdadeiro; .F. - valor lógico falso; _________________________________________________________________________________ Professor: Ivo Mário Mathias 17 Algoritmos e Programação _ Departamento de Informática 5.1.4 Resumo 6 VARIÁVEIS Uma variável é uma posição nomeada de memória, que é usada para guardar um valor que pode ser modificado pelo programa. A todo o momento durante a execução de um programa os computadores estão manipulando informações representadas pelos diferentes tipos de dados. Para que não se "esqueça" das informações, o computador precisa guardá-las em sua memória. 6.1 REPRESENTAÇÃO DA INFORMAÇÃO 6.1.1 Bit Unidade básica da informação é o BIT (BInary digiT), é a porção de informação fornecida por um verdadeiro ou falso, uma resposta sim/não, como uma chave liga/desliga, simbolicamente os dígitos 0 e 1 são utilizados. 6.1.2 Byte (octeto) BYTE (BinarY TErm), constituído por um conjunto de oito bits. Desta forma é possível representar 256 (28) combinações diferentes. 6.1.3 Nybble Meio byte, constituído por 4 bits. _________________________________________________________________________________ Professor: Ivo Mário Mathias 18 Algoritmos e Programação _ Departamento de Informática 6.1.4 Kilobyte (KByte) Um kbyte equivale a 1024 octetos ou bytes (8192 bits). O fato de corresponder a 1024 e não a 1000 se deve a que 1 kbyte é igual a 210 (base do sistema binário elevada a décima potência); além disso, essa correspondência faz com que o kbyte seja múltiplo de 8. 6.1.5 Megabyte (MByte) Equivale a 1.048.576 de bytes (octetos), ou seja 220 (base do sistema binário elevada a vigésima potência), para representação de grande volume de memória. 6.1.6 Gigabyte (GByte) Equivale a 1.073.741.824 bytes - 230 (base do sistema binário elevada a trigésima potência). 6.1.7 Terabyte (TByte) Equivale a 1.099.511.627.776 bytes - 240 (base do sistema binário elevado a quadragésima potência). 6.1.8 Petabyte (PByte) Equivale a 1.125.899.906.842.624 bytes - 250 (base do sistema binário elevado a quinquagésima potência). 6.2 ARMAZENAMENTO DE DADOS NA MEMÓRIA A memória de um computador pode ser vista como um conjunto ordenado de células (bytes) cada uma identificada por um número inteiro positivo distinto, conhecido como endereço (ponteiro). 6.2.1 Armazenamento de Dados do Tipo Literal Como cada dado do tipo literal é representado por um byte e como é possível representar 256 (28) combinações diferentes surgiu a ideia de associar cada caracter a um número (código) diferente variando de 0 a 255 (256 possibilidades). Essa convenção é representada na forma de uma tabela de mapeamento de caracteres e números. O padrão universalmente aceito é o ASCII-(American Standard Code for Information Interchange/Código Padrão Americano para Intercâmbio de informações). _________________________________________________________________________________ Professor: Ivo Mário Mathias 19 Algoritmos e Programação _ Departamento de Informática Desse modo como cada informação do tipo literal é constituído por um byte, e como seu tamanho é definido pelo comprimento (quantidade de caracteres/bytes), para guardar um literal na memória do computador deve-se alocar (reservar) um espaço contíguo de memória igual ao seu comprimento. 6.2.2 Armazenamento de Dados do Tipo Lógico São armazenados em um byte. 6.2.3 Armazenamento de Dados do Tipo Inteiro Na maioria das linguagens de programação são armazenados em dois bytes (28 x 28 = 216) 65536 possibilidades (-32767, -32766, ..., -2,-1,0,1,2,..., 32766, 32767) – com sinal. (0,1,2,..., 65534, 65535) – sem sinal. Contudo existem linguagens de programação que admitem representar dados do tipo inteiro em 4 ou 8 bytes, ditos inteiros longos ou estendidos. 6.2.4 Armazenamento de Dados do Tipo Real Normalmente são armazenados em 4 bytes, porém existem linguagens de programação que admitem o real estendido com 8 ou 16 bytes. (28 x 28 x 28 x 28 = 232) 4.294.967.296 possibilidades 6.3 CONCEITO E UTILIDADE DE VARIÁVEIS Variável é uma entidade destinada a guardar uma informação. Basicamente uma variável possui três atributos: • Nome (identificação) - de uma forma geral as regras para criação de nomes de variáveis são as seguintes: deve começar necessariamente com uma letra e não deve conter nenhum símbolo especial exceto a sublinha (_). • Tipo de dado associado a mesma - inteiro, real, literal ou lógico. • Informação por ela guardada - único elemento que sofrerá alteração durante a execução de um programa. _________________________________________________________________________________ Professor: Ivo Mário Mathias 20 Algoritmos e Programação 6.4 _ Departamento de Informática DECLARAÇÃO DE VARIÁVEIS EM ALGORITMOS Todas as variáveis utilizadas em algoritmos e programas devem ser definidas antes de serem utilizadas, para permitir que o compilador ou interpretador reserve espaço na memória para as mesmas. Forma como declarar variáveis em algoritmos: VAR <tipo_da_variável> : <nome_da_variável>; ou VAR <tipo_das_variáveis> : <lista_de_variáveis>; Sintaxe: • A palavra-chave VAR deverá estar presente e será utilizada uma única vez na declaração de um conjunto ou de uma ou mais variáveis; • Numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo; Para tal, deve-se separar os nomes das mesmas por vírgulas; • Variáveis de tipos diferentes devem ser declaradas em linhas diferentes. Exemplo (formato C): VAR 6.5 literal : NOME[10]; inteiro : IDADE; real : SALÁRIO; lógico : TEM_FILHOS; MAPEAMENTO DE VARIÁVEIS NA MEMÓRIA O computador não é capaz de trabalhar diretamente com nomes simbólicos de variáveis, só consegue tratar de células de memória por meio do conhecimento de seus endereços (ponteiros). Para intermediar esta situação o compilador ou interpretador monta uma tabela de símbolos. Exemplo: Nome simbólico Posição inicial Tipo de dado NOME 0 LITERAL[10] IDADE 10 INTEIRO SALÁRIO 12 REAL TEM_FILHOS 16 LÓGICO _________________________________________________________________________________ Professor: Ivo Mário Mathias 21 Algoritmos e Programação _ Departamento de Informática 7 EXPRESSÕES O conceito de expressão em termos computacionais esta intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde, um conjunto de variáveis e constantes numéricas relacionam-se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num valor. Ou ainda, uma expressão é uma combinação de variáveis, constantes e operadores, e que, uma vez avaliada, resulta num valor. Exemplo: Fórmula de cálculo da área de um triângulo. ÁREA = 0,5 * (B * H); Onde: B, H → variáveis que respectivamente correspondem a base e altura; 7.1 0,5 → constante; * → operador de multiplicação. OPERADORES São elementos funcionais que atuam sobre os operandos. De acordo com o número de operandos podem ser classificados em: • Binários - quando atuam sobre dois operandos. Exemplo os operadores das operações aritméticas básicas (soma, subtração, multiplicação e divisão). • Unários - quando atuam sobre um único operando. Exemplo o sinal de (–) na frente de um número, cuja função é inverter seu sinal. Outra classificação é feita considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliação, podendo ser: Aritméticos, lógicos e literais. Existindo ainda um caso especial que são os operadores relacionais, que permitem comparar pares de operandos de tipos iguais, resultando sempre num valor lógico. _________________________________________________________________________________ Professor: Ivo Mário Mathias 22 Algoritmos e Programação 7.2 _ Departamento de Informática TIPOS DE EXPRESSÕES Classificadas de acordo com o tipo de valor resultante de sua avaliação. 7.2.1 Expressões Aritméticas São aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou real e somente o uso de operadores aritméticos e variáveis numéricas são permitidos. No caso das variáveis numéricas os tipos podem ser inteiro ou real e ambos podem ser combinados. Para o caso de uma expressão com tipos inteiros o resultado da avaliação também será do tipo inteiro, quando os dois tipos são combinados o resultado da avaliação é do tipo real. 7.2.1.1 Operadores aritméticos Operador Tipo Operação Precedência + Binário Adição 4 – Binário Subtração 4 * Binário Multiplicação 3 / Binário Divisão 3 MOD Binário Resto de divisão 3 ** ou ^ Binário Exponenciação 2 Potenciação SQRT Unário Raiz Quadrada 2 + Unário Manutenção de sinal 1 – Unário Inversão de sinal 1 Exemplo: Exponenciação em Linguagem C: x = 24 à x = 2 ^ 4 à x = pow(2,4) ( #include <math.h> ) 7.2.2 Expressões Lógicas São aquelas cujo resultado da avaliação é um valor lógico (.V. ou .F.). _________________________________________________________________________________ Professor: Ivo Mário Mathias 23 Algoritmos e Programação _ Departamento de Informática 7.2.2.1 Operadores lógicos Operador Tipo Operação Precedência .OU. Binário Disjunção 3 .E. Binário Conjunção 2 .NÃO. Unário Negação 1 7.2.2.2 Tabela-verdade dos operadores lógicos A B .NÃO. A .NÃO. B A .OU. B A .E. B .V. .V. .F. .F. .V. .V. .V. .F. .F. .V. .V. .F. .F. .V. .V. .F. .V. .F. .F. .F. .V. .V. .F. .F. A B .NÃO. A .NÃO. B A .OU. B (∨) A .E. B (∧) 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 7.2.2.3 Operadores relacionais São aqueles usados para efetuar comparações e só podem ser feitas entre variáveis de um mesmo tipo cujo resultado é sempre um valor lógico. _________________________________________________________________________________ Professor: Ivo Mário Mathias 24 Algoritmos e Programação _ Departamento de Informática Tabela dos operadores relacionais em pseudocódigo: Operador Comparação Precedência = Igual 2 <> Diferente 2 < Menor 1 <= Menor ou igual 1 > Maior 1 >= Maior ou igual 1 7.2.3 Expressões Literais São aquelas cujo resultado da avaliação é um valor literal. Os tipos de operadores variam de uma linguagem de programação para outra. Um caso pode ser a concatenação de strings: toma-se duas strings e acrescenta-se (concatena-se) a segunda no final da primeira, algumas linguagens admitem o uso do operador (+). Exemplo: strings "REFRIGERA" + "DOR" = "REFRIGERADOR". 7.3 AVALIAÇÃO DE EXPRESSÕES Expressões que apresentam apenas um único operador podem ser avaliadas diretamente. No entanto, à medida que as mesmas vão-se tornando mais complexas com o aparecimento de mais de um operando numa mesma expressão é necessária a avaliação da mesma passo a passo, tomando um operador por vez. A sequência de passos é definida de acordo com o formato geral da expressão, considerando-se a prioridade (precedência) de avaliação de seus operadores e a existência ou não de parênteses na mesma. Regras essenciais: 1. Deve-se observar a prioridade dos operadores, conforme mostrado anteriormente: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relação à precedência, então a avaliação se faz considerando-se a expressão da esquerda para direita. _________________________________________________________________________________ Professor: Ivo Mário Mathias 25 Algoritmos e Programação _ Departamento de Informática 2. Os parênteses usados em expressões têm o poder de "roubar" a prioridade dos demais operadores, forçando a avaliação da subexpressão em seu interior. 3. Entre os quatro grupos de operadores existentes, a saber, aritmético, lógico, literal e relacional, há uma certa prioridade de avaliação: os aritméticos e literais devem ser avaliados primeiro; a seguir, são avaliadas as subexpressões com operadores relacionais e por último os operadores lógicos. Exemplo: x = 2; y = 3,0. (x * y + 1) + (x ^ y) / 2 (2 * 3 + 1) + (2 ^ 3) / 2 (6 + 1) + (8) / 2 7 + 4 = 11 7.4 PRIORIDADE (PRECEDÊNCIA) ENTRE TODOS OS OPERADORES Operação Precedência Parênteses mais internos 1 Operadores aritméticos 2 Operadores relacionais 3 Operadores lógicos 4 _________________________________________________________________________________ Professor: Ivo Mário Mathias 26