Escolar Documentos
Profissional Documentos
Cultura Documentos
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Introdução à linguagem C
IFCE
# História da linguagem C # VARIÁVEIS, CONSTANTES, OPERADORES E
# PRIMEIROS PASSOS EXPRESSÕES
* O C é "Case Sensitive" * Nomes de Variáveis
* Programas exemplos * Os Tipos do C
* Introdução às Funções * Declaração e Inicialização de Variáveis
Argumentos * Constantes
Retornando valores Constantes dos tipos básicos
Forma geral Constantes hexadecimais e octais
* Introdução Básica às Entradas e Saídas Constantes strings
Caracteres Constantes de barra invertida
Strings * Operadores Aritméticos e de Atribuição
printf * Operadores Relacionais e Lógicos
scanf * Expressões
* Introdução a Alguns Comandos de Controle de Conversão de tipos em expressões
Fluxo Expressões que Podem ser Abreviadas
if Encadeando expressões: o Operador ,
for Tabela de Precedências do C
* Comentários * Modeladores (Casts)
* Palavras Reservadas do C
ROGERIO@IFCE.EDU.BR
2
Pré-leitura
IFCE
• Para esta aula, é imprescindível a leitura do material impresso
até o capítulo 6, ou outro material didático que aborde da
linguagem C os seguintes tópicos:
– Lógica de programação
– Estrutura de um programa em C
– Palavras chave
– Diretivas de compilação
– Comentários
– Variáveis
– Constantes
– Tipos de dados
– Expressões
– Atribuição
– Comandos de entrada e saída de dados.
ROGERIO@IFCE.EDU.BR
4
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
História da linguagem C
História
IFCE
• O C nasceu na década de 70. Seu inventor, Dennis Ritchie,
implementou-o pela primeira vez usando um DEC PDP-11
rodando o sistema operacional UNIX. O C é derivado de uma
outra linguagem: o B, criado por Ken Thompson. O B, por
sua vez, veio da linguagem BCPL, inventada por Martin
Richards.
• O C é uma linguagem de programação genérica que é
utilizada para a criação de programas diversos como
processadores de texto, planilhas eletrônicas, sistemas
operacionais, programas de comunicação, programas para a
automação industrial, gerenciadores de bancos de dados,
programas de projeto assistido por computador, programas
para a solução de problemas da Engenharia, Física, Química
e outras Ciências, etc ... É bem provável que o Navegador
ROGERIO@IFCE.EDU.BR
que você está usando para ler este texto tenha sido escrito em
C ou C++.
6
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Algoritmos
Algoritmos
IFCE
8
9
ROGERIO@IFCE.EDU.BR
IFCE
Algoritmos
ROGERIO@IFCE.EDU.BR
10
IFCE
O computador
ROGERIO@IFCE.EDU.BR
11
IFCE
O computador
Níveis de abstração
IFCE
ROGERIO@IFCE.EDU.BR
12
Níveis de abstração
IFCE
ROGERIO@IFCE.EDU.BR
13
Construção do programa
IFCE
Passo 1: Elaborar um algoritmo
Algoritmo
ROGERIO@IFCE.EDU.BR
14
Construção do programa
IFCE
Passo 1: Elaborar um algoritmo
Passo 2: Reescrever o algoritmo em C
Programa
Algoritmo Programador
em C
ROGERIO@IFCE.EDU.BR
15
Construção do programa
IFCE
Passo 1: Elaborar um algoritmo
Passo 2: Reescrever o algoritmo em C
Passo 3: Acionar o compilador
Programa Programa
Algoritmo Programador Compilador
em C executável
ROGERIO@IFCE.EDU.BR
16
Construção do programa
IFCE
Passo 1: Elaborar um algoritmo
Passo 2: Reescrever o algoritmo em C
Passo 3: Acionar o compilador
Passo 4: Testar o programa
Erros? Verificar programa em C
Continuam erros? Verificar o algoritmo!
Programa Programa
Algoritmo Programador Compilador
em C executável
ROGERIO@IFCE.EDU.BR
Erros?
17
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Primeiros passos
Linguagem C
O C é "Case Sensitive"
IFCE
19
Primeiro programa
IFCE
main ()
{
printf("Bom dia\n");
getch();
20
Análise do primeiro programa (1)
// IFCE - Rogerio
IFCE
// Primeiro programa
#include <conio.h>
#include <stdio.h>
main ()
{
printf("Bom dia\n");
getch();
}
•Quando fazemos um programa, uma boa idéia é usar comentários que ajudem a
elucidar o funcionamento do mesmo.
•No caso acima temos dois comentários:
// IFCE - Rogerio
// Primeiro programa
•O compilador desconsidera qualquer coisa das duas barras // até o fim da linha.
•Também o compilador C desconsidera qualquer coisa que esteja começando com
ROGERIO@IFCE.EDU.BR
/* e terminando com */. Neste formato o comentário pode, inclusive, ter mais de
uma linha.
/* Linha comentário 1
Linha comentário 2 */
21
Análise do primeiro programa (2)
// IFCE - Rogerio
IFCE
// Primeiro programa
#include <conio.h>
#include <stdio.h>
main ()
{
printf("Bom dia\n");
getch();
}
A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivo-
cabeçalho stdio.h, e a biblioteca correspondente.
A linha #include <stdio.h> diz ao compilador que ele deve incluir o arquivo-
cabeçalho stdio.h., e a biblioteca correspondente.
Neste arquivo existem declarações de funções úteis para entrada e saída de dados
(std = standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio =
Entrada e saída padronizadas).
ROGERIO@IFCE.EDU.BR
Toda vez que você quiser usar uma destas funções deve-se incluir este comando.
O C possui diversos arquivos-cabeçalhos, para saber quais são os arquivos
cabeçalhos, depende das funções usadas e bibliotecas requeridas. Esta informação é
encontrada no manual ou arquivo de ajuda (Help).
22
Análise do primeiro programa (3)
// IFCE - Rogerio
IFCE
// Primeiro programa
#include <conio.h>
#include <stdio.h>
main ()
{
printf("Bom dia\n");
getch();
}
23
Análise do primeiro programa (4)
// IFCE - Rogerio
IFCE
// Primeiro programa
#include <conio.h>
#include <stdio.h>
main ()
{
printf("Bom dia\n");
getch();
}
•A única coisa que o programa realmente faz é chamar a função printf(), passando a
string (uma string é uma seqüência de caracteres, como veremos brevemente) “Bom
dia\n" como argumento.
•É por causa do uso da função printf() pelo programa que devemos incluir o
arquivo- cabeçalho stdio.h .
•A função printf() neste caso irá apenas colocar a string na tela do computador.
ROGERIO@IFCE.EDU.BR
main ()
{
printf("Bom dia\n");
getch();
}
Experimente!
•Execute sem a linha de pausa
•Altere o texto
25
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Segundo programa
Segundo Programa
// IFCE - Rogério
IFCE
// Segundo programa
#include <conio.h>
#include <stdio.h>
main ()
{
int Numero, Dobro; // Declaracao de Variaveis
27
Análise do segundo programa (1)
// IFCE - Rogério
IFCE
// Segundo programa
#include <conio.h>
#include <stdio.h>
main ()
{
int Numero, Dobro; // Declaracao de Variaveis
main ()
{
int Numero, Dobro; // Declaracao de Variaveis
•Leitura de variável
•A função scanf requer que as variáveis sejam prefixadas com o operador &
ROGERIO@IFCE.EDU.BR
main ()
{
int Numero, Dobro; // Declaracao de Variaveis
main ()
{
int Numero, Dobro; // Declaracao de Variaveis
main ()
{
int Numero, Dobro; // Declaracao de Variaveis
•Em todos os programas, tente fazer uma interface amigável, um dos principais
parâmetros de avaliação da qualidade de um programa é a sua interface com o usuário.
Pesquise na internet o termo IHM – interface Homem-Máquina
32
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Terceiro programa
Terceiro programa (1)
// IFCE - Rogério
IFCE // Terceiro programa
#include <conio.h>
#include <stdio.h>
main ()
{
int Nota1, Nota2; // Declaracao de Variaveis
float Media;
printf ("Digite a primeira nota: "); // Entrada de Dados
scanf ("%d",&Nota1);
printf ("\nDigite a segunda nota: "); // Entrada de Dados
scanf ("%d",&Nota2);
Media = (Nota1 + Nota2) / 2.0; // Calcula a média
printf ("\n\nA media de %d e %d eh %f \n",Nota1, Nota2, Media);
printf("\n\nPressione uma tecla para sair...");
getch();
}
ROGERIO@IFCE.EDU.BR
34
Análise do terceiro programa (1)
// IFCE - Rogério
IFCE // Terceiro programa
#include <conio.h>
#include <stdio.h>
main ()
{
int Nota1, Nota2; // Declaracao de Variaveis
float Media;
printf ("Digite a primeira nota: "); // Entrada de Dados
scanf ("%d",&Nota1);
printf ("\nDigite a segunda nota: "); // Entrada de Dados
scanf ("%d",&Nota2);
Media = (Nota1 + Nota2) / 2.0; // Calcula a média
printf ("\n\nA media de %d e %d eh %f \n",Nota1, Nota2, Media);
printf("\n\nPressione uma tecla para sair...");
getch();
}
• Neste programa, a novidade é a inclusão de um novo tipo de variável, o float.
•O tipo float é indicado para armazenar valores reais.
• Para ler e escrever variáveis do tipo float, é usado o código %f.
ROGERIO@IFCE.EDU.BR
35
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Variáveis e Memória
Memória: Conceitos
IFCE
• Memória: seqüência de células
• Endereço: posição da célula
• Células armazenam dados
– Valor pequeno: uma célula
– Valor grande: duas ou mais células
• Armazenamento volátil
ROGERIO@IFCE.EDU.BR
37
Memória: Operações na memória
IFCE
38
Memória
IFCE
39
Exemplo de operação na memória
IFCE
Máximo Divisor Comum
1) Leia um número e escreva na célula 1
2) Leia um número e escreva na célula 2
3) Divida o valor da célula 1 pelo valor da
célula 2. Guarde o quociente na célula 3 e o
resto na célula 4.
4) Se o valor da célula 4 for 0 (zero), então
mostre o valor da célula 2 e PARE.
5) Escreva na célula 1 o valor da célula 2.
6) Escreva na célula 2 o valor da célula 4.
7) Retorne ao passo 3.
ROGERIO@IFCE.EDU.BR
40
Dificuldades em acessar diretamente a memória
IFCE
41
Variáveis
IFCE
• Conceitos:
– Abstração dos endereços de memória.
– Rótulo simbólico para cada endereço.
– Maior semelhança com descrição do algoritmo.
ROGERIO@IFCE.EDU.BR
42
Exemplo de programa com variáveis
Introdução às funções
Introdução às Funções
IFCE
45
Exemplo de funções
void mensagem()
Definição e declaração {
de uma função printf("======================\n");
};
main ()
{
mensagem();
Chamada à função printf("Instituto Federal\n");
mensagem();
getch();
};
Tela de saída
46
Passagem de parâmetros
IFCE
• Argumentos são as entradas que a função recebe.
• É através dos argumentos que passamos parâmetros para a
função. Já vimos funções com argumentos.
• As funções printf() e scanf() são funções que recebem
argumentos.
• Vamos ver um outro exemplo simples de função com
argumentos:
ROGERIO@IFCE.EDU.BR
47
Função: Passagem de parâmetros
// Exemplo de uso de funções
#include <conio.h>
IFCE #include <stdio.h>
main ()
{ int Entrada;
printf("Digite um numero\n");
scanf("%d", &Entrada); // Lê o valor na entrada
Triplo( Entrada); // Chama a função
Triplo( 20);
Quando é feito a chamada à função, o valor da variável entrada é copiado para variável
x. fazemos a chamada à função, o inteiro num é passado como argumento.
Também pode usar uma constante ou uma expressão, que para esta função, tem que
resultar num inteiro.
48
Função: Passagem de vários parâmetros
#include <conio.h>
IFCE #include <stdio.h>
Soma = N1 + N2 + N3;
printf("A soma: %f + %f + %f = %f\n\n", N1, N2, N3, Soma );
};
main ()
{ float Valor;
Valor = 3.1;
Soma( Valor , 5 , 8+2); // Chama a função
•Este programa é um exemplo de passagem de mais de uma parâmetro para uma função.
•Os parâmetros são separados por vírgula e devem ser declarados individualmente.
ROGERIO@IFCE.EDU.BR
• Note também que os valores passados para a função não necessitam ser todos variáveis
porque mesmo sendo constantes serão copiados para a variável de entrada da função.
49
Função: Retorno de valores
Muitas vezes é necessário fazer com que uma função retorne um valor.
IFCE As funções que vimos até aqui não retornam nada, pois especificamos um retorno void. Podemos
especificar um tipo de retorno indicando-o antes do nome da função. Mas para dizer ao C o que
vamos retornar precisamos da palavra reservada return. Sabendo disto fica fácil fazer uma função
para somar dois inteiros e que retorna o resultado da soma.
// Exemplo de uso de funções.
#include <conio.h>
#include <stdio.h>
Resultado = N1 + N2 + N3;
return( Resultado); // Valor a ser retornado
};
main ()
{ int Somatorio;
Veja que a função retorna o valor 60, e este valor é usado pela função printf() para escrever na tela.
50
Função: Retorno de valores
Muitas vezes é necessário fazer com que uma função retorne um valor.
IFCE As funções que vimos até aqui não retornam nada, pois especificamos um retorno void. Podemos
especificar um tipo de retorno indicando-o antes do nome da função. Mas para dizer ao C o que
vamos retornar precisamos da palavra reservada return. Sabendo disto fica fácil fazer uma função
para somar dois inteiros e que retorna o resultado da soma.
// Exemplo de uso de funções.
#include <conio.h>
#include <stdio.h>
Resultado = N1 + N2 + N3;
return( Resultado); // Valor a ser retornado
};
main ()
{ int Somatorio;
Veja que a função retorna o valor 60, e este valor é usado pela função printf() para escrever na tela.
51
Função: Forma geral
IFCE
52
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
main ()
{
char Letra;
printf("Digite um letra ==> ");
Letra = getch(); //Lê usando getch()
printf ("\nVoce digitou '%c'", Letra);
main ()
{
char Letra;
printf("Digite um letra ==> ");
ROGERIO@IFCE.EDU.BR
char nome_da_string[tamanho];
55
Entrada e Saída: Strings
IFCE • Um exemplo do uso desta função é apresentado abaixo. A função gets()
coloca o terminador nulo na string, quando você aperta a tecla "Enter".
// Lê uma string e mostra na tela.
#include <conio.h>
#include <stdio.h>
main ()
{ char string[100];
printf ("Digite uma string: ");
gets (string);
printf ("\n\nVoce digitou: %s\n",string);
Neste programa, o tamanho máximo da string que você pode entrar é uma
string de 99 caracteres. Se você entrar com uma string de comprimento
maior, o programa irá aceitar, mas os resultados podem ser desastrosos.
Veremos porque posteriormente.
56
Entrada e Saída: printf
IFCE A função printf() tem a seguinte forma geral:
printf (string_de_controle,lista_de_argumentos);
•Teremos, na string de controle, uma descrição de tudo que a função vai colocar na tela.
•A string de controle mostra não apenas os caracteres que devem ser colocados na tela, mas
também quais as variáveis e suas respectivas posições.
•Isto é feito usando-se os códigos de controle, que usam a notação %.
•Na string de controle indicamos quais, de qual tipo e em que posição estão as variáveis a
serem apresentadas.
•É muito importante que, para cada código de controle, tenhamos um argumento na lista de
argumentos.
•Apresentamos agora alguns dos códigos %:
Código Significado
%d Inteiro
ROGERIO@IFCE.EDU.BR
%f Float
%c Caractere
%s String
%% Coloca na tela um %
57
Entrada e Saída: printf - Exemplo
Execute este programa e veja os resultados. Faça alterações.
IFCE
// Exemplos de uso de string.
#include <conio.h>
#include <stdio.h>
main ()
{ char string[100];
Saída: Teste % %
40.345000
Um caractere D e um inteiro 120
ROGERIO@IFCE.EDU.BR
Este e um exemplo
Juros de
10%
scanf (string-de-controle,lista-de-argumentos);
59
CURSO TÉ
TÉCNICO DE ELETROTÉ
ELETROTÉCNICA
Informá
Informática aplicada
Palavras reservadas
Palavras Reservadas do C
IFCE
• Todas as linguagens de programação têm palavras reservadas. As palavras reservadas
não podem ser usadas a não ser nos seus propósitos originais, isto é, não podemos
declarar funções ou variáveis com os mesmos nomes.
• Como o C é "case sensitive" podemos declarar uma variável For, apesar de haver uma
palavra reservada for, mas isto não é uma coisa recomendável de se fazer pois pode
gerar confusão.
• Apresentamos a seguir as palavras reservadas do ANSI C. Veremos o significado
destas palavras chave à medida em que o curso for progredindo:
Linguagem C
Nomes de Variáveis
IFCE
64
Tipos do C e a capacidade de representação
IFCE Num de Intervalo
Tipo
bits Inicio Fim
char 8 -128 127
unsigned char 8 0 255
signed char 8 -128 127
int 16 -32.768 32.767
unsigned int 16 0 65.535
signed int 16 -32.768 32.767
short int 16 -32.768 32.767
unsigned short int 16 0 65.535
signed short int 16 -32.768 32.767
long int 32 -2.147.483.648 2.147.483.647
signed long int 32 -2.147.483.648 2.147.483.647
unsigned long int 32 0 4.294.967.295
ROGERIO@IFCE.EDU.BR
65
Declaração e Inicialização de Variáveis
IFCE
• As variáveis no C devem ser declaradas antes de serem usadas. A forma
geral da declaração de variáveis é:
tipo_da_variável lista_de_variáveis;
• As variáveis da lista de variáveis terão todas o mesmo tipo e deverão ser
separadas por vírgula. Como o tipo default do C é o int, quando vamos
declarar variáveis int com algum dos modificadores de tipo, basta
colocar o nome do modificador de tipo. Assim um long basta para
declarar um long int.
• Por exemplo, as declarações
char ch, letra;
long count;
float pi;
declaram duas variáveis do tipo char (ch e letra), uma variavel long int
ROGERIO@IFCE.EDU.BR
66
Declaração e Inicialização de Variáveis
IFCE
• Há três lugares nos quais podemos declarar variáveis.
– O primeiro é fora de todas as funções do programa. Estas variáveis
são chamadas variáveis globais e podem ser usadas a partir de
qualquer lugar no programa. Pode-se dizer que, como elas estão fora
de todas as funções, todas as funções as vêem.
– O segundo lugar no qual se pode declarar variáveis é no início de
um bloco de código. Estas variáveis são chamadas locais e só têm
validade dentro do bloco no qual são declaradas, isto é, só a função
à qual ela pertence sabe da existência desta variável, dentro do bloco
no qual foram declaradas.
– O terceiro lugar onde se pode declarar variáveis é na lista de
parâmetros de uma função. Mais uma vez, apesar de estas variáveis
receberem valores externos, estas variáveis são conhecidas apenas
ROGERIO@IFCE.EDU.BR
67
Regras de escopo: Variáveis locais e globais
#include <conio.h>
IFCE #include <stdio.h>
}
•A variável Total e uma variável global, e é acessível de qualquer parte do programa.
•As variáveis x e Dobro só existe e só acessível na função Função1().
•A variável Numero só existe e acessível na função main().
68
IFCE
69
Inicialização de variáveis
IFCE
• Podemos inicializar variáveis no momento de sua declaração. Para fazer
isto podemos usar a forma geral
tipo_da_variável nome_da_variável = constante;
• Isto é importante pois quando o C cria uma variável ele não a inicializa.
Isto significa que até que um primeiro valor seja atribuído à nova
variável ela tem um valor indefinido e que não pode ser utilizado para
nada.
• Nunca presuma que uma variável declarada vale zero ou qualquer
outro valor.
• Exemplos de inicialização são dados abaixo:
char ch='D';
ROGERIO@IFCE.EDU.BR
int count=0;
float pi=3.141;
70
Constantes
IFCE
• Constantes são valores que são mantidos fixos pelo compilador.
• Constantes são o oposto das variáveis, apesar de trabalharem da mesma
forma.
• As variáveis têm esse nome exatamente porque podemos mudar seu
valor durante a execução do programa. Já as constantes são dados
gravados em memória que de forma alguma podemos alterar seu valor.
• Então, qual a vantagem em ocupar memória com um dado que não
podemos mudar?
– A diferença está em podermos reduzir números grandes ou dados sem muito
significado em algo simples, fácil de usar e relembrar.
– Por exemplo, com uma constante poderemos definir que verdadeiro não será true,
mas a palavra "sim".
– Outro exemplo: Também podemos definir que o máximo de posições que um
vetor vai ter será 1000, então criamos uma constante chamada "max". Pronto,
agora não precisaremos mais nos lembrar que um vetor terá 1000 posições, basta
criar o vetor e no tamanho dele indicamos max.
ROGERIO@IFCE.EDU.BR
71
Constantes dos tipos básicos
IFCE
72
Constantes hexadecimais e octais
IFCE Muitas vezes precisamos inserir constantes hexadecimais (base dezesseis) ou octais
(base oito) no nosso programa. O C permite que se faça isto.
As constantes hexadecimais começam com 0x.
As constantes octais começam em 0.
Alguns exemplos:
Constante Tipo Valor decimal
0xEF Char Hexadecimal (8 bits) 239
0x12A4 Int Hexadecimal (16 bits) 4772
03212 Char Octal (8 bits) 1674
034215432 Int Octal (16 bits) 7412506
Nunca escreva portanto 013 achando que o C vai compilar isto como se fosse 13.
Na linguagem C 013 é diferente de 13!
74
Constantes de barra invertida
IFCE
• O C utiliza, para nos facilitar a tarefa de programar, vários códigos chamados códigos
de barra invertida. Estes são caracteres que podem ser usados como qualquer outro. A
lista completa dos códigos de barra invertida é dada a seguir:
Código Significado
\b Retrocesso ("back")
\f Alimentação de formulário ("form feed")
\n Nova linha ("new line")
\r Retorno de carro ("carriage return")
\t Tabulação horizontal ("tab")
\" Aspas
\' Apóstrofo
\0 Nulo (0 em decimal)
\\ Barra invertida
\v Tabulação vertical
ROGERIO@IFCE.EDU.BR
originais.
77
Operadores Aritméticos e de Atribuição
IFCE
• O operador / (divisão) quando aplicado a variáveis inteiras, nos fornece
o resultado da divisão inteira; quando aplicado a variáveis em ponto
flutuante nos fornece o resultado da divisão "real". Assim seja o
seguinte trecho de código:
int a = 17, b = 3;
int x,y;
floatz = 17.,z1,z2;
x = a / b;
y = a % b;
z1 = z / b;
z2 = a / b;
• ao final da execução destas linhas, os valores calculados seriam x =
5, y = 2, z1 = 5.666666 e z2 = 5.0 . Note que na linha correspondente a
z2, primeiramente é feita uma divisão inteira (pois os dois operandos
são inteiros). Somente após efetuada a divisão é que o resultado é
atribuído a uma variável float.
ROGERIO@IFCE.EDU.BR
20 6
(2) 3
Resto da divisão Divisão inteira
78
Operadores Aritméticos e de Atribuição
IFCE • Os operadores de incremento e decremento são unários que alteram a variável sobre a
qual estão aplicados. O que eles fazem é incrementar ou decrementar, a variável sobre
a qual estão aplicados, de 1. Então
x++;
x--;
são equivalentes a
x=x+1;
x=x-1;
• Estes operadores podem ser pré-fixados ou pós- fixados. A diferença é que quando são
pré-fixados eles incrementam e retornam o valor da variável já incrementada.
• Quando são pós-fixados eles retornam o valor da variável sem o incremento e depois
incrementam a variável. Então, em
x = 23;
y = x++;
y = ++x;
79
AUTO AVALIAÇÃO
IFCE
• Diga o resultado das variáveis x, y e z depois da seguinte sequência de
operações:
int x,y,z;
x = y = 10;
z = ++x;
x = -x;
y++;
x = x+y-(z--);
ROGERIO@IFCE.EDU.BR
80
Operadores Relacionais e Lógicos
IFCE
81
Operadores Relacionais e Lógicos
IFCE
Para fazer operações com valores lógicos (verdadeiro e falso) temos os
operadores lógicos:
Operador Ação
&& AND (E)
|| OR (OU)
! NOT (NÃO)
Usando os operadores relacionais e lógicos podemos realizar uma grande
gama de testes.
0 1 1 0 1 0 1 0
1 0 1 1 0 0
1 1 1 1 1 1
82
Operadores lógicos - Exemplo
IFCE
int i, j
i = 5;
j = 7;
( (i > 3) && ( j <= 7) && ( i != j) )
ROGERIO@IFCE.EDU.BR
83
Operadores lógicos - Exemplo
IFCE
int i, j
i = 5;
j = 7;
( (i > 3) && ( j <= 7) && ( i != j) )
1
ROGERIO@IFCE.EDU.BR
84
Operadores lógicos - Exemplo
IFCE
int i, j
i = 5;
j = 7;
( (i > 3) && ( j <= 7) && ( i != j) )
1 1
ROGERIO@IFCE.EDU.BR
85
Operadores lógicos - Exemplo
IFCE
int i, j
i = 5;
j = 7;
( (i > 3) && ( j <= 7) && ( i != j) )
1 1 1
ROGERIO@IFCE.EDU.BR
86
Operadores lógicos - Exemplo
IFCE
int i, j
i = 5;
j = 7;
( (i > 3) && ( j <= 7) && ( i != j) )
1 1 1
1
ROGERIO@IFCE.EDU.BR
87
Operadores lógicos - Exemplo
IFCE
int i, j
i = 5;
j = 7;
( (i > 3) && ( j <= 7) && ( i != j) )
1 1 1
1
ROGERIO@IFCE.EDU.BR
1 - Verdadeiro
88
Auto avaliação
IFCE
((10>5)||(5>10))
(!(5==6)&&(5!=6)&&((2>1)||(5<=4)))
ROGERIO@IFCE.EDU.BR
89
Expressões
IFCE
• Expressões
– Conversão de tipos em expressões
– Expressões que Podem ser Abreviadas
– Encadeando expressões: o operador ,
– Tabela de Precedências do C
• Exemplos de expressões:
ROGERIO@IFCE.EDU.BR
Anos = Dias/365.25;
i = i+3;
c = a*b + d/e;
c = a*(b+d)/e;
90
Conversão de tipos em expressões
IFCE
91
Expressões que podem ser abreviadas
IFCE
• O C admite as seguintes equivalências, que podem ser usadas para
simplificar expressões ou para facilitar o entendimento de um
programa:
x = x&k; x &= k;
etc...
92
Encadeando expressões: o Operador ,
IFCE
• O operador , determina uma lista de expressões que devem
ser executadas sequencialmente. O valor retornado por uma
expressão com o operador , é sempre dado pela expressão
mais à direita. No exemplo abaixo:
x=(y=2,y+3);
• o valor 2 vai ser atribuído a y, se somará 3 a y e o retorno (5)
será atribuído à variável x . Pode-se encadear quantos
operadores , forem necessários.
ROGERIO@IFCE.EDU.BR
93
Tabela de Precedências do C
IFCE
• Esta é a tabela de precedência dos operadores em C. Alguns (poucos)
operadores ainda não foram estudados, e serão apresentados em aulas
posteriores.
() [] ->
Maior precedência
! ~ ++ -- . -(unário) (cast) *(unário) &(unário)
sizeof
* / %
+ -
<< >>
<<= >>=
== !=
&
^
|
ROGERIO@IFCE.EDU.BR
&&
||
Menor precedência ?
= += -= *= /=
94
Modeladores ou operadores de classe (Casts)
IFCE
• Um modelador é aplicado a uma expressão. Ele força a mesma a ser de
um tipo especificado. Sua forma geral é:
#include <stdio.h>
int main ()
{
int num;
float f;
num=10;
f=(float)num/7;
printf ("%f",f);
return(0);
}
95
Bibliografia
IFCE
• Curso de C do CPDEE/UFMG
ROGERIO@IFCE.EDU.BR
96