20
Programação Engenharia 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.

Programação - Departamento de Informáticaagomes/programacao/teoricas/03-tipos.pdf · Engenharia Informática (13205) –1º ano, 1º semestre Tecnologias e Sistemas de Informação

  • 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