segunda-feira, 20 de novembro de 2017

Variáveis e tipos na linguagem C



Ajude o nosso blog.
O nosso conteúdo sempre foi, é e sempre será livre e gratuito, isto quer dizer que você pode compartilhá-lo, pode usá-lo e divulgá-lo. Se esse conteúdo é, ou de alguma forma, foi relevante para você, você pode nos incentivar a continuar este trabalho fazendo uma doação de qualquer quantia na conta abaixo.

Banco: Caixa Econômica Federal
Agência: 0051 – Caruaru-PE
Operação: 013 – Conta poupança
Conta: 00307298-3
Beneficiário: José Roberto

TIPOS, VARIÁVEIS E CONSTANTES EM C

Para aprendermos qualquer linguagem, devemos aprender as suas particularidades, com a linguagem de programação em C não é diferente, nessa aula vamos falar de algumas dessas particularidades da linguagem C, vamos conhecer algumas palavras reservadas do C, vamos aprender o que são variáveis, constantes, tipos e identificadores.
Palavras reservadas
Vamos começar falando das palavras reservadas do C, as palavras reservadas não podem ser usadas fora dos seus propósitos, as palavras reservadas do C são palavras com funções específicas dentro de um programa em C, nós já fizemos uso de uma dessas palavras na nossa primeira aula. Naquela aula nós usamos a palavra reservada printf para imprimir algo na tela, essa palavra na linguagem C é reservada exclusivamente para essa função não sendo permitido o uso dela para qualquer outra função dentro do programa que não seja imprimir algo na tela do seu monitor.
Existem muitas palavras reservadas na linguagem C, a seguir podemos ver uma tabela com algumas dessas palavras, deixando claro que são apenas algumas, no decorrer de nosso curso vamos usar e explicar a função de algumas delas.
Tabela 1: Palavras reservadas do C
Tipos
Uma das unidades básicas de um computador é a memória, a memória tem como finalidade básica armazenar dados que serão manipulados pelo processador, programas têm a função básica de manipular dados, os programas para serem executados devem primeiro ser carregados na memória do computador para que o processador possa então manipulá-los, esses programas na memória já vêm com dados e eles próprios geram dados que devem ser armazenados na memória, então quando o sistema operacional carrega um programa na memória ele divide uma região da memória em partes e reserva essas partes para serem usadas pelo programa, esses pequenos pedaços de memória são chamados de posições de memória que o sistema pode acessar para armazenar ou excluir dados, cada um desses pedaços de memória tem um endereço que é um número inteiro escrito no sistema binário que é a linguagem da máquina, assim o sistema acessa cada um deles devido ao seu endereço, a quantidade de dados que cada um desses endereços “pedaços” de memória pode armazenar depende do seu tipo.
O C tem cinco tipos básicos de dados, são eles, int, float, char, void e double, o void estudaremos quando estudarmos funções em C, o float é o tipo usado para armazenar valores de ponto flutuante ou seja, um número onde uma parte é inteira e a outra fracionária, por exemplo o número 5,123458 é um valor de ponto flutuante, o double pode ser visto como um float maior, ou seja, um número com mais precisão, aliás, podemos usar os modificadores de tipos para alterar os tipos de dados (os tamanhos dos dados que podem ser armazenados), podendo assim o sistema reservar um “espaço” maior de memória para armazenar esse tipo de dado. Os modificadores em C são quatro, unsigned, signed, short e long.
Para armazenar um char por exemplo, o sistema reserva um “pedaço” de memória que é capaz de armazenar oito bits, um caractere no código ASCII é armazenado no espaço de memória reservado para o tipo char e é codificado com um número decimal que está em um intervalo que vai de -128 a 127, na realidade, tudo em um computador é codificado em números binários de base dois, por isso a unidade básica de medida é o bit (binary digit), ou seja, 0 ou 1, ligado ou desligado etc. O bit (com ‘b’ minúsculo) é a menor unidade manipulável por uma máquina digital, tudo em um computador é representado por sequências de “zeros” e “uns”, por meio de código binário, por exemplo, se tivermos um bit, esse bit pode assumir dois valores (0 e 1) e assim podemos representar dois valores numéricos em binário e ou decimal 0 e 1 conforme a tabela abaixo.


Tabela 2: Representação de valores com um bit


Se pudermos usar dois bits para representar valores, iremos poder representar quatro valores.


Tabela 3: Representação de valores com dois bits
E ainda, se pudéssemos usar 3 bits, quantos valores poderíamos representar?


Tabela 4: Representação de valores com três bits
Seguindo esse raciocínio, se dispusermos de “n” bits poderemos representar 2n valores, para o caso de querermos representar caracteres (char) que são codificados em números pela tabela ASCII e que ocupam oito bits na memória, podemos representar 28 caracteres, ou seja, podemos representar 256 caracteres, por exemplo, o número decimal “65” corresponde ao caractere “A” na tabela ASCII e é codificado no computador pelo número binário de oito bits “01000000”, como na representação de valores devemos considerar também os valores negativos, podemos afirmar que com oito bits podemos representar os 256 caracteres da tabela ASCII estendida ou caracteres codificados em um intervalo que vai de -128 a +127 incluindo o “zero”, o mesmo raciocínio vale para representar o tipo “int”, o tipo “int” ocupa dezesseis bits em um “pedaço” de memória, com dezesseis bits podemos representar 216 = 65536 valores, mas como também temos que representar os valores negativos desses números e só dispomos de dezesseis bits para isso, dividimos 65536 por 2, assim 65536 / 2 = 32768 valores negativos e 32768 valores positivos incluindo também o zero, por isso dizemos que o tipo “int” pode representar valores numa faixa que vai de -32768 a +32767, abaixo deixo uma tabela com alguns tipos do C e suas respectivas faixas de representação de valores.
Tabela 5: Tipos em C
As faixas de valores que podemos representar com pontos flutuantes parecem mais longas devido ao fato de que os números de ponto flutuantes são representados um pouco diferente dos demais números no sistema binário.
Uma observação importante a fazer a respeito do tamanho dos espaços de memória reservados para os tipos de dados é que esses tamanhos vão depender da arquitetura do seu computador, ou mais especificamente, da arquitetura do seu processador, o compilador vai escolher o tamanho desses espaços dependendo se o seu processador é de 32 ou 64 bits, esses valores da tabela 5, são os valores considerados mínimos.


Variáveis em C
Uma variável é uma posição nomeada de memoria usada para guardar dados, cujo valor contido nela pode ser modificado durante a execução do programa a que elas pertencem, uma variável para ser usada tem que primeiro ser declarada, as variáveis podem ser locais ou globais, uma variável local só pode ser acessada dentro do bloco onde ela foi declarada, já a variável global pode ser acessada em qualquer lugar do programa, voltaremos a falar desse assunto no momento oportuno.
Constantes em C
Uma constante em C é também uma posição nomeada de memória que também é usada para armazenar dados, mas ao contrário das variáveis, uma constante não pode ter o seu conteúdo modificado durante a execução do programa, ou seja, o valor contido nela é constante (fixo), durante a execução do programa, como uma variável, uma constante precisa primeiro ser declarada antes de poder ser usada.
Identificadores
Os nomes das variáveis, das funções, das estruturas de registro e de vários outros objetos criados pelo programador, são chamados de identificadores na linguagem C, quando nomeamos um espaço de memória, seja ela uma constante ou uma variável, ou ainda, quando nomeamos uma função criada por nós, estamos identificando estes itens fazendo uso de identificadores, as regras para criar identificadores são simples, deve começar com uma letra, não ser igual a uma palavra reservada do C, deve-se levar em consideração que o C difere maiúsculas e minúsculas portando Idade e idade são identificadores diferentes, uma boa dica para usar na criação de identificadores é relacionar o identificador com o que se deseja representar, por exemplo, se uma variável vai armazenar a primeira nota da prova de um aluno, um identificador natural para essa variável seria nota1, pois não podemos começar o identificador por um número, por isso seria errado usar 1ªnota.


Declaração de variáveis e constantes
Declarando variáveis
Declarar uma variável basicamente é nomear um espaço de memória com um identificador, essa variável deve ser declarada antes do seu uso, ela pode ser inicializada ou não, inicializar uma variável é lhe atribuir um valor inicial, uma variável pode ser global ou local (falaremos disso mais a frente em nosso curso), para declarar uma variável fazemos segundo o exemplo abaixo.
Declarando uma variável.
Tipo_de_dado identificador;
Vamos declarar como exemplo a variável idade do tipo inteiro.
int idade;
Podemos declarar quantas variáveis forem necessárias em nossos programas, se elas forem do mesmo tipo, podemos separá-las com vírgula, se forem de tipos diferentes, declaramos cada tipo individualmente e separamos as variáveis com vírgulas, conforme o exemplo abaixo.
Declarando mais de uma variável, vamos declarar as variáveis que descrevam por exemplo, algumas pessoas.
char pessoa1=’Z’, pessoa2=’M’, pessoa3=’P’, sexo_pessoa1=’m’, sexo_pessoa2=’f’, sexo_pessoa3=’m’;
int idade_pessoa1=15, idade_pessoa2=40, idade_pessoa3=8;
float altura_pessoa1=1,52, altura_pessoa2=1,69, altura_pessoa3=1,04;
Declaramos e inicializamos três tipos de variáveis para armazenar três tipos e tamanhos de dados, no primeiro caso, criamos variáveis do tipo char para armazenar os nomes das pessoas e seus respectivos sexos, no segundo criamos variáveis do tipo int para armazenar as idades das pessoas e por fim, criamos variáveis do tipo float para armazenar as alturas das pessoas.
Declarando constantes
Existem duas maneiras de se declarar uma constante, o primeiro método é colocar antes do tipo de dado a palavra reservada do C const, o segundo método é definir um determinado identificador como sendo uma constante com a diretiva #define, nesse curso usaremos o segundo método, em seguida utilizaremos os dois métodos para definir a mesma constante para que fique evidenciada a diferença entre os dois métodos.
Vamos declarar a constante de Boltzmann pelos dois métodos.
O valor da constante de Boltzmann é KB = 1,380650 x 10-23 J/K, portanto é um float, para declarar essa constante pelo primeiro método faremos.
const float boltzmann = 1,380650e-23;
pelo segundo…
#define BOLTZMANN 1,380650e-23 (o identificador em maiúsculas)
Vamos agora construir um programinha para ilustrar o que aprendemos hoje, primeiro vamos construir a estrutura básica de nosso programa, como eu falei na aula anterior, é importante que você digite o código, pois com a prática você ganha fluência no código.


#include <stdlib.h>
#include <sdtio.h>


int main()
{










return(0);
}
Vamos agora declarar as nossas variáveis, lembrando que para declarar uma variável primeiro definimos o tipo de dado que essa variável vai guardar e por fim identificamos ela, se for mais de uma variável do mesmo tipo, definimos o tipo e separamos as varáveis com vírgula e terminamos a declaração com ponto e vírgula como no exemplo abaixo.
Tipo_de_dado Identificador;
Tipo_de_dado Identificador_1,Identificador_1, … , Identificador_n;
usaremos as variáveis que declaramos acima, dentro do nosso código ficará assim:


#include <stdlib.h>
#include <sdtio.h>
int main()
{
char pessoa1= 'Z’, pessoa2=’M, pessoa3=’P’, sexo_pessoa1=’m’, sexo_pessoa2=’f’, sexo_pessoa3=’m’;
int idade_pessoa1=15, idade_pessoa2=40, idade_pessoa3=8;
float altura_pessoa1=1.52, altura_pessoa2=1.69, altura_pessoa3=1.04;








return(0);
}
Podemos agora imprimir em nossa tela os nomes das pessoas e suas características com a função printf. Dentro do nosso código escrevamos.


#include <stdlib.h>
#include <sdtio.h>
int main()
{
char pessoa1= 'Z’, pessoa2=’M, pessoa3=’P’, sexo_pessoa1=’m’, sexo_pessoa2=’f’, sexo_pessoa3=’m’;
int idade_pessoa1=15, idade_pessoa2=40, idade_pessoa3=8;
float altura_pessoa1=1.52, altura_pessoa2=1.69, altura_pessoa3=1.04;


printf("A pessoa 1 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa1,sexo_pessoa1,idade_pessoa1,altura_pessoa1);
printf("A pessoa 2 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa2,sexo_pessoa2,idade_pessoa2,altura_pessoa2);
printf("A pessoa 3 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa3,sexo_pessoa3,idade_pessoa3,altura_pessoa3);








return(0);
}
Quando compilarmos o nosso código receberemos uma saída como a da imagem abaixo.
Os códigos usados dentro do printf serão explicados em breve, vamos agora declarar uma constante usando os dois métodos descritos acima, usaremos também a constante de Boltzman. Sempre digitando, vamos escrever dentro do nosso código.
float cont Boltzmann = 1,380650e-23;
E em seguida a função printf para imprimir na tela, ficará assim no nosso código.
#include <stdlib.h>
#include <sdtio.h>
int main()
{
char pessoa1= 'Z’, pessoa2=’M, pessoa3=’P’, sexo_pessoa1=’m’, sexo_pessoa2=’f’, sexo_pessoa3=’m’;
int idade_pessoa1=15, idade_pessoa2=40, idade_pessoa3=8;
float altura_pessoa1=1.52, altura_pessoa2=1.69, altura_pessoa3=1.04;
float const Boltzmann = 1.380650e-23; //Dentro do código usamos pontos para separar as casas decimais


printf("A pessoa 1 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa1,sexo_pessoa1,idade_pessoa1,altura_pessoa1);
printf("A pessoa 2 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa2,sexo_pessoa2,idade_pessoa2,altura_pessoa2);
printf("A pessoa 3 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa3,sexo_pessoa3,idade_pessoa3,altura_pessoa3);
printf("A constante de boltzmann = %g\n",Boltzmann);








return(0);
}
Quando executarmos no código obtemos
A outra maneira é definir a constante com a palavra reservada define, fazemos isso com letras maiúsculas no começo do código.
#include <stdlib.h>
#include <sdtio.h>
#define BOLTZMANNN 1.380650e-23
int main()
{
char pessoa1= 'Z’, pessoa2=’M, pessoa3=’P’, sexo_pessoa1=’m’, sexo_pessoa2=’f’, sexo_pessoa3=’m’;
int idade_pessoa1=15, idade_pessoa2=40, idade_pessoa3=8;
float altura_pessoa1=1.52, altura_pessoa2=1.69, altura_pessoa3=1.04;
float const Boltzmann = 1.380650e-23; //Dentro do código usamos pontos para separar as casas decimais


printf("A pessoa 1 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa1,sexo_pessoa1,idade_pessoa1,altura_pessoa1);
printf("A pessoa 2 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa2,sexo_pessoa2,idade_pessoa2,altura_pessoa2);
printf("A pessoa 3 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa3,sexo_pessoa3,idade_pessoa3,altura_pessoa3);
printf("A constante de boltzmann = %g\n",Boltzmann);
printf("A constante de boltzmann = %g\n",BOLTZMANN);








return(0);
}
Ao compilar e executar o código obtemos…
Como podemos ver,foram impressas as duas constantes definidas das duas formas, nesse curso usaremos a forma #define, vamos agora dentro do nosso código mudar os valores anteriormente atribuídos às constantes e variáveis para ver o que acontece onde mudar colocarei em negrito.
#include <stdlib.h>
#include <sdtio.h>
#define BOLTZMANNN 1.380650e-23
int main()
{
char pessoa1= 'Z’, pessoa2=’M, pessoa3=’P’, sexo_pessoa1=’m’, sexo_pessoa2=’f’, sexo_pessoa3=’m’;
int idade_pessoa1=18, idade_pessoa2=52, idade_pessoa3=8;
float altura_pessoa1=1.52, altura_pessoa2=1.69, altura_pessoa3=1.04;
float const Boltzmann = 1.380650e-23; //Dentro do código usamos pontos para separar as casas decimais
BOLTZMANN = 3.654;
Boltzmann = 3,654;
printf("A pessoa 1 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa1,sexo_pessoa1,idade_pessoa1,altura_pessoa1);
printf("A pessoa 2 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa2,sexo_pessoa2,idade_pessoa2,altura_pessoa2);
printf("A pessoa 3 se chama %c, é do sexo %c, tem %d anos de idade e %.2f metros de altura\n",pessoa3,sexo_pessoa3,idade_pessoa3,altura_pessoa3);
printf("A constante de boltzmann = %g\n",Boltzmann);
printf("A constante de boltzmann = %g\n",BOLTZMANN);








return(0);
}
Quando tentarmos compilar o nosso código receberemos como resposta do compilador uma mensagem de erro conforme nos mostra a figura.
O compilador nos avisa do erro e não compila o nosso código até que tenhamos consertado o erro, ou seja, deixamos as constantes do jeito que definimos elas, quanto as variáveis podemos mudá-las quantas vezes quisermos, vejam na figura a saída depois que consertei as constantes e compilei o código outra vez.
Espero que tenham gostado da nossa segunda aula de programação em C, se gostaram, inscrevam-se em nosso blog e no nosso canal do youtube e também compartilhem os nossos conteúdos, até a nossa próxima aula.

Caso queira ver um exemplo em vídeo, eu fiz uma vídeo aula que se encontra no nosso canal no link: https://www.youtube.com/watch?v=6O16VrspaC8&feature=youtu.be