Buscar

Linguagem C - Operadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 1
Capítulo 2 – Operadores 
A função scanf() 
• A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos 
permite ler dados formatados da entrada padrão (teclado). 
• Sintaxe: scanf(“expressão de controle”, lista de argumentos); 
• Por enquanto, assuma que a expressão de controle pode conter apenas códigos de 
formatação, que indica à função que deve ser lido um valor do tipo indicado pelo código. 
• A lista de argumentos deve consistir nos endereços das variáveis que irão armazenar os 
valores lidos. C possui um operador para tipos básicos chamado operador de endereço e 
referenciado pelo símbolo & que fornece o endereço do operando. 
O operador de endereço (&) 
• A memória do seu computador é divida em bytes, e estes bytes são numerados de 0 até o 
limite de memória de sua máquina. Estes números são chamados de endereços. Um 
endereço é o nome que o computador usa para identificar a variável. 
• Toda variável ocupa uma certa localização na memória, e seu endereço é o do primeiro byte 
ocupado por ela. 
• Um inteiro ocupa 2 bytes. Se você declarou a variável n como inteira a atribuiu a ela o valor 
2, quando n for referenciada devolverá 2. Entretanto, se você referenciar n precedido de & 
(&n) devolverá o endereço do primeiro byte onde n está armazenada. 
• O programa seguinte imprime o endereço de n e o valor armazenado em n: 
#include <stdio.h> 
main() 
{ 
 int n = 2; 
 printf(“Endereco: %u, Valor: %d”, n, &n); 
} 
• Um endereço de memória é visto como um número inteiro sem sinal, por isso usamos %u. 
• A tabela abaixo mostra os códigos de formatação da função scanf() 
código Significado 
%c caracter simples 
%d inteiro decimal 
%e notação científica 
%f ponto flutuante 
%o inteiro octal 
%s cadeia de caracteres 
%u decimal sem sinal 
%x hexadecimal 
%l inteiro longo 
%lf double 
• Vamos escrever um programa para exemplificar a utilização da função scanf(). O programa 
também mostra a saída formatada printf(): 
 
Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 2
#include <stdio.h> 
main() 
{ 
 char ch; 
 printf(“Digite um caracter e veja-o em decimal, ”); 
 printf(“octal e hexadecimal \n”); 
 scanf(“%c”, &ch); 
 printf(“\n %c corresponde a %d em decimal, %o em octal e %x em 
 hexadecimal.\n”, ch, ch, ch, ch); 
} 
As funções getche() e getch() 
• O C oferece funções que lêem um caracter no instante em que é digitado sem esperar 
[enter]. Essas funções estão definidas na biblioteca conio.h. 
• A função getche() lê o caracter do teclado e o imprime na tela imediatamente. Esta função 
não aceita argumentos e devolve o caracter lido para a função que a chamou. 
#include <stdio.h> 
#include <conio.h> 
main() 
{ 
 char ch; 
 printf(“Digite um caracter: ”); 
 ch = getche(); 
 printf(“\n A tecla pressionada foi: %c”, ch); 
} 
• A função getch() lê o caracter do teclado mas não imprime o caracter lido na tela. Esta 
função não aceita argumentos e devolve o caracter lido para a função que a chamou. 
#include <stdio.h> 
#include <conio.h> 
main() 
{ 
 char ch; 
 printf(“Digite um caracter: ”); 
 ch = getch(); 
 printf(“\n A tecla pressionada foi: %c”, ch); 
} 
As funções getchar() e putchar() 
• A função getchar() está definida na biblioteca stdio.h e lê um caracter do teclado só 
terminando a leitura quando a tecla [enter] é pressionada. 
• A função putchar(), também definida na biblioteca stdio.h, aceita um argumento cujo valor 
será impresso na saída padrão (tela). 
#include <stdio.h> 
main() 
{ 
 char ch; 
 printf(“Digite um caracter: ”); 
 ch = getchar(); 
 putchar(ch); 
} 
• Um argumento de uma função pode ser outra função. Por exemplo, o programa anterior 
pode ser escrito como: 
Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 3
#include <stdio.h> 
main() 
{ 
 char ch; 
 printf(“Digite um caracter: ”); 
 putchar(getchar()); 
} 
Operadores 
• Um operador é um símbolo que diz ao compilador para realizar manipulações matemáticas 
e lógicas específicas. A linguagem C oferece três classes de operadores: aritméticos, 
relacionais e lógicos e de atribuição. 
Operador de atribuição 
• Em C, o sinal de igual (=) não tem a mesma interpretação dada em matemática. Representa 
a atribuição da expressão à direita ao nome da variável à esquerda. Por exemplo: 
num = 20; 
• Neste exemplo o valor 20 é atribuído a variável num. C aceita várias atribuições numa 
mesma instrução: 
num1 = num2 = num3 = 20; 
• Neste exemplo o valor 20 é atribuído as variáveis num1, num2 num3. 
Operadores aritméticos 
• C oferece 5 operadores aritméticos binários (operam sobre dois operandos) e um operador 
aritmético unário (opera sobre um operando). 
operador operação 
+ adição 
- subtração e menos unário 
* multiplicação 
/ divisão 
% resto da divisão inteira 
Operadores binários: + - / * 
• Representam as operações aritméticas básicas de soma, subtração, divisão e multiplicação 
respectivamente. Estes operadores podem ser aplicados a qualquer tipo de dado interno 
permitido pelo C. 
• Exemplo 1: programa que calcula a idade em dias 
#include <stdio.h> 
main() 
{ 
 float anos, dias; 
 printf(“Informe sua idade em anos: ”); 
 scanf(“%f”, &anos); 
 dias = anos*365; 
 printf(“Sua idade em dias e’: %.0f \n”, dias); 
} 
Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 4
• Exemplo 2: programa que converte temperatura Fahrenheit em seus correspondentes graus 
Celsius. 
#include <stdio.h> 
main() 
{ 
 int ftemp, ctemp; 
 printf(“Informe a temperatura em graus Fahrenheit: ”); 
 scanf(“%d”, &ftemp); 
 ctemp = (ftemp–32)*5/9; 
 printf(“Temperatura em graus Celsius e’: %d\n”, ctemp); 
} 
• Exemplo 3: programa para adivinhar a soma de 5 números. O usuário digita um número 
qualquer e o computador informa o resultado da soma dos 5 números dos quais o primeiro o 
usuário já forneceu. O usuário digita o segundo número e o computador mostra o terceiro. O 
usuário digita o quarto número e o computador mostra o quinto. 
#include <stdio.h> 
main() 
{ 
 int num, aux; 
 printf(“Informe um número de ate’ 4 algarismos: ”); 
 scanf(“%d”, &num); 
 aux = 19998 + num; 
 printf(“O resultado da nossa conta sera’: %d\n”, aux); 
 printf(“Informe o segundo número (4 algarismos): ”); 
 scanf(“%d”, &num); 
 printf(“O meu numero e’: %d\n”, 9999-num); 
 printf(“Informe o quarto número (4 algarismos): ”); 
 scanf(“%d”, &num); 
 printf(“O meu numero e’: %d\n”, 9999-num); 
} 
Operador menos unário: - 
• Este operador é utilizado somente para indicar a troca do sinal algébrico do valor. Por 
exemplo: 
num = -8; 
num1 = -num; 
• Depois destas duas instruções, o conteúdo de num1 será 8. 
Operador módulo: % 
• O operador módulo aceita apenas operandos inteiros. Resulta o resto da divisão do inteiro à 
sua esquerda pelo inteiro à sua direita. Por exemplo: 
num = 17%5; 
• Depois desta instrução, o conteúdo de num será 2. 
Operadores de incremento (++) e decremento (--) 
• A linguagem C permite dois operadores bastante úteis geralmente não encontrados em 
outras linguagens. Sãoeles os operadores de incremento (++) e decremento (--). 
• O operador de incremento (++) adiciona um ao seu operando, enquanto o operador de 
decremento (--) subtrai um do seu operando. 
Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 5
• Estes operandos trabalham de dois modos. O primeiro modo é chamado pré-fixado e o 
operador aparece antes do nome da variável. O segundo é o modo pós-fixado em que o 
operador aparece seguindo o nome da variável. 
• Em ambos os casos, a variável é incrementada (++) ou decrementada (--). Porém quando 
++n é usado numa instrução, n é incrementada antes de seu valor ser usado, e quando n++ 
estiver numa instrução, n é incrementada depois de seu valor ser usado. 
#include <stdio.h> 
main() 
{ 
 int n, x; 
 n = 5; 
 x = n++; 
 printf(“x=%d n=%d\n”, x, n); 
} 
• Quando o programa acima for executado a saída será: x = 5 n = 6 . Isto porque o valor 
de n é atribuído a x e depois n é incrementado de 1. 
#include <stdio.h> 
main() 
{ 
 int n, x; 
 n = 5; 
 x = ++n; 
 printf(“x=%d n=%d\n”, x, n); 
} 
• Quando o programa acima for executado a saída será: x = 6 n = 6 . Isto porque o valor 
de n é incrementado de 1 e depois seu valor é atribuído a x. 
• Quando um desses operadores aparece sozinho numa instrução (como em num++;) não faz 
diferença o uso do modo pré-fixado ou pós-fixado. 
Precedência dos operadores aritméticos 
• A tabela abaixo mostra a precedência dos operadores aritméticos; 
mais alta ++ -- 
 - (unário) 
 * / % 
mais baixa + - 
• Operadores do mesmo nível de precedência são avaliados pelo compilador da esquerda para 
a direita. Parênteses podem ser usados para alterar a ordem de avaliação. Os parênteses 
forçam uma operação, ou conjunto de operações, para o nível mais alto de precedência. 
Operadores aritméticos de atribuição: +=, -=, *=, /=, %= 
• Cada um destes operadores é usado com uma variável a sua esquerda e uma expressão à sua 
direita. A operação consiste em atribuir um novo valor à variável que dependerá do 
operador e da expressão à direita. 
• Se x é uma variável, exp uma expressão e op um operador aritmético (+,-.*,/ ou %), então 
x op= exp; equivale a x = x op exp; 
• Exemplos: 
Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 6
i += 2; equivale a i = i+2; 
x *= y+1; equivale a x = x*(y+1); 
t /= 2.5; equivale a t = t/2.5; 
p %= 5; equivale a p = p%5; 
d -= 3; equivale a d = d-3; 
 
• As expressões com estes operadores são mais compactas e normalmente produzem um 
código de máquina mais eficiente. 
#include <stdio.h> 
main() 
{ 
 int total = 0; 
 int cont = 10; 
 printf(“Total: %d\n”, total); 
 total += cont; 
 printf(“Total: %d\n”, total); 
 total *= cont; 
 printf(“Total: %d\n”, total); 
} 
Operadores relacionais e lógicos 
• Nos termos operador relacional e lógico, relacional refere-se aos relacionamentos que 
podem haver entre dois valores e lógico à maneira como esses relacionamentos podem ser 
conectados. 
• A chave para o conceito de operadores relacionais e lógicos é a idéia de verdadeiro e falso. 
Em C, verdadeiro é qualquer valor diferente de zero e falso é zero. Expressões que 
operadores relacionais e lógicos retornarão 0 para falso e 1 para verdadeiro. 
• Operadores relacionais: 
operador ação 
> maior que 
>= maior ou igual que 
< menor que 
<= menor ou igual que 
== igual 
!= diferente 
• Os operadores relacionais são usados para determinar o relacionamento de uma quantidade 
com outra. Eles sempre retornam 0 ou 1, dependendo do resultado do teste. O programa 
seguinte ilustra o uso de cada operação e exibe o resultado de cada uma como 0 ou 1: 
#include <stdio.h> 
main() 
{ 
 int i, j; 
 printf(“Informe dois numeros: ”); 
 scanf(“%d%d”, &i, &j); 
 printf(“%d == %d eh %d\n”, i, j, i==j); 
 printf(“%d != %d eh %d\n”, i, j, i!=j); 
 printf(“%d <= %d eh %d\n”, i, j, i<=j); 
 printf(“%d >= %d eh %d\n”, i, j, i>=j); 
 printf(“%d < %d eh %d\n”, i, j, i>j); 
 printf(“%d < %d eh %d\n”, i, j, i<j); 
} 
Linguagem de Programação Notas de Aula 
DCT/UFMS – Prof. Marcos Alves 7
• Os operadores relacionais podem ser aplicados a qualquer dos tipos de dados básicos. No 
próximo capítulo você verá outras aplicações para os operadores relacionais. 
• Operadores lógicos: 
operador ação 
&& AND (E) 
|| OR (OU) 
! NOT (NÃO) 
• Os operadores lógicos são usados para dar suporte às operações lógicas básicas de AND, 
OR e NOT, de acordo com a tabela esta verdade. A tabela usa 1 para verdadeiro e 0 para 
falso. 
p q p AND q p OR q NOT p 
0 0 0 0 1 
0 1 0 1 1 
1 1 1 1 0 
1 0 0 1 0 
• O próximo programa ilustra a ação dos operadores lógicos: 
#include <stdio.h> 
main() 
{ 
 int i, j; 
 printf(“Informe dois numeros (cada um sendo 0 ou 1): ”); 
 scanf(“%d%d”, &i, &j); 
 printf(“%d AND %d eh %d\n”, i, j, i&&j); 
 printf(“%d OR %d eh %d\n”, i, j, i||j); 
 printf(“NOT %d eh %d\n”, i, !i); 
} 
• Tanto operadores lógicos como os relacionais têm menor precedência que os operadores 
aritméticos. Isto significa que a expressão 10 > 1+12 é avaliada como 10 > (1+12). 
• A tabela abaixo mostra a precedência relativa dos operadores relacionais e lógicos: 
mais alta ! 
 > >= < <= 
 == != 
 && 
mais baixa || 
• Assim como nas expressões aritméticas é possível usar parênteses para alterar a ordem 
natural de avaliação em uma expressão relacional e/ou lógica.

Continue navegando