Tipos de Dados Simples

Propaganda
Programação
11543: Engenharia Informática
6638: Tecnologias e Sistemas de Informação
Cap. 3 — Tipos de Dados Simples
Tipos de Dados Simples
Tipos de Dados Simples
Objectivos:
• 
Hierarquia de tipos de dados
• 
Tipos de dados simples
• 
Tipos de dados compostos
• 
Tipos de dados definidos pelo utilizador
• 
A utilização de typedef na construção de novos tipos de dados
Tipos de Dados Simples
Taxonomia de tipos de dados
Tipos de Dados
void
Tipos Numéricos
Tipos Simples
Tipos Compostos
Tipos Apontadores
Tipos Enumerados
*
Tipos Inteiros
char
int
Tipos Reais
float
double
enum
Tipos de Dados Simples
Classificação de tipos de dados simples (TDS)
• 
Há 3 classes de TDS:
– 
– 
– 
Numéricos
• 
pré-definidos: char, int, float, double
• 
pertencem ao léxico da linguagem
Apontadores
• 
definidos pelo utilizador
• 
não pertencem ao léxico da linguagem
• 
requer a utilização do símbolo *
Enumerados
• 
definidos pelo utilizador
• 
não pertencem ao léxico da linguagem
• 
requer a utilização da palavra reservada enum
Consoante o contexto, o símbolo * pode ter as seguintes
utilizações:
§  Definição de tipos apontadores
§  Declaração de variáveis apontadoras
§  Operador de multiplicação
§  Operador de valoração
Tipos de Dados Simples
Características dos TDS
• 
Atomicidade
– 
têm valor atómico
– 
Exemplo (inteiros):
int x = 31;
• 
Ordem
– 
têm uma ordem ou escala
– 
Exemplo (inteiros):
20 < 31 < 35 < 36
Tipos de Dados Simples
Qualificadores de TDS
• 
Qualificadores de comprimento (nº de bytes)
– 
short
– 
long
– 
Exemplos:
short int x;
long float y;
• 
Qualificadores de sinal
– 
signed
– 
unsigned
– 
Exemplos:
signed int w;
unsigned int z;
Tipos de Dados Simples
Formatos de leitura/escrita
tipo
formato
descrição
char
%c
um único carácter
int
%d ou %i
um inteiro (base decimal)
int
%o
um inteiro (base octal)
int
%x ou %X
um inteiro (base hexadecimal)
short int
%hd
um inteiro curto (base decimal)
long int
%ld
um inteiro longo (base decimal)
unsigned short int
%hu
um short inteiro positivo
unsigned int
%u
um inteiro positivo
unsigned long int
%lu
um inteiro positivo longo
float
%f ou %e ou %E
um real de precisão simples
double
%f ou %e ou %E
um real de precisão dupla
Tipos de Dados Simples
Tipos de dados inteiros: char e int
• 
Uma variável do tipo char armazena um valor inteiro de 1 byte, podendo ser usada para guardar
um carácter ou um inteiro.
• 
Exemplos:
char c;
c = ‘A’;
/* estas instruções são equivalentes */
c = 65;
//---------------------------char a, b;
a = 5;
/* a contém o valor 5 */
b = ‘5’;
/* b contém o valor 53 na tabela ASCII */
Tipos de Dados Simples
Formatos de dados do tipo char
Formato de caracteres
/*
Escreve no ecrã o valor char dum carácter */
#include <stdio.h>
int main()
{
char ch;
printf(“Escreva um caracter:”);
scanf(“%c”,&ch);
printf(“O seu valor char = %c\n”,ch);
return 0;
}
/*
Escreve no ecrã o valor inteiro dum carácter */
#include <stdio.h>
int main()
{
char ch;
printf(“Escreva um caracter:”);
scanf(“%c”,&ch);
printf(“O seu valor numerico = %d\n”,ch);
return 0;
}
Formato de inteiros
Tipos de Dados Simples
Tipos de dados reais: float e double
• 
O tipo de dados float é para números reais de precisão simples (4 bytes).
• 
O tipo de dados double é para números reais de precisão dupla (8 bytes).
• 
Exemplos:
float x, y, z, w, t;
x = 0.345;
y = .67;
z = 89.;
w = 6.2E+5;
/* notação científica: representa 6.2 x105 */
t = 3.5E-4;
/* notação científica: representa 3.5´10-4 */
//---------------------------double a;
a = 5.23456789;
Tipos de Dados Simples
Valor de uma variável
Endereço de uma variável
memória
valor de j
endereço de j
j
1
#include <stdio.h>
int main()
{
int j = 1;
printf("O valor de j = %d\n",j);
printf("O endereco de j = %d\n",&j);
return 0;
}
Saída no ecrã:
O valor de j = 1
O endereco de j = 248623
248623
Tipos de Dados Simples
Tipos de dados apontadores: char*, int*, float*, double*
• 
Qualquer variável apontadora contém um valor (inteiro) que é um endereço de memória.
• 
Exemplo:
float j = 1.2;
float *p;
p = &j;
memória
valor de j
endereço de j
j
1.2
p
1342167
1342167
Tipos de Dados Simples
Exemplo: float*
memória
valor de j
endereço de j
j
1.2
1342167
p 1342167
#include <stdio.h>
int main()
{
float j = 1.2;
float *p;
p = &j;
printf("O valor de j = %f\n",j);
printf("O endereco de j = %d\n",p);
return 0;
}
Saída no ecrã:
O valor de j = 1.2
O endereco de j = 1342167
/* atribui o endereço de j a p */
Tipos de Dados Simples
Acesso ao valor de uma variável
• 
Há duas formas de ler (aceder a) o valor duma variável em memória:
– 
Leitura directa (ou acesso directo). Utiliza-se o nome da variável.
– 
Leitura indirecta (ou acesso indirecto). Utiliza-se operador de valoração * seguido de nome de
variável apontadora.
– 
Exemplo:
• 
O acesso ao valor 1.2 de j faz-se através do uso:
– 
da variável j
– 
da variável p que aponta para j
memória
valor de j
endereço de j
j
1.2
p
1342167
1342167
Tipos de Dados Simples
Exemplo:
memória
valor de j
endereço de j
j
1.2
1342167
p 1342167
#include <stdio.h>
int main()
{
float j = 1.2;
float *p;
p = &j;
printf("O valor de j = %f\n",j);
printf("O valor de j = %f\n",*p);
return 0;
}
Saída no ecrã:
O valor de j = 1.2
O valor de j = 1.2
acesso DIRECTO
ao valor de j
acesso INDIRECTO
ao valor de j
/* atribui o endereço de j a p */
/* acesso directo ao valor de j */
/* acesso indirecto ao valor de j */
Tipos de Dados Simples
Tipos de dados enumerados
• 
A linguagem C não tem propriamente tipos de dados enumerados pré-definidos.
• 
O que a linguagem C oferece é um operador enum que permite definir tipos de dados
enumerados; por exemplo: enum cor, enum dia, etc.
• 
Às vezes, por uma questão estética, faz-se o mascaramento dum tipo de dados enumerados
através da directiva typedef.
• 
Têm também uma ordem!
• 
Exemplos:
enum cor {red, blue, green, yellow};
enum dia {domingo, 2f, 3f, 4f, 5f, 6f,sabado};
enum fruta {apple, orange=10, lemon};
enum boolean {FALSE, TRUE};
Tipos de Dados Simples
Exemplo:
#include <stdio.h>
enum boolean {FALSE,TRUE};
int main()
{
enum boolean b;
int x=3,y=2;
b = x > y;
printf(“O valor de b = %d",b);
return 0;
}
Saída no ecrã:
O valor de b = 1
Tipos de Dados Simples
Exemplo: c/ typedef
#include <stdio.h>
#typedef enum {FALSE,TRUE} boolean;
int main()
{
boolean b;
int x=3,y=2;
b = x > y;
printf(“O valor de b = %d",b);
return 0;
}
Saída no ecrã:
O valor de b = 1
Tipos de Dados Simples
Nota importante
• 
Ao contrário de grande parte das linguagens, a linguagem C não tem explicitamente o tipo de
dados boolean.
• 
Foi por isso que o criámos no exemplo anterior.
• 
No entanto, a linguagem admite expressões lógicas, e, como tal, há sempre cálculo de
expressões lógicas cujo resultado é ou falso ou verdadeiro.
• 
Em C, o valor falso duma expressão lógica é o valor 0, ao passo que o valor verdadeiro é 1.
• 
É, por isto, que o resultado 1 (verdadeiro) da expressão x>y no exemplo anterior pode ser
atribuído à variável b. A variável b só admite dois valores possíveis: 0 (FALSE) e 1 (TRUE).
Tipos de Dados Simples
Sumário:
• 
Classificação de tipos de dados
• 
Classificação de tipos de dados simples
• 
Características de tipos de dados simples
• 
Qualificadores de comprimento e de sinal de tipos de dados simples
• 
Tipos de dados inteiros
• 
Tipos de dados reais
• 
Inicialização de variáveis
• 
Valor de / endereço de variável
• 
Tipos de dados apontadores
• 
Acessos directo e indirecto a valor duma variável
• 
Tipos de dados enumerados
• 
A directiva typedef
Download