Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários Monitoria de Introdução à Programação Roteiro Expressões Operadores Precedência Comandos de Decisão – If – else if – else – Switch Condição Ternária Comentários Dúvidas Exercícios Expressões Combinação de Operadores e operandos, que representa um cálculo. É avaliada seguindo regras de Precedência. Exemplo: “a = b + c” “i = i + 3” “Anos = Dias / 365.25” Operadores Aritméticos Representam cálculos matemáticos, operando sobre os tipos integrais¹ e de ponto flutuante²: Operador Ação Inteiros + Adição - Subtração ++ Incremento por 1 -- Decremento por 1 * Multiplicação / Divisão com resto Divisão real % Resto de Divisão Erro de compilação = 1. 2. Ação Float int, short, long, long long, char, etc. float, double long double, etc. Atribuição Operadores Aritméticos Adição e Subtração – Operações binárias. – São avaliadas como a soma/subtração dos dois operandos. Exemplo: “a + b” “1 + 1” “5 – 4” “50 – 8” Operadores Aritméticos Incremento e Decremento – Operações unárias. – São avaliadas como o valor do operador e modificam esse operador. – Deve ser tomado cuidado com a ordem em que são usados: Se usado prefixado, o operador é modificado ANTES da operação ser avaliada. Se usado pós-fixado, o operador é modificado DEPOIS. “++x” será avaliado como “x + 1”, e x será igual a “x + 1” “x++” será avaliado como “x”, e x será igual a “x + 1” Operadores Aritméticos Multiplicação e Divisão – Operações binárias. – São avaliadas como a multiplicação/divisão dos operandos. Com tipos integrais, a divisão tem resto. Com tipos de ponto flutuante, não. Exemplo: “6/4” (avaliado como “1”) “3.2/2” (avaliado como “1.6”) Operadores Aritméticos Módulo – Operação binária – É avaliado como o resto da divisão integral dos operandos. Com tipos integrais, tem valor integral. Não existe para tipos de ponto flutuante. Exemplo: “6 % 2” (avaliado como “0”) “19 % 3” (avaliado como “1”) Operadores Aritméticos Atribuição – Operação binária – O operando da esquerda é modificado para o valor do operando da direita. Exemplo: “var = 2” “i = 0” “tentativas = 40” “a = b + c” Operadores Aritméticos Atribuição – Podem ser abreviadas as atribuições que tem à direita uma expressão que contém o operando da esquerda. – A abreviação fica na forma “variavel operador= expressão” Exemplo: “A += B” (idêntica a “A = A + B”) “i += 1” (“i = i + 1”) “cota /= 2” (“cota = cota / 2”) Operadores Relacionais Representam Relações binárias sobre números, avaliadas como Verdadeiro ou Falso* Operador Relação > Maior-que >= Maior-ou-igual-a < Menor-que <= Menor-ou-igual-a == Igual-a != Diferente de *: Em C, Falso é representado pelo valor numérico “0”, e Verdadeiro por um outro valor qualquer. Existem as constantes TRUE e FALSE para esses valores. Operadores Aritméticos >, >=, < e <= – Operações binárias – Serão avaliados como Verdade, se os valores concordarem com a expressão. Caso contrário, serão avaliados como Falso. Exemplo: “3 > 4” (Falso) “5 >= -1” (Verdade) “i < 100” (Depende de i) Operadores Aritméticos == e != – Operações binárias – Avaliam se os operandos são iguais ou diferentes. Exemplo: “A == B” (Depende das variáveis) “i != 0” (Depende de i) “5 != 7” (Verdade) “200 == 3” (Falso) Operadores Lógicos Operam sobre valores Verdadeiro ou Falso, e são avaliados também como Verdadeiro ou Falso. Operador Relação && E (AND) || OU (OR) ! NÃO (NOT) E (AND) será Verdade se os dois operandos forem Verdade. OU (OR), se algum dos dois forem Verdade. NÃO (NOT), se o operando for Falso. Exemplo: “A && B” (Depende de A e B) “!FALSE” (Verdade) Precedência Ao ser avaliadas, as Expressões seguem uma sequência estabelecida para avaliar cada sub-expressão. Essa sequência serve para eliminar ambiguidades na avaliação de expressões. Exemplo: “A + B * C” (“B * C” Será avaliado primeiro) “rodas = carros * 4 + bicicletas * 4” (as multiplicações serão avaliadas, depois a soma, e por ultimo a atribuição) Precedência Sequência Avaliados Antes Desempate var++ var-- () [] . -> Esquerda para Direita ++var --var + - ! ~ (cast) * & Direita para Esquerda */% Esquerda para Direita +- Esquerda para Direita < <= > >= Esquerda para Direita == != Esquerda para Direita && Esquerda para Direita || Esquerda para Direita Condição Ternária ( c?t:f) Direita para Esquerda Atribuições ( =, +=, etc.) Direita para Esquerda Avaliados Depois Comandos de Decisão Usados para definir o que deve ser feito, levando em conta condições definidas pelo programador. Existem 3 tipos: – If – Else if – Else. – Switches. – Condição ternária. Cada um é melhor para um tipo de tarefa. If – Else if - Else Funciona na forma: Em C: Se if (isto) (isto) é verdade faça aquilo; aquilo; Se elsenão if é, e (isso) é verdade, faça aquela outra coisa; Se elsenão if é, e (isso aqui) é verdade, faça essa coisa aqui; Se elsenenhum, faça essa última coisa; If – Else if - Else Se for necessário executar mais de um comando, podem ser usadas chaves “{ }”: if(a > b) { isso(); aquilo(); } else { outra_coisa(); a++; } If – Else if - Else As condições “else if” e “else” são opcionais. Apenas um dos blocos de comandos será executado. Se uma das condições for verdade, as seguintes serão ignoradas. Exemplo: if(TRUE) isso(); else aquilo(); “isso()” sempre será executada, pois “TRUE” sempre é avaliado como verdade, fazendo com que “aquilo()” nunca seja executado. Switch Em C: quando a decisão depende que uma única Usado variável tenha valores arbitrários: Caso switch (isto) { seja case isso: faça aquilo; pare; break; seja case isso aqui: faça aquilo alí; pare; break; se nenhum desses: default: faça essa última coisa; pare; break } Switch O comando “default” é opcional. O comando “break” é usado para sair do bloco de código. Se não for usado, o programa continua a executar a sequência, “invadindo” outro “case” do switch*. Exemplo: switch (colocação) { case 1: comemorar(); case 15: chorar(); break; Se “colocação” for “1”, “comemorar()” será executado, e o programa continuará e executará “chorar()”. Se “colocação” não for nenhum dos dois, como não há condição “default”, nada é feito. } *: Isso pode ser usado a seu favor, mas atinge a legibilidade do código. Comando Ternário Serve para decisões pequenas, do tipo: isto é verdade? Faça isso. Se não, faça aquilo. Em C: isto ? Isso() : aquilo(); Pode ser usado para escolher o lado direito de uma atribuição. Usar somente com decisões pequenas, pois pode dificultar a leitura do código. Exemplo: “A = b > a ? b : a;” “i > j ? i /= j : j /= i;” Comentários Servem para anotar coisas relevantes ao código, de forma a explicar certos trechos de código ou deixar informação relevante. São ignorados pelo compilador, não afetando de forma alguma no programa compilado. São extremamente importantes em projetos maiores, onde colegas, supervisores ou até você mesmo podem esquecer os detalhes daquela implementação específica. Comentários Em C existem dois tipos: – Em linha: – Em bloco: Assinalado por “//”. Tudo na linha após “//” é ignorado. Assinalado por “/*” e “*/” Tudo entre “/*” e “*/” é ignorado. Exemplo: If (a > b) //se isso for verdade, isso(); // faz isso, Else // se não, algo deu errado, avisa(); //um aviso será dado /* essa função faz isso e aquilo, E deve ser tomado cuidado para não fazer aquela outra coisa. */ Int faz_isso(int a, int b); Dúvidas? Exercício 1 Escreva um programa que recebe um inteiro positivo e imprime "sim" se o inteiro for um múltiplo de 3 e "não" caso contrário. Exercício 2 Faça um programa que receba 3 números do usuário e imprima qual é o maior e qual é o menor número. Exercício 2 Fazer um programa que mostre num menu as opções: 1.SOMA 2.SUBTRAÇÃO 3.MULTIPLICAÇÃO 4.DIVISÃO e em seguida, receba 2 números e realize a operação de acordo com a opção do usuário. Imprima o resultado na tela.