Você está na página 1de 53

Linguagem C: Variveis e Operadores

Prof. Leonardo Barreto Campos

Sumrio
Variveis:
Tipos de variveis; Nome da varivel; Palavras reservadas; A funo printf(); A funo scanf(); Variveis locais; Variveis globais;

Constantes:
Constantes Hexadecimais e Octais; Constantes de barra invertida;

Prof. Leonardo Barreto Campos

2/53

Sumrio
Operadores:
Operador de atribuio; Converso de tipos em atribuio; Operadores Aritmticos; Operadores Relacionais; Operadores Lgicos; Operadores bit a bit.

Prof. Leonardo Barreto Campos

3/53

Variveis
So espaos de memria reservados que guardam valores durante a execuo de um programa; Todas as variveis em C devem ser declaradas, antes de serem usadas; Uma declarao de varivel em C consiste no nome de um tipo, seguido do nome da varivel, seguido de ponto-e-vrgula. Ex: tipo_da_variavel lista_de_variaveis; int num;
Tipo da Varivel Nome da Varivel
Prof. Leonardo Barreto Campos 4/53

Tipos de Variveis
O tipo de uma varivel informa a quantidade de memria, em bytes, que a varivel ocupar e a forma como um valor dever ser armazenado; H cinco tipos bsicos de dados em C:
TIPO
char int float double void

BIT
8 16 32 64 0

BYTES
1 2 4 8 0

ESCALAS
-128 a 127 -32768 a 32767 3.4E-38 a 3.4E+38 1.7E-308 a 1.7E+308 Nenhum valor

Prof. Leonardo Barreto Campos

5/53

Tipos de Variveis
Exceto o void, os tipos de dados bsicos podem ter vrios modificadores precedendo-os; Um modificador usado para alterar o significado de um tipo bsico para adapt-lo mais precisamente s necessidades de diversas situaes, veja:
Tipo Bits 16 16 16 16 32 Incio -32.768 0 -32.768 -32.768 -2.147.483.648 Fim 32.767 65.535 32.767 32.767 2.147.483.647
6/53

signed; unsigned; long; short.

int unsigned int signed int short int long int

Prof. Leonardo Barreto Campos

Nome da Varivel
O nome de uma varivel pode ser de uma letra at palavras com no mximo 32 caracteres; Obrigatoriamente deve comear com uma letra ou undercore (_). O restante pode ser letras de A a Z, maisculas, minsculas, nmeros e o underscore; Ex: a; num; essa_e_uma_variavel; tambem_essa; Cuidados:
O nome de uma varivel no pode ser igual a uma palavra reservada; O nome de uma varivel no pode ser igual a de uma funo declarada pelo programador ou pelas bibliotecas do C.

Prof. Leonardo Barreto Campos

7/53

Palavras reservadas
Eis algumas palavras reservadas da linguagem C:
auto break case char const continue default asm interrupt double else ebun extern float for goto pascal near int long register return short signed sizeof far _cs struct switch typedef union unsigned void volatile huge _ds

Prof. Leonardo Barreto Campos

8/53

Nome da Varivel
Em C, letras maisculas e minsculas so tratadas diferentemente. int variavel; int Variavel; int VaRiAVeL; int VARIAVEL; ou int variavel, Variavel, VaRiAVeL, VARIAVEL;

Prof. Leonardo Barreto Campos

9/53

Exemplos de Variveis
#include <stdio.h> /* Exemplo da varivel Char */ int main() { %c indica que printf() deve colocar um caracter na tela. char Ch; Ch=D; printf(%c, Ch); return 0; }

Prof. Leonardo Barreto Campos

10/53

Exemplos de Variveis
#include <stdio.h> /* Exemplo da varivel Inteiro */ int main() { %d indica que printf() deve colocar um inteiro na tela. int num; num=10; printf(%d, num); return 0; }

Prof. Leonardo Barreto Campos

11/53

A funo printf()
A funo printf() tem a seguinte forma geral: printf(string_de_controle, lista_de_argumentos) Teremos, na string de controle, uma descrio de tudo que a funo vai colocar na tela. Isto feito usando-se os cdigos de controle, veja alguns exemplos: Cdigo %d %f %c %s %% Significado Inteiro Float Caractere String Coloca um % na tela
12/53

Prof. Leonardo Barreto Campos

A funo scanf()
O formato geral da funo scanf() : scanf(string_de_controle, lista_de_argumentos); #include <stdio.h> /* Exemplo da funo scanf() */ int main() { int num; printf(Digite um nmero: ); scanf(%d, &num); printf(%d, num); return 0; }
Prof. Leonardo Barreto Campos 13/53

Exemplos de Variveis
#include <stdio.h> /* Exemplo da varivel String */ int main() { Funo para leitura de String (Char) char nome[20]; printf(Digite seu nome: ); gets (nome); printf(\n\nSeu nome : %s, nome); return 0; }
Prof. Leonardo Barreto Campos 14/53

Variveis Locais
So variveis declaradas dentro de uma funo; S podem ser referenciadas por comandos que esto dentro do bloco no qual as variveis forma declaradas; #include <stdio.h> int main() Incio do bloco { int x; int y; x = 10; y = 20; Fim do bloco }
Prof. Leonardo Barreto Campos 15/53

Variveis Locais
As variveis tambm podem ser declaradas dentro de qualquer outro bloco de cdigo, veja: #include <stdio.h> int main() { int x; scanf(%d, &x); if (x == 1) { Criao da varivel char s[30]; printf(Entre com o nome); gets(s); /* Faz alguma coisa*/ } Morte da varivel }
Prof. Leonardo Barreto Campos 16/53

Variveis Globais
So variveis reconhecidas pelo programa inteiro e podem ser usadas por qualquer bloco de cdigo; As variveis globais so criadas declarando-as fora de qualquer funo. Veja: #include <stdio.h> int num; void func1(); void func2(); int main() { num = 100; func1(); }
Declarao de uma varivel global

Utilizao da varivel

void func1() { num = num +1; func2(); }


Prof. Leonardo Barreto Campos

void func2() { num = num +1; printf(%d, num); }


17/53

Variveis Globais
As variveis globais encontram-se armazenadas em uma regio fixa da memria, separada para esse propsito pelo compilador C; Variveis globais so teis quando o mesmo dado usado em muitas funes em seu programa; Alerta: Variveis globais ocupam memria durante todo o tempo em que seu programa estiver executando, portanto, evite usar variveis globais desnecessrias.
Prof. Leonardo Barreto Campos 18/53

Constantes
Variveis com o modificador const no podem ser modificadas por seu programa; #include <stdio.h> int main() { const int num = 100; }
Cria uma varivel inteira chamada a, com um valor inicial 10, que seu programa no pode modificar.
Prof. Leonardo Barreto Campos 19/53

Constantes Hexadecimais e Octais


Muitas vezes precisamos inserir constantes hexadecimais (base dezesseis) ou octais (base oito) no nosso programa. Em C as constantes hexadecimais comeam com 0x e as constantes octais comeam e 0. int varHex = 0x80; int varOct = 012;
128 em decimal

10 em decimal

Prof. Leonardo Barreto Campos

20/53

Constantes de Barra Invertida


Cdigo \b \f \n \r \t \ \ \0 \\ \v \a \xN Significado Retrocesso Alimentao de formulrio Nova linha Retorno de carro Tabulao horizontal Aspas duplas Aspas simples Nulo Barra invertida Tabulao vertical Alerta Constante Hexa (onde N a constante Hexa)
Prof. Leonardo Barreto Campos 21/53

Exerccio da Lista
Faa um programa em C para ler uma temperatura em graus Celsius e transform-la em Farenheit. Utilize a seguinte frmula: F = ((9 * C) / 5) + 32

Prof. Leonardo Barreto Campos

22/53

Resposta sugerida para o exerccio

Prof. Leonardo Barreto Campos

23/53

Operadores

Prof. Leonardo Barreto Campos

24

Operadores
A linguagem C muito rica em operadores internos. Ela define quatro classes de operadores:
Aritmtico; Relacionais; Lgicos; Bit a bit. -, +, *, /, %, --, ++ >, <, >=, <=, ==, != &&, ||, ! &, |, ^, ~, >>, <<

Alm disso, C tem alguns operadores especiais para tarefas particulares.


Prof. Leonardo Barreto Campos 25/53

Operador de Atribuio
A forma geral do operador de atribuio : nome_da_variavel = expressao A expresso pode ser to simples como uma nica constante ou to complexa quanto voc necessite; O destino, ou parte esquerda da atribuio, deve ser uma varivel ou um ponteiro, no uma funo ou uma constante.

Prof. Leonardo Barreto Campos

26/53

Converso de tipos em atribuio


Refere-se situao em que variveis de um tipo so convertidas em outro tipo; A regra muito simples: o valor do lado direito (expresso) de uma atribuio convertida no tipo do lado esquerdo (varivel destino), veja: #include <stdio.h> int i; char ch; float f; int main() { i = f; f = i; ch = i; f = ch; }

i recebe a parte inteira (16 bits) de f; f converte um inteiro de 16 bits em um ponto flutuante; coloca os bits menos significativos de i em ch; f converte o inteiro de 8 bits guardado em ch em um ponto flutuante;
Prof. Leonardo Barreto Campos 27/53

Converso de tipos em atribuio


Quando se converte de:
inteiro para caracter; inteiros longos para inteiros; Inteiros para inteiros curtos;

A regra bsica que a quantidade apropriada de bits significativos seja ignorada, veja um exemplo: Inteiro
178 23986
0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0

Char
1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0

Prof. Leonardo Barreto Campos

28/53

Converso de tipos em atribuio


A tabela abaixo rene essas converses de tipos. Lembre-se que a converso de int em um float ou float em double, etc no aumenta a preciso ou exatido, apenas mudam a forma de representar.
Tipo do destino signed char char char char int int float double Tipo da expresso char short int int long int long int float double long double Possvel informao perdida Se valor>127, o destino negativo Os 8 bits mais significativos Os 8 bits mais significativos Os 24 bits mais significativos Os 16 bits mais significativos A parte fracionria e/ou mais Preciso, o resultado arredondado Preciso, o resultado arredondado
29/53

Prof. Leonardo Barreto Campos

Atribuies mltiplas
Em C permitido que voc atribua o mesmo valor a muitas variveis usando atribuies mltiplas em um nico comando, veja: Exemplo 1: int x, y, z; x = y = z = 0; Exemplo 2: int i; char ch; float f; f = ch = i = 72;
Prof. Leonardo Barreto Campos 30/53

Operadores Aritmticos
A tabela abaixo lista os operadores aritmticos de C:
Operador + * / % -++ Adio Multiplicao Diviso Mdulo da diviso (resto) Decremento Incremento Ao Subtrao, tambm menos unrio

Prof. Leonardo Barreto Campos

31/53

Operadores Aritmticos
C possui operadores unrio, binrio e ternrio:
Os unrios agem sobre uma varivel apenas modificando ou no seu valor. Ex: o operador (-1, -3000, etc); Os binrios usam duas variveis e retornam um terceiro valor, sem alterar as variveis originais. Ex: os operadores + e O ternrio usado para substituir certas sentenas de forma if-then-else. Ex: o operador ?

Prof. Leonardo Barreto Campos

32/53

Operadores Aritmticos
O operador / (diviso) quando aplicado a variveis inteiras ou caracter, nos fornece o resultado da diviso inteira, ou seja, o resto truncado; int x = 5, y = 2; printf(%d, x/y);
Mostra na tela o nmero 2

O operador % (mdulo) quando aplicado a variveis inteiras ou caracter, nos fornece o resto de uma diviso inteira; int x = 5, y = 2; printf(%d, x%y);
Imprime na tela o resto da diviso, portanto, o nmero 1

Prof. Leonardo Barreto Campos

33/53

Operadores Aritmticos
O operador / (diviso) quando aplicado a variveis em ponto flutuante nos fornece o resultado da diviso real. float x = 5, y = 2; printf(%f, x/y);
Mostra na tela o nmero 2.500000

Alerta: O operador % (mdulo) no pode ser usado nos tipos em ponto flutuante (float e double).

Prof. Leonardo Barreto Campos

34/53

Operadores Aritmticos
Outros operadores aritmticos definidos em C so os operadores de:
Incremento: ++ Decremento: --

O operador ++ soma 1 ao seu operando, e subtrai 1. Incremento Decremento x = x + 1; x = x 1; x++; x--; Ambos os operadores de incremento ou decremento podem ser utilizados como prefixo ou sufixo do operando. x = x + 1; /* Equivale a x++ e a ++x */
Prof. Leonardo Barreto Campos 35/53

Operadores Aritmticos
Existe uma diferena quando os operadores de incremento e decremento so usados em uma expresso, veja: Ex1: x = 10; Executa o incremento antes de usar o valor do operando para atualizar y. Resultado: X = 11 e y = ++x;
Y = 11

Ex2: x = 10; y = x++;

Usa o valor do operando para atualizar y antes de incrementar x. Resultado: X = 11 e Y = 10

Prof. Leonardo Barreto Campos

36/53

Operadores Aritmticos
A precedncia dos operadores aritmticos a seguinte:
Mais alta ++, -- (menos unrio) *, /, % Mais baixa +, -

Operadores do mesmo nvel de precedncia so avaliados pelo compilador da esquerda para a direita; Obviamente, parnteses podem ser usados para alterar a ordem de avaliao.
37/53

Prof. Leonardo Barreto Campos

Operadores Aritmticos
Exerccio: Qual o resultado das variveis x, y e z depois da seguinte seqncia de operaes: int x, y, z; x = y = 10; z = (x++); x = -x; y++; x = x + y (z--);
x 10 11 -11 -11 -10 y 10 10 10 11 11 z 10 10 10 9

Prof. Leonardo Barreto Campos

38/53

Exerccio
Qual o resultado das variveis x, y e z depois da seguinte seqncia de operaes: int x, y, z; x = y = 10; z = x++; x = -x; y++; x = x + y z--;

Prof. Leonardo Barreto Campos

39/53

Programa sugerido para o exerccio

Prof. Leonardo Barreto Campos

40/53

Operadores Relacionais
No termo operadores relacionais, relacional refere-se s relaes que os valores podem ter uns com os outros; Os operadores relacionais do C realizam comparaes entre variveis. So eles:
Operador > >= < <= == != Ao Maior que Maior ou igual a Menor que Menor ou igual a Igual a Diferente de

Prof. Leonardo Barreto Campos

41/53

Operadores Relacionais
Os operadores relacionais retornam verdadeiro (1) ou falso (0). Em C, verdadeiro qualquer valor diferente de zero. Os operadores relacionais tem precedncia menor do que os operadores aritmticos, veja: int a = 10, b = 1, c = 12; a > b + c; O resultado da expresso acima : Falso
Prof. Leonardo Barreto Campos 42/53

Operadores Relacionais

Prof. Leonardo Barreto Campos

43/53

Operadores Relacionais

Prof. Leonardo Barreto Campos

44/53

Operadores Lgicos
No termo operador lgico, lgico refere-se s maneiras como as relaes podem ser conectadas; Os operadores lgicos definidos por C so os seguintes:
Operador && || ! Ao And (E) Or (Ou) Not (No)

Prof. Leonardo Barreto Campos

45/53

Operadores Lgicos
A tabela da verdade dos operadores lgicos so mostrados a seguir, usando 1s e 0s:
p 0 0 1 1 q 0 1 0 1 p&&q 0 0 0 1 p||q 0 1 1 1 !p 1 1 0 0

Prof. Leonardo Barreto Campos

46/53

Operadores Bit a bit


Operao bit a bit refere-se a testar, atribuir ou deslocar os bits efetivos em um byte ou uma palavra, que correspondem aos tipos de dados char e int e variantes do padro C. Operaes bit no podem ser usadas em float, double, long double, void ou outros tipos mais complexos.

Prof. Leonardo Barreto Campos

47/53

Operadores Bit a bit


A tabela abaixo lista os operadores que se aplicam s operaes bit a bit.
Operador & | ^ ~ >> << And Or Or exclusivo (Xor) Complemento de um Deslocamento esquerda Deslocamento direita Ao

Prof. Leonardo Barreto Campos

48/53

Operadores Bit a bit


Os operadores bit a bit AND, OR e NOT (complemento de 1) so governadas pela mesma tabela da verdade anterior*, exceto por trabalharem bit a bit; O Or exclusivo ( ^ ) tem a tabela da verdade mostrada a seguir, veja:
p q p&q 0 0 0 1 p|q 0 1 1 1 !p 1 1 0 0 p^q 0 1 0 1 0 0 1
*Slide 45

0 1 0 1

Prof. Leonardo Barreto Campos

49/53

Operadores Bit a bit


Operadores bit a bit encontram aplicaes mais freqentes em drivers de dispositivos como em programas de modem, rotinas de arquivos em disco e impressoras; Operador de complemento de um, ~, inverte o estado de cada bit da varivel especificada.
Byte Original
0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1

Aps complemento de 1

todos os 1s so colocados em 0 e todos os 0s so colocados em 1


Prof. Leonardo Barreto Campos 50/53

Operadores Bit a bit


Os operadores de deslocamento, >> e << movem todos os bits de uma varivel para a direita ou para a esquerda, respectivamente. A forma geral de deslocamento direita : varivel >> nmero de posies de bits A forma geral de deslocamento esquerda varivel << nmero de posies de bits Conforme os bits so deslocados para extremidade, zeros so colocados na outra;
Prof. Leonardo Barreto Campos

uma

51/53

Operadores Bit a bit


Exemplo de deslocamento direita e esquerda:
Unsigned char x; x=7 x = x<<1 x = x<<3 x = x<<2 x = x>>1 x = x>>2 X a cada execuo 00000111 00001110 01110000 11000000 01100000 00011000 Valor de x 7 14 112 192 96 24

Note que cada deslocamento esquerda multiplica por 2.


Prof. Leonardo Barreto Campos 52/53

Bibliografia
SCHILDT H. C Completo e Total, Makron Books. SP, 1997. MIZRAHI, V. V. Treinamento em Linguagem C++ Mdulo 1, Makron Books, SP, 1995. FORBELLONE, A. L. V. Lgica de Programao: A construo de algoritmos e estruturas de dados, Prentice Hall, SP, 2005.

Prof. Leonardo Barreto Campos

53/53

Você também pode gostar