Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos Tipos de Dados e Identificadores MS. MARCOS ANDRÉ COSTA 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Identificadores Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução: Atribua o valor 2 ao objeto valor; O valor 2 fica associado ao objeto valor. Assim, cada vez que mencionamos o nome do objeto valor, nós estaremos referenciando, implicitamente, ao valor que foi associado a ele. 2 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Identificadores Isto torna o algoritmo mais prático, pois além de ser fácil lembrarmos de um nome do que de um valor de dado, o nome de um objeto permanece inalterada durante toda a execução de um algoritmo, ao passo que o valor a ele associado pode mudar com o dinamismo do algoritmo, como por exemplo: Objetos x, y; início das ações: atribua3 ao objeto x; calcule2 x e atribua o resultado ao objeto y; calcule4 y e atribua o resultado ao objeto x; fim das ações. 3 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Identificadores Note que os valores de x e y variam no decorrer da execução do algoritmo. O objeto x começa com o valor 3 e termina com o valor 24, e o y começa com um valor não definido e termina com 6. Note que não nos preocupa a variação de valores dos objetos, pois eles continuam a ter o mesmo nome. 4 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Identificadores Por este motivo, dizemos que os objetos de um algoritmo identificam valores a eles associados, e por isto, estes objetos são chamados de identificadores. Como os nossos algoritmos têm como finalidade a comunicação do homem com a máquina (computador), podemos dizer, de uma forma grosseira, que um identificador do algoritmo será associado com uma célula de memória do computador, a qual armazenará o valor associado ao identificador. Ou seja, toda vez que mencionamos o nome do identificador no algoritmo, o computador irá "buscar", na célula de memória associada com o identificador, o valor armazenado e realizará a operação descrita no algoritmo. 5 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Semelhança Existe uma certa semelhança entre identificadores e variáveis matemáticas, logo é comum, em literaturas do gênero computacional encontrar, também, esta denominação para os identificadores. Mas queremos deixar claro que esta analogia nem sempre é possível, pois, considere a seguinte expressão matemática: x = x + 1. Esta expressão matemática não tem solução, pois qual é o número que é igual a ele mesmo somado em uma unidade. 6 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Entretanto... Computacionalmente esta expressão é válida, pois o significado semântico é diferente, o qual é: Calcule a expressão x + 1e atribua o resultado a x; Para o computador, isto significa: “recupere o valor que está armazenado na célula x some uma unidade e armazene o resultado na própria célula x”. É importante deixar claro que um identificador (objeto) só pode armazenar um único valor por vez. E sempre armazenará o último valor que lhe for fornecido. Assim, se fizermos o identificador x receber o valor 100, e logo mais adiante atribuirmos ao mesmo identificador x o valor 50, a partir deste ponto o valor associado a x será 50. 7 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Por exemplo... Você deverá escolher os nomes dos identificadores que serão utilizados, mas devendo respeitar as seguintes regras na escolha dos nomes: 1) Use somente letras e números na escolha dos nomes; 2) O primeiro caractere do nome deve ser sempre uma letra; 3) Não é permitido o uso de qualquer caractere especial (;,’, -, +, é, á, ., ?, espaço em branco) no nome de identificador. Quais exemplos são aplicáveis? 8 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Atributos de um Identificador 9 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Identificador e o tipo do dado armazenado Um identificador, como já vimos, armazena um único valor de dado por vez. Mas, será que ele pode armazenar qualquer dado? Os dados podem ter estruturas físicas diferentes na representação do seu valor. Vejamos, como exemplo. Os valores: 1 1,00 0,1 x 10 + 1 representam a mesma grandeza, mas possuem estruturas de organização diferentes. Observe que estamos tratando somente com dados numéricos. Caso, resolvamos envolver outros tipos de dados (como dados caracteres, dados lógicos, dados cadeias de caracteres, entre outros) teríamos estruturas completamente diferentes. 10 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Identificador e o tipo do dado armazenado As células de memória do computador precisam ser compatíveis com o tipo da estrutura do dado que ela irá armazenar, e como vimos estas estruturas variam com o tipo dado. Isto quer dizer que, precisamos informar ao computador quais serão as células de memória que serão utilizadas e qual o tipo de dado que será armazenado na mesma. A informação do tipo do dado armazenado na célula de memória tem outra função, que é a de definir quais serão as operações válidas que poderão ser aplicadas sobre o dado armazenado. Por exemplo: Se o dado for numérico podemos fazer operações aritméticas (adição, subtração, multiplicação, divisão e exponenciação). Caso, o dado seja uma cadeia de caracteres, poderemos efetuar uma operação de concatenação (juntar dois textos, armazenados em duas células de memória distintas em uma única célula de memória). 11 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos de dados simples 12 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos Numéricos A princípio, podemos admitir a existência de dois grandes conjuntos de natureza numérica: o conjunto dos números reais e o conjunto dos números inteiros. Inteiros: os números inteiros podem ser positivos, negativos ou nulos e não possuem um componente decimal. Na notação matemática em forma de conjunto, poderíamos ter a seguinte representação: Z = {..., -2, -1, 0, 1, 2,...}. Matematicamente, os números inteiros são compatíveis com os números reais, pois o conjunto dos reais contém o conjunto dos inteiros. Mas, a recíproca não é verdadeira, pois, nem todo número real é um inteiro, mas todo inteiro é um real. 13 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos Numéricos Adotaremos aqui, esta definição matemática. Todo identificador definido como real poderá receber um valor inteiro, mas os identificadores inteiros nunca poderão receber um valor real, mesmo que a parte fracionária do mesmo seja nula. Identificadores que forem deste tipo serão declarados como sendo do tipo inteiro. 14 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos Numéricos Reais: os números podem ser positivos, negativos ou nulos, e possuem, sempre, um componente decimal. Exemplificando alguns números reais:2,34 -3,14 0,0 34,0 -214,123 224x101 1000x10-4 Computacionalmente, existem muitas diferenças na forma de armazenamento de números inteiros e reais. Geralmente, valores inteiros exigem um espaço de memória menor do que os reais. Identificadores que forem deste tipo serão declarados como sendo do tipo real. 15 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos de dados não numéricos Os tipos simples não numéricos representam os conjuntos dos caracteres e dos valores lógicos(ou booleanos). Caractere / literal / alfanumérico: o conjunto dos caracteres são formados por letras (de A a Z), dígitos (de 0 a 9) e caracteres especiais (~, ., ?, >, <, ...). As diferenças entre dados numéricos e caracteres estão na forma de armazenamento e nas operações legais que podem manipular dados. Podemos fazer operações aritméticas com os dados numéricos, mas estas operações não são permitidas para os caracteres. Para diferenciar um dado numérico e um identificador de um caractere, utilizaremos sempre o dado caractere entre apóstrofes (’ ’). Assim poderíamos ter: 8 é numérico '8' é caractere A é um identificador 'A' é um caractere Identificadores que forem deste tipo serão declarados como sendo do tipo caractere. 16 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos de dados não numéricos Identificadores que forem declaradas como sendo do tipo caractere poderão armazenar um único caractere. Para armazenar uma sequência de caracteres, criaremos a estrutura cadeia de caracteres, a qual, consideraremos aqui como sendo um tipo de dado estruturado, e por ser mais complexa a estudaremos mais adiante. Mas para diferenciar a duas estruturas, eis um exemplo: ‘Z’ é um caractere ‘ANA’ é uma cadeia de caracteres 17 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Tipos de dados não numéricos Lógicos: o conjunto dos valores lógicos é formado, unicamente por duas possibilidades (falso e verdadeiro). Isto que dizer que, qualquer identificador que for declarado como sendo deste tipo, só poderá armazenar um destes valores. Os dados do tipo lógico são muito utilizados para controle do fluxo lógico do algoritmo. Os únicos operadores que podem manipular dados deste tipo são os operadores relacionais (<>, <, =, ...) e os operadores lógicos(E, OU, NÃO), os quais serão inseridos posteriormente. Identificadores que forem deste tipo serão declarados como sendo do tipo booleano ou lógico. 18 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Declaração do tipo do identificador A declaração do tipo do identificador deve ser feita na seção de declaração dos objetos que serão utilizadas no algoritmo. Esta declaração deve ser feita com a seguinte sintaxe: Objetos identificador : tipo; Caso haja mais de um identificador com o mesmo tipo no mesmo algoritmo, poderemos declará-los da seguinte forma: Objetos identificador1, identificador2, identificador3: tipo; Supondo que em um algoritmo, tenhamos os identificadores i1, i2e i3do tipo inteiro e c1, c2 do tipo caractere e b do tipo booleano e r do tipo real, teríamos a seguinte declaração dos tipos dos objetos: Objetos i1, i2, i3 : inteiro; cl, c2 : caractere; b : booleano; r : real; Uma das dificuldades de definição de tipo de um identificador ocorre quando temos que declará-lo como sendo de um tipo numérico, pois o mesmo poderá ser do tipo real ou inteiro. 19 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Exemplos Exemplo de números inteiros: número de pessoas convidadas para uma festa; um número par ou ímpar; um número primo; idade de uma pessoa (geralmente é tratada como inteiro); quantidade de mercadorias em estoque. Exemplos de números reais: o peso de uma pessoa (em Kg); percentual; nota de uma avaliação; média aritmética; preço de um produto. 20 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Dúvidas Existem situações em que podemos ficar em dúvida quanto ao tipo de resultado esperado em uma expressão, como por exemplo: a raiz quadrada de um número inteiro a divisão entre dois números inteiros Se quisermos calcular a raiz quadrada de 4, matematicamente, podemos admitir que o resultado é do tipo inteiro, mas se calcularmos a raiz quadrada de 5, o resultado obtido será do tipo real. Logo, qual deverá ser a tipo do identificador que receberá o resultado desta expressão? 21 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Dúvidas Quando houver alguma possibilidade do resultado de uma expressão ser do tipo real, o identificador que receberá o resultado da mesma deverá ser sempre do tipo real, pois os inteiros estão contidos nos reais, assim, se atribuirmos um valor inteiro a um identificador real nenhum erro ocorrerá, mas a recíproca não é verdadeira. 22 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Valores dos dados Os dados são os valores que serão armazenados em células de memória e que poderão ser acessados por referência aos identificadores, respectivos, associados com estas células. Assim, se tivermos os identificadores i, r, c e b como sendo inteiro, real, caractere e booleano, respectivamente, e atribuirmos a estes identificadores os valores de dados 100; 3,14, 'Z' e falso, teríamos a seguinte configuração: Se executarmos a ação informe o valor de r o resultado obtido será 3,14, pois este valor está associado com o identificador r. Assim, qualquer referência que fizermos a um identificador, estaremos, implicitamente, nos referenciando ao valor do dado associado ao mesmo. 23 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Exercício Dados dois números inteiros, diferentes de zero, faça um algoritmo que calcule a razão entre os mesmos. Dados dois números inteiros, diferentes de zero, faça um algoritmo que calcule a multiplicação entre os mesmos. Dados dois números inteiros, diferentes de zero, faça um algoritmo que calcule cada número ao quadrado e some seus resultados como resposta. Faça um algoritmo que peça 5 números reais e que informe a média destes. 24 mailto:mcostax@santoangelo.uri.br 30-002 – Algoritmos - Ms. Marcos André Costa – mcostax@santoangelo.uri.br Exercício ae(n1, n2); as(razão); Objetos n1, n2 : inteiro; razão : real; inicio das ações: conheça dois valores inteiros diferentes de zero e atribua-os a n1e a n2, respectivamente; calcule a expressão n1/n2 e atribua o resultado ao identificador razão; informe o valor armazenado no identificador razão; fim das ações. 25 mailto:mcostax@santoangelo.uri.br
Compartilhar