Prévia do material em texto
<p>Estrutura de controle de fl uxo: if – else</p><p>Operadores e Expressões</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>46</p><p>48</p><p>5.1</p><p>5.2</p><p>5</p><p>46</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>5.1 ESTRUTURA DE CONTROLE DE FLUXO: IF – ELSE</p><p>Aqui vamos criar procedimentos que nos permitam alterar a leitura de execução do código. Ou</p><p>seja, todos os programas que fizemos até aqui a leitura de execução do código é de cima para</p><p>baixo (lê a primeira linha de código - executa, lê a 2ª linha --- executa,..e por aí adiante).</p><p>O que agora vamos fazer e criar mecanismos para alterar essa leitura sequencial e permitir a exe-</p><p>cução de certo trecho de código de acordo com uma condição.</p><p>Programas reais são em sua maioria condicionais.</p><p>EXEMPLOS:</p><p>» Se a nota for maior que 7 o aluno é aprovado Senão é reprovado.</p><p>» Se o usuário clicar em determinado ícone o programa faz uma coisa Senão faz outra.</p><p>» Se a força resultante em uma determinada ponte for maior que determinado valor o pro-</p><p>grama fará um coisa Senão fará outra.</p><p>Etc</p><p>Como faríamos isso, qual seria a lógica?</p><p>Se (condicao)</p><p>Comando a;</p><p>Comando b;</p><p>Senão</p><p>Comando c;</p><p>Comando d;</p><p>A estrutura acima funciona da seguinte formar: Se a condição que está entre () for verdadeira o</p><p>código irá executar os comando a e b, se for falta executará os comando c e d.</p><p>O termo condição deve ser uma operação que retorna verdadeiro ou falso.</p><p>Veremos na próxima seção como montar expressões lógicas. A estrutura acima em linguagem C/</p><p>47</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>C++ pode ser feita da seguinte forma:</p><p>if (condicao){</p><p>Comando a;</p><p>Comando b;</p><p>}else{</p><p>Comando c;</p><p>Comando d;</p><p>}</p><p>If-else é a tradução literal do inglês para Se-Senão. Reparem também que foi introduzido as cha-</p><p>ves({}) essas chaves servem para delimitar um bloco de comandos. Logo após o if, abrimos a chave</p><p>e fechamos antes do else. Isso significa que todos os comandos que estão delimitadas pelas {}</p><p>serão executadas se a condição for verdadeira. Da mesma forma há chaves delimitando o bloco</p><p>pertencente ao else, os comandos dentro dessas chaves irão executar somente se a condição</p><p>passada for falsa.</p><p>EXEMPLO:</p><p>Escrever um algoritmo que irá ler a nota do aluno, se a nota for maior ou igual a 7 imprimir</p><p>aprovado, senão imprimir reprovado:</p><p>48</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>5.2 OPERADORES E EXPRESSÕES</p><p>O termo condição que vimos anteriormente é uma expressão ou variável que representa um valor</p><p>que pode ser verdadeiro ou falso.</p><p>EXEMPLO: (nota >= 7)</p><p>Irá retornar verdadeiro se o valor da variável nota for maior ou igual a 7 e falso caso contrário.</p><p>Os operandos para expressões condicionais em C/C++ são:</p><p>» == para igualdade.</p><p>EXEMPLO:</p><p>(nota == 10) compara se a variável nota contém o valor 10, se sim retorna verdadeiro caso</p><p>contrário retorna falso.</p><p>Reparem que para comparar dois valores é usado == (dois iguais). Muitos se perguntam porque</p><p>não usamos só =. A resposta é simples, pois o comando =, que vimos em aulas anteriores já é utili-</p><p>zado para atribuição de valores, portanto é um comando que não comparar valor ele atribui valor.</p><p>Exemplo: A expressão x = 5 não compara se a variável x tem o valor 5, essa expressão coloca o valor</p><p>5 na variável x. Se quisermos comparar e saber se x vale 5 deveríamos fazer x == 5.</p><p>» != para diferente.</p><p>EXEMPLO:</p><p>(nota == 0) compara se a variável nota é diferente de 0, se sim retorna verdadeiro caso con-</p><p>trário retorna falso.</p><p>» > para maior.</p><p>EXEMPLO:</p><p>(velocidade > 100 ) compara se a variável velocidade é maior que 100, se sim retorna verda-</p><p>deiro caso contrário retorna falso.</p><p>49</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>» < para menor.</p><p>EXEMPLO:</p><p>(velocidade < 100) compara se a variável velocidade é menor que 100, se sim retorna verda-</p><p>deiro caso contrário retorna falso.</p><p>» >= para maior ou igual.</p><p>Exemplo:</p><p>(faltas >= 10) compara se a variável faltas é maior ou igual a 10, se sim retorna verdadeiro caso</p><p>contrário retorna falso.</p><p>» <= para menor ou igual.</p><p>EXEMPLO:</p><p>(faltas <= 10 ) compara se a variável faltas é menor ou igual a 10, se sim retorna verdadeiro</p><p>caso contrário retorna falso.</p><p>Até agora vimos expressões lógicas simples, como (nota >= 7), (velocidade > 100). Mas e quando</p><p>precisamos montar expressões com duas ou mais condições?</p><p>EXEMPLOS:</p><p>Preço de um produto maior que 100 E menor que 200</p><p>Reprovar um aluno se a nota for menor que 7 OU o número de faltas maior que 10.</p><p>Nestes casos deveremos combinar as expressões com operadores lógicos. Por isso precisaremos</p><p>ver um pouco de lógica, especialmente as tabelas verdade ( a maioria de vocês jpa devem ter</p><p>ido algum contato com essas tabelas no ensino médio) dos operadores lógicos E (Conjunção) e</p><p>OU(Disjunção).</p><p>50</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>A conjunção é verdadeira se e somente se ambos os operandos são verdadeiros.</p><p>A disjunção é falsa se, e somente se ambos os operandos forem falsos.</p><p>Agora vamos ver como combinar expressões em C/C++.</p><p>A B</p><p>V</p><p>V</p><p>F</p><p>F</p><p>V</p><p>F</p><p>V</p><p>F</p><p>A e B</p><p>V</p><p>F</p><p>F</p><p>F</p><p>CONJUNÇÃO (E)</p><p>A B</p><p>V</p><p>V</p><p>F</p><p>F</p><p>V</p><p>F</p><p>V</p><p>F</p><p>A ou B</p><p>V</p><p>V</p><p>V</p><p>F</p><p>DISJUNÇÃO (OU)</p><p>51</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>OPERADOR LÓGICO &&:</p><p>Operador lógico de conjunção ( E ), usado para combinar expressões lógicas da forma:</p><p>(expressão1 e expressão2). Retornará verdadeiro somente se todas as expressões forem verdadeiras.</p><p>EXEMPLO EM C/C++:</p><p>Expressão para preço de um produto maior que 100 E menor que 200:</p><p>(preco > 100 && preco < 200)</p><p>CÓDIGO COMPLETO:</p><p>OPERADOR LÓGICO ||:</p><p>Operador lógico de disjunção ( OU ), usado para combinar expressões lógicas da forma:</p><p>(expressão1 ou expressão2). Retornará verdadeiro caso uma das expressões seja verdadeira</p><p>EXEMPLO EM C/C++:</p><p>Reprovar um aluno se a nota for menor que 7 OU o número de faltas maior que 10.</p><p>(nota < 7 || faltas > 10)</p><p>52</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>Código completo:</p><p>53</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>RESUMO:</p><p>Sempre que necessitamos que ações distintas sejam tomadas de acordo com deter-</p><p>minada condição, estamos diante de uma situação que necessitamos alterar o fluxo</p><p>normal do programa ( sequencial, linha a linha).</p><p>A estrutura mais utilizada para isso em C/C++ é o if-else:</p><p>if (condicao){</p><p>Lista de comandos caso a condição seja verdadeira</p><p>}else{</p><p>Lista de comandos caso a condição seja falsa</p><p>}</p><p>Operadores condicionais:</p><p>» == para igualdade.</p><p>» != para diferente.</p><p>» > para maior.</p><p>» < para menor.</p><p>» >= para maior ou igual.</p><p>» <= para menor ou igual.</p><p>Operadores lógicos:</p><p>» && operador de conjunção (e)</p><p>» || operador de disjunção (ou)</p><p>54</p><p>M</p><p>at</p><p>er</p><p>ia</p><p>l p</p><p>ar</p><p>a</p><p>u</p><p>so</p><p>e</p><p>xc</p><p>lu</p><p>si</p><p>vo</p><p>d</p><p>os</p><p>a</p><p>lu</p><p>n</p><p>os</p><p>d</p><p>a</p><p>R</p><p>ed</p><p>e</p><p>d</p><p>e</p><p>E</p><p>n</p><p>si</p><p>n</p><p>o</p><p>D</p><p>oc</p><p>tu</p><p>m</p><p>. P</p><p>ro</p><p>ib</p><p>id</p><p>a</p><p>a</p><p>re</p><p>p</p><p>ro</p><p>d</p><p>u</p><p>çã</p><p>o</p><p>e</p><p>o</p><p>co</p><p>m</p><p>p</p><p>ar</p><p>ti</p><p>lh</p><p>am</p><p>en</p><p>to</p><p>d</p><p>ig</p><p>it</p><p>al</p><p>, s</p><p>ob</p><p>a</p><p>s</p><p>p</p><p>en</p><p>as</p><p>d</p><p>a</p><p>le</p><p>i.</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p><p>HOLLOWAY, J.P. Introdução à programação para a Engenharia: Resolvendo proble-</p><p>mas com algoritmos. 1ª ed. Rio de Janeiro: LTC, 2006.</p><p>ASCENCIO, A., F., G. e CAMPOS, E., A. V., Fundamentos da Programação de Computa-</p><p>dores. Prentice Hall, 2002.</p><p>FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de Programação – A Construção</p><p>de Algoritmos e Estruturas de Dados. São Paulo: Makron Books, 2005.</p><p>MEDINA, Marco; FERTIG, Cristina. Algoritmos e Programação - Teoria e Prática - 2ª</p><p>Edição - Editora Novatec, 2006.</p><p>FEOFILOFF, P. Algoritmos em Linguagem C. Rio de Janeiro: Elsevier, 2009.</p><p>GUIMARÃES, A; LAGES, N. Algoritmos e Estruturas de Dados. Livros Técnicos e Cien-</p><p>tíficos. 1985.</p><p>LOPES, A.; GARCIA, G. Introdução a programação - 500 algoritmos. Rio de Janeiro:</p><p>Elsevier, 2002.</p><p>REFERÊNCIA:</p><p>UNIDADE 5 :</p><p>LINGUAGEM C/C++: CONTROLE DE FLUXO</p>