Linguagem de Programação C

Linguagem de Programação C

(Parte 5 de 7)

Atenção para a última instrução ptr++Esta instrução irá altera o endereço armazenado em
ptrSe 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 dadoPor isso, tome cuidado ao
manipular ponteiros para não acessar variáveis com uso desconhecidoIsto poderá fazer com que o

seu programa gere erros fatais para o sistema operacional.

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação

4.6 Operadores de Atribuição

instruções em forma compactaCada um destes operadores é usado com um nome de variável à sua
esquerda e uma expressão à sua direitaA operação consiste em atribuir um novo valor à variável
que dependerá do operador e da expressão à direitaSe x é uma variável, exp uma expressão e op

O operador básico de atribuição (=) pode ser combinado com outros operadores para gerar um operador, então:

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

Exemplo:

#include <stdio.h> void main() { int total = 0; int cont = 10; printf("Total=%d\n", total); total += 1; printf("Total=%d\n", total);

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação total ^= 2; printf("Total=%d\n", total); total <<= 2; printf("Total=%d\n", total); total *= cont; printf("Total=%d\n", total); }

O operador condicional possui uma construção um pouco estranhaÈ o único operador em
C que opera sobre três expressõesSua sintaxe geral possui a seguinte construção:

4.7 O Operador Lógico Ternário exp1 ? exp2 : exp3

A exp1 é avaliada primeiroSe seu valor for differente de zero (verdadeira), a exp2 é
avaliada e seu resultado será o valor da expressão condicional como um todoSe exp1 for zero,
exp3 é avaliada e será o valor da expressão condicional como um todoNa 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 maxOutro exemplo:

abs = (x > 0) ? x : -x;

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”.

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação

O operador ! é o de maior precedência, a mesma que a do operador unárioA tabela

4.8 Precedência seguinte mostra as precedências dos operadores:

4.9 Exercícios:

4.1 Qual é o resultado da seguinte expressão:

bissextoUm ano é bissexto se for divisível por 4, mas não por 100. Um ano também é bissexto se

4.2 Escreva uma expressão lógica que resulte 1 se o ano for bissexto e 0 se o ano não for 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.

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação

4.4 Num cercado, há vários patos e coelhosEscreva um programa que solicite ao usuário o

36 total de cabeças e o total de pés e determine quantos patos e quantos coelhos encontram-se nesse cercado.

4.5 Uma firma contrata um encanador a 20.0,0 por diaCrie 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.

uma letra minúscula imprima-a em maiúsculo, caso contrário imprima o próprio caractereUse uma

4.6 Faça um programa que solicite um caractere do teclado por meio da função getch(); se for expressão condicional.

4.7 Faça um programa que solicite ao usuário uma seqüência binária com 16 bits
Transforme esta seqüência de 0 e 1 em um número inteiroDepois 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 palavraSe ele quiser, modifique o bit desejado para o valor por

ele fornecido.

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação

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

algo um número fixo de vezesSintaxe:

O laço for engloba 3 expressões numa única, e é útil principalmente quando queremos repetir for(inicialização; teste; incremento) instrução;

“expressão de incremento”As 3 expressões podem ser compostas por quaisquer instruções válidas
• Inicialização: executada uma única vez na inicialização do laçoServe para iniciar

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 em C. variáveis.

ou reiniciadoSempre que o seu resultado for verdadeiro, a instruções do laço serão executadas.

• Teste: esta é a expressão que controla o laço. Esta é testada quando o laço é inciado Quando a expressão se tornar falsa, o laço é terminado.

vez que o laço é repetido (conta++)Esta instrução é executada, toda vez, imediatamente após a
execução do corpo do laçoExemplo:

• Incremento: Define a maneira como a variável de controle do laço será alterada cada

#include <stdio.h> void main() { int conta; for(conta = 0; conta < 10; conta += 3)

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação printf("conta=%d\n", conta); }

vírgulasA vírgula é na verdade um operador C que significa “faça isto e isto”. Um par de

Qualquer uma das expressões de um laço for pode conter várias instruções separadas por expressões separadas por vírgula é avaliado da esquerda para a direita.

#include <stdio.h> void main() { int x, y; for( x=0, y=0; x+y < 100; x = x+1, y++) printf("%d\n", x+y); }

Podemos usar chamadas a funções em qualquer uma das expressões do laçoQualquer uma
das três partes de um laço for pode ser omitida, embora os pontos-e-vírgulas devam permanecerSe
desconsideradasSe a condição de teste não está presente é considerada permanentemente

a expressão de inicialização ou a de incremento forem omitidas, elas serão simplesmente verdadeira.

por chaves { }O corpo do laço pode ser vazio, entretanto o ponto-e-vírgula deve permanecer para
indicar uma instrução vaziaQuando um laço está dentro de outro laço, dizemos que o laço interior
está aninhadoPara mostrar esta estrutura preparamos um programa que imprime tabuada.

O corpo do laço pode ser composto por várias instruções, desde que estas estejam delimitadas

#include <stdio.h> void main() { int i,j,k; printf("\n"); for(k=0; k<=1; k++) {

Informática para Automação – Linguagem de Programação

Prof. Carlos Pantaleão Curso de Tecnologia de Automação Industrial e Engenharia de Controle e Automação printf("\n"); for(i=1; i<5; i++) printf("Tabuada do %3d ", i+4*k+1); printf("\n"); for(i=1; i<=9; i++) { for(j = 2+4*k; j<=5+4*k; j++) printf("%3d x%3d = %3d ", j, i, j*i); printf("\n"); }

5.2 O Laço While

maneira diferente no programaSintaxe:

O laço while utiliza os mesmos elementos que o laço for, mas eles são distribuídos de while(expressão de teste) instrução;

executado uma vez e a expressão de teste é avaliada novamenteEste ciclo de teste e execução é
repetido até que a expressão de teste se torne falsa (igual a zero), então o laço terminaAssim como
que possua um (;) e um conjunto de instruções separadas por chaves { }Abaixo temos um

Se a expressão de teste for verdadeira (diferente de zero), o corpo do laço while será o for, o corpo do laço while pode conter uma instrução terminada por (;), nenhuma instrução desde exemplo, onde um laço while substituiu um antigo laço for.

#include <stdio.h> void main() {

Informática para Automação – Linguagem de Programação

(Parte 5 de 7)

Comentários