Buscar

Apostila 2 Computação

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

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

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ê viu 3, do total de 16 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

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

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ê viu 6, do total de 16 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

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

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ê viu 9, do total de 16 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

Prévia do material em texto

Curso de Programação em Linguagem C 
1 
 
Operadores 
A linguagem C apresenta aproximadamente 50 operadores de vários 
tipos: atribuição, aritméticos, precedência e lógicos. 
Operadores de Atribuição 
O operador de atribuição, representado na linguagem C pelo sinal de =, 
tem a finalidade de atribuir um valor a uma variável. Por exemplo: 
 
X = 15; 
O operador acima indica que estamos atribuindo o valor 15 à variável x. 
A ação é realizada da direita para a esquerda. O operador de atribuição 
pode ser expresso também de forma múltipla. Por exemplo: 
 
y = x = 3; 
Lembrando que a operação é realizada da direita para a esquerda, 
concluímos que: 
 
y = (x = 3) 
Assim, y terá o valor 3. 
Operadores Aritméticos 
A linguagem C dispõe de cinco operadores aritméticos binários (que 
operam sobre dois operandos) e um operador aritmético unário (que 
opera sobre um operando). São eles: 
 
Binários 
+Soma 
- Subtração 
* multiplicação 
/ divisão 
% Módulo 
 
 
Curso de Programação em Linguagem C 
2 
 
Operadores Aritméticos de Atribuição 
Os operadores aritméticos de atribuição combinam as duas operações 
(aritmética e atribuição) de forma reduzida. Como regra geral, temos: 
se x é uma variável, exp uma expressão e op um operador aritmético, 
então: 
 
x op = exp que equivale a x = x op(exp) 
Exemplos: 
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 -= 5 equivale a d = d - 5; 
 
Unários 
Estes operadores atuam sobre quaisquer tipos de dados inteiros e ponto 
flutuante e executam as operações aritméticas básicas. 
 
Operador Menos Unário 
O operador menos unário é utilizado apenas para indicar a troca de sinal 
algébrico do valor associado. Pode ser visto também como o operador 
que multiplica seu operando por -1. Por exemplo: 
 
x = -5 
x = -x 
Módulo 
O operador módulo (%) opera somente com inteiros e resulta no resto 
de uma divisão do operando inteiro à direita pelo operando inteiro à 
esquerda. 
 
17%5 /* resulta 2 */ 
Precedência 
A precedência de operadores indica qual operador deverá ser executado 
primeiro. Operadores tem regras de precedência e de associatividade 
similares às das operações algébricas, que determinam como uma 
 
Curso de Programação em Linguagem C 
3 
 
expressão é resolvida. Assim, multiplicação e divisão têm precedência 
sobre soma e subtração. Entretanto, podemos usar parênteses () para 
alterar a ordem de avaliação da expressão. As expressões entre 
parênteses () são as primeiras a serem executadas. Veja o exemplo a 
seguir: 
 
x – y + 5 
Os operadores – e + têm a mesma precedência. Assim, segundo a regra 
da associatividade, a avaliação ocorre da esquerda para a direita. 
Primeiro será avaliado x – y e depois + 5. Veja agora outro exemplo: 
 
n = (z + y) * x; 
Neste caso, devido ao uso dos parênteses, a soma z + y será realizada e 
o resultado será multiplicado por x. 
Os operadores *, / e % tem a mesma precedência e a associatividade 
da esquerda para a direita. Eles também precedem os operadores + e -. 
 
Operador de Endereço 
A linguagem C oferece um operador que opera sobre o nome de uma 
variável e resulta no seu endereço. O operador de endereço é referido 
pelo símbolo &. Endereços são formados pelos bytes de memória do 
computador e são usados para localizar as variáveis na memória. Toda 
variável ocupa um espaço da memória e o seu endereço é o primeiro 
byte ocupado por ela. O código mostrado na lista 1 exemplifica o uso do 
operador de endereço: 
 
 
 
 
 
 
 
 
 
 
 
 
Lista 1 
#include <stdio.h> 
#include <stdlib.h> 
 
int main(){ 
 int n; 
 n = 2; 
 printf("valor = %d, endereco = %p\n", n, &n); 
 system ("pause"); 
 return 0; 
} 
 
 
Curso de Programação em Linguagem C 
4 
 
 
Operadores de Incremento 
O operador de incremento ++ opera sobre uma variável e adiciona 1 ao 
valor da variável. O operador pode ser pré ou pós-fixado. A seguir está 
a sintaxe para declarar um incremento pré-fixado: 
 
++x; /* adiciona 1 a x */ 
Exemplo: 
N = 5; 
Y = ++n; 
printf(“\nN=%d X=%d”, n , x); 
 
A saída será: 
N = 6 X = 6 
O operador de incremento pré-fixado incrementa a variável antes de 
executar a instrução em que aparece. Desta forma a variável n terá seu 
valor incrementado antes de ser atribuída a x. 
Agora veja o pós-fixado: 
 
X++; /* adiciona 1 a x */ 
N = 5; 
Y = n++; 
printf(“\nN=%d X=%d”, n , x); 
A saída será: 
N = 6 X = 5 
O operador de incremento pode ser negativo (--) ou ainda ser 
combinado com outro operado, como por exemplo: 
 
x += 3; 
Operador de Conversão (Cast) 
Quando dois ou mais operandos de tipos diferentes se encontram em 
uma mesma expressão, o conteúdo da variável de menor tamanho é 
convertido para o tipo da variável de maior tamanho. Entretanto, esta 
conversão chamada de implícita nem sempre produz o resultado que 
 
Curso de Programação em Linguagem C 
5 
 
queremos, obrigando o uso do operador explicito de conversão (cast). 
Veja o exemplo na lista 2 a seguir: 
 
 
 
 
 
 
 
 
 
 
 
Lista 2 
 
 
A Função scanf() 
A função scanf() é uma função de IO (entrada e saída) presente na 
biblioteca <stdio.h> fornecida com os compiladores C. Ela 
complementa a função printf() e permite ler dados formatados da 
entrada padrão do sistema (teclado). 
Similar à função printf(), ela também é declarada por uma expressão 
de controle seguida por uma lista de argumentos separados por virgula. 
Veja a sintaxe a seguir: 
scanf(“expressão de controle”, lista de argumentos) 
A função scanf(), a exemplo da função printf(), também utiliza uma 
série de códigos para indicar ao processador qual o tipo de dado da 
variável cujo valor será digitado no teclado. A tabela 1 abaixo mostra os 
códigos de formatação da função scanf(). 
 
/* Conversao.C */ 
/* Conversão automática de tipo */ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() { 
 int VarInt=2000000000; 
 int Dez =10; 
 VarInt = (VarInt * Dez) / Dez; /* valor muito grande */ 
 printf("\nVarInt = %d\n", VarInt); /*resposta errada*/ 
 system("PAUSE"); 
 return 0; 
} 
 
 
Curso de Programação em Linguagem C 
6 
 
Tabela 1 
 
A lista 3 a seguir mostra um exemplo da função scanf() usando 
modificadores: 
Códigos de Formatação 
para scanf() 
Significado 
%c Caractere simples 
%d Inteiro decimal com sinal 
%i Inteiro decimal com sinal 
%e Notação cientifica (e minúsculo) 
%f Ponto flutuante em decimal 
%g Usa %e ou %f o que for menor 
%g Usa %E ou %f o que for menor 
%o Inteiro octal sem sinal 
%s String de caracteres 
%u Inteiro decimal sem sinal 
%x Inteiro hexadecimal sem sinal (letras 
minúsculas) 
%ld Inteiro hexadecimal sem sinal (letras 
maiúsculas) 
%lf Ponteiro (endereço) 
%Lf Ponteiro inteiro 
 
Curso de Programação em Linguagem C 
7 
 
 
 
 
 
 
 
 
 
 
 
 
 
Lista 3 
 
Entradas Múltiplas com scanf() 
A função scanf() permite também ler vários valores com uma única 
entrada. Veja o exemplo mostrado na lista 4 abaixo: 
 
 
 
 
 
 
 
 
 
 Lista 4 
/* Adivinha.C */ 
/* Adivinha numero */ 
#include <stdio.h> 
#include <stdlib.h> 
int main() { 
 int x,r; 
 printf("\nDigite um número de até 4 algarismos: ") ; 
 scanf("%d", &x); 
 r = 19998 + x; 
 printf("\nO resultado da soma é: %d" , r); 
 printf("\nDigite o segundo número: "); 
 scanf("%d", &x); 
 printf("\nOmeu número é: %d", 9999 - x); 
 printf("\nDigite o quarto número: "); 
 scanf("%d", &x); 
 printf("\nO meu número é: %d\n", 9999 - x); 
 return 0; 
} 
 
/* Media.C */ 
/* Mostra o uso de scanf() com várias entradas */ 
/* Calcula a média de 4 notas */ 
#include <stdio.h> 
#include <stdlib.h> 
int main() { 
 float p1, p2, p3, p4; 
 double media; 
 printf("\nDigite as notas das 4 provas: "); 
 scanf("%f%f%f%f",&p1, &p2, &p3, &p4); 
 media = (p1 + p2 + p3 + p4)/4.0; 
 printf("\nMÉDIA: %.2f\n",media); 
 return 0; 
} 
 
Curso de Programação em Linguagem C 
8 
 
Uso do * para formatar a função scanf() 
 
A função scanf() pode ser formatada com ajuda de um asterisco (*). 
Veja na lista 5 a seguir como digitar e imprimir uma data formatada 
usando *. 
 
 
 
 
 
 
 
 
 
 
Lista 5 
 
Operadores Relacionais 
São operadores que fazem comparação. São eles: 
 
 menor que 
 menor ou igual 
 maior que 
 maior ou igual 
 igual 
 diferente 
 
Veja na lista 6 abaixo, exemplos de uso dos operadores relacionais: 
 
/* Asterisco.C */ 
/* Mostra o uso do caractere * com scanf()*/ 
/* Digitando uma data formatada */ 
#include <stdio.h> 
#include <stdlib.h> 
int main() { 
 int dia ,mes ,ano; 
 printf("Digite uma data no formato dd/mm/aaaa: "); 
 scanf("%d%*c%d%*c%d", &dia, &mes,&ano); 
 printf("A data que você digitou foi: %02d/%02d/%d\n", 
 dia, mes, ano); 
 system("PAUSE"); 
 return 0; 
} 
 
 
Curso de Programação em Linguagem C 
9 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Lista 6 
 
Precedência de Operadores Relacionais 
Os operadores relacionais têm precedência menor do que os operadores 
aritméticos. Isso significa que os operadores aritméticos são avaliados 
antes dos relacionais. Veja o exemplo na lista 7 abaixo: 
 
 
L 
 
 
 
 
 
 
 
Lista 7 
/* OpRel.C */ 
/* Mostra operadores relacionais */ 
#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
 int Verdadeiro, Falso; 
 
 Verdadeiro = (15 < 20); 
 Falso = (15 == 20); 
 
 printf("Verdadeiro %d\n", Verdadeiro); 
 printf("Falso %d\n", Falso); 
 
 system("PAUSE"); 
 return 0; 
 
} 
 
/* Precedencia.C */ 
/* Mostra a precedência dos operadores relacionais */ 
#include <stdio.h> 
#include <stdlib.h> 
int main() { 
 printf("O valor da expressão 4 + 1 < 3 é %d\n", 
4+1<3); 
 printf("O valor da expressão 2 < 1 + 3 é %d\n", 
2<1+3); 
 
 system("PAUSE"); 
 return 0; 
} 
 
 
Curso de Programação em Linguagem C 
10 
 
Operadores Lógicos 
Os operadores lógicos também fazem comparações. A diferença entre 
comparações lógicas e relacionais está na forma como os operadores 
avaliam seus operandos. Operandos de operadores lógicos (0 ou 1) e 
não como quantidades numéricas. Os operadores lógicos são: 
 
&& lógico E (and) 
|| lógico OU (or) 
! lógico NÃO (not) 
 
O operador ! é unário e os outros dois são binários. Veja a tabela 
verdade (tabela 2) a seguir: 
 
E1 && E2 Resulta 1 (verdadeiro) somente se 
E1 e E2 forem verdadeiros. 
E1 || E2 Resulta 0 (falso) somente se E1 e 
E2 forem falsos. 
!E1 Resulta 1 (verdadeiro) somente se 
E1 for falso. 
Tabela 2 
 
Alguns exemplos: 
 
dia == 7 e mês == 6 /* verdadeiro se dia for 7 e mês for 6 */ 
op == „S‟ || op == „s‟ /* verdadeiro se op for S ou s */ 
!masculino /* verdadeiro se o masculino for 0 */ 
 
Operador Condicional Ternário 
O operador condicional possui uma construção que permite operar sobre 
três expressões na mesma declaração. Veja como: 
 
Sintaxe: 
 
exp1 ? exp2 : exp3 
 
A leitura da declaração acima é: Se a exp1 for verdadeira executa a 
exp2, senão executa a exp3. Exemplo: 
 
max = (a > b) ? a : b; 
 
 
Curso de Programação em Linguagem C 
11 
 
Comandos de Decisão 
Os comandos de decisão são usados para testar e desviar o fluxo de um 
algoritmo. As decisões num algoritmo são equivalentes aquelas tomadas 
quando estamos diante de caminhos alternativos. Nestes casos, o que 
fazemos? Primeiro, avaliamos nossas opções. Depois, decidimos pela 
opção mais conveniente e continuamos nosso caminho, de acordo com a 
opção escolhida. 
 
Até o capítulo anterior, nossos programas não exigiram caminhos 
alternativos. Os exemplos dados seguiam o fluxo sem chance de 
escolher caminhos alternativos. Agora vamos mudar está monótona 
situação e incluir possibilidades de escolha nos algoritmos. 
 
A linguagem C oferece três formas para se tomar decisões. São elas: 
 
 if 
 if-else 
 switch 
 
Vamos examinar a seguir cada uma delas. 
O comando if 
A mais simples delas é o if. O comando if avalia uma expressão 
booleana, declarada dentro dos parênteses e, caso o resultado da 
avaliação seja verdadeiro (true), a instrução que está declarada na 
próxima linha do programa é executada. O código da lista 8 abaixo 
mostra a estrutura do if. 
 
 
 
 
Lista 8 
A lista 9 a seguir mostra um código completo usando o comando if. 
if (teste_verdadeiro) { 
 /* faça alguma coisa*/ 
} 
 
 
Curso de Programação em Linguagem C 
12 
 
 
 
 
 
 
 
 
 
 
 
 
 Lista 9 
O comando if-else 
O if-else é um comando mais elaborado. Ele avalia uma expressão 
booleana, declarada dentro dos parênteses e, caso o resultado da 
avaliação seja verdadeiro (true), a instrução que está declarada entre 
chaves, na sequência do programa é executada. Entretanto, caso a 
avaliação seja falsa (false), a sequência de instruções que será 
executada é aquela declarada entre cahves, logo após o else. O código 
da lista 9 abaixo mostra a estrutura do if-else. 
 
 
 
 
 
 
 
Lista 9 
if (teste_verdadeiro) { 
 /* faça alguma coisa*/ 
 } else { 
 /* faça alguma outra coisa */ 
 } 
 
Vejamos um exemplo de if, if-else e switch: 
 
/*IfDemo.C */ 
#include <stdio.h> 
#include <stdlib.h> 
 
int main() { 
 int anos; 
 printf("Quantos anos voce tem? \n"); 
 
 scanf("%d", &anos); 
 
 if( anos < 30) /* Toma uma decisão caso anos < 
30 */ 
 printf("Voce e muito jovem!\n"); 
 system("PAUSE"); 
 return 0; 
} 
 
 
Curso de Programação em Linguagem C 
13 
 
 
A lista 10 a seguir mostra um código completo usando o comando if-
else. 
 
 
 
 
 
 
 
 
 
 
Lista 10 
O comando if-else-if 
A estrutura if-else-if é apenas uma extensão da estrutura if-else. Sua 
forma geral pode ser escrita como sendo: 
if (condição_1) declaração_1; 
else if (condição_2) declaração_2; 
else if (condição_3) declaração_3; 
. 
. 
. 
else if (condição_n) declaração_n; 
else declaração_default; 
A estrutura acima funciona da seguinte maneira: O programa testa as 
condições começando pela 1 e continua a testar até que ele ache uma 
expressão cujo resultado seja diferente de zero. Neste caso ele executa 
a declaração correspondente. Só uma declaração será executada, ou 
#include <stdio.h> 
int main (){ 
 int num; 
 printf ("Digite um numero: "); 
 scanf ("%d",&num); 
 if (num==10){ 
 printf ("\n\nVoce acertou!\n"); 
 printf ("O numero e igual a 10.\n"); 
 } 
 else { 
 printf ("\n\nVoce errou!\n"); 
 printf ("O numero e diferente de 10.\n"); 
 } 
 return(0); 
} 
 
 
Curso de Programação em Linguagem C 
14 
 
seja, só será executada a declaração equivalente à primeira condição 
que der diferente de zero. A última declaração (default) é a que será 
executada no caso de todas as condiçõesdarem zero e é opcional. A 
estrutura do comando if-else-if é mostrado na lista 11 abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 Lista 11 
 
O comando switch 
O comando switch também faz a avaliação booleana do operador 
declarado dentro dos parênteses e, caso o resultado da avaliação seja 
verdadeiro (true), a instrução que está declarada, logo a seguir, após 
os : (dois pontos) é executada. Veja o exemplo da estrutura do 
comando switch abaixo: 
 
 
 
 
 
 
#include <stdio.h> 
int main () 
{ 
 int num; 
 printf ("Digite um numero: "); 
 scanf ("%d",&num); 
 if (num > 10) 
 printf ("\n\nO numero e maior que 10"); 
 
 else if (num == 10) 
 { 
 printf ("\n\nVoce acertou!\n"); 
 printf ("O numero e igual a 10."); 
 } 
 else 
 printf ("\n\nO numero e menor que 10"); 
 return(0); 
} 
 
Curso de Programação em Linguagem C 
15 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
switch (variável){ 
 
case constante_1: 
 declaração_1; 
 break; 
case constante_2: 
 declaração_2; 
 break; 
. 
. 
. 
case constante_n: 
declaração_n; 
 break; 
 default 
declaração_default; 
} 
 
Curso de Programação em Linguagem C 
16 
 
 Um exemplo do comando switch é mostrado na lista 12 abaixo: 
 
 
#include <stdio.h> 
int main (){ 
 int num; 
 printf ("Digite um numero: "); 
 scanf ("%d",&num); 
 switch (num){ 
 case 9: 
 printf ("\n\nO numero e igual a 9.\n"); 
 break; 
 case 10: 
 printf ("\n\nO numero e igual a 10.\n"); 
 break; 
 case 11: 
 printf ("\n\nO numero e igual a 11.\n"); 
 break; 
 default: 
 printf ("\n\nO numero diferente de 9,10 e 11.\n"); 
 } 
 return(0); 
}

Outros materiais

Outros materiais