(Parte 7 de 13)

Abaixo, temos um outro exemplo dos operadores incrementais apresentado várias aplicações destes operadores:

ptr++; /* incrementa em 2 Bytes (1 inteiro ocupa 2 Bytes) */

/* Operadore Incrementais 2 */ void main() { int i = 10; int *ptr = 0; i = i + 1; /* incrementa i */ i++; /* incrementa i */ i = i - 1; /* decrementa i */ i--; /* decrementa i */ ptr = &i; /* recebe o endereco de i */ (*ptr)++; /* incrementa valor de i */ /* o valor do endereço apontado pelo ponteiro ptr */ }

Atenção para a última instrução ptr++. Esta instrução irá altera o endereço armazenado em ptr. Se o valor deste ponteiro for acessado, o dado representado por este ponteiro não tem mais nenhuma relação com a variável ‘i’, podendo conter qualquer dado. Por isso, tome cuidado ao

Curso de Linguagem Computacional C/C++

Sistemas Industriais Inteligentes – DAS – CTC – UFSC 27 manipular ponteiros para não acessar variáveis com uso deconhecido. Isto poderá fazer com que o seu programa gere erros fatais para o sistema operacional.

4.6 Operadores de Atribuição

O operador básico de atribuição (=) pode ser combinado com outros operadores para gerar instruções em forma compacta.

Cada um destes operadores é usado com um nome de variável à 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, então:

x op= exp; equivale a x = (x)op(exp);

Operador C: Função: = A = B

Exemplo:

/* Operadores de Atribuiçao */ #include <stdio.h> void main() { int total = 0; int cont = 10; printf("Total=%d\n", total); total += 1; printf("Total=%d\n", total); total = 2; printf("Total=%d\n", total); total <<= 2; printf("Total=%d\n", total); total *= cont; printf("Total=%d\n", total); }

Curso de Linguagem Computacional C/C++

Sistemas Industriais Inteligentes – DAS – CTC – UFSC 28

4.7 O Operador Lógico Ternário

O operador condicional possui uma construção um pouco estranha. È o único operador em C que opera sobre três expressões. Sua sintaxe geral possui a seguinte construção: exp1 ? exp2 : exp3

A exp1 é avaliada primeiro. Se seu valor for differente de zero (verdadeira), a exp2 é avaliada e seu resultado será o valor da expressão condicional como um todo. Se exp1 for zero, exp3 é avaliada e será o valor da expressão condicional como um todo.

Na expressão: max = (a>b)?a:b

a variável que contém o maior valor numérico entre a e b será atribuída a max
abs = (x > 0) ? x : -x; // abs é o valor absoluto de x

Outro exemplo:

A expressão printf(“ %d é uma variável %s !”, x, ((x%2)?”Impar”:”Par”); imprime ímpar se x for um número “ímpar”, caso contrário imprimirá “par”.

4.8 Precedência

O operador ! é o de maior precedência, a mesma que a do operador unário. A tabela seguinte mostra as precedências dos operadores:

Operadores Tipos

! - ++ -- Unários; não lógicos e menos aritméticos

* / % Aritméticos

+ - Aritméticos

< > <= >= Relacionais

== != Relacionais

&& Lógico &

|| Lógico OU

= += -= *= /= %= Atribuição

4.9 Exercícios:

4.1 Qual é o resultado da seguinte expressão: int a = 1, b = 2, c = 3; int result = ++a/a&&!b&&c||b--||-a+4*c>!!b;

4.2 Escreva uma expressão lógica que resulte 1 se o ano for bissexto e 0 se o ano não for bissexto. Um ano é bissexto se for divisível por 4, mas não por 100. Um ano também é bissexto se for divisível por 400.

4.3 Faça um programa que solicite ao usuário o ano e imprima “Ano Bissexto” ou “Ano Não-Bissexto” conforme o valor da expressão do exercício anterior. Utilize o operador condicional.

4.4 Num cercado, há vários patos e coelhos. Escreva um programa que solicite ao usuário o total de cabeças e o total de pés e determine quantos patos e quantos coelhos encontram-se nesse cercado.

Curso de Linguagem Computacional C/C++

Sistemas Industriais Inteligentes – DAS – CTC – UFSC 29

4.5 Uma firma contrata um encanador a 20.0,0 por dia. Crie um programa que solicite o número de dias trabalhados pelo encanador e imprima a quantia líquida que deverá ser paga, sabendo-se que são descontados 8% para imposto de renda.

4.6 Faça um programa que solicite um caractere do teclado por meio da função getch(); se for uma letra minuscula imprima-a em maiusculo, caso contrário imprima o próprio caracter. Use uma expressão condicional

4.7 Faça um programa que solicite ao usuário uma sequência binária com 16 bits.

Transforme esta sequência de 0 e 1 em um número inteiro. Depois manipule este número inteiro para verificar se os bits 0, 3, 7, 14 estão habilitados (valor igual a 1). Peça a usuário se ele deseja modificar algum bit específico da palavra. Se ele quiser, modifique o bit desejado para o valor por ele fornecido.

Curso de Linguagem Computacional C/C++

Sistemas Industriais Inteligentes – DAS – CTC – UFSC 30

5 Laços Em C existem 3 estruturas principais de laços: o laço for, o laço while e o laço do-while.

5.1 O Laço For

O laço for engloba 3 expressões numa única, e é útil principalmente quando queremos repetir algo um número fixo de vezes.

Sintaxe: for(incializacao ; teste ; incremento) instrução;

Os parênteses, que seguem a palavra chave for, contêm três expressões separadas por pontoe-vírgulas, chamadas respectivamente de : “expressão de inicialização”, “expressão de teste” e “expressão de incremento”. As 3 expressões podem ser compostas por quaisquer instruções válidas em C.

(Parte 7 de 13)

Comentários