Upload
dinhnhu
View
217
Download
0
Embed Size (px)
Citation preview
ProgramaçãoEngenharia Informática (13205) – 1º ano, 1º semestre
Tecnologias e Sistemas de Informação (6619) – 1º ano, 1º semestre
Cap. 03 – Tipos de Dados Simples
Copyright Ó 2000 Abel Gomes All Rights Reserved.
T03 Tipos de Dados Simples
Sumário
…:
– Hierarquia de tipos de dados
– 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
T03 Tipos de Dados Simples
Taxonomia de tipos de dados
Tipos de Dados
Tipos Simplesvoid Tipos Compostos
Tipos Numéricos Tipos Apontadores
doublefloatint
Tipos ReaisTipos Inteiros
*
enum
Tipos Enumerados
char
T03 Tipos de Dados Simples
Taxonomia 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 seguintesutilizações:§ Definição de tipos apontadores§ Declaração de variáveis apontadoras§ Operador de multiplicação§ Operador de valoração
T03 Tipos de Dados Simples
Características dos TDS
- Atomicidade:
– têm valor atómico
– Exemplo (inteiros):
- Ordem:
– têm uma ordem ou escala
– Exemplo (inteiros):
int x = 31;
20 < 31 < 35 < 36
T03 Tipos de Dados Simples
Qualificadores de TDS
- Qualificadores de comprimento (nº de bytes):
– short
– long
– Exemplos:
- Qualificadores de sinal:
– signed
– unsigned
– Exemplos:
short int x;long float y;
signed int w;unsigned int z;
T03 Tipos de Dados Simples
Formatos de entrada/saída
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
T03 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’; /* esta instrução e a seguinte 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 */
T03 Tipos de Dados Simples
Formatos de dados do tipo char
/* 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 caracteres
Formato de inteiros
T03 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; /* precisão simples */
x = 0.345;y = .67;z = 89.;w = 6.2E+5; /* notação científica: representa 6.2x105 */t = 3.5E-4; /* notação científica: representa 3.5x10-4 */
// -------------------------------------------------------------------------------------------------------------------------
double a; /* precisão dupla*/
a = 5.23456789;
T03 Tipos de Dados SimplesValor de uma variávelEndereço de uma variável
#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;
}
1 248623
memória
j
valor de jendereço de j
Saída no ecrã:O valor de j = 1O endereco de j = 248623
T03 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; // j é uma variável realfloat *p; // p é uma variável apontadora ou endereçadorap = &j; // p aponta ou endereça j
1.2
1342167
1342167
memória
j
valor de jendereço de j
p
T03 Tipos de Dados Simples
Exemplo: float*
#include <stdio.h>int 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);return 0;
}
Saída no ecrã:O valor de j = 1.2O endereco de j = 1342167
1.2
1342167
1342167
memória
j
valor de jendereço de j
p
T03 Tipos de Dados Simples
Acesso ao valor de uma variável
- Há 2 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 da variável j faz-se através do uso:
§ da própria variável j
§ da variável p que aponta para j
1.2
1342167
1342167
memória
j
valor de jendereço de j
p
T03 Tipos de Dados Simples
Exemplo:
1.2
1342167
1342167
memória
j
valor de jendereço de j
p
#include <stdio.h>int 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); /* acesso directo ao valor de j */printf("O valor de j = %f\n",*p); /* acesso indirecto ao valor de j */return 0;
}
Saída no ecrã:O valor de j = 1.2O valor de j = 1.2
acesso DIRECTO ao valor de j
acesso INDIRECTO ao valor de j
T03 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 enumeradosatravé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};
T03 Tipos de Dados Simples
Exemplo: c/ enum
#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
T03 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
T03 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 seratribuído à variável b. A variável b só admite dois valores possíveis: 0 (FALSE) e 1 (TRUE).
T03 Tipos de Dados Simples
Sumário
…:
– Hierarquia de tipos de dados
– 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 FIM