• Nenhum resultado encontrado

Uso de tipos pré-denidos de C++

No documento apostila programacao c++ v04 (páginas 79-84)

Ostipospré-denidospelalinguagempodemservistoscomoclassesdenidaspelocriadordoC++

e que estão escondidas de você. Assim, pode-se imaginar que existem as classes: class char{},

classint{},classoat{},classdouble{}. Destaforma,umnúmerointeiroéumobjeto,umnúmero

oat éum objeto e assim pordiante. Veja oexemplo.

Exemplo:

//Esta criando dois objetos inteiros, int é o tipo

//x,y são os nomes dos objetos

int x,y;

//armazena valores nestes objetos

x = 4; y = 5;

//Esta criando um outro objeto, do tipo int, com nome z e igualando a x

int z = x;

Em resumo: você precisa entender que existe uma classe que dene os números inteiros e esta

classe fazparte de uma hierarquia,ahierarquiados tipos numéricos. A maneiracomose declara,

se dene, seusa e seelimina um objeto dotipo inteiro é semelhante aoque ocorre para todos os

outros tipos.

Ostiposnuméricos pré-denidosdalinguagemC++ estãolistadosnaTabela6.1,bemcomoo

intervalode valoressuportados (unsigned=semsinal, short=curto, long=longo). Vejana Figura

bool, char, unsigned char

short int, unsigned short

int, unsigned int, long, unsigned long, int*

long long, double,

float

Figura6.1: Tiposde dados edimensões (sizeof).

Dêumaolhadanoarquivode biblioteca<limits> 1

. Este arquivocontém variáveisquedenem

oslimites para os tipospré-denidos dalinguagem.

Tabela 6.1: Tipose intervalos.

Tipos Básicos Características bytes Valormínimo valormáximo

bool boleano 1 0 1

char caracteres 1 -128 127

unsigned char caracteres s/sinal 1 0 255

short inteiros 2 -32768 32767

unsigned short int,peq. s/sinal 2 0 65535

int inteiros 4 -2.147.483.648 +2.147.483.648

unsigned int inteirosem sinal 4 0 +4.294.295.000

long inteiro grande 4 -2.147.483.648 +2.147.483.648

unsigned long int,gde.c/sinal 4 0 +4.294.295.000

oat precisão simples,7digitos 4 3.4e-38 3.4e+38

double precisão dupla,15 digitos 8 1.7e-308 1.7e+308

long double precisão dupla,18 digitos 10 3.4e-4932 3.4e+4932

enum enumerados 2 -2.147.483.648 +2.147.483.648

A Tabela 6.2 mostra as diferenças entre as plataformas de 16 e 32 bits. Para oat, double,

long double ostamanhos não mudam.

Dica: O compiladorg++ da gnu suporta otipo long long, que representa um inteiro de 64 bits.

Ocompilador daGNU é descrito noCapítulo44.

Apresenta-se a seguir um programa que usa os tipos padrões de C++. Observe que este

exemplo não tem nem entrada, nem saída de dados, não sendo necessária a inclusão (#include)

de arquivos externos.

Listing 6.1: Tiposnuméricos de C++.

1

Veja no manual do seu ambiente de desenvolvimento onde estão armazenados os arquivos da biblioteca de

Tabela6.2: Diferenças de tamanho dos objetospadrõesde C++ nas plataformasde 16e32 bits.

16 bits 16 bits 32 bits 32 bits

enum -32768 +32768 -2.147.483.648 +2.147.483.648

unsigned int 0 65535 0 4.294.967.295

int -32768 +32768 -2.147.483.648 +2.147.483.648

int main ()

{

//Tipos padrões da linguagem

//Tipo booleano //Intervalo 0 ou 1 //1 bytes bool flag = 0; //Tipo char //Intervalo -128 -> +127 //1 bytes char ch = 'b'; //Tipo int

//2 byts (16 bits), Intervalo (16bits)~ - 32768 -> + 32767

//4 byts (32 bits), Intervalo (32bits)~ -2147483648 -> +2147483648

int int_x = 777;

//Tipo float

//Intervalo +/- 3.4.e+/-38 (7digitos precisão)

//4 bytes

float float_y = 3.212f;

//Tipo double

//Intervalo +/- 1.7e+/-308 (15 digitos precisão)

//8 bytes

double double_z = 12312.12312e5;

//Tipo long double

//Intervalo +/- 3.4e+/-4932 (18 digitos precisão)

//10 bytes

long double long_double_r = 1.2e-18;

return 0;

}

/*

Novidade:

---

Tipos: A linguagem C++ é altamente prototipada,

ou seja, dá uma importância muito grande ao tipo dos objetos.

Uso dos tipos padrões de C++

Criação de objetos numéricos e atribuição de valores a estes objetos.

Saída:

---

Este exemplo não inclue saída de dados.

*/

Observe noexemplo aseguir o uso e asdiferenças dos tipos inte unsigned int.

Listing6.2: Diferenças nouso de inteiro com sinal (signed)e sem sinal (unsigned).

#include <iostream>

void main()

{

{

std::cout << "--->Testando uso de int"<<std::endl;

int x, y, z;

std::cout <<"Entre com int x (ex: 300):"; cin >> x;

std::cout <<"Entre com int y (ex: 500):"; cin >> y;

cin.get(); z = x + y; std::cout <<"int z = x + y =" << z << std::endl; z = x - y; std::cout <<"int z = x - y =" << z << std::endl; }

std::cout << "--->Testando uso de unsigned int"<<std::endl;

unsigned int x,y,z;

std::cout <<"Entre com unsigned int x (ex: 300):"; cin >> x;

std::cout <<"Entre com unsigned int y (ex: 500):"; cin >> y; cin.get()

;

z = x + y;

std::cout <<"unsigned int z = x + y ="<< z <<std::endl;

z = x-y;

std::cout <<"unsigned int z = x - y ="<< z <<std::endl;

//faz o teste abaixo, de forma a retornar o modulo da diferença

//se x > y retorna z = x - y //se x <= y retorna z = y - x if( x > y) z = x - y ; else z = y - x ;

//armazena a informação do sinal

int sinal = x > y ? +1 : -1 ;

//Cria objeto int para armazenar o resultado, observe que sinal é do

tipo int

int valor_z = sinal * z ;

std::cout <<"z=| x - y |=" << z << std::

endl;

std::cout <<"sinal de x - y =" << sinal << std::

std::cout <<"int valor_z = sinal * z =" << valor_z << std:: endl; } /* Novidade: ---

-Uso de objeto do tipo int, com sinal (signed) e sem sinal (unsigned).

-Uso do operador de controle if...else

O operador if é usado para controlar a sequência de execução

do programa. O if avalia uma expressão, se a mesma for verdadeira

executa a linha abaixo, se a expressão for falsa, pula a linha abaixo.

if( expresao)

ação1 ;

Fora o if, você também tem o if...else

if(expresao)

ação1 ;

else

ação2;

No if...else, se a expressão for verdadeira executa ação 1,

se for falsa executa ação 2.

*/

/*

Saída:

---

[andre@mercurio lyx]$ ./a.out

--->Testando uso de int

Entre com int x (ex: 300):300

Entre com int y (ex: 500):500

int z = x + y =800

int z = x - y =-200

--->Testando uso de unsigned int

Entre com unsigned int x (ex: 300):300

Entre com unsigned int y (ex: 500):500

unsigned int z = x + y =800

unsigned int z = x - y =4294967096

z=| x - y |=200

sinal de x - y =-1

int valor_z = sinal * z =-200

*/

/*

Análise da saída:

Observe que a saída de

z = x - y = 4294967096

apresenta um valor esquisito: 4294967096

isto ocorre porque z é um inteiro sem sinal

que vai de 0-> 4294967295

como z não pode armazenar valor negativo,

z fica com o valor 4294967096

que significa:

4294967295 - 200 -1 (o zero)= 4294967096

*/

Dica: C++ temum conjuntode operadores ede estruturas de controle. Comooconceito de op-

eradores(+,-,*,...) edeestruturasde controlejásãobastanteconhecidos 2

,osmesmosforam

incluídosna parteVI daapostila. Continue lendo a apostila normalmente. Se tiverproble-

mas no entendimento de como funciona determinadooperador ouestrutura de controle, aí

sim,dê uma olhada noítem especíco naparte VI da apostila.

No documento apostila programacao c++ v04 (páginas 79-84)

Documentos relacionados