Вы находитесь на странице: 1из 11

Cap.

3:
Tipos de Dados Simples

Sumário
 Taxonomia de tipos de dados
 Taxonomia 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
 Taxonomia de nomes ou identificadores
2

1
Taxonomia
de tipos de dados
Tipos de Dados

void Tipos Simples Tipos Compostos

Tipos Numéricos Tipos Apontadores Tipos Enumerados


*

Tipos Inteiros Tipos Reais enum

char int float double


3

Taxonomia
de tipos de dados simples
♦ Numéricos
 pré-definidos: char, int, float,
double
 pertencem ao léxico da linguagem

♦ Apontadores Consoante o contexto, o símbolo * pode ter as


 definidos pelo utilizador seguintes utilizações:
 não pertencem ao léxico da  Definição de tipos apontadores
linguagem  Declaração de variáveis apontadoras
 Operador de multiplicação
 requer a utilização do símbolo *
 Operador de valoração

♦ Enumerados
 definidos pelo utilizador
 não pertencem ao léxico da
linguagem
 requer a utilização da palavra
reservada enum
4

2
Características
dos tipos de dados simples
♦ Atomicidade
Têm valor atómico
Exemplo (inteiros):
int x = 31;

♦ Ordem
Têm uma ordem ou escala
Exemplo (inteiros):
20 < 31 < 35 < 36

Qualificadores
(de comprimento e de sinal)
de tipos de dados simples
short
Exemplo (declaração de variável inteira): short int x;

long
Exemplo (declaração de variável real): long int y;

signed
Exemplo (declaração de variável inteira c/ sinal): signed int y;

unsigned
Exemplo (declaração de variável inteira s/ sinal): unsigned int j;

3
Formatos de leitura e escrita
em linguagem C

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 */

4
Exemplo
/* OBJECTIVO:
Escreve no ecrã o valor char dum carácter
*/

#include <stdio.h>
main()
{
char ch;
printf(“Escreva um caracter:”);
scanf(“%c”,&ch);
printf(“O caracter é = %c\n”,ch);
}

formato de caracteres 9

Exemplo
/* OBJECTIVO:
Escreve no ecrã o valor inteiro dum carácter
*/

#include <stdio.h>
main()
{
char ch;
printf(“Escreva um caracter:”);
scanf(“%c”,&ch);
printf(“O seu valor numerico = %d\n”,ch);
exit(0);
}

formato de inteiros 10

5
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×105 */
t = 3.5E-4; /* notação científica: representa 3.5×10-4 */
----------------------------
double a;
a = 5.23456789; 11

Valor e endereço (&)


de uma variável
valor de j
endereço de j
j 248623
#include <stdio.h>
main()
{ memória
int j = 1;
printf("O valor de j = %d\n",j);
printf("O endereco de j = %d\n",&j);
}

Saída no ecrã:
O valor de j = 1
O endereco de j = 248623 12

6
Tipos de dados apontadores:
char *, int *, float *, double *
Qualquer variável apontadora contém um valor (inteiro) que é um
endereço de memória. memória
valor de j
endereço de j
Exemplo:
j 1342167

float j = 1.2;
float *p; p

p = &j;

13

Exemplo
#include <stdio.h>
main()
{
float j = 1.2;
float *p;

p = &j; /* atribui o endereço de j a p */


printf("O valor de j = %f\n",j);
printf("O endereco de j = %d\n",p);
}

Saída no ecrã:
O valor de j = 1.2
O endereco de j = 1342167 14

7
Acesso a valor
de 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.
memória
valor de j
endereço de j
Exemplo: j 1342167
O acesso ao valor 1.2 de j faz-se
através do uso:
• da variável j
p
• da variável p que aponta para j

15

Exemplo
#include <stdio.h>
main()
{
float j = 1.2;
float *p; acesso DIRECTO ao
valor de j
p = &j; /* atribui o endereço de j a p */
printf("O valor de j = %f\n",j);
printf("O valor de j = %f\n",*p);
} acesso INDIRECTO
ao valor de j

Saída no ecrã:
O valor de j = 1.2
O valor de j = 1.2 16

8
Tipos de dados apontadores
definidos pelo utilizador
− A linguagem C não tem propriamente tipos de dados apontadores pré-definidos.
− O que a linguagem C oferece é um operador * que permite definir tipos de dados
apontadores; por exemplo: char *, int *, float *, double *, etc.
− Às vezes, por uma questão estética, faz-se o mascaramento dum tipo de dados
apontadores através da directiva typedef.
− Têm também uma ordem! memória
valor de j
endereço de j

Exemplo: j 1342167

#typedef float* pfloat;


p

17

Exemplo
#include <stdio.h>
typedef float* pfloat; /*novo tipo de dados apontadores*/

main()
{ float j = 1.2;
pfloat p;

p = &j; /* atribui o endereço de j a p */


printf("O valor de j = %f\n",j);
printf("O valor de j = %f\n",*p);
}

Saída no ecrã:
O valor de j = 1.2
O valor de j = 1.2 18

9
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!

Exemplo:

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};

19

Exemplo
#include <stdio.h>
enum boolean {FALSE,TRUE};

main()
{
enum boolean b;
int x=3,y=2;

b = x > y;
printf(“O valor de b = %d",b) ;
}

Saída no ecrã:
O valor de b = 1
20

10
Exemplo
(c/ typedef)
#include <stdio.h>
typedef enum {FALSE,TRUE} boolean;

main()
{
boolean b;
int x=3,y=2;

b = x > y;
printf(“O valor de b = %d",b) ;
}

Saída no ecrã:
O valor de b = 1
21

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).

22 FIM

11