Baixe o app para aproveitar ainda mais
Prévia do material em texto
ECT1203 Linguagem de Programação 2013.1 Prof. Luiz Eduardo Cunha Leite 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 11001100 01 01001100 02 11001100 03 01001100 ... ... • 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 Como números Inteiros são armazenados em memória? Como números Inteiros negativos são armazenados em memória? Como números Reais são armazenados em memória? Como caracteres são armazenados em memória? Organização da Memória do Computador Endereço Conteúdo 00 11001100 01 01001100 02 11001100 03 01001100 ... ... • 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” 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ódigonã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; O objeto cout e o operador << • A instrução: ▫ cout << “mensagem”; • Utiliza o objeto cout para exibir o texto mensagem na tela do computador • Um entendimento detalhado do cout requer conhecimentos de classes e objetos, que não fazem parte do escopo deste curso. • O operador << (chamado de operador de inserção) é utilizado para enviar a mensagem a ser impressa para cout. Namespace e diretiva Using • Um namespace é uma região que agrega um identificador a todos os nomes declarados dentro dela. Análogo a um sobrenome. ▫ Ex.: o objeto cout foi declarado dentro no namespace std. ▫ Para usar o cout, precisaríamos usar o identificador std: std::cout << “mensagem”; • A diretiva using permite que nomes de um namespace possam ser usados sem o identificador do namespace. ▫ using namespace std; Compiladores antigos e namespaces • Os compiladores antigos não utilizam o conceito de namespace. • Portanto, os arquivos de inclusão com extensão .h, desenvolvidos para compiladores antigos não usam namespace. • Resumindo: se você incluir um arquivo com extensão .h, não utilize os namespaces previstos para o referido arquivo. Modificando o formato de saída do cout Como configurar o cout para imprimir um valor real na notação de ponto decimal ou científica? Como configurar a quantidade de casas decimais a serem impressas utilizando-se o cout? Modificando o formato de saída do cout #include <iostream> #include <iomanip> using namespace std; int main() { double x = 1.333333333333333333; cout << "x = " << x << endl; cout << setprecision(10); cout << "x = " << x << endl; cout << setiosflags(ios::scientific); cout << "x = " << x << endl; cout << setiosflags(ios::fixed); cout << setiosflags(ios::showpoint); cout << "x = " << x << endl; } Apenas para quem tem curiosidade • Como fazer a impressão de texto colorido no windows? E no Linux ? É o mesmo procedimento nos dois sistemas operacionais? Por que? Apenas para quem tem curiosidade #include <iostream> #include <windows.h> using namespace std; int main() { HANDLE hConsole; hConsole = GetStdHandle(STD_OUTPUT_HANDLE); int color=1; for(int i=0; i<14; i++) { SetConsoleTextAttribute(hConsole, color); cout << "Color Text" << endl; color = color + 1; } SetConsoleTextAttribute(hConsole, 15); return 0; } 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 &;
Compartilhar