Ameliara Freire [email protected] Os programas manipulam dados, armazenandoos e, muitas vezes, modificando seus valores. Basicamente, a linguagem C, manipula quatro tipos de dados: inteiro, real, caractere e void. A linguagem C não possui o tipo lógico, que armazena verdadeiro ou falso. Para cada tipo de dado, é necessária uma quantidade de bits para armazená-lo. Tudo na informática é medido em bits, desde o tamanho de um número até a velocidade de transferência de dados em uma rede. Os dados do tipo inteiro são toda e qualquer informação numérica que pertença ao conjunto dos números inteiros relativos (negativo, nulo ou positivo). Os números inteiros, em C, se dividem em três tipos: Tipo Tamanho Intervalo Suportado short 16 bits -32.768 a +32.767 32 bits -2.147.483.648 a + 2.147.483.647 int long 64 bits 9.223.372.036.854 .775.808 a +9.223.372.036.85 4.775.807 A diferença entre os tipos short, int e long é a quantidade de memória que é reservada para armazená-los. Veja como é simples: à medida que se utiliza mais memória, aumenta o intervalo do valor que pode ser armazenado. ◦ Por exemplo, para armazenar um dado do tipo short, são reservados 16 bits de memória. Com isso, o tipo short pode suportar um número inteiro no intervalo de -32.768 a +32.767. Portanto, dependendo do valor que será armazenado, deve ser escolhido um tipo (short, int ou long) que comporte tal valor. ◦ Por exemplo, para armazenar a idade de um funcionário, o tipo short é o mais adequado (já que a idade de uma pessoa é um valor que raramente ultrapassa 100). ◦ No entanto, para armazenar a quantidade de eleitores de uma cidade, deve-se usar o tipo int (note que em muitas cidades, a quantidade de eleitores ultrapassará o maior valor suportado pelo tipo short: 32.767). Para facilitar nosso estudo, sempre será usado o tipo int para armazenar os dados inteiros. Os dados do tipo real são toda e qualquer informação numérica que pertença ao conjunto de números reais (negativo, positivo ou nulo). Os números reais, em C, podem ser de dois tipos: Tipo Tamanho Intervalo Suportado float 32 bits 3.4E-38 a 3.4E+38 double 64 bits 1.7E-308 a 1.7E+308 Os caracteres são do tipo char, representados por toda e qualquer informação composta por um único caractere alfa numérico (a, b, c,...z, A, B, C,...Z, 0...9) ou especial (como por exemplo: ; # ? @ ! < ?). O tipo char armazena um único caractere. Quando se deseja armazenar vários caracteres, é necessário definir um vetor de caractere. ◦ Por exemplo, o nome de um aluno é formado por uma cadeia de caracteres, assim, será necessário usar um vetor de caracteres. ◦ Cada caractere armazenado ocupa o espaço de 8 bits de memória. Um caractere deve ser representado entre apóstrofo, por exemplo: ‘a’. ◦ Mas, quando temos uma cadeia de caracteres, esta deve ser representada entre aspas dupla, por exemplo: “Pedro Goncalves”. Em Inglês, void quer dizer vazio e é isto mesmo que o void é. Void é um tipo que não armazena nada (um tanto esquisito, não é?). Este tipo serve para indicar que um resultado não tem um tipo definido. Ele é utilizado quando estamos definindo funções nos nossos programas. Permite-nos desenvolver funções que não retornam nada e funções que não têm parâmetros. Qualquer dado que seja manipulado pelo programa deve ficar armazenado na memória principal do computador. Para que o armazenamento seja possível, precisaremos reservar espaços na memória principal do computador. As variáveis e constantes são unidades básicas de armazenamento dos dados em programação. Elas são um espaço de memória reservado para armazenar um certo tipo de dado e possuem um identificador (nome) para referenciar o seu conteúdo. Dessa forma, nossos dados ficam armazenados em constantes ou variáveis. Uma variável pode conter, a cada instante, valores diferentes. No entanto, as constantes referem-se a valores fixos que não podem ser alterados durante a execução do programa. O modo como cada constante é representada depende do seu tipo. Para entender o conceito de variáveis constantes, vamos fazer a seguinte analogia: e ◦ Um armário cheio de gavetas de tamanhos diferentes. ◦ Acompanhem o raciocínio: Pedro tem um armário e decide que em cada gaveta será guardado um tipo de roupa: camisa, bermuda, calça, etc. Memória RAM Teclado Entrada CPU Usuário / Programador Processamento Monitor Saída Disco Rígido HD Em uma dada gaveta, só podem ser armazenadas camisas. Não será permitido o armazenamento de calças nesta gaveta. Para facilitar a identificação, Pedro coloca uma etiqueta informando o que cada gaveta guarda. Com isso, Pedro poderá identificar, rapidamente, em qual a gaveta estão guardadas suas camisas. Agora vamos associar a idéia das gavetas com a idéia de variáveis, constantes e tipo. ◦ As gavetas que guardam as roupas são como os espaços de memória que armazenam nossos dados. ◦ Assim como uma gaveta só pode armazenar um tipo de roupa, os espaços de memória são especificados para armazenar um tipo de dado. ◦ Dependendo do tipo de roupa, a gaveta precisa ser maior ou menor. Da mesma forma, dependendo do tipo de dado, é feito uma reserva de mais ou menos memória para armazená-lo. As etiquetas das gavetas são os identificadores dos nossos espaços de memória. Assim, facilmente iremos encontrar um dado armazenado nos nossos espaços de memória. Quando temos uma variável, o conteúdo da nossa gaveta pode mudar ao longo do tempo. Mas, no caso de uma constante, seu conteúdo será sempre o mesmo. Para que o compilador saiba quais dados estamos querendo manipular, eles precisam ter um nome. ◦ É como nós, todos temos um nome. ◦ Sabemos quando alguém está nos chamando quando falam o nosso nome. Vai acontecer a mesma coisa com os espaços de memória dos nossos programas, precisamos identificá-los de alguma forma. Os identificadores são os nomes que damos às nossas variáveis, constantes, funções e procedimentos usados no programa. Para criar um identificador é necessário respeitar as regras a seguir: ◦ O primeiro caractere deve ser uma letra ou _ (underscore); ◦ O restante do nome deve ser formado por caracteres pertencentes ao seguinte conjunto: a,b,c,..z, A,B,C,...Z, 0,1,2,...,9, _ (ou seja: letras, números e underscore); ◦ Não deve haver espaço em branco (ou seja, não existem identificadores compostos, formados por dois ou mais nomes); ◦ Não utilizar acentos, nem cedilha; ◦ Os identificadores podem ter até 32 caracteres; ◦ Não deve haver identificadores repetidos (Se dermos o mesmo nome para duas variáveis do nosso programa, o compilador não vai saber qual delas será chamada, e isso não pode acontecer). A linguagem C faz distinção de maiúsculas e minúsculas. Assim, os identificadores: Media, MEDIA, MediA e media são diferentes. O fato de termos uma única letra de forma diferente (maiúscula ou minúscula), já faz com que os identificadores se diferenciem. Esta propriedade é chamada de case sensibility (sensibilidade a letras maiúsculas e minúsculas). DICA: Boa Prática de Programação ◦ Escolham bem os nomes das variáveis e constantes do programa. ◦ Os identificadores escolhidos devem ser claros, a fim de explicitar o conteúdo que será armazenado, mas também não devem ser extensos para não dificultar a escrita. A X2 Nome_Aluno Media SalarioFuncionario 2m Nome disciplina media* Nome disciplina funcionário Para que se possa usar uma variável em um programa, primeiramente, é necessário fazer a declaração dela. A declaração de uma variável informa ao processador duas coisas: o identificador(nome) da variável e o seu tipo de dado. As variáveis precisam de um nome para que o processador saiba onde desejamos armazenar o nosso dado. Além disso, toda variável precisa ser associada a um tipo de dado, para que o processador reserve o espaço de memória necessário para o seu armazenamento. Resumindo, toda variável possui um nome, um tipo e um conteúdo (ou valor que é armazenado na variável). Sintaxe tipo [variavel_1, variavel_2, ...]; Declaração de Variáveis int idade, matricula; float media, total; char letra, nome_aluno[20]; Diferente das variáveis, as constantes mantêm seu valor ao longo do programa. Para indicar ao compilador que se trata de uma constante, a diretiva de compilação #define é utilizada. Sintaxe #define <identificador> <valor> Não é necessário colocar o ponto e vírgula no final da linha e também não precisa informar o tipo de dado da constante. O valor de uma constante não pode ser modificado, de maneira alguma, ao longo da execução do programa. Declaração de Constantes #define DIAS 7 #define PI 3.1416 #define RESPOSTA ‘s’ #define DISCIPLINA “Matemática” Esse operador é utilizado para armazenar um valor em uma dada variável. Assim, o operador de atribuição nos possibilita armazenar um dado em um espaço de memória, que foi previamente declarado. É importante que o dado que será armazenado seja compatível com o tipo da variável que receberá a atribuição. ◦ Por exemplo, as variáveis reais podem receber valores reais e inteiros. No entanto, uma variável inteira não pode receber um valor real. Sintaxe Variavel = Valor; Variavel_1 = Variavel_2; Variavel = Expressão Aritmética; Variavel = função; Variavel_1 = variavel_2 = variavel_3 = valor; Comando de Atribuição float Media, X, Y, Z; int J, L, M, K, A, B; char Letra; Media = 7.5; Letra = ’D’; X = Y; K = A + B; Z = sqrt(4); J = L = M = 10;