Prévia do material em texto
ECT1203 Linguagem de Programação 2012.2 Prof. Aquiles Burlamaqui Profa. Luciano Ferreira Prof. Luiz Eduardo Cunha Leite Prof. Marconi Câmara Rodrigues Aula 03 – Tipos básicos, variáveis, constantes e ponteiros Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia Hora de silenciar o celular • Manter o celular sempre desligado/silencioso quando estiver em sala de aula • Nunca atender o celular em sala de aula Objetivos da aula Apresentar os seguintes conceitos: • Organização da Memória do Computador • Declaração de Variáveis de Tipos básicos e representação da informação em memória • Modificadores de Tipos • Introdução a Ponteiros • Comandos para entrada e saída de dados Organização da Memória do Computador Endereço Conteúdo 00 11001100100011001100010100100011 01 01001100100010001100010100100010 02 11001100100010011100010100100010 03 01001100100010001101010100100011 ... ... • A memória do computador é organizada em posições de memória • Cada posição pode ser acessada através de um endereço único • Cada posição só pode armazenar informação no formato binário • Manipular diretamente a memória do computador, atribuindo bits às mesmas pode ser uma tarefa complicada. • O conceito de variável surge então para facilitar o processo de armazenamento e recuperação da informação na memória. Variáveis • Dispensa a necessidade de o programador manipular diretamente os endereços de memória. Endereços podem ser acessados através dos nomes (identificadores) das variáveis. • Toda variável precisa ser declarada antes de ser usada • Somente valores do tipo especificado podem ser armazenados na variável Uma variável representa um espaço de memória para guardar um determinado tipo de dado. double lucro; int i, j; char a, b, c; tipo lista_de_identificadores; Identificadores • Pode ser composto por letras, números ou sublinhados • Deve começar com uma letra ou um sublinhado • Não pode ser uma palavra reservada da linguagem C++ Nomes de variáveis, funções e outros objetos definidos pelo usuário. 1) soma 2) 5altura 3) peso_bruto 4) SOMA 5) desvio-padrão 6) p2p Palavras Reservadas asm else namespace template auto enum new this bool explicit operator throw break export private true case extern protected try catch false public typedef char float register typeid class for reinterpreted_cast typename const friend return union const_cast goto short unsigned continue if signed using default inline sizeof virtual delete init static void do long static_cast volatile doubel main struct wchar_t dynamic_cast mutable switch while Operador & O operador & pode ser utilizado para recuperar o endereço físico de memória representado por uma determinada variável. int X; X = 10; cout << &X; Será impresso na tela não o valor armazenado na variável X, mas o endereço de memória associado a X. Quando atribuímos um valor a X, esse valor será armazenado nesse endereço de memória física. Tipos básicos de dados • char - caractere ▫ Representa um número inteiro referente ao código ASCII de um determinado caractere. • int – inteiro ▫ Representa um número inteiro • float - ponto flutuante ▫ Representa um número real de simples precisão • double - ponto flutuante de dupla precisão ▫ Representa um número real de maior precisão • void - sem valor ▫ Usado em funções sem valor de retorno ou ponteiros genéricos Pergunta: Qual a necessidade de informar ao compilador o tipo de informação que será armazenada na memória? Tipo Tamanho em bytes Faixa mínima char 1 -127 a 127 int 4 -2.147.483.648 a 2.147.483.647 * float 4 ± 3,4 x 10 -38 a 3,4 x 10 38 double 8 ± 1,7 x 10 -308 a 1,7 x 10 308 Resposta: Informações diferentes necessitam de espaço de memória diferentes, além de serem organizados de forma diferente na memória. Modificadores dos tipos básicos • Alteram o conjunto de valores que o tipo pode representar: signed, short, long e unsigned • Por exemplo: ▫ um modificador permite armazenar números inteiros maiores (long int ) ▫ outro modificador determina que só números sem sinal possam ser armazenados (unsigned int) Tipo Tamanho em bytes Faixa mínima char 1 -127 a 127 unsigned char 1 0 a 255 signed char 1 -127 a 127 int 4* -2.147.483.648 a 2.147.483.647 * unsigned int 4 0 a 4.294.967.295 * signed int 4 -2.147.483.648 a 2.147.483.647 short int 2 -32.768 a 32.767 unsigned short int 2 0 a 65.535 long int 4 -2.147.483.648 a 2.147.483.647 unsigned long int 4 0 a 4.294.967.295 float 4 ± 3,4 x 10 -38 a 3,4 x 10 38 double 8 ± 1,7 x 10 -308 a 1,7 x 10 308 long double 10 ± 3,4 x 10 -4932 a 3,4 x 10 4932 * depende do ambiente, valores para ambientes de 32 bits Constantes • Constantes inteiras: são números sem ponto decimal, precedidos ou não por sinal. 1997 -3 234L 3200000L 5001U • Constantes em ponto flutuante: requerem ponto decimal seguido pela parte fracionária do número. 123.23 4.34e-3 11.456F 1001.2L Usadas em expressões para representar valores fixos de um dado tipo. Constantes • Constantes caracteres: único caractere envolvido por aspas simples, podendo participar de expressões aritméticas. ‘a’ caractere a ‘A’ caractere A ‘\n’ nova linha ‘\r’ retorno de carro ‘\t’ tabulação horizontal ‘\a’ alerta sonoro ‘\0’ nulo, termina um conj. de caracteres em C ‘\\’ \ - Barra invertida ‘\xdd’ Caractere de código ASCII dd (em hexadecimal) Constantes • Constantes string: conjunto de caracteres colocado entre aspas duplas. ‘’isso é um teste’’ “mais um teste” • A linguagem C++ insere automaticamente o caractere ‘\0’ ao final de uma string. Não confundir strings com caracteres: ‘A’ não é igual a “A” Atribuição • A declaração de variáveis somente reserva espaço na memória para ser utilizado pelo programa. • O comando de atribuição é responsável por armazenar uma informação em uma variável. variável = informação; idade = 35; peso = 98.54; letra = ‘d’; Atribuindo valores a variáveis • É possível declarar e atribuir valores às variáveis em uma única instrução. Esse processo é denominado inicialização int a; float b; a = 5; b = 4.3; int a = 5; float b = 4.3; Efeito Equivalente Atribuindo valores a variáveis O que acontece se fizermos a seguinte instrução? int a = 4.999; Como a variável a é do tipo inteiro, apenas a parte inteira do valor 4.999 é atribuído à variável a. Ou seja, a será igual a 4. A Variável PonteiroDouble armazenará não um número real, mas o endereço de outra variável do tipo double. Ponteiros Ponteiro é uma variável capaz de armazenar o endereço de memória de outra variável (variável apontada). Na declaração do ponteiro, deve-se especificar o tipo da variável para a qual este aponta. double * ponteiroDouble; int * ponteiroParaInteiro; char * PonteiroParaChar; tipo * identificador; Atribuindo Valores a Ponteiros Pode-se atribuir a um ponteiro o endereço de memória de outra variável. Nesse caso, diz-se que o ponteiro aponta para a variável cujo endereço lhe foi atribuído. O operador & pode ser utilizado para recuperar o endereço da variável apontada; int x = 0; int * pt; pt = &x; cout << pt; Será impresso na tela o valor da variável pt, que é o endereço de memória associado a x. O modificador const • Variáveis do tipo const não podem ser modificadas! • É muito usado para garantir que o valor do parâmetro não é modificado dentro da função. const float a = 10.5; int soma(const int a, const int b); Bloco de código Qualquer trecho de código delimitado por { ... } int main(void) { float pi = 3.14; return 0; } i = 10; { int j = 20; printf(“%d”, j); } if(t ==1) { char s[80]; gets(s); } Escopo de variáveis • Variáveis declaradas dentro de um bloco de código não são visíveis fora dele. ▫ O espaço de memória usado pela variável é liberado na saída do bloco de código. • Se duas variáveis de mesmo nome são visíveis em um bloco de código, prevalece aquela declarada no bloco mais interno. Entrada e saída em C E/S pelo console: ▫ Entrada pelo teclado ▫ Saída pela tela É necessário incluir o protótipo das funções no código e utilizar o namespace std. #include <iostream> using namespace std; E/S são efetuadas por objetos da biblioteca padrão. Objeto cout (pronuncia-se C out) Possibilita a saída de valores (constantes, variáveis ou resultados de expressões) para o usuário. Usado normalmente com o operador de inserção <<. cout << “Primeiro Programa”; cout << “O valor de X é:” << x; Objeto cin (pronuncia-se C in) Permite ler valores via teclado e armazená-los em variáveis do programa. Usado normalmente com o operador de extração >>. cin >> x; cin >> a >> b >> c; Ao contrário da função scanf da linguagem C, o cin com operador de extração não requer variáveis com o operador de endereços &;