Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1 - PDF
Download "Linguagem C: Variáveis e Operadores. Prof. Leonardo Barreto Campos 1"
Ana Beatriz Lacerda Camarinho
1 Linguagem C: Variáveis e Operadores Prof. Leonardo Barreto Campos
2 Sumário Variáveis: Tipos de variáveis; Nome da variável; Palavras reservadas; A função printf(); A função scanf(); Variáveis locais; Variáveis globais; Constantes: Constantes Hexadecimais e Octais; Constantes de barra invertida; Prof. Leonardo Barreto Campos 2/53
3 Sumário Operadores: Operador de atribuição; Conversão de tipos em atribuição; Operadores Aritméticos; Operadores Relacionais; Operadores Lógicos; Operadores bit a bit. Prof. Leonardo Barreto Campos 3/53
4 Variáveis São espaços de memória reservados que guardam valores durante a execução de um programa; Todas as variáveis em C devem ser declaradas, antes de serem usadas; Uma declaração de variável em C consiste no nome de um tipo, seguido do nome da variável, seguido de ponto-e-vírgula. Ex: tipo_da_variavel lista_de_variaveis; int num; Tipo da Variável Nome da Variável Prof. Leonardo Barreto Campos 4/53
5 Tipos de Variáveis O tipo de uma variável informa a quantidade de memória, em bytes, que a variável ocupará e a forma como um valor deverá ser armazenado; Há cinco tipos básicos de dados em C: TIPO BIT BYTES ESCALAS char 8-28 a 27 int a float E-38 a 3.4E+38 double E-38 a.7e+38 void Nenhum valor Prof. Leonardo Barreto Campos 5/53
6 Tipos de Variáveis Exceto o void, os tipos de dados básicos podem ter vários modificadores precedendo-os; Um modificador é usado para alterar o significado de um tipo básico para adaptá-lo mais precisamente às necessidades de diversas situações, veja: signed; unsigned; long; int Tipo unsigned int signed int Bits Início short. short int long int Fim Prof. Leonardo Barreto Campos 6/53
7 Nome da Variável O nome de uma variável pode ser de uma letra até palavras com no máximo 32 caracteres; Obrigatoriamente deve começar com uma letra ou undercore ( _ ). O restante pode ser letras de A a Z, maiúsculas, minúsculas, números e o underscore; Ex: a; num; essa_e_uma_variavel; tambem_essa; Cuidados: O nome de uma variável não pode ser igual a uma palavra reservada; O nome de uma variável não pode ser igual a de uma função declarada pelo programador ou pelas bibliotecas do C. Prof. Leonardo Barreto Campos 7/53
8 Palavras reservadas Eis algumas palavras reservadas da linguagem C: auto double int struct break else long switch case ebun register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile asm pascal far huge interrupt near _cs _ds Prof. Leonardo Barreto Campos 8/53
9 Nome da Variável Em C, letras maiúsculas e minúsculas são tratadas diferentemente. int variavel; int Variavel; int VaRiAVeL; int VARIAVEL; ou int variavel, Variavel, VaRiAVeL, VARIAVEL; Prof. Leonardo Barreto Campos 9/53
10 Exemplos de Variáveis #include <stdio.h> /* Exemplo da variável Char */ int main() { } char Ch; Ch= D ; printf( %c, Ch); return ; %c indica que printf() deve colocar um caracter na tela. Prof. Leonardo Barreto Campos /53
11 Exemplos de Variáveis #include <stdio.h> /* Exemplo da variável Inteiro */ int main() { } int num; num=; printf( %d, num); return ; %d indica que printf() deve colocar um inteiro na tela. Prof. Leonardo Barreto Campos /53
12 A função printf() 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. Isto é feito usando-se os códigos de controle, veja alguns exemplos: Código %d %f %c %s %% Significado Inteiro Float Caractere String Coloca um % na tela Prof. Leonardo Barreto Campos 2/53
13 A função scanf() O formato geral da função scanf() é: scanf(string_de_controle, lista_de_argumentos); #include <stdio.h> /* Exemplo da função scanf() */ int main() { int num; printf( Digite um número: ); scanf( %d, &num); printf( %d, num); return ; } Prof. Leonardo Barreto Campos 3/53
14 Exemplos de Variáveis #include <stdio.h> /* Exemplo da variável String */ int main() { } char nome[2]; printf( Digite seu nome: ); gets (nome); printf( \n\nseu nome é: %s, nome); return ; Função para leitura de String (Char) Prof. Leonardo Barreto Campos 4/53
15 Variáveis Locais São variáveis declaradas dentro de uma função; Só podem ser referenciadas por comandos que estão dentro do bloco no qual as variáveis forma declaradas; #include <stdio.h> int main() Início do bloco { int x; int y; x = ; y = 2; Fim do bloco } Prof. Leonardo Barreto Campos 5/53
16 Variáveis Locais As variáveis também podem ser declaradas dentro de qualquer outro bloco de código, veja: #include <stdio.h> int main() { int x; scanf( %d, &x); if (x == ) { Criação da variável char s[3]; printf( Entre com o nome ); gets(s); /* Faz alguma coisa*/ } } Morte da variável Prof. Leonardo Barreto Campos 6/53
17 Variáveis Globais São variáveis reconhecidas pelo programa inteiro e podem ser usadas por qualquer bloco de código; As variáveis globais são criadas declarando-as fora de qualquer função. Veja: #include <stdio.h> int num; void func(); void func2(); Declaração de uma variável global Utilização da variável int main() void func() void func2() { { { num = ; num = num +; num = num +; func(); func2(); printf( %d, num); } } } Prof. Leonardo Barreto Campos 7/53
18 Variáveis Globais As variáveis globais encontram-se armazenadas em uma região fixa da memória, separada para esse propósito pelo compilador C; Variáveis globais são úteis quando o mesmo dado é usado em muitas funções em seu programa; Alerta: Variáveis globais ocupam memória durante todo o tempo em que seu programa estiver executando, portanto, evite usar variáveis globais desnecessárias. Prof. Leonardo Barreto Campos 8/53
19 Constantes Variáveis com o modificador const não podem ser modificadas por seu programa; #include <stdio.h> int main() { } const int num = ; Cria uma variável inteira chamada a, com um valor inicial, que seu programa não pode modificar. Prof. Leonardo Barreto Campos 9/53
20 Constantes Hexadecimais e Octais Muitas vezes precisamos inserir constantes hexadecimais (base dezesseis) ou octais (base oito) no nosso programa. Em C as constantes hexadecimais começam com x e as constantes octais começam e. int varhex = x8; int varoct = 2; 28 em decimal em decimal Prof. Leonardo Barreto Campos 2/53
21 Constantes de Barra Invertida Código \b \f \n \r \t \ \ \ \\ \v \a \xn Significado Retrocesso Alimentação de formulário Nova linha Retorno de carro Tabulação horizontal Aspas duplas Aspas simples Nulo Barra invertida Tabulação vertical Alerta Constante Hexa (onde N é a constante Hexa) Prof. Leonardo Barreto Campos 2/53
22 Exercício da Lista Faça um programa em C para ler uma temperatura em graus Celsius e transformá-la em Farenheit. Utilize a seguinte fórmula: F = ((9 * C) / 5) + 32 Prof. Leonardo Barreto Campos 22/53
23 Resposta sugerida para o exercício Prof. Leonardo Barreto Campos 23/53
24 Operadores Prof. Leonardo Barreto Campos 24
25 Operadores A linguagem C é muito rica em operadores internos. Ela define quatro classes de operadores: Aritmético; Relacionais; Lógicos; Bit a bit. -, +, *, /, %, --, ++ >, <, >=, <=, ==,!= &&,,! &,, ^, ~, >>, << Além disso, C tem alguns operadores especiais para tarefas particulares. Prof. Leonardo Barreto Campos 25/53
26 Operador de Atribuição A forma geral do operador de atribuição é: nome_da_variavel = expressao A expressão pode ser tão simples como uma única constante ou tão complexa quanto você necessite; O destino, ou parte esquerda da atribuição, deve ser uma variável ou um ponteiro, não uma função ou uma constante. Prof. Leonardo Barreto Campos 26/53
27 Conversão de tipos em atribuição Refere-se à situação em que variáveis de um tipo são convertidas em outro tipo; A regra é muito simples: o valor do lado direito (expressão) de uma atribuição é convertida no tipo do lado esquerdo (variável destino), veja: #include <stdio.h> int i; char ch; float f; int main() { i = f; f = i; ch = i; f = ch; } i recebe a parte inteira (6 bits) de f; f converte um inteiro de 6 bits em um ponto flutuante; coloca os bits menos significativos de i em ch; f converte o inteiro de 8 bits guardado em ch em um ponto flutuante; Prof. Leonardo Barreto Campos 27/53
28 Conversão de tipos em atribuição Quando se converte de: inteiro para caracter; inteiros longos para inteiros; Inteiros para inteiros curtos; A regra básica é que a quantidade apropriada de bits significativos seja ignorada, veja um exemplo: Inteiro Char Prof. Leonardo Barreto Campos 28/53
29 Conversão de tipos em atribuição A tabela abaixo reúne essas conversões de tipos. Lembre-se que a conversão de int em um float ou float em double, etc não aumenta a precisão ou exatidão, apenas mudam a forma de representar. Tipo do destino signed char char char char int int float double Tipo da expressão char short int int long int long int float double long double Possível informação perdida Se valor>27, o destino é negativo Os 8 bits mais significativos Os 8 bits mais significativos Os 24 bits mais significativos Os 6 bits mais significativos A parte fracionária e/ou mais Precisão, o resultado é arredondado Precisão, o resultado é arredondado Prof. Leonardo Barreto Campos 29/53
30 Atribuições múltiplas Em C é permitido que você atribua o mesmo valor a muitas variáveis usando atribuições múltiplas em um único comando, veja: Exemplo : Exemplo 2: int x, y, z; int i; x = y = z = ; char ch; float f; f = ch = i = 72; Prof. Leonardo Barreto Campos 3/53
31 Operadores Aritméticos A tabela abaixo lista os operadores aritméticos de C: Operador - + * / % Ação Subtração, também menos unário Adição Multiplicação Divisão Módulo da divisão (resto) Decremento Incremento Prof. Leonardo Barreto Campos 3/53
32 Operadores Aritméticos C possui operadores unário, binário e ternário: Os unários agem sobre uma variável apenas modificando ou não seu valor. Ex: o operador (-, -3, etc); Os binários usam duas variáveis e retornam um terceiro valor, sem alterar as variáveis originais. Ex: os operadores + e O ternário é usado para substituir certas sentenças de forma if-then-else. Ex: o operador? Prof. Leonardo Barreto Campos 32/53
33 Operadores Aritméticos O operador / (divisão) quando aplicado a variáveis inteiras ou caracter, nos fornece o resultado da divisão inteira, ou seja, o resto é truncado; int x = 5, y = 2; printf( %d, x/y); Mostra na tela o número 2 O operador % (módulo) quando aplicado a variáveis inteiras ou caracter, nos fornece o resto de uma divisão inteira; int x = 5, y = 2; printf( %d, x%y); Imprime na tela o resto da divisão, portanto, o número Prof. Leonardo Barreto Campos 33/53
34 Operadores Aritméticos O operador / (divisão) quando aplicado a variáveis em ponto flutuante nos fornece o resultado da divisão real. float x = 5, y = 2; printf( %f, x/y); Mostra na tela o número 2.5 Alerta: O operador % (módulo) não pode ser usado nos tipos em ponto flutuante (float e double). Prof. Leonardo Barreto Campos 34/53
35 Operadores Aritméticos Outros operadores aritméticos definidos em C são os operadores de: Incremento: ++ Decremento: -- O operador ++ soma ao seu operando, e subtrai. Incremento Decremento x = x + ; x = x ; x++; x--; Ambos os operadores de incremento ou decremento podem ser utilizados como prefixo ou sufixo do operando. x = x + ; /* Equivale a x++ e a ++x */ Prof. Leonardo Barreto Campos 35/53
36 Operadores Aritméticos Existe uma diferença quando os operadores de incremento e decremento são usados em uma expressão, veja: Ex: x = ; y = ++x; Executa o incremento antes de usar o valor do operando para atualizar y. Resultado: X = e Y = Ex2: x = ; y = x++; Usa o valor do operando para atualizar y antes de incrementar x. Resultado: X = e Y = Prof. Leonardo Barreto Campos 36/53
37 Operadores Aritméticos A precedência seguinte: dos operadores aritméticos é a Mais alta Mais baixa ++, -- - (menos unário) *, /, % +, - Operadores do mesmo nível de precedência são avaliados pelo compilador da esquerda para a direita; Obviamente, parênteses podem ser usados para alterar a ordem de avaliação. Prof. Leonardo Barreto Campos 37/53
38 Operadores Aritméticos Exercício: Qual o resultado das variáveis x, y e z depois da seguinte seqüência de operações: int x, y, z; x = y = ; z = (x++); x = -x; y++; x = x + y (z--); x y z Prof. Leonardo Barreto Campos 38/53
39 Exercício Qual o resultado das variáveis x, y e z depois da seguinte seqüência de operações: int x, y, z; x = y = ; z = x++; x = -x; y++; x = x + y z--; Prof. Leonardo Barreto Campos 39/53
40 Programa sugerido para o exercício Prof. Leonardo Barreto Campos 4/53
41 Operadores Relacionais No termo operadores relacionais, relacional refere-se às relações que os valores podem ter uns com os outros; Os operadores relacionais do C realizam comparações entre variáveis. São eles: Operador > >= < <= ==!= Ação Maior que Maior ou igual a Menor que Menor ou igual a Igual a Diferente de Prof. Leonardo Barreto Campos 4/53
42 Operadores Relacionais Os operadores relacionais retornam verdadeiro () ou falso (). Em C, verdadeiro é qualquer valor diferente de zero. Os operadores relacionais tem precedência menor do que os operadores aritméticos, veja: int a =, b =, c = 2; a > b + c; O resultado da expressão acima é: Falso Prof. Leonardo Barreto Campos 42/53
43 Operadores Relacionais Prof. Leonardo Barreto Campos 43/53
44 Operadores Relacionais Prof. Leonardo Barreto Campos 44/53
45 Operadores Lógicos No termo operador lógico, lógico refere-se às maneiras como as relações podem ser conectadas; Os operadores lógicos definidos por C são os seguintes: Operador &&! Ação And (E) Or (Ou) Not (Não) Prof. Leonardo Barreto Campos 45/53
46 Operadores Lógicos A tabela da verdade dos operadores lógicos são mostrados a seguir, usando s e s: p q p&&q p q!p Prof. Leonardo Barreto Campos 46/53
47 Operadores Bit a bit Operação bit a bit refere-se a testar, atribuir ou deslocar os bits efetivos em um byte ou uma palavra, que correspondem aos tipos de dados char e int e variantes do padrão C. Operações bit não podem ser usadas em float, double, long double, void ou outros tipos mais complexos. Prof. Leonardo Barreto Campos 47/53
48 Operadores Bit a bit A tabela abaixo lista os operadores que se aplicam às operações bit a bit. Operador Ação & ^ ~ >> << And Or Or exclusivo (Xor) Complemento de um Deslocamento à esquerda Deslocamento à direita Prof. Leonardo Barreto Campos 48/53
49 Operadores Bit a bit Os operadores bit a bit AND, OR e NOT (complemento de ) são governadas pela mesma tabela da verdade anterior*, exceto por trabalharem bit a bit; O Or exclusivo ( ^ ) tem a tabela da verdade mostrada a seguir, veja: p q p&q p q!p p^q *Slide 45 Prof. Leonardo Barreto Campos 49/53
50 Operadores Bit a bit Operadores bit a bit encontram aplicações mais freqüentes em drivers de dispositivos como em programas de modem, rotinas de arquivos em disco e impressoras; Operador de complemento de um, ~, inverte o estado de cada bit da variável especificada. Byte Original Após complemento de todos os s são colocados em e todos os s são colocados em Prof. Leonardo Barreto Campos 5/53
51 Operadores Bit a bit Os operadores de deslocamento, >> e << movem todos os bits de uma variável para a direita ou para a esquerda, respectivamente. A forma geral de deslocamento à direita é: variável >> número de posições de bits A forma geral de deslocamento à esquerda é variável << número de posições de bits Conforme os bits são deslocados para uma extremidade, zeros são colocados na outra; Prof. Leonardo Barreto Campos 5/53
52 Operadores Bit a bit Exemplo de deslocamento à direita e à esquerda: Unsigned char x; x = 7 x = x<< x = x<<3 x = x<<2 x = x>> x = x>>2 X a cada execução Valor de x Note que cada deslocamento à esquerda multiplica por 2. Prof. Leonardo Barreto Campos 52/53
53 Bibliografia SCHILDT H. C Completo e Total, Makron Books. SP, 997. MIZRAHI, V. V. Treinamento em Linguagem C++ Módulo, Makron Books, SP, 995. FORBELLONE, A. L. V. Lógica de Programação: A construção de algoritmos e estruturas de dados, Prentice Hall, SP, 25. Prof. Leonardo Barreto Campos 53/53
Técnicas de Programação em Engenharia Elétrica I - Engenharia de Sistemas Embarcados - Prof. Alessandro Zimmer Introdução à Linguagem C Variáveis Locais - Aquelas declaradas dentro de uma função ou bloco