Você está na página 1de 33

Introduo Programao

Operadores, Expresses Aritmticas e Entrada/Sada de Dados

Programa em C
#include #include <stdio.h> main( ) { int main

Palavras Reservadas

float celsius celsius ; E ainda float farenheit farenheit ; expresses celsius = 30; aritmticas... farenheit = 9.0/5 *celsius + 32; printf (30 graus celsius = %f graus farenheit,farenheit); }

Identificadores criados por terceiros (chamadas de funes)

Identificadores criados pelo programador


2

Tpicos da Aula
Hoje aprenderemos a escrever um programa em C que pode realizar clculos
Conceito de expresso Tipos de Operadores em C Operador de atribuio Operadores aritmticos Operadores especiais

Depois aprenderemos como utilizar funes entrada/sada para escrever um programa


Funes de entrada Funes de sada

de

Expresses
Uma expresso uma combinao de um ou mais operadores e operandos que geralmente realiza um clculo A avaliao ou clculo da expresso se faz obedecendo regras de associao e precedncia estabelecidas na linguagem
int total = 3 + 4/2 ; Diviso (/ ) tem precedncia sobre soma (+) Expresso avaliada e o resultado atribudo a total que armazena agora o valor 5

O valor calculado pode no ser necessariamente um nmero Pode ser um caractere, cadeia de caracteres, etc
4

Operadores em C
Categorias de operadores em C Atribuio Hoje veremos estes Aritmticos 3 tipos de Especiais operadores Relacionais Lgicos

Operador de Atribuio
Operador de Atribuio
Pode ser usado em qualquer expresso vlida em C Representado por = Forma geral: <nome_da_varivel> = <expresso> ; Ex.: x = 5 ; Ao executada da direita para a esquerda

5 5
6

Operador de Atribuio
Atribuio (Cont.)
usado para atribuir valores s variveis No igual ao operador = de matemtica 5 = a no faz sentido em C! Valor da expresso armazenado fisicamente em <nome_da_varivel> Mltiplas atribuies Ex: x = y = z = 0

0
7

Operadores Aritmticos
Operadores aritmticos unrios Um s operando operador operando Sinal ++ Ao Troca de sinal Incremento de 1 Precedncia 1 1

--

Decremento de 1

1
8

Ex.: -(a)

Operadores Aritmticos
Operadores aritmticos binrios
Dois operandos operando operador operando

Sinal + * / %

Ao Adio Subtrao Multiplicao Diviso Resto da Diviso (s para inteiros)

Precedncia 3 3 2 2 2
9

Operadores de Incremento e Decremento


Operadores de incremento e decremento so operadores unrios (usam um s operando) O operador de incremento (++) soma 1 ao seu operando O operador de decremento (--) subtrai 1 de seu operando

A instruo
contador++; funcionalmente equivalente a contador = contador + 1;
10

Operadores de Incremento e Decremento


Estes operadores podem ser empregados de forma ps-fixada ou pr-fixada contador++; ou ++ contador;

Quando isolados equivalentes

tm

comportamentos

Quando fazem parte de expresses maiores, eles podem ter comportamentos diferentes
11

Operadores de Incremento e Decremento


Pr-fixado : ++a ou --a
Incrementa (decrementa) de 1 o valor de a. Se aparece em uma expresso, o valor incrementado (decrementado) antes do clculo da expresso

Pr:

int soma = ++a


65 a + 2

+ b
= 8

soma
12

Operadores de Incremento e Decremento


Ps-fixado: a++ ou a-Incrementa (decrementa) de 1 o valor de a. Se aparece em uma expresso, o valor incrementado (decrementado) aps o clculo da expresso Ps: int soma = ( a++) + b 65 a

2 b

7 soma
13

Operadores de Incremento e Decremento


Devem ser utilizadas com cuidado em expresses maiores!
int contador contador++; = 3; contador agora armazena 4 contador agora armazena 5 valor agora armazena 5 e
depois contador incrementado para 6

++contador;
int valor

= contador++;

valor

= ++ contador;

contador incrementado
para 7 e agora valor armazena 7

14

Diviso e Resto da Diviso


Se ambos operandos da expresso aritmtica forem valores inteiros, o resultado ser um inteiro (a parte decimal ser descartada) Portanto 14/3 8/12 14%3 8%12
4 0 2 8
15

Operadores Aritmticos de Atribuio


comum fazermos algum tipo de operao com uma varivel e depois armazenar o valor da operao na prpria varivel
Operadores aritmticos de atribuio facilitam codificao de expresses do tipo a = a op b Forma geral variavel op = expresso

x += 1; x -= 2; x *= k;

x = x + 1; x = x - 2; x = x * k;

x /= 3;
x %= 3;

x = x / 3;
x = x % 3;
16

Expresses Aritmticas
Uma expresso aritmtica computa resultados numricos e utiliza operadores aritmticos combinados com operandos numricos
Variveis, constantes, funes numricas Ordem de precedncia Operadores unrios (- , -- , ++ ) e Funes Multiplicao ( *), Diviso ( / ) e Mdulo (% ) Adio ( + ) e Subtrao ( - ) Comandos Equivalentes a = a + 1; a += 1 ; a++ ; ++a ;
17

Operadores Aritmticos
Quais sero os valores das variveis declaradas aps a avaliao das expresses abaixo?
int a , r ; double b , c ; a = 3.5 ; b = a / 2.0 ; c = 1/2 + b ; r = 10 % a ; a=3 b=1.5 c=1.5 e r=1
18

Atribuio de Expresses aritmticas


Numa atribuio, a expresso aritmtica avaliada primeiro, para depois se atribuir o resultado da expresso varivel
Primeiro, a expresso do lado direito do operador = avaliado

answer

=
4

sum / 4 + MAX * lowest;


1 3 2

Depois, o resultado armazenado na varivel


19

Atribuio de Expresses aritmticas


O lado direito e esquerdo de um comando de atribuio podem conter a mesma varivel
int contador = 3;

Primeiro, 1 adicionado ao valor original de contador contador = contador + 1;

Depois o resultado armazenado em contador (sobrescrevendo o seu valor original)


20

Operadores Especiais
O operador & utilizado para se obter o endereo da memria que a varivel representa
Forma geral &varivel

Um endereo de memria visto como um nmero inteiro sem sinal

21

Converso de Tipos
Existem converses automticas de valores em uma avaliao de uma expresso quando operandos possuem tipos diferentes
Operando de tipo de menor tamanho convertido automaticamente para o tipo de maior tamanho Converso feita em rea temporria da memria antes da avaliao da expresso Resultado novamente convertido para o tipo da varivel a esquerda da atribuio
1. O inteiro 3 convertido para real

int a

3/2.0 + 0.5;
2. Expresso avaliada como 2.0,

3. Valor convertido para um inteiro e atribudo a varivel

Valor de a 2

22

Operadores Especiais (Cast)


Algumas vezes a converso automtica d resultados no desejados Devemos ento usar o operador de cast
Forma geral (tipo desejado) varivel ou (tipo desejado) (expresso) Armazenamento de um valor real em um tipo de dado inteiro gera erro ou perde-se preciso int a = 3/2 + 0.5; printf("a = %d",a);

Usando cast
int a = ((float)3)/2 +0.5; printf("a = %d",a);

a=1

a=2

23

Entrada de Dados
A funo scanf
Usada para a entrada formatada de dados Para cadeia de caracteres, a leitura feita at o primeiro espao em branco, ou o return, ou o tab. Est definida na biblioteca stdio.h

Forma Geral: Tem duas partes:


scanf (expresso de controle, lista de argumentos) Expresso de controle Cdigos de formatao, precedidos por %

24

Entrada de Dados
Cdigos de Formatao

Cdigo
%c %d %u %f %e %g %lf %le %lg %l %s

Funo
ler um nico caractere ler um nmero inteiro ler um inteiro sem sinal ler um nmero real (tipo float) ler um nmero real (tipo double) ler um inteiro longo ler uma cadeia de caracteres
25

Entrada de Dados
Lista de Argumentos Cada cdigo de formatao deve corresponder a uma varivel de entrada, que deve ser representada com o operador de endereo Operador de Endereo Utilizado para permitir que o dado lido do dispositivo de entrada seja armazenado na varivel correspondente. Ele retorna o endereo da varivel.

int a ; &a endereo da varivel a scanf ( % d , &a ) ;


26

Entrada de Dados
Exemplo:
int main() { char a, b, c ; int n ; double x ; scanf (%c%c%c%d%lf ,&a,&b,&c,&n,&x); }

27

Entrada de Dados
#include stdio.h int main ( ) /* ler um valor numrico */ { float a; scanf(%f,&a); 15.2 ..... } a
15.2
28

Sada de Dados
A Funo printf
Permite a impresso formatada de nmeros e cadeias de caracteres

Forma Geral
printf(estruturas de controle, lista de parmetros) Estruturas de Controle Caracteres especiais Cdigos de formatao precedidos por %

29

Sada de Dados
Formato %c %d %u %e %E %f %g %G %s %% Significado caracter inteiro inteiro sem sinal notao cientfica com e (7.12300e+00) notao cientfica com E (7.12300E+00) ponto flutuante decimal (7.12300) escolhe %e ou %f ,o menor dos 2 formatos escolhe %E ou %f ,o menor dos 2 formatos cadeia de caracteres imprime o caracter %
30

Exemplo E/S de Dados


Escreva um programa em C para ler 2 valores para as variveis A e B, efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e que a varivel B passe a possuir o valor da varivel A. Apresentar os valores trocados.

31

Exemplo E/S de Dados


#include stdio.h int main( ){ int a , b, aux; printf (\nTroca de valores entre variveis\n); printf (\nEntre com o valor de A: ); scanf (%d, &a ); printf (\nEntre com o valor de B: ) ; scanf (%d, &b ); aux = a ; a = b ; b = aux ; printf (A varivel A agora vale: %d, a ) ; printf ( \n) ; printf ( A varivel B agora vale: %d, b ) ; }
32

Resumindo ...
Conceito de expresso Tipos de Operadores em C Operador de atribuio Operadores aritmticos Operadores especiais

Entrada/Sada
Funes de entrada Funes de sada

33