A maior rede de estudos do Brasil

Grátis
120 pág.
ApostilaANSI-C

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

| (a & b); 
 
No exemplo anterior implementamos uma porta Exclusive Nor, que poderia ser 
substituído pela expressão: portaXNor = ~(a^b), não é? 
 
Expressões lógicas 
 
Expressões que envolvem operandos lógicas só podem ser executadas entre 
operandos inteiros, não interessa a base. Qualquer número diferente de zero 
representa verdadeiro e zero representa falso. O resultado é também um número 
inteiro, mas assume apenas o valor 0 (falso) ou 1 (verdadeiro). A linguagem C não 
possui o tipo booleano. 
 
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 
 
 
40 
 
Expressões que envolvem operandos relacionais podem ser executadas entre 
operandos do tipo int e float. O resultado é um número inteiro, mas assume 
apenas o valor 0 ou 1 que representa falso ou verdadeiro, respectivamente. 
 
Observe a expressão a seguir: 
 
int i = 4, 
float j = 9.0; 
(i > 3.0) && ( j <= 9) && ( i != j); 
 V AND V AND V = V 
Nesta expressão temos operadores relacionais e lógicos. As variáveis são do tipo 
inteiro e float. Verificamos a comparação entre inteiros e float. O resultado das 
comparações é sempre falso ou verdadeiro, em outras palavras é um inteiro. Isto 
permite executar uma operação lógica entre esses resultados parciais. A resposta 
final também é um inteiro. 
Expressões que podem ser Abreviadas 
Através dos operadores de atribuição, apresentados na Tabela 14, uma expressão 
do tipo x = x + y pode ser escrita da seguinte maneira x+ = y. Essa equivalência 
pode ser usada para simplificar expressões ou para facilitar o entendimento de um 
programa. 
Tabela 14 - Operadores de Atribuição 
Operador Ação 
*= a*=b � a=a*b 
/= a/=b � a=a/b 
%= a%=b � a=a%b 
+= A+=b � a=a+b 
-= a-=b � a=a-b 
<<= A<=b � a=a<<b 
>>= a>>=b � a=a>>b 
= a = b 
Encadeando expressões: o operador “,” 
O operador “,” determina uma lista de expressões que devem ser executadas 
seqüencialmente. Em síntese, a vírgula diz ao compilador: execute as duas 
expressões separadas pela vírgula, em seqüência. O valor retornado por uma 
expressão com o operador “,” é sempre dado pela expressão mais à direita. No 
exemplo a seguir: 
x=(y=5,y+2); 
 
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 
 
 
41 
 
o valor 5 vai ser atribuído a y, se somará 2 e o retorno (7) será atribuído à variável 
x . Pode-se encadear quantos operadores forem necessários. 
O exemplo a seguir mostra um outro uso para o operador, dentro de uma estrutura 
de repetição for: 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
 Programa 16 
Através deste programa você testara o operador “,”. 
 
******************************************************************************/ 
 
int main() 
{ 
 int x, y; 
 for(x=0 , y=0 ; x+y < 20 ; ++x , y++) 
 /* Duas variáveis de controle: x e y. Foi atribuído o valor zero a cada 
 uma delas na inicialização do for e ambas são incrementadas na 
 parte de incremento do for */ 
 printf("\n%d ", x+y); /* o programa imprimirá os números 
 pares de 0 a 18 */ 
 system("pause"); 
} 
 
Modeladores (Casts) 
 
Um modelador é aplicado a uma expressão. Ele força a mesma a ser de um tipo 
especificado. Sua forma geral é: 
 (tipo_do_modelador)expressão 
Um exemplo: 
 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
 Programa 17 
O modelador (float) é usado para conversão de tipos de dados. 
 
******************************************************************************/ 
int main() 
{ 
 int Int; 
 float Flt1, Flt2; 
 
 
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 
 
 
42 
 Int= 12/5; 
 Flt1= 12/5; 
 Flt2=(float)12/5; /* O uso do modelador forca a transformacao 
 do numero inteiro 12 em um float */ 
 printf("A divisao entre operandos inteiros (12/5) e' um inteiro: \"%d\".\n\n", Int); 
 printf("Se um numero inteiro for atribuído a uma variavel do tipo\n"); 
 printf("float, o resultado e' um float: \"%.1f\". \n\n", Flt1); 
 printf("Se houver pelo menos um operando float ((float)12/5),\n"); 
 printf("o resultado da divisao e' um float: \"%.1f\".\n\n", Flt2); 
 system("pause"); 
 return(0); 
} 
 
Se não tivéssemos usado o modelador no exemplo acima o C faria uma divisão 
inteira entre 12 e 5. O resultado seria 2 (dois) que poderia ser convertido para 
float transformando-se em 2.0. Com o modelador temos o resultado correto:2.4. 
 
 
FORMATAÇÃO DE VALORES NUMÉRICOS 
 
Como já vimos podemos determinar o tipo de dado que queremos imprimir na tela. 
Além disso, podemos estabelecer o número total de caracteres impressos, 
inclusive os caracteres depois da vírgula. Dê uma olhadinha no exemplo a seguir: 
 
 
#include <stdio.h> 
#include <stdlib.h> 
 
/***************************************************************************** 
Programa 18 
Este programa mostra como formatar um número, determinando 
a precisão que o número pi será impresso. 
. 
******************************************************************************/ 
 
int main() 
{ 
 float PI = 3.1415; 
 printf("O valor de PI e': \"%f\".\n\n", PI); 
 printf("O valor de PI e': \"%07.3f\".\n\n", PI); 
 printf("O valor de PI e': \"%7.3f\".\n\n", PI); 
 printf("O valor de PI e': \"%.4f\".\n\n", PI); 
 printf("O valor de PI e': \"%4.4f\".\n\n", PI); 
 printf("O valor de PI e': \"%5.1f\".\n\n", PI); 
 printf("O valor de PI e': \"%05.1f\".\n\n", PI); 
 printf("O valor de PI e': \"%5.01f\".\n\n", PI); 
 printf("O valor de PI e': \"%57.1f\".\n\n", PI); 
 system("pause"); 
} 
 
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 
 
 
43 
O especificador de tipo %.4f determina um valor de ponto flutuante (%f) com 
quatro casas decimais. Além de especificar o número de casas decimais, 
podemos também especificar o número total de caracteres a ser impresso. 
Atenção, o número total de caracteres inclui o sinal e o ponto decimal. 
Assim, o especificador %5.3f significa: exibir um valor ponto flutuante com cinco 
caracteres no total, incluindo três casas decimais e a vírgula. 
Se houver necessidade, será acrescentado o caractere ‘ ‘ (espaço) à esquerda do 
valor para completar o tamanho total especificado. Ou poderão ser colocados 
zeros aa esquerda do número se for especificado %07.4f. 
 
 
ATIVIDADES 
 
5.1 Verifique se as seguintes expressões são verdadeiras ou falsas e faça um 
programa para testá-las. 
Dados: int i = 1, j = 2, k = 3; float x= 3.3; 
a. ‘j’ != ‘j’ + 2 
b. ‘j’ != ‘j’ == ‘j’ 
c. i < x && 2 >= k 
d. i < x || 2>= k 
e. i ==2 || j == 4 || k == 5 
f. x <= 5.0 && x != 1.0 || i > j 
g.10 > 5 || 2.0 == 2 
h. (!(5==6)&&(5!=6)&&((2>1)||(5<=4))) 
 
Dicas:Dicas:Dicas:Dicas: 
� Se algumas expressões estiverem confusas, use parênteses para torná-
las mais legíveis; 
� Use o operador condicional dentro da função printf, para verificar o 
resultado das expressões. Consulte o Programa 13. 
 
4.2 Analise os itens a, b e c apresentados a seguir: 
 
a. int i1; 
 float f3; 
 i1= 7/3; 
 f3= 7/3; 
 
b. int num= 12; 
 
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
Departamento de Ensino