A maior rede de estudos do Brasil

Grátis
120 pág.
ApostilaANSI-C

Pré-visualização | Página 7 de 27

int main () 
{ 
int x = 7, z = 5, y; 
printf("Sendo x igual a: \"%d\".\n", x); 
y = x++; 
printf("O resultado da expressao y = x++ e’: \"%d\" e o valor de x e’: \"%d\"\n\n", y, x); 
printf("Sendo z igual a: \"%d\".\n", z); 
 y = --z; 
printf("O resultado da expressao y = --z e’: \"%d\" e o valor de z e’: \"%d\"\n\n", y, z); 
system("pause"); 
return(0); 
} 
2. Operador de Atribuição 
O operador de atribuição da linguagem C é “=”. Ele armazena o valor à direita na 
variável à esquerda. Além disso, ele retorna o valor que ele atribuiu. Isso faz com 
que as seguintes expressões sejam válidas: 
 x = y = z = 1.5; /*Expressão 1*/ 
 if(k = w) /*Expressão 2*/ 
A expressão 1 é válida, pois quando fazemos z=1.5 ela retorna 1.5, que é passado 
adiante, fazendo y = 1.5 e posteriormente x = 1.5. A expressão 2 será verdadeira 
se w for diferente de zero, pois este será o valor retornado por k=w. Pense bem 
antes de usar a expressão 2, pois ela pode gerar erros de interpretação. Você não 
está comparando k e w. Você está atribuindo o valor de w a k e usando este valor 
para tomar a decisão. 
3. Operadores Lógicos Bit a Bit 
Permitem a execução de operações lógicas "bit-a- bit" entre os operandos. 
Tabela 9 - Operadores Lógicos bit a bit 
Operador Ação 
& AND (E) 
| OR (OU) 
^ XOR (EXCLUSIVE OR) 
~ NOT 
<< Deslocamento à esquerda 
>> Deslocamento à direita 
 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
31 
 
4. Operadores Relacionais 
Os operadores relacionais realizam comparações entre variáveis, são eles: 
Tabela 10 - Operadores Relacionais 
Operador Ação 
> Maior do que 
>= Maior ou igual a 
< Menor do que 
<= Menor ou igual a 
== Igual a 
!= Diferente de 
O resultado retornado pelos operadores relacionais é sempre igual a 0 (falso) ou 1 
(verdadeiro). 
5. Operadores lógicos 
Para fazer operações com valores lógicos (verdadeiro e falso) temos os 
operadores lógicos: 
Tabela 11 - Operadores Lógicos 
Operador Ação 
&& AND (E) 
|| OR (OU) 
! NOT (NÃO) 
 
Geralmente os operadores lógicos são associados aos operadores relacionais, 
gerando uma grande gama de testes. 
 
As regras de utilização desses operadores, nós veremos em Expressões, por 
enquanto vamos fazer apenas alguns testes básicos com alguns deles. 
 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 10 
Este programa realiza alguns testes básicos com alguns operadores 
 
******************************************************************************/ 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
32 
int main () 
{ 
 char a= 10, b = 5; 
 printf("Expressão aritmetica: a %% b = %d %% %d = %d\n\n", a, b, a % b); 
 printf("Expressão aritmetica: a / b = %d / %d = %d\n\n", a, b, a / b); 
 printf("Expressão logica bit a bit: a | b = %d | %d = %d\n\n", a, b, a | b); 
 printf("Expressão logica bit a bit: a & b = %d & %d = %d\n\n", a, b, a & b); 
 printf ("Expressão logica: a || b = %d || %d = %d\n\n", a, b, a || b); 
 printf ("Expressão logica: !b = !%d = %d\n\n", b, !b); 
 system("pause"); 
 return(0); 
} 
6. Operador Condicional 
A sintaxe do operador condicional é: 
(condição) ? Resultado_se_condição_verdadeira : Resultado_se_condição_falsa 
Os resultados (se a condição é verdadeira ou se a condição é falsa) podem ser de 
qualquer tipo: int, float, char e até string. Observe o próximo exemplo: 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 11 
Este programa testa o operador condicional 
 
******************************************************************************/ 
int main () 
{ 
 char a= 10, b = 5; 
 printf(“O resultado da expressao a!=b e’ %s.”, (a != b) ? 
”verdadeiro” : “falso”); 
 system("pause"); 
 return(0); 
} 
 
 
ATIVIDADES 
3.1 Analise e execute o programa a seguir: 
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
33 
/***************************************************************************** 
 Programa12 
Este calcula e imprime os maiores e menores valores de alguns 
tipos de dados. 
******************************************************************************/ 
int main () 
{ 
 int x; 
 short int y; 
 char a; 
 unsigned char b; 
 
 x = pow(2,31)-1; /*maior número inteiro*/ 
 y = pow(2,15)-1; /*maior número short int*/ 
 printf ("O maior numero inteiro e: %d\n\n", x); 
 printf ("O maior numero short int é: %hi\n\n", y); 
 
 x = x + 1; /*menor número inteiro*/ 
 y = y + 1; /*menor número long int*/ 
 printf ("O menor numero inteiro e: %d\n\n", x); 
 printf ("O menor numero short inteiro e: %hi\n\n", y); 
 
 a= pow(2,7) -1; /*maior número char*/ 
 b = pow(2,8) -1; /*maior número unsigned char*/ 
 printf ("O maior numero char e: %d\n\n", a); 
 printf ("O maior numero unsigned char e: %d\n\n", b); 
 
 a = a + 1 ; /*menor número char*/ 
 b = b + 1; /*menor número unsigned char*/ 
 printf ("O menor numero char e: %d\n\n", a); 
 printf ("O menor numero unsigned char e: %d\n\n:", b); 
 system("pause"); 
 return(0); 
} 
a. Sabendo-se que o tipo int possui 32 bits explique porque o maior valor int é 
calculado por (231 –1). 
b. Explique porque o menor número short int é calculado por (215 –1) + 1. 
c. Sabendo-se que o tipo unsigned char possui 8 bits explique porque o maior 
valor char é calculado por (28 –1). 
d. Explique porque o menor número unsigned char é calculado por (28 –1) + 1. 
 
3.2 Determine o resultado das questões propostas a seguir, em seguida elabore 
um programa e verifique se suas previsões estão corretas. 
a. int a = 5, b = 3; int c; 
c = a++ + b; 
printf ("a = %d, b = %d, c = %d\n\n", a, b, c); 
c = ++a + b; 
printf ("a = %d, b = %d, c = %d\n\n", a, b, c); 
c = --a + b; 
printf ("a = %d, b = %d, c = %d\n\n", a, b, c); 
c = a-- + b; 
printf ("a = %d, b = %d, c = %d\n\n", a, b, c); 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino do 2o grau - Coordenação de Eletrônica 
Disciplina: Laboratório de Introdução a Programação 
Professora: Rosângela Fátima da Silva 
 
 
34 
c = a---b; 
printf ("a = %d, b = %d, c = %d\n\n", a, b, c); 
 
b. int a = 0x0A50; 
int b = 0x00FF; 
int c; 
c = a << 4; 
printf ("%4x << 4 = %4x\n\n", a, c); 
c = a >> 4; 
printf ("%04X >> 4 = %04X\n\n", a, c); 
c = a & b; 
 printf ("%04x & %2x = %04x\n\n", a, b, c); 
 c = a | b; 
printf ("%04X | %04X = %04X\n\n", a, b, c); 
c = a ^ b; 
printf ("%04x ^ %04x = %04x\n\n", a, b, c); 
c = ~a; 
printf ("~ %04X = %04X\n\n", a, c); 
c = ~b; 
printf ("~ %04x = %09x\n\n", b, c); 
 
Explique porque o resultado de c = ~a possui oito caracteres hexadecimais. 
 
Dica:Dica:Dica:Dica: 
� Os especificadores de tipo %c, %x e %X você já viu, se houver alguma 
dúvida, basta consultar a Tabela 1. Mas o especificador %04x, ainda não. 
Consulte, o item Formatação de valores numéricos, ou faça alguns testes: 
substitua %4x por %05x ou %5x e veja o que acontece. 
 
3.3 Execute os programas a seguir: 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
 
/***************************************************************************** 
 Programa 13 
Este programa