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

BIT

BYTES

ESCALAS

char

-128 a 127

int

16

-32768 a 32767

float

32

3.4E-38 a 3.4E+38

double

64

1.7E-308 a 1.7E+308

void

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

signed;
unsigned;
long;
short.

Bits

Incio

Fim

int

16

-32.768

32.767

unsigned int

16

65.535

signed int

16

-32.768

32.767

short int

16

-32.768

32.767

long int

32

-2.147.483.648

2.147.483.647

Prof. Leonardo Barreto Campos

6/53

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

double

int

struct

break

else

long

switch

case

ebun

register

typedef

char

extern

return

union

const

float

short

unsigned

continue

for

signed

void

default

goto

sizeof

volatile

asm

pascal

far

huge

interrupt

near

_cs

_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

Significado

%d

Inteiro

%f

Float

%c

Caractere

%s

String

%%

Coloca um % na tela

Prof. Leonardo Barreto Campos

12/53

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();

Declarao de uma
varivel global

Utilizao da varivel

int main()
{
num = 100;
func1();
}

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.
128 em decimal

int varHex = 0x80;


int varOct = 012;

10 em decimal

Prof. Leonardo Barreto Campos

20/53

Constantes de Barra Invertida


Cdigo

Significado

\b

Retrocesso

\f

Alimentao de formulrio

\n

Nova linha

\r

Retorno de carro

\t

Tabulao horizontal

Aspas duplas

Aspas simples

\0

Nulo

\\

Barra invertida

\v

Tabulao vertical

\a

Alerta

\xN

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

Char

178

0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0

1 0 1 1 0 0 1 0

23986

0 1 0 1 1 1 0 1 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

Tipo da expresso

Possvel informao perdida

signed char

char

Se valor>127, o destino negativo

char

short int

Os 8 bits mais significativos

char

int

Os 8 bits mais significativos

char

long int

Os 24 bits mais significativos

int

long int

Os 16 bits mais significativos

int

float

A parte fracionria e/ou mais

float

double

Preciso, o resultado arredondado

double

long double

Preciso, o resultado arredondado

Prof. Leonardo Barreto Campos

29/53

Atribuies mltiplas


Em C permitido que voc atribua o mesmo valor a


muitas variveis usando atribuies mltiplas em um
nico comando, veja:
Exemplo 1:

Exemplo 2:

int x, y, z;
x = y = z = 0;

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

Ao

Subtrao, tambm menos unrio

Adio

Multiplicao

Diviso

Mdulo da diviso (resto)

--

Decremento

++

Incremento

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.

Prof. Leonardo Barreto Campos

37/53

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--);

10

10

11

10

10

-11

10

10

-11

11

10

-10

11

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

p&&q

p||q

!p

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

Ao

&

And

Or

Or exclusivo (Xor)

Complemento de um

>>

Deslocamento esquerda

<<

Deslocamento direita

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:

*Slide 45

p&q

p|q

!p

p^q

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

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 a cada execuo

Valor de x

x=7

00000111

x = x<<1

00001110

14

x = x<<3

01110000

112

x = x<<2

11000000

192

x = x>>1

01100000

96

x = x>>2

00011000

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