Baixe o app para aproveitar ainda mais
Prévia do material em texto
Identificadores e Tipos de Dados Básicos Declarações Introdução Um programa em C pode ser visto como uma seqüência de DECLARAÇÕES. De maneira geral, uma DECLARAÇÃO introduz um novo nome - um IDENTIFICADOR - e associa a este uma interpretação. Tome como exemplo o seguinte trecho de código: 2 Exemplo código 1. #include <stdio.h> 2. double x; 3. void p(float b, int e) 4. { 5. short int i; 6. x = b; 7. ... 8. } 9. int main() 10. { 11. p(3.1415, 5); 12. printf("%f",x); 13. return 0; 14. } 3 Linha a Linha Na linha 2, vemos uma DECLARAÇÃO de VARIÁVEL GLOBAL. Nas linhas 4 a 9, temos uma DECLARAÇÃO de FUNÇÃO que, por sua vez, é formada por uma DECLARAÇÃO de PARÂMETROS (linha 4), uma DECLARAÇÃO de VARIÁVEL LOCAL (linha 5) e uma seqûência de comandos (linhas 6-8). 4 Linha a Linha Em cada uma dessas DECLARAÇÕES um novo IDENTIFICADOR é introduzido com uma interpretação particular! Na declaração da linha 2, o IDENTIFICADOR introduzido é x e sua interpretação é VARIÁVEL GLOBAL do TIPO BÁSICO double. 5 Linha a Linha Na declaração das linhas 4 a 9, o IDENTIFICADOR é p Sua interpretação é FUNÇÃO que recebe como PARÂMETROS um valor do TIPO BÁSICO float e um valor do TIPO BÁSICO int Tem uma VARIÁVEL LOCAL do TIPO BÁSICO short int, executa os comandos das linhas 7-8 e ao final nada retorna ( TIPO BÁSICO void). 6 Relação Note que, nesses exemplos, a interpretação dada a um IDENTIFICADOR está ligada de maneira íntima com um TIPO de DADOS BÁSICO. 7 Identificadores Em C, um IDENTIFICADOR é uma seqüência de LETRAS ou DÍGITOS onde: O primeiro caracter deve ser uma LETRA ( 'a',...,'z','A',...,'Z','_' ) O caracter '_' é contado como uma LETRA LETRAS maiúsculas (e.g., 'A') são consideradas diferentes de letras minúsculas (e.g., 'a‘) isto implica que o IDENTIFICADOR aux é diferente de Aux que é diferente de AUX PALAVRAS RESERVADAS tais como if, else, char, int, ... não podem ser usadas como IDENTIFICADORES. 8 Atividade 1: Validando Vamos escrever um programa em C (id.c) que dado uma palavra (cadeia de caracteres) imprima na tela é um identificador! ou não é um identificador! caso a palavra obedeça ou não a definição de identificador dada acima. 9 Atividade 1: Validando - Partida 1. #include <stdio.h> 2. char str[80]; /* armazena uma cadeia de até 79 caracteres */ 3. int main() { 4. printf("Digite uma palavra: "); 5. scanf("%s", str); /* le do usário uma cadeia de caracteres */ 6. ... 7. } 10 Tipos de Dados Básicos char : um único byte, capaz de conter um caracter no conjunto de caracteres local; int : um inteiro, normalmente refletindo o tamanho natural dos inteiros da máquina hospedeira; float : ponto flutuante em precisão simples; double : ponto flutuante em dupla precisão; void : conjunto vazio de valores. 11 Modificadores Exceto void, os tipos de dados básicos podem ter vários MODIFICADORES precedendo-os. Um MODIFICADOR é usado para alterar o significado de um tipo básico para adaptá- lo à necessidade de diversas situações. São MODIFICADORES de tipos: 12 Modificadores long short signed unsigned 13 Modificadores short ou long - referem-se a diferentes tipos de inteiros: A palavra int pode ser omitida e normalmente o é! short = short int long = long int Obs.: Alguns compiladores permitem long long int ! (Fora do Padrão ANSI) long pode também ser aplicado a double de tal modo que: float ≤ double ≤ long double 14 Modificadores signed ou unsigned - podem ser aplicados a char, ou a short ou long ( int ). Equivalencias char = signed char ou char = unsigned char, a depender da máquina hospedeira; signed int = int = signed signed long = long signed short = short unsigned int = unsigned Obs.: Alguns compiladores podem permitir unsigned double ! (Fora do Padrão ANSI) 15 Tamanho e Faixa de Valores O tamanho e faixa de valores dos tipos básicos de dados variam de acordo com: tipo do processador implementação do compilador No entanto, o padrão ANSI C estipula valores mínimos: 16 Tamanho e Faixa de Valores 17 Atividade 2: Explorando <limits.h> Nos arquivos de cabeçalho <limits.h> e <float.h> encontram-se definidas constantes simbólicas para a faixa de valores e tamanho em bytes dos tipos de dados básicos e modificados da linguagem C, conforme foram implementados em um dado compilador/máquina. 18 Atividade 2: Explorando <limits.h> Nesta atividade, o seu objetivo é escrever um programa tipos.c que inclua os arquivos de cabeçalho <limits.h> e <float.h> e imprima - para os tipos mostrados na tabela 2.1 - as seguintes informações : TIPO VALOR_MIN VALOR_MAX Tamanho em Bytes char -128 127 1 unsigned char 0 255 1 ... 19 Atividade 2: Explorando <limits.h> - Partida 1. #include <limits.h> 2. #include <float.h> 3. char c; 4. unsigned char uc; 5. signed char sc; 6. int i; 7. ... 8. int main(void) { 9. printf("TIPO\t\t\tVALOR_MIN\t\tVALOR_MAX\tTAMANHO em BYTES\n"); 10. printf("char\t\t\t%i\t\t\t%i\t\t%i\n", CHAR_MIN, CHAR_MAX, sizeof c); 11. printf("unsigned char\t\t%i\t\t\t%i\t\t%i\n", 0, UCHAR_MAX, sizeof uc); 12. printf("signed char\t\t%i\t\t\t%i\t\t%i\n", SCHAR_MIN, SCHAR_MAX, sizeof sc); 13. ... 14. } 20 Leitura Recomendada C Completo e Total capítulo 2 Seebach, "Everything You Ever Wanted to Know about C Types" What's in a type? Floating point and derived types Implementation details Portability and pitfalls http://pt.wikipedia.org/wiki/Tipo_de_dado 21 Leitura Recomendada Para detalhes sobre representacao de caracteres: http://www.ime.usp.br/~pf/algoritmos/aula s/char.html Para detalhes sobre representação de números: inteiros (int) http://www.ime.usp.br/~pf/algoritmos/aulas /int.html 22 Leitura Recomendada ponto flutuante (float, double) http://en.wikipedia.org/wiki/Floating_point http://en.wikipedia.org/wiki/Double_precisio n http://en.wikipedia.org/wiki/IEEE_754 Para detalhes sobre o padrão ANSI C: Jones, Derek M. (2008) "The New C Standard: An Economic and Cultural Commentary." 23 Exercícios 1. Faça por completo a atividade 1 2. Faça por completo a atividade 2 3. Utilizando os TIPOS inteiros em C, escreva programas para: a) Dado um número inteiro positivo n, calcular a soma dos n primeiros números naturais. b) Dado um número inteiro positivo n, imprimir os n primeiros naturais ímpares. a) Exemplo: Para n=4 a saída deverá ser 1,3,5,7. c) Dados n e dois números inteiros positivos i e j diferentes de 0, imprimir em ordem crescente os n primeiros naturais que são múltiplos de i ou de j e ou de ambos. a) Exemplo: Para n = 6 , i = 2 e j = 3 a saída deverá ser : 0,2,3,4,6,8. 24 Exercícios d) Dizemos que um número natural é triangular se ele é produto de três números naturais consecutivos. Exemplo: 120 é triangular, pois 4.5.6 = 120. Dado um inteiro não-negativo n, verificar se n é triangular. e) Dado um inteiro positivo p, verificar se p é primo. f) Dados três números naturais, verificar se eles formam os lados de um triângulo retângulo.25 Exercícios 4. Utilizando os TIPOS ponto flutuante em C, faça programas para os seguintes enunciados: Um programa que leia uma temperatura em graus celsius e a converta para fahrenheit. a) Uma pessoa aplicou um capital de x complexos (1) a juros mensais de z durante 1 ano. Deseja-se um programa que determine o montante de cada mês durante este período. b) Dados números reais a, b e c, calcular as raízes de uma equação do 2o grau da forma ax^2 + b^x + c = 0. 26 Exercícios 5. Utilizando o TIPO char, re-escreva os programas anteriores para ao final perguntar ao usário: deseja processar outro valor? [s/n]. Se o usuário digitar 's' ou 'S' o programa deve continuar processando uma nova entrada; caso contrário deve terminar. 27
Compartilhar