Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

9

Click here to load reader

Transcript of Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

Page 1: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 1/9

Matemática Aplicada

Professores autoresUmberto Souza da CostaNatália dos Santos Lucena Neta

Aula 7 – Tipos de dados, variáveis e constantes

Apresentação

Durante o processamento, um programa de computador precisa armazenar e manipular dados. Os dados de um programa são valores, comouma cadeia de caracteres que representa o nome de um funcionário ou um valor numérico que representa seu salário bruto, e esses valoresprecisam ser devidamente armazenados para permitir a realização de diversas operações para a produção de resultados.

O conjunto de instruções de um programa de computador determina precisamente quais são os dados de entrada esperados, qualprocessamento será realizado sobre esses dados e como o resultado produzido será informado a quem o requisitou. Podemos citar, porexemplo, um programa para o cálculo do valor do Imposto de Renda de um funcionário a partir do valor de seu salário bruto.

Nesta aula, você vai aprender sobre a representação dos dados armazenados e manipulados por programas de computador. Você verá ostipos de dados, que são conceitos muito importantes às linguagens de programação e estreitamente relacionados à representação dosvalores de um programa por meio de suas variáveis e constantes. Você vai estudar também as operações que são comumente realizadassobre os tipos de dados encontrados na maioria das linguagens de programação.

Objetivos

Ao final desta aula, você será capaz de:

entender a importância dos tipos de dados para as linguagens de programação;conhecer os tipos de dados e suas operações comuns à maioria das linguagens de programação;entender os conceitos de variável e constante e aplicá-los a programas de computador.

Tipos de dados

Você já deve ter ouvido algumas definições sobre o que é um computador. Vejamos mais uma... O computador é um dispositivo eletrônicoque, em seu nível mais elementar, reconhece apenas dois estados elementares: a presença ou ausência de sinais elétricos, ou, de formasimples, é um elemento que está ligado ou desligado. Por consequência, todos os dados de um computador precisam ser representadoscom base em um sistema de numeração binário, onde apenas dois valores diferentes são distinguidos. Comumente, esses dois estados sãorepresentados como 0 (zero) e 1 (um) e são chamados de dígitos binários, ou simplesmente bit (binary digit), a menor unidade de informaçãono computador.

Então, você pode perguntar: se apenas dois estados podem ser distinguidos no nível mais elementar de um computador, como podemosrepresentar informações tão variadas, como documentos, imagens e sons? A reposta a essa pergunta é simples: podemos representar umimenso número de estados distintos por meio das diversas combinações sobre conjuntos de bits. Agrupando bits, podemos distinguir umnúmero muito maior de estados, um para cada combinação possível. Quanto mais bits utilizarmos em uma representação, maior o número decombinações possíveis e um número maior de valores pode ser distinguido. Comumente, a unidade básica de tratamento de dados é um

agrupamento de 8 (oito) bits, conhecido como byte (binary term). Um byte com 8 (oito) bits é capaz de representar combinações distintas,ou seja, 256 diferentes valores. Na memória de um computador, existe um endereço de memória específico a cada byte, assim como cadacasa tem um número específico em uma rua. Esse mecanismo é capaz de identificar a localização de uma representação de informaçõesespecíficas. Contudo, por questões de eficiência, associamos endereços de memória a grupos de bytes, em vez de a um byte individual.Geralmente, agrupamentos de 2, 4, 6 ou 8 bytes são associados a endereços distintos. Esse agrupamento de bytes é conhecido comopalavra.

Portanto, todos os valores manipulados por um programa, sejam referentes aos dados de entrada, saída ou à computação de resultadosintermediários, são representados internamente no computador por meio de um agrupamento de bits, independente se o valor correspondea uma frase, a um número inteiro ou a um número real, por exemplo. Contudo, quando codificamos instruções em uma linguagem deprogramação de alto nível, existe distinção entre valores de diferentes categorias, ou tipos. A maioria das linguagens de programação

categoriza valores com propriedades em comum em um tipo, da mesma forma que a Matemática classifica elementos que possuempropriedades em comum em um conjunto. Essa abordagem permite que as operações sejam definidas sobre os valores de um tipo, tomandocomo base o formato geral de representação interna dos valores do tipo, em termos de agrupamento de bits, da mesma forma que funçõesmatemáticas são normalmente definidas para operar sobre valores gerais de um conjunto. Portanto, a classificação de valores em tipos ébenéfica às linguagens de programação porque permite estabelecer propriedades e cálculos para todos os valores de um tipo de uma sóvez, em vez de ter que especificar a propriedade ou operação para cada valor individual. Por exemplo, o compilador de uma linguagem deprogramação deverá traduzir a operação de soma entre dois valores inteiros para a operação de soma entre agrupamentos de bits querepresentam inteiros, independente dos valores específicos sobre os quais a soma deve ser desenvolvida.

Os tipos de dados oferecidos por uma linguagem de programação têm relação direta com a facilidade com que o programador cria seusprogramas, pois quanto mais as estruturas de dados forem flexíveis e adaptadas a um problema, mais natural e simples será a soluçãoproposta.

Os tipos de dados são comumente classificados em tipos de dados primitivos e tipos de dados estruturados. Um tipo de dado primitivo éaquele que não pode ser definido em termos de outro tipo mais simples. Como exemplos de tipos primitivos, citamos o tipo inteiro e o tiporeal. Por outro lado, um tipo de dado estruturado é aquele construído a partir de tipos mais simples. Os registros e os arranjos, construídosa partir de campos e elementos mais simples, respectivamente, são exemplos de tipos de dados estruturados. Nas seções seguintes, vocêvai conhecer os tipos de dados primitivos e estruturados mais comuns.

Tipos primitivos

Page 2: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 2/9

Tipos primitivos

Os tipos primitivos de dados são atômicos, no sentido em que não podem ser decompostos em tipos mais simples. Alguns tipos primitivosrelacionam-se diretamente à sua representação interna, como é o caso dos números inteiros. Outros tipos primitivos, como o tipo caractere,precisam de um pequeno suporte de hardware ou software para serem representados internamente. Agora, você verá com mais detalhes ostipos primitivos numéricos, caractere e booleano.

Tipos numéricos

Os tipos numéricos estão entre os primeiros implementados pelas linguagens de programação. A maioria das linguagens oferece tanto

representações dos números inteiros, , como representações dos números reais, . As representações computacionais desses tipos sãoapenas aproximações desses conjuntos matemáticos, que são infinitos, não podendo ser representados na memória do computador, que éfinita. No caso dos números reais, temos, também, apenas aproximações das dízimas infinitas não periódicas.

A Tabela 1 mostra os principais operadores aritméticos, a forma como são representados e exemplos de como utilizá-los.

Tabela 1 – Operadores aritméticos.

Operador Representação Exemplo

Menos unário - -a

Potenciação ^ a^5

Multiplicação * a*5

Divisão / a/5

Módulo (resto da divisão) % a%5

Adição + a + b

Subtração - a – b

Valores numéricos podem também ser operandos de operadores relacionais. A Tabela 2 mostra os operadores relacionais mais comuns.

Tabela 2 – Operadores relacionais

Operador Representação Exemplo

Comparação menor < a < 5

Comparação menor-igual ≤ a ≤ 5

Comparação maior > a > 5

Comparação maior-igual ≥ a ≥ 5

Comparação igual == a == 5

Comparação diferente != a != 5

Os operadores relacionais são utilizados para comparar valores, podendo ser aplicados sobre operandos numéricos, além de outros tipos.Contudo, um operador relacional sempre produz um valor de tipo booleano, independente do tipo dos operandos comparados. Ainda nestaaula, você verá o tipo de dado booleano.

Tipo inteiro

O tipo inteiro é o tipo primitivo numérico mais comum. Sem parte fracionária, o tipo inteiro é caracterizado por sua faixa de valoresrepresentáveis, havendo versões dos inteiros com ou sem sinal. São comuns implementações de inteiros, inteiros sem sinal e inteiroslongos. Um tipo inteiro com sinal é representado internamente como uma sequência de bits, em geral dois bytes, sendo o bit da extremaesquerda utilizado para representar o sinal e os demais bits para representar o valor absoluto do número, normalmente em uma notação

conhecida como complemento de dois. Por exemplo, utilizando dois bytes os números decimais e são representados na notação de

complemento de dois como e , respectivamente. No caso dos inteiros sem sinal, o bit que seria utilizadopara representação do sinal se destina também à representação do valor absoluto do número. Em um inteiro sem sinal, apenas o zero e

valores positivos são representáveis, correspondendo ao conjunto dos números naturais, . Por fim, um inteiro longo é um inteiro com sinalonde mais bits são utilizados para representar o valor absoluto do número, permitindo a representação de valores absolutos maiores. Emgeral, um inteiro longo tem o dobro de bits em relação ao número de bits de um inteiro simples. A diversidade de tipos inteiros depende doprojeto da linguagem de programação e da arquitetura do computador para o qual o compilador ou interpretador da linguagem foiprojetado. Veja na Tabela 3 os exemplos de inteiros, tomando como base os inteiros oferecidos pelas linguagens C/C++:

Page 3: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 3/9

Tabela 3 – Valores de tipo inteiro na linguagem C

Tipo Tamanho em Bytes Faixa de Valores

Int 2 -32768 a 32767

unsigned int 2 0 a 65535

long int 4 -2.147.483.648 a 2.147.483.647

unsigned long int 4 0 a 4.294.967.295

Na Tabela 3, unsigned int corresponde a um inteiro simples sem sinal, enquanto unsigned long int corresponde a um inteiro longo sem sinal.Note que o uso do bit de sinal como parte da representação do valor absoluto permite aproximadamente dobrar o número de valorespositivos representáveis.

Na escrita do algoritmo sob a forma de pseudocódigo, o tipo inteiro é identificado pela palavra reservada inteiro. Como o algoritmo é umarepresentação genérica, não existe a preocupação com o tamanho necessário para armazenar esse tipo. Veja alguns exemplos de valoresdo tipo inteiro: 5, -3 e 0.

Tipo flutuante

Os números em ponto-flutuante correspondem ao conjunto dos números reais, aqueles que abrangem os números racionais e irracionais.Para muitos números reais, as representações computacionais em ponto-flutuante são apenas aproximações, como acontece com dízimas

periódicas e números como , e pode haver prejuízo de exatidão durante algumas operações aritméticas, como em , supondo numeradore denominador representados em ponto-flutuante.

Um valor em ponto-flutuante é definido em termos de precisão e faixa. A precisão corresponde à exatidão de sua parte fracionária, medidapelo número de bits empregados para representá-la, ao passo que a faixa de valores é uma combinação dos valores do expoente e daparte fracionária. Um número em ponto-flutuante é geralmente representado pelo padrão de ponto-flutuante IEEE 754. Nesse padrão, umbit representa o sinal, seguido de uma sequência de bits que representa o expoente e outra sequência de bits que representa o valor daparte fracionária, conforme mostrado a seguir:

1 bit 8 bits 23 bits

sinal expoente Fração

Como acontece com os inteiros, a variedade de tipos flutuantes em uma linguagem de programação depende do projeto da linguagem e desua arquitetura alvo. Um tipo ponto-flutuante de precisão simples costuma ser armazenado em quatro bytes, enquanto os de precisão duplausam oito bytes.

Tabela 4 – Valores de tipo flutuante na linguagem C

Tipo Tamanho em Bytes Faixa de Valores

float 4 -3.4E-38 a 3.4E+38

double 8 -1.7E-308 a 1.7E+308

Uma representação alternativa à representação de números reais é oferecida pela linguagem Cobol, que armazena esses númerosutilizando a codificação BCD (Binary Coded Decimal), onde códigos binários são associados a cada dígito decimal individualmente, um dígitopor byte ou dois dígitos por byte, com o ponto decimal em uma posição fixa no valor. O Cobol é uma linguagem de programação antiga, masainda bastante utilizada em sistemas antigos ainda em operação.

Na escrita do pseudocódigo, os números reais (tipo flutuante) são identificados unicamente pela palavra especial real e, assim como nosinteiros, não existe a preocupação com o tamanho necessário para armazenar esse tipo. Como exemplos de valores do tipo real, temos: 2,-2, 0.8, -0.8, 3.71654 etc.

Tipo booleano

O tipo booleano é certamente o tipo primitivo mais simples, pois possui apenas dois valores associados: true e false. Normalmente, o tipobooleano é empregado como sinalizador ou comutador para indicar a ocorrência de certas condições ou para desviar o fluxo de execução doprograma. Ainda que algumas linguagens de programação utilizem outros tipos para essas funções, como acontece com a linguagem C, ouso do tipo booleano geralmente torna o programa mais compreensível.

Como o tipo booleano apresenta apenas dois valores, somos tentados a pensar que esse tipo é representado por meio de um único bit.Contudo, devido a questões de eficiência, o tipo booleano costuma ser representado na menor célula de memória eficientementeendereçável, geralmente o byte.Na escrita do algoritmo, o tipo primitivo booleano é identificado pela palavra especial booleano e, assim como nos outros tipos, não existe apreocupação com o tamanho necessário para armazenar esse tipo. Nesse contexto, o tipo booleano pode assumir um dos valores: “falso”ou “verdadeiro”.

A Tabela 5 mostra os operadores que podem ser utilizados sobre tipos booleanos.

Tabela 5 – Operadores lógicos

Page 4: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 4/9

Operador Representação Exemplo

Negação ! !a

Conjunção && a && b

Disjunção || a || b

Na Tabela 5, e representam variáveis ou valores booleanos.

Tipo caractere

O tipo caractere corresponde aos símbolos alfanuméricos armazenados como codificações numéricas. As codificações mais conhecidas são aASCII (American Standard Code for Information Interchange) que utiliza os valores de 0 a 127 para codificar 128 diferentes caracteres, e aUnicode, uma tabela de codificação de 16 bits que inclui caracteres da maioria das linguagens naturais. Em uma tabela de codificação, cadacaractere é identificado com um código correspondente, conforme trecho da tabela ASCII apresentado na Tabela 6 a seguir:

Tabela 6 – Trecho da Tabela ASCII

Binário Decimal Hexa Caractere

0100 0000 64 40 @

0100 0001 65 41 A

0100 0010 66 42 B

0100 0011 67 43 C

Além dos símbolos visíveis, essas tabelas de codificação incluem caracteres não imprimíveis, utilizados para controle de impressão, comotabulação e quebra de linha.

Valores do tipo caractere são comumente definidos entre aspas simples nas linguagens de programação. Por exemplo, o valor caractere

deve ser escrito como . Na escrita do pseudocódigo, o tipo caractere será identificado pela palavra reservada caractere e seus valoresserão denotados entre aspas simples.

Atividade 1

1. O que é um tipo de dado primitivo?2. O que é um tipo de dado estruturado?3. A quantidade de alunos presentes a uma sala pode ser representado por um valor de tipo inteiro ou flutuante. Qual a

vantagem de representar esse número como um inteiro?4. Imagine um programa que calcula o salário total de um funcionário levando em conta:

a. o total de horas trabalhadas (horas cheias);b. o valor pago por hora trabalhada (em R$);c. o valor do bônus para o melhor funcionário do mês (em R$);d. a indicação se o funcionário é ou não o melhor do mês (Sim/Não).

Identifique os tipos envolvidos em cada um dos itens apresentados anteriormente.

Tipo string

Uma string é uma cadeia de caracteres, sendo o tipo utilizado para representar valores textuais, como nomes, endereços etc. Em algumaslinguagens, as strings são representadas como arranjos unidimensionais cujos elementos são caracteres, enquanto em outras as stringssão oferecidas como um tipo básico da linguagem. Em nossas aulas, adotaremos essa última abordagem.

Os caracteres que compõem uma string correspondem aos símbolos da tabela de codificação utilizada pela linguagem de programação, mas

os valores strings são normalmente escritos como uma sequência de caracteres envolvidos entre aspas duplas. Portanto, os valores e são diferentes, pois o primeiro tem tipo caractere, enquanto o segundo é do tipo string.

Em Portugol, o tipo string é denominado como texto e seus valores são tratados conforme o exemplo seguinte, que mostra a declaração dastring nome, seguida da atribuição do valor Digital à string:

var nome: textonome ← “Digital”

Na Tabela 7, você verá as operações mais comumente realizadas sobre o tipo string.

Page 5: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 5/9

Tabela 7 – Algumas operações sobre strings

Operação Descrição

Inversão Retorna a string escrita na ordem inversa.

ComparaçãoCompara se duas strings são iguais, retornando 0 (zero)

em caso positivo.

ConcatenaçãoRetorna a junção das duas strings, com a segunda string

começando imediatamente após o fim da primeira.

Tipos estruturados

Os tipos de dados estruturados recebem esse nome porque são construídos a partir da aplicação de construtores de tipos a tipos maissimples. A possibilidade de utilizar construtores de tipos é importante porque permite ao programador definir novos tipos devidamentevoltados à solução do problema tratado. Abordaremos dois tipos de dados estruturados em nossa discussão: os arranjos e os registros.

Arranjos

Os arranjos são um tipo de dado estruturado caracterizado como um agregado de dados homogêneo, isto é, um tipo de dado construídocomo um agrupamento de elementos de mesmo tipo. Os arranjos têm relação direta com as matrizes da Matemática, discutidas em nossaquarta aula (Matrizes). Da mesma forma como acontece com as matrizes matemáticas, um arranjo pode ter uma ou mais dimensões, cada

uma delas relacionada a um índice. De forma geral, um arranjo de dimensões corresponde a uma matriz de dimensões, necessitando de

índices para identificar um de seus elementos individualmente.

Na maioria das linguagens de programação, os elementos de um arranjo podem assumir qualquer um dos tipos válidos, desde que todos oselementos do arranjo possuam o mesmo tipo. Por outro lado, os índices são normalmente valores numéricos ordinais, comumente inteiros.Geralmente, os índices de um arranjo iniciam-se em um ou zero, embora certas linguagens deixem essa decisão para o programador, quefica responsável por escolher a faixa de índices a utilizar em cada programa. Para simplificar seu aprendizado e torná-lo coerente com o quevocê viu acerca das matrizes matemáticas, assumiremos que os índices se iniciam em um, sem prejuízo para a generalidade desse estudo.Apresentamos, na Figura 1, exemplos de arranjos com uma, duas e três dimensões.

(a) Arranjo (b) Arranjo (c) Arranjo

Figura 1 – Exemplos de arranjo com uma (a), duas (b) e três (c) dimensões.

Na Figura 1, você pode ver que os índices que identificam a primeira dimensão aparecem em vermelho, a segunda dimensão em azul e aterceira dimensão em verde. Quando listamos os índices de um arranjo, devemos apresentá-los na ordem correspondentes a suas

dimensões. Portanto, os elementos , e mostrados na Figura 1 correspondem, respectivamente, aos elementos , e .

Note que identifica o elemento localizado na segunda linha e terceira coluna do arranjo , enquanto identifica o elemento

localizado na primeira linha, terceira coluna e primeiro nível de profundidade de .

Os elementos de um arranjo são armazenados em posições adjacentes na memória do computador, independente de quantas dimensões omesmo envolve. Os índices do arranjo são utilizados pelo compilador ou interpretador da linguagem de programação para indicar comocalcular o endereço de cada elemento em relação ao endereço da posição onde começa o armazenamento do conjunto de dados referenteao arranjo. Os arranjos são muito úteis quando precisamos armazenar dados de mesmo tipo e que têm relação entre si, permitindo uma forma deacesso adequada que se mostrará muito adaptada às estruturas de repetição, conforme veremos nas próximas aulas. Como exemplo de

situação onde os arranjos se mostram adequados, considere o problema de armazenar as notas de todos os alunos de uma turma com

alunos em uma determinada avaliação para posteriormente calcular a média da turma nesta avaliação. As notas podem ser inicialmente

armazenadas em um arranjo com elementos, uma nota em cada posição do arranjo. Posteriormente, as notas armazenadas nesse arranjopoderão ser facilmente acessadas, uma a uma, pelo procedimento de cálculo da média utilizando uma estrutura de repetição. As matrizespossuem diversas outras aplicações, incluindo aplicações complexas como previsão do tempo.

Na escrita do algoritmo em pseudocódigo, os arranjos são identificados pelas palavras reservadas arranjo de, seguidas do número deposições por dimensão e do tipo dos dados que neles serão armazenados. Veja os exemplos a seguir:

var Vet : arranjo de 10 inteiro

var Mat : arranjo de 25 10 caractere

var Opcoes : arranjo de 2 texto [“Inserir", “Sair"]

Page 6: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 6/9

Os arranjos que você acabou de ver definem, na ordem em que são mostrados, um arranjo unidimensional de 10 inteiros (Vet), um arranjobidimensional de caracteres com 25 linhas e 10 colunas (Mat), e um arranjo unidimensional de strings com 2 posições, já inicializadas,(Opcoes). Os programadores geralmente se referem aos arranjos unidimensionais simplesmente como vetores e aos arranjos bidimensionaiscomo matrizes. Por exemplo, os programadores geralmente se referem a um arranjo unidimensional de elementos inteiros simplesmentecomo um vetor de inteiros, enquanto um arranjo bidimensional de elementos flutuantes seria chamado de uma matriz de flutuantes.

Registros

Os registros, também conhecidos como estruturas, definem um tipo de dado estruturado que pode armazenar dados de tipos variados,sendo, portanto, considerado um agrupamento de dados potencialmente heterogêneo. Os elementos que compõem um registro sãoorganizados em campos: cada elemento de dado que compõe o registro encontra-se associado a um campo do registro, que possui umnome de campo associado utilizado para identificá-lo individualmente. Diferente dos arranjos, onde os elementos componentes sãoidentificados com base apenas em sua posição dentro do agrupamento de dados, um elemento de um registro é identificado com base nonome de seu campo.

Os registros são muito úteis quando precisamos armazenar e manipular dados que se encontram relacionados entre si, mas que possuemtipos diferentes. Por exemplo, as informações pertinentes a um aluno, como nome, matrícula, notas individuais nas três avaliações, e médiaem uma disciplina podem ser representadas com sucesso por meio da seguinte declaração de estrutura:

Observe que essa declaração apenas cria um novo tipo, o tipo . Suponha que representa uma instância desse tipo, ou seja, é

um nome específico associado a um conjunto de valores do tipo . O acesso aos campos de será realizado por meio da seguintesintaxe:

onde corresponde ao nome do campo que desejamos acessar. Por exemplo, as seguintes instruções definem o acesso aos campos

e da estrutura , de tipo :

Em relação ao armazenamento, os campos de um registro se localizam em posições de memória adjacentes, como acontece com os arranjos.Contudo, o cálculo do endereço de deslocamento de cada campo em relação ao início do registro varia de acordo com o tipo associado acada campo. Mas, você não precisa se preocupar com isso, pois esse cálculo será feito automaticamente pelo compilador ou interpretador dalinguagem de programação a partir do acesso que você definir com base nos nomes dos campos do registro.

Atividade 2

1. Diferencie os tipos de dados estruturados arranjo e registro.2. Quando devemos utilizar um tipo arranjo? E quando devemos utilizar um tipo registro?3. Imagine um programa que manipule a representação de uma classe com cinco alunos. Cada aluno dessa classe é

representado pelas seguintes informações:a. nome completo;b. matrícula;c. nota.

Identifique os tipos envolvidos em cada um dos itens apresentados anteriormente. Em seguida, crie um tipo para representarcada um dos alunos e um tipo para representar a própria classe.

4. Foi realizada uma pesquisa entre 500 habitantes de certa região. De cada habitante, foram coletados os dados: CPF,idade, sexo, salário e número de filhos. Crie a estrutura de dados adequada para armazenar essas informações.

Variáveis e constantes

Na Matemática, uma variável é utilizada para representar um valor desconhecido, tipicamente conhecido como incógnita da expressão,

podendo assumir qualquer valor do conjunto ao qual a variável pertence. É comum vermos expressões como , onde a variável representa um valor inteiro desconhecido. Nas linguagens de programação, uma variável representa um valor qualquer de um determinado tipo, o tipo da variável. Na maioria daslinguagens de programação, uma variável é identificada por um nome associado ao espaço de memória reservada para o armazenamentode dados de um determinado tipo, funcionando como uma abstração de uma célula de memória. Ao dizer que uma variável é uma abstraçãode um espaço de memória, queremos dizer que uma variável se comporta como um nome associado a um espaço de memória docomputador. Como tipos de dados diferentes têm diferentes formatos e demandam diferentes tamanhos de armazenamento, o tamanho doespaço de memória reservado a uma variável dependerá do tipo da variável, geralmente informado durante a declaração da variável:

Page 7: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 7/9

var i: inteirovar media: realvar acertou: booleanovar letra: caracterevar titulo: texto

O nome de uma variável deve ser escolhido com prudência, de forma a ser significativo, fazendo com que a leitura de seu identificadornaturalmente lembre a função ou uso da variável, facilitando assim o entendimento do código do programa. Se quisermos ler o valorassociado a uma variável, basta escrevermos o nome dessa variável na expressão onde seu valor deve ser considerado. Por outro lado, ovalor associado a uma variável pode ser alterado por meio de uma instrução conhecida como atribuição (←):

i ← -2media ← 5.6acertou ← verdadeiroletra ← ‘n’titulo ← “Aula 07”

Atribuir um valor a uma variável corresponde a armazenar o valor atribuído ao espaço de memória associado àquela variável. Como esseespaço de armazenamento pode armazenar apenas um valor de determinado tipo a cada momento, uma atribuição substitui o valoranteriormente armazenado.

Observe este exemplo:

(1) var a, b, c: inteiro ← 0(2) a ← b + 6(3) c ← 3 * a(4) b ← (c - a)*2(5) a ← b/a

Você é capaz de mostrar qual o valor de cada uma das variáveis ao fim do algoritmo? Acompanhe a tabela a seguir com os valores ao fim decada linha:

Linha a b c

1 0 0 0

2 6 0 0

3 6 0 18

4 6 24 18

5 4 24 18

Viu como as variáveis se comportam? Inicialmente, todas as variáveis, a, b e c estavam com valor inicial zero e com o decorrer das operaçõesesses valores foram atualizados.

Então, você pode perguntar: e o que é uma constante de uma linguagem de programação? Essas constantes funcionam de maneirasemelhante às constantes matemáticas. Podemos tomar a expressão que define a área de um círculo como exemplo:

onde a área e o raio do círculo são representados pelas incógnitas e , enquanto tem sempre o valor . Da mesma forma, umaconstante de um programa é um nome associado a um valor que não muda ao longo do tempo de execução do programa. Constantes sãobastante úteis por simplificar o trabalho do programador, permitindo que um nome seja usado em lugar do valor explícito. Por exemplo,

podemos usar a constante para representar cada uma das ocorrências do valor em um programa. Além disso, as constantespermitem que o código seja alterado com rapidez e sem esforço, pois a redefinição do valor de uma constante requer apenas a alteração desua instrução de definição, mas o novo valor associado será considerado por todas as instruções que referenciam a constante. Um bom

exemplo desse uso seria o de uma constante que representa o número de alunos de uma turma: uma simples redefinição do valor da

constante afetará todas as computações realizadas com base em .

Em nosso pseudocódigo, a definição de constantes será realizada da seguinte forma:

cte MSN: texto “Ola, mundo!”escreva (MSN)

onde constante MSN, introduzida pela palavra especial cte, é uma constante do tipo string e que representa o valor “Olá, mundo!”.

Tanto as variáveis como as constantes têm um tipo associado e armazenam apenas valores desse tipo. Contudo, o valor da constante édefinido no início do programa e permanece o mesmo até o fim da execução do programa, não podendo ser atribuído, enquanto o valor deuma variável pode ser alterado sempre que necessário.

Os identificadores das variáveis e constantes devem ser formados atendendo a algumas regras simples:

conforme discutimos, os identificadores devem ser significativos. O identificador deve remeter o leitor ao contexto da variável ouconstante;os identificadores podem ser formados por letras, algarismos e o caractere '_', não podendo ser iniciados por algarismos;os identificadores não podem ser palavras especiais da linguagem de programação utilizada. Uma palavra especial é quando seu uso

Page 8: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 8/9

os identificadores não podem ser palavras especiais da linguagem de programação utilizada. Uma palavra especial é quando seu usojá se destina à identificação de um elemento/componente da linguagem de programação. Por exemplo, em Portugol as palavras var,arranjo e booleano não podem ser utilizadas para nomear variáveis ou constantes, pois elas já têm emprego bem definida.

Desde que respeitemos as regras acima, podemos criar padrões adicionais que facilitem a compreensão do código produzido. Comoexemplo, muitos programadores costumam identificar as constantes com letras maiúsculas, facilitando seu reconhecimento no código.

Atividade 3

1. Defina, com suas próprias palavras, os seguintes termos:identificador;constante;variável.

2. Qual a utilidade das variáveis?3. uando devemos utilizar uma constante em vez de uma variável?

Assim, sabemos que os tipos de dados, as variáveis e as constantes são elementos fundamentais na construção de programas. Adiversidade de tipos de dados e de mecanismos para a construção de novos tipos pelos programadores surgiu com o objetivo de facilitar otrabalho do programador e aumentar sua produtividade. A facilidade com que os programadores executam suas tarefas depende de quãobem os tipos de dados coincidem com o espaço de problema do mundo real. Portanto, o conhecimento dos tipos de dados e dasrepresentações de seus valores em constantes e variáveis é essencial ao programador.

Leituras complementares

Para complementar seu estudo sobre os tipos de dados, variáveis e constantes, consulte estas fontes:

NETTO, José L. M. Rangel. Tipos de dados. Disponível em: <http://www-di.inf.puc-rio.br/~rangel/lp/LP4.PDF>. Acesso em: 25 fev. 2010.

Neste documento, você encontrará mais informações sobre os tipos de dados estruturados, chamados pelo autor de tipos definidos pelousuário. Atenção: a notação utilizada nos algoritmos é diferente da nossa, embora possa ser entendida sem dificuldade.

AMARAL, Fernando. Algoritmos: conceitos gerais. Disponível em: <http://www.prof2000.pt/users/famaral/ig/tlp/conceitos.htm>. Acesso em:

25 fev. 2010.

Aqui, você pode conhecer mais sobre os tipos de dados e operadores aritméticos, relacionais e lógicos.

Resumo

Nesta aula, você aprendeu sobre os principais tipos de dados, tanto básicos quanto estruturados. Para cada tipo apresentado, vocêconheceu os principais operadores e sua representação em Portugol, notação empregada para escrever nossos algoritmos empseudocódigo. O conteúdo aprendido hoje será muito útil nas aulas seguintes, quando aprenderemos mais a respeito dos algoritmos e deseus elementos essenciais.

Autoavaliação

1. Quais são os principais tipos de dados primitivos? Dê um exemplo de cada um deles.2. Quais são os principais tipos de dados estruturados? Dê um exemplo de cada um deles.3. Indique os nomes de variáveis que são válidos. Justifique os nomes inválidos.

a. somab. media_finalc. R$d. textoe. 2diasf. prova 1g. lado.do.terreno

4. Identifique o tipo mais adequado para cada uma das constantes abaixo:a. 199b. “199”c. 1.99d. -1.99e. “s”f. ‘s’

5. Escreva um algoritmo em pseudocódigo, que declare um vetor de 10 elementos inteiros e, em seguida, atribua ao elemento de

índice o valor . Em seguida, escreva o valor armazenado na posição de índice 10 do vetor.6. Defina um registro capaz de armazenar as seguintes informações sobre um aluno: nome, data de nascimento, CPF, matrícula,

curso e coeficiente de rendimento.

Referencias

MEDINA, M.; FERTIG, C. Algoritmos e programação: teoria e prática. São Paulo: Novatec, 2006.

Page 9: Metropole Digital - Aula 7 Matemática Aplicada - Tipos de Dados, Variáveis e Constantes

30/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_07.html 9/9

PUGA, S.; RISSETTI, G. Lógica de programação e estruturas de dados com aplicações em Java. São Paulo: Pearson Prentice Hall, 2003.

SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto Alegre: Bookman, 2003.

Voltar Imprimir Topo