Prévia do material em texto
<p>Variáveis e Expressões</p><p>Prof. Lucas Sousa</p><p>Instituto Federal de Educação, Ciência e Tecnologia do Ceará</p><p>lucasssousa10@gmail.com</p><p>March 30, 2017</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 1 / 36</p><p>Conteúdo da aula</p><p>1 Tipos de dados</p><p>Tipos de dados</p><p>Modificadores de tipos</p><p>2 Idendificadores</p><p>3 Variáveis</p><p>4 Constantes</p><p>5 Operadores</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 2 / 36</p><p>Tipos de dados em C</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 3 / 36</p><p>Tipos de dados suportados pela linguagem C</p><p>A linguagem C ANSI suporta uma gama de tipos de dados, a saber</p><p>char,</p><p>int,</p><p>float,</p><p>double,</p><p>void</p><p>O padrão ANSI especifica faixas ḿınimas para tamanho de variáveis,</p><p>porém existem várias implementações do C com vários tamanhos</p><p>diferentes.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 4 / 36</p><p>Tipos de dados suportados pela linguagem C</p><p>Tabela: Tipos de dados especificados pelo padrão ANSI</p><p>Tipo Tamanho em bits Faixa ḿınima</p><p>char 8 -127 a 127</p><p>unsigned char 8 0 a 255</p><p>signed char 8 -127 a 127</p><p>int 16 -32767 a 32767</p><p>unsigned int 16 0 a 65535</p><p>signed int 16 o mesmo que o int</p><p>short int 16 o mesmo que o int</p><p>unsigned short int 16 0 a 65535</p><p>signed short int 16 O mesmo que o short int</p><p>long int 32 -2147483647 a 2147483647</p><p>signed long int 32 o mesmo que long int</p><p>unsigned long int 32 0 a 4294967295</p><p>float 32 seis d́ıgitos de precisão</p><p>double 64 dez d́ıgitos de precisão</p><p>long double 80 dez d́ıgitos de precisão</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 5 / 36</p><p>Modificadores de tipos</p><p>Um modificador de tipo de dado, é utilizado para modificar o significado</p><p>de uma variável para adaptá-la às diversas situações.</p><p>signed</p><p>unsigned</p><p>long</p><p>short</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 6 / 36</p><p>Identificadores em C</p><p>Identificadores podem ter:</p><p>Letras maiúsculas e minúsculas</p><p>Caracteres numéricos</p><p>( )underscore</p><p>Exemplos</p><p>teste - válido mas não recomendado.</p><p>123variavel - inválido</p><p>v1a1r2i3a4v5e6l7 - Válido</p><p>nomeDaVariavel - válido e seguindo estrutura</p><p>‘‘camelo’’</p><p>nome da variavel - válido.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 7 / 36</p><p>Variáveis</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 8 / 36</p><p>Variáveis</p><p>Uma variável é uma posição nomeada de memória, que é usada para</p><p>guardar um valor que pode ser modificado pelo programa. Em C, todas as</p><p>variáveis devem ser declaradas antes de serem usadas. A forma de</p><p>declaração de uma variável pode ser visualizada a seguir</p><p>tipo variável;</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 9 / 36</p><p>Inicialização de variáveis</p><p>Podemos realizar atribuição de um valor a uma variável no momento de</p><p>sua criação.</p><p>1 int a = 10;</p><p>2 float valor = 3.22;</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 10 / 36</p><p>Constantes</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 11 / 36</p><p>Constantes</p><p>Constantes se referem à valores fixos que o programa não pode alterar.</p><p>Cada constante é relacionada a um tipo de dados.</p><p>char: ‘a’, ‘b’, ‘1’, ‘p’, ...</p><p>int: 10, 23, 14, 23332, ...</p><p>float: 3.33, 10.22, 4.333333222, ...</p><p>double: 34.1, 1.22, 9.33, ...</p><p>Além disso, podemos declarar constantes em octais e hexadecimais</p><p>1 int hex = 0x80; /* 128 em decimal */</p><p>2 int oct = 012; /* 10 em decimal */</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 12 / 36</p><p>Constantes string</p><p>As constantes string são textos delimitados por aspas duplas. O C permite</p><p>que você defina constantes strings, mas não possui um tipo string</p><p>espećıfico.</p><p>1 printf("Eu amo C");</p><p>2 printf("Instituto Federal do Ceara - IFCE");</p><p>Observação</p><p>Não confundir constantes strings com caracteres.</p><p>Strings: “teste”, “a”, “b”, ...</p><p>Caracteres: ‘t’, ‘a’, ‘x’, ...</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 13 / 36</p><p>Constantes caracteres de barra invertida</p><p>Código Significado</p><p>\b Backspace</p><p>\n Nova linha</p><p>\r Retorno de carro</p><p>\t Tabulação horizontal</p><p>\” Aspas duplas</p><p>\’ Aspas Simples</p><p>\0 Nulo</p><p>\\ barra invertida \</p><p>\v tabulação vertical</p><p>\a alerta sonoro</p><p>\N constante octal (onde N é uma constante octal)</p><p>\xN constante hexadecimal (onde N é uma constante em hexadecimal)</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 14 / 36</p><p>Operadores</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 15 / 36</p><p>Operadores</p><p>A linguagem C é muito rica em operadores internos. Basicamente possui</p><p>quatro classes de operadores:</p><p>Aritméticos,</p><p>Relacionais,</p><p>lógicos,</p><p>bit a bit,</p><p>Outros operadores particulares.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 16 / 36</p><p>Operador Atribuição (=)</p><p>O operador atribuição pode ser usado dentro de qualquer expressão válida</p><p>em C. Isso não ocorre na maioria das linguagens de programação. A forma</p><p>geral de uma atribuição é:</p><p>nome da variavel = expressão;</p><p>Observação</p><p>A variável de destino, sempre fica do lado esquerdo da atribuição.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 17 / 36</p><p>Conversão de tipos na atribuição (=)</p><p>Conversão de tipos refere-se à situação em que variáveis de um tipo são</p><p>misturadas com variáveis de outro tipo. A linguagem C converte o tipo da</p><p>expressão para o tipo da variável em uma atribuição. Por exemplo:</p><p>1 int x;</p><p>2 char ch;</p><p>3 float f;</p><p>4</p><p>5 ch = x; // ch guarda os 8 bits menos significativos de x</p><p>6 x = f; // x recebe a parte inteira de f</p><p>7 f = ch; // f armazena o valor de ch em ponto flutuante</p><p>8 f = x; // f converte o valor inteiro para ponto flutuante</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 18 / 36</p><p>Atribuições multiplas</p><p>C permite que você atribua o mesmo valor a muitas variáveis usando</p><p>atribuições multiplas em um único comando. Por exemplo,</p><p>1 int x, y, z;</p><p>2</p><p>3 x = y = z = 0;</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 19 / 36</p><p>Operadores Aritméticos</p><p>Operador Ação</p><p>- Subtração e menos unário</p><p>+ Adição</p><p>* Multiplicação</p><p>/ Divisão</p><p>% Módulo da divisão(resto)</p><p>- - Decremento</p><p>++ Incremento</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 20 / 36</p><p>Operadores Aritméticos</p><p>1 int x, y;</p><p>2</p><p>3 x = 5;</p><p>4 y = 2;</p><p>5</p><p>6 printf("%d", x / y); // mostrara 2</p><p>7 printf("%d", x % y); // mostrara 1, o resto da divisao inteira</p><p>8</p><p>9 x = 1;</p><p>10 y = 2;</p><p>11</p><p>12 printf("%d %d", x / y, x % y); // mostrara 0 ou 1</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 21 / 36</p><p>Operadores Aritméticos</p><p>O menos unário (-) multiplica qualquer valor numérico por -1.</p><p>1 int x = 2;</p><p>2 x = -x;</p><p>3 printf("%d", x); // sera mostrado -2</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 22 / 36</p><p>Incremento e decremento</p><p>O operador ++ e o operador −− são utilizados para incremento (+1) e</p><p>decremento (−1) de valores numéricos.</p><p>1 int x = 10;</p><p>2 int y = 20;</p><p>3</p><p>4 int inc = x++;</p><p>5 int dec = y++;</p><p>6</p><p>7 printf("%d\n", inc); // mostra 10</p><p>8 printf("%d\n", dec); // mostra 20</p><p>9</p><p>10 inc = --x;</p><p>11 dec = --y;</p><p>12</p><p>13 printf("%d\n", inc); // mostra 10</p><p>14 printf("%d\n", dec); // mostra 20</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 23 / 36</p><p>Incremento e decremento</p><p>Observações</p><p>Os operadores incremento e decremento após compilados são mais rápidos</p><p>do que atribuições do tipo x = x + 1 ou x = x − 1. Por isso, sempre que</p><p>posśıvel utilizem operadores de incremento e decremento.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 24 / 36</p><p>Precedência de operadores aritméticos</p><p>Os operadores de mais alta precedência são avaliados primeiro pelo</p><p>compilador. Os operadores em um mesmo ńıvel, são avaliados da esquerda</p><p>para direita.</p><p>mais alta ++ - -</p><p>-(menos unário)</p><p>*/%</p><p>mais baixa + -</p><p>Observação</p><p>Operações entre parênteses forçam uma precedência maior.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 25 / 36</p><p>Operadores relacionais</p><p>Operadores relacionais se referem às relações que podem ocorrer entre</p><p>valores.</p><p>Operador Ação</p><p>> Maior que</p><p>>= Maior ou igual</p><p>< Menor que</p><p><= Menor ou igual</p><p>== Igual</p><p>! = Diferente</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 26 / 36</p><p>Operadores relacionais</p><p>1 int a = 10;</p><p>2 int b = 20;</p><p>3</p><p>4 char c = (a >= b);</p><p>5 printf("%d\n", c); // imprime 0</p><p>6</p><p>7 c = (a != b);</p><p>8 printf("%d\n", c); // imprime 1</p><p>Observação</p><p>Qualquer valor diferente de 0 é verdadeiro.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 27 / 36</p><p>Operadores Lógicos</p><p>São operadores que descrevem como as operações relacionais podem ser</p><p>conectadas.</p><p>Operador Ação</p><p>&& AND</p><p>|| OR</p><p>! NOT</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 28 / 36</p><p>Operadores Lógicos - AND</p><p>A operação AND, só retorna verdadeiro sempre que todas as partes</p><p>comparadas forem verdadeiras.</p><p>p q p && q</p><p>0 0 0</p><p>0 1 0</p><p>1 0 0</p><p>1 1 1</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 29 / 36</p><p>Operadores Lógicos - OR</p><p>A operação OR(||), só retorna verdadeiro sempre que uma das duas</p><p>implicações for verdadeira.</p><p>p q p || q</p><p>0 0 0</p><p>0 1 1</p><p>1 0 1</p><p>1 1 1</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 30 / 36</p><p>Operadores Lógicos - NOT</p><p>A operação NOT(!), retorna a negação de uma implicação. É uma</p><p>operação unária.</p><p>p !p</p><p>0 1</p><p>1 0</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 31 / 36</p><p>Exemplos com operadores lógicos</p><p>Avaliem o resultado das seguintes expressões lógicas.</p><p>1 int x = 10;</p><p>2 char p = 2;</p><p>3 float b = 23.2;</p><p>4</p><p>5 char c = ((x > p) || b) && x;</p><p>6 printf("%d", c);</p><p>7</p><p>8 c = !((x > p) || b) && x;</p><p>9 printf("%d", c);</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 32 / 36</p><p>Operador (?:)</p><p>O operador ternário é uma ferramenta muito poderosa e substitui algumas</p><p>operações do tipo IF-ELSE que veremos no decorrer do curso. A estrutura</p><p>geral é:</p><p>Expressão 1 ? Expressão 2 : Expressão 3;</p><p>Expressão 1: É avaliada;</p><p>Expressão 2: Retorna caso a expressão 1 seja</p><p>verdadeira;</p><p>Expressão 3: Retorna caso a expressão 1 seja</p><p>falsa;</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 33 / 36</p><p>Operador (?:)</p><p>1 char a = 2;</p><p>2 char b = 10;</p><p>3</p><p>4 char c = (a > b) ? 33 : 23;</p><p>5 printf("%d", c); // 23;</p><p>6</p><p>7 c = (a <= b) ? 25 : 44;</p><p>8 printf("%d", c); // 25;</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 34 / 36</p><p>Exerćıcio</p><p>Crie um programa em C ANSI que leia um caractere ‘M’ para masculino e</p><p>‘F’ para feminino. Caso o sexo seja Masculino, escrever na tela: “Fala meu</p><p>grande amigo! Sou fera em C!!!”. Caso contrário: “Olá senhorita! Você</p><p>sabia que eu sou programador C?”.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 35 / 36</p><p>Dúvidas?</p><p>Assunto da próxima aula: Operadores Bit-a-bit;</p><p>Leitura recomendada: Págs 48, 49 e 50 do livro “C completo e total”.</p><p>Prof. Lucas Sousa (IFCE) Introdução à Programação March 30, 2017 36 / 36</p>