Baixe o app para aproveitar ainda mais
Prévia do material em texto
I C C - A u l a 0 3 – P r o f . P i t e r i E. R. Davidson Lembre-se. Computers do not solve problems. People do! Aula de Hoje I C C - A u l a 0 3 – P r o f . P i t e r i ¾ Desenvolvimento de algoritmos (continuação ...) ¾ Representação por fluxogramas: ¾ Simbologia básica (seleção); ¾ Operadores boleanos; ¾ Operadores relacionais; ¾ Expressões boleanas; ¾ Exemplos, exercícios; Representação de Algoritmos (Fluxogramas) . . . Continuação dos conceitos já vistos sobre algoritmos algoritmos ¾Comandos de Atribuição ¾Comandos de Seleção ¾Comandos de Repetição ¾Comandos de entrada e saída Estruturas de Controle : Existem somente três classes (tipos) delas. O objetivo é controlar o fluxo de execução num algoritmo, ou seja, a ordem em que as instruções são executadas. Estruturas de Controle ¾Comandos de Atribuição ¾Comandos de entrada e saída 9 9 Aula de Hoje I C C - A u l a 0 3 – P r o f . P i t e r i Fluxogramas – Estrutura de Controle de Seleção igual= diferente≠ DescriçãoOperadores maior> menor< maior ou igual≥ menor ou igual ≤ Operadores Relacionais I C C - A u l a 0 3 – P r o f . P i t e r i OBSERVAÇÃO: Os símbolos acima serão usados nas representações de algoritmos por fluxogramas e pseudocódigos. Quando iniciarmos o estudo da linguagem de programação C, iremos verificar que os símbolos associados aos operadores relacionais, são ligeiramente diferentes. Fluxogramas – Estrutura de Controle de Seleção Expressões Boleanas / Lógicas Envolvem constantes, variáveis, funções (pré-definidas ou não), operadores aritméticos, operadores relacionais e operadores boleanos/lógicos. Sempre produz um valor/resultado boleano (falso (F), verdadeiro (V)). DescriçãoOperadores conjunçãoE disjunçãoOU negaçãoNÃO Operadores Boleanos/Lógicos Cachorros são mamíferos e sabem nadar. Cachorros são mamíferos e sabem voar. Exemplos de frases (afirmações ou proposições) usando o conectivo E, cujos resultados são valores lógicos: Verdadeiro Falso I C C - A u l a 0 3 – P r o f . P i t e r i Fluxogramas – Estrutura de Controle de Seleção VFFFF VVFVF FVFFV FVVVV NÃO AA OU BA E BBA Tabela Verdade OBSERVAÇÃO: Com o auxílio da Tabela Verdade acima, você será capaz de resolver qualquer expressão boleana. I C C - A u l a 0 3 – P r o f . P i t e r i Fluxogramas – Estrutura de Controle de Seleção Exemplos de Expressões Boleanas : (2*seno(3.141565) – 13+(b/c)*c ) > ( (a+b)*raiz(c*d) ) ( a ≤ 12.7 ) E ( b ≥ (c*d) ) ( raiz(a) ≤ 12.7 ) OU ( ( b ≥ d ) OU (a = c) ) ( (b%2 = 0) OU ( b ≥ d ) ) E ( QUOC(a,b) ≠ 3 ) OU (NÃO (a > 7) ) Observem os diferentes tipos de operadores e de operandos existentes numa expressão boleana. ( 25 ≤ 13 ) I C C - A u l a 0 3 – P r o f . P i t e r i ( (ano % 400 = 0) OU ((ano % 4 = 0) E (ano % 100 ≠ 0)) Simbologia associada a Fluxogramas Significado Indica um processo (ação) de decisão. Está associado aos Comandos de Seleção e de Repetição. Símbolo I C C - A u l a 0 3 – P r o f . P i t e r i OBSERVAÇÕES: ¾ Esse símbolo sempre vem acompanhado de uma seta de entrada e duas, de saída; ¾ Em seu interior sempre deverá existir uma expressão boleana; ¾ Em geral, nos slides que forneço a vocês, as diferentes caixas associadas aos símbolos de fluxograma estão preenchidas com cores. Isso não possui nenhum significado. O Objetivo é apenas fazer um destaque. Fluxogramas – Estrutura de Controle de Seleção (expressão boleana) FV próximo_comando açãon : pode ser qualquer instrução válida (uma ou mais). I C C - A u l a 0 3 – P r o f . P i t e r i ação1 ação2 O propósito de um Comando de Seleção é selecionar o curso de uma ação entre duas possíveis; Forma Geral : Fluxogramas – Estrutura de Controle de Seleção Forma Geral : (expressão boleana) FV comando21 comando22 ....... comando2n comando11 comando12 ....... comando1n próximo_comando I C C - A u l a 0 3 – P r o f . P i t e r i Fluxogramas – Estrutura de Controle de Seleção Variante 1 : (expressão boleana) FV comando21comando11 próximo_comando I C C - A u l a 0 3 – P r o f . P i t e r i Fluxogramas – Estrutura de Controle de Seleção Variante 2: (expressão boleana) FV comando11 comando12 ... comando1n próximo_comando (expressão boleana) F V próximo_comando comando11 comando12 ....... comando1n I C C - A u l a 0 3 – P r o f . P i t e r i Fluxogramas – Estrutura de Controle de Seleção Variante 3 : (expressão boleana) FV comando11 próximo_comando I C C - A u l a 0 3 – P r o f . P i t e r i Estrutura de Controle de Seleção OBSERVAÇÕES: I C C - A u l a 0 3 – P r o f . P i t e r i ¾ O número de instruções/comandos associados ao fato da expressão boleana ser verdadeira ou falsa, pode variar; ¾ As instruções/comandos associados ao fato da expressão boleana ser falsa, não necessariamente precisam estar presentes. Em outras palavras, elas podem ser omitidas. Isso acontece quando estamos interessados somente no caso (situação) em que a expressão boleana é verdadeira. Nesse caso, quando a expressão boleana for falsa, nenhuma ação (comando/instrução) será executado; ¾ Lembre-se, as instruções/comandos associadas ao fato da expressão boleana ser verdadeira ou falsa, são mutuamente excludentes (se uma delas for executada, automaticamente a outra não será); ¾ A estrutura de controle de seleção sempre escolhe uma ação, entre duas possíveis. Quem decide qual o “caminho” a seguir, é o valor da expressão boleana; ¾ Uma instrução ou comando pode ser quaisquer daqueles já vistos (Entrada/Saída, atribuição/sequência, seleção, repetição); ¾ Para todos os exercícios a seguir, vamos supor a validade dos dados de entrada. Voltaremos a discutir essa questão em outro momento. Problema: Dado um número inteiro positivo p, verificar se esse número é PAR ou ÍMPAR. Lembrem-se!!! O operador % (símbolo de porcentagem) indica o resto da divisão entre dois operandos inteiros. Como é possível caracterizar se um número inteiro positivo é par? ¾ Todo número inteiro positivo par é divisível por 2; FATOS:Æ ¾ Em outras palavras, o resto da divisão do número p por 2 é igual a zero. p%2 = 0 V F I C C - A u l a 0 3 – P r o f . P i t e r i Análise básica do problema: Problema: Dado um número inteiro positivo p, verificar se esse número é PAR ou ÍMPAR. algoritmoDados de Entrada Dados de Saída p É Par algoritmo É Ímpar Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? Análise básica do problema: Problema: Dado um número inteiro positivo p, verificar se esse número é PAR ou ÍMPAR. p “O número introduzido é ímpar” V F (p%2) = 0 FIM INICIO I C C - A u l a 0 3 – P r o f . P i t e r i “O número introduzido é par” Problema: Calcule a Nota Final (verificar se o aluno foi aprovado) de um aluno numa dada disciplina, sabendo que esta nota é obtida a partir da média aritmética de 4 provas e de 3 trabalhos. Considere um peso de 80% para as provas e de 20% para os trabalhos. Lembre-se que você precisa representar todas as quantidades envolvidas em seu problema através de variáveis ou de constantes. I C C - A u l a 0 3 – P r o f . P i t e r i Análise básica do problema: 1 2 3 4( ) / 4.0map p p p p← + + + 1 2 3( ) / 3.0mat t t t← + + 0.8* 0.2*mf map mat← + Média aritmética de provas Média aritmética de trabalhos Média final 5.0 aluno aprovado 5.0 aluno reprovado mf ≥ →⎧⎨ < →⎩ algoritmoDados de Entrada Dados deSaída p1, p2, p3, p4, t1, t2, t3 Aluno aprovado algoritmo Problema: Calcule a Nota Final (verificar se o aluno foi aprovado) de um aluno numa dada disciplina, sabendo que esta nota é obtida a partir da média aritmética de 4 provas e de 3 trabalhos. Considere um peso de 80% para as provas e de 20% para os trabalhos. I C C - A u l a 0 3 – P r o f . P i t e r i Aluno Reprovado Variáveis para representar: Æ Média aritmética das provas (map); ÆMédia aritmética dos trabalhos (mat); Æ Média final (mf). Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? p1, p2, p3, p4 “O Aluno foi aprovado” t1, t2, t3 matÅ(t1+t2+t3) / 3 mapÅ(p1+p2+p3+p4)/4 mfÅ0.8*map+0.2*mat “O Aluno foi reprovado”mf ≥ 5.0 F V FIM INICIO I C C - A u l a 0 3 – P r o f . P i t e r i Problema: Dados dois valores inteiros quaisquer, encontre o MAIOR (ou igual) entre eles. Observem que por enquanto não estou interessado na igualdade. I C C - A u l a 0 3 – P r o f . P i t e r i ] a b ] b a Análise básica do problema: ] b a algoritmoDados de Entrada Dados de Saída a,b Maior (a, b)algoritmo I C C - A u l a 0 3 – P r o f . P i t e r i Problema: Dados dois valores inteiros quaisquer, encontre o MAIOR (ou igual) entre eles. Observem que por enquanto não estou interessado na igualdade. Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? Problema: Dados dois valores inteiros quaisquer, encontre o MAIOR (ou igual) entre eles. a,b a ≥ b b, “é maior que a ”, a a, “é maior (ou igual) a ”, bV F FIM INICIO I C C - A u l a 0 3 – P r o f . P i t e r i Problema: Verificar se o algarismo da unidade dos números inteiros positivos num1 e num2, são iguais. I C C - A u l a 0 3 – P r o f . P i t e r i ¾ Vamos lembrar que estamos manipulando números no sistema de numeração decimal (base 10); ¾ Todas as vezes que dividimos um número por 10, quais são os restos possíveis? Exemplos: 1234 10 ¾ Lembrem-se que o operador de resto é dado pelo símbolo % (porcentagem); 4 123 798 10 8 79 1234%10 = 4 QUOC(1234,10) = 123 798%10 = 8 QUOC(798,10) = 79 ¾ O quociente da divisão inteira de a por b é dado pela primitiva QUOC(a,b). Análise básica do problema: Problema: Verificar se o algarismo da unidade dos números inteiros positivos num1 e num2, são iguais. I C C - A u l a 0 3 – P r o f . P i t e r i num1,num2 São iguais algoritmo São diferentes Erro nos dados de entrada Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? algoritmoDados de Entrada Dados de Saída Variáveis para representar: Æ algarismo da unidade de num1: uni1 Æ algarismo da unidade de num1: uni1 INICIO num1, num2 FIM uni1Å num1 %10 uni2Å num2 %10 “Os algarismos dos respectivos valores de entrada SÃO IGUAIS” (num1>0) E (num2 > 0) “Dados Incorretos” (un1 = un2) “Os algarismos dos respectivos valores de entrada SÃO DIFERENTES” F V V F I C C - A u l a 0 3 – P r o f . P i t e r i Estrutura de Controle de Seleção I C C - A u l a 0 3 – P r o f . P i t e r i Sabemos que o propósito de um Comando de Seleção é selecionar o curso de uma ação entre duas possíveis. Além disso, vimos nos exemplos anteriores, problemas onde isso se aplica. A questão agora é: E quando for necessário escolher o curso de uma ação entre várias possíveis? A solução será usar vários comandos de seleção (tantos quanto necessários) encadeados (aninhados), como mostram os próximos dois slides. Múltiplas Estruturas de Controle de Seleção Aninhadas Estrutura de Controle de Seleção Aninhadas expressão boleana1 FV I C C - A u l a 0 3 – P r o f . P i t e r i expressão boleana3 FVexpressão boleana2 FV ação1 ação2 ação4ação3 açãon : pode ser qualquer instrução válida (uma ou mais). expressão boleana1 FV I C C - A u l a 0 3 – P r o f . P i t e r i expressão boleana2 Vação1 ação2 ação4 ação3 F expressão boleana3 V F expressão boleana4 V F ação5 próximo_comando Problema: Dados três valores inteiros quaisquer, encontre o MAIOR (OU IGUAL) entre eles. ] c a b Nas situações abaixo, quem é o maior entre os três ? ] b c a ] c b a I C C - A u l a 0 3 – P r o f . P i t e r i Observe que não foram colocadas todas as possibilidades. Para três valores, qual o número total de permutações possíveis ? Análise básica do problema: V F V F F V b a ba b a a b c ?? ? ccc I C C - A u l a 0 3 – P r o f . P i t e r i a ≥ b b ≥ c a ≥ c Análise básica do problema: algoritmoDados de Entrada Dados de Saída a, b, c algoritmo I C C - A u l a 0 3 – P r o f . P i t e r i Maior (a, b, c) Problema: Dados três valores inteiros quaisquer, encontre o MAIOR (OU IGUAL) entre eles. Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? INICIO a,b,c b, “é o maior (ou igual) valor entre”, a, b, c V F V F FIM F V I C C - A u l a 0 3 – P r o f . P i t e r i a, “é o maior (ou igual) valor entre”, a, b, c c , “é o maior (ou igual) valor entre”, a, b, c Solução 01: a ≥ b a ≥ c b ≥ c INICIO a,b,c b, “é o maior (ou igual) valor entre”, a, b, c (a ≥ b) E (a ≥ c) F V FIM a, “é o maior (ou igual) valor entre”, a, b, c c , “é o maior (ou igual) valor entre”, a, b, c Solução 02: (b ≥ a) E (b ≥ c) F V I C C - A u l a 0 3 – P r o f . P i t e r i INICIO a,b,c b, “é o maior (ou igual) valor entre”, a, b, c (a ≥ b) E (a ≥ c) F V FIM a, “é o maior (ou igual) valor entre”, a, b, c c , “é o maior (ou igual) valor entre”, a, b, c Solução 03: (b ≥ c) F V I C C - A u l a 0 3 – P r o f . P i t e r i INICIO a,b,c b ≥ maior F V FIM maior, “é o maior (ou igual) valor entre”, a, b, c Solução 04: F V I C C - A u l a 0 3 – P r o f . P i t e r i maior Å a maior Å b c ≥ maior maior Å c Problema: Encontre as raízes reais de uma equação do segundo grau. 2 0, 0.ax bx c a+ + = ≠ 1 2 bx a − + Δ= 2 2 bx a − − Δ=Raízes:Æ 2 4b acΔ = −Onde: Se Æ Raízes reais Æ Raízes complexas 0Δ ≥ 0Δ < Variáveis do problema I C C - A u l a 0 3 – P r o f . P i t e r i Análise básica do problema: Problema: Encontre as raízes reais de uma equação qualquer do segundo grau, dada pela equação: Variáveis para representar: Æ valor do delta: delta Æ raiz 1: x1 Æ raiz 2: x2 2 0, 0.ax bx c a+ + = ≠ I C C - A u l a 0 3 – P r o f . P i t e r i a, b, c x1 algoritmo x2 Raízes reais. Erro nos dados de entrada algoritmoDados de Entrada Dados de Saída Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? INICIO a,b,c “Raiz X1=”, x1 “Raiz X2-”, x2 “Os valores dados não determinam uma equação de segundo grau” FIM F V deltaÅ (b*b)-(4*a*c) a ≠ 0 delta ≥ 0 “Raízes Complexas” V F 1 ( ) /(2* )x b delta a← − + 2 ( ) /(2* )x b delta a← − − I C C - A u l a 0 3 – P r o f . P i t e r i Problema: Dados três números reais l1, l2 e l3, representando os lados de um triângulo, verifique se o triângulo é Eqüilátero, Isósceles ou Escaleno. Em outras palavras, classifique o triângulo em função de seus lados. Condição de Existência de um triângulo:Æ Cada um dos lados deve ser menor que a soma dos outros dois. Ou seja, as relações abaixo devem ser satisfeitas. 1 2 3 21 3 3 1 2 l l l l l l l l l < + < + < + As medidas ao lado não definem um triângulo válido. 1l 2l 3l I C C - A u l a 0 3 – P r o f . P i t e r i Exemplo : Análise básica do problema: Problema: Dados três números reais que representam os lados de um triângulo, classifique-o em função de seus lados, ou seja, o triângulo pode ser Eqüilátero, Isósceles ou Escaleno. I C C - A u l a 0 3 – P r o f . P i t e r i I C C - A u l a 0 3 – P r o f . P i t e r i l1, l2, l3 algoritmo Triângulo classificado algoritmoDados de Entrada Dados de Saída Dados (quantidades) gerados pelo algoritmo. O algoritmo tem que representar outros valores intermediários? Erro nos dados de entrada INICIO l1, l2, l3 “Os valores dados não definem um triângulo” V F V F (l1 < l2 + l3) E (l2 < l1 + l3) E (l3 < l1 + l2) (l1 = l2) (l2 = l3) V “O triângulo é Eqüilátero” (l2 = l3) “O triângulo é Isósceles” V F V F “O triângulo é Escaleno” FIM (l1 = l3) F versão 1 : I C C - A u l a 0 3 – P r o f . P i t e r i INICIO l1, l2, l3 “Os valores dados não definem um triângulo” V F V (l1 < l2 + l3) E (l2 < l1 + l3) E (l3 < l1 + l2) (l1 = l2) E (l2 = l3) “O triângulo é Eqüilátero” “O triângulo éIsósceles” F F “O triângulo é Escaleno” FIM (l1 = l2) OU (l1 = l3) OU (l2 = l3) V versão 2 : I C C - A u l a 0 3 – P r o f . P i t e r i Observação: Quando houver intersecção entre as setas, é comum o uso de uma simbologia alternativa, como a representada abaixo. I C C - A u l a 0 3 – P r o f . P i t e r i Exercício 01: Dados quatro valores inteiros quaisquer, encontre o maior entre eles. Elabore duas versões deste problema: (versão a) - as caixas de seleção contêm expressões boleanas simples (sem operadores boleanos); (versão b) – as caixas de seleção poderão conter operadores boleanos. Exercício 02: Dado um ano no intervalo fechado [1750,2500], verifique se esse ano é bissexto. Observação: Um ano é bissexto se for múltiplo de 4 mas não de 100, ou, se for múltiplo de 400. EXEMPLO: 1900 não foi um ano bissexto, enquanto os anos 2000 e 2004 foram, e, 2008, é. Para cada um dos exercícios abaixo, elabore os respectivos fluxogramas. Exercício 03: Leia um número inteiro e verifique se ele pertence ao intervalo [0,100]. Observação: Se , também é comum usarmos a notação[ , ]x a b∈ .a x b≤ ≤ Matematicamente está correto. Entretanto, quando formos escrever essa expressão lógica em nossos algoritmos, iremos dividi-la em duas e usar o conectivo E. Assim, esta expressão será reescrita da seguinte forma: ( ) E ( ).x a x b≥ ≤ I C C - A u l a 0 3 – P r o f . P i t e r i Exercício 04: Leia um número inteiro positivo e verifique se ele é divisível por 2, 3 e 5 simultaneamente. Exercício 05: A Fórmula de Héron computa a área de um triângulo a partir das medidas de seus lados a, b e c, e, é dada por , onde é o semi-perímetro do triângulo. ( )( )( )s s a s b s c− − − ( )/2s a b c= + + Exercício 06 (**): Leia as coordenadas de um ponto c relativas ao centro de uma circunferência e um valor positivo r, relativo a seu raio. Em seguida, leia as coordenadas de um ponto arbitrário p, e determine se p pertence ao interior, exterior, ou, se está sobre a curva definida pela circunferência (locus geométrico). Utilize conhecimentos básicos de GAV e Geometria Plana. Classificação de pontos em relação a circunferências: interior exterior sobre I C C - A u l a 0 3 – P r o f . P i t e r i Exercício 06 (**): Dados três pontos p1, p2, e p3 e um quarto ponto arbitrário p, determine se p pertence ao interior, exterior, ou, se está sobre a curva definida pela circunferência (locus geométrico) que passa pelos três primeiros pontos. Classificação de pontos em relação a circunferências: interior exterior sobre I C C - A u l a 0 3 – P r o f . P i t e r i Um enunciado alternativo para o exercício 06, seria: Exercício 09 (***): Dado as coordenadas c1 e c2 relativas aos centros de dois círculos e seus respectivos raios r1 e r2, determine se há ou não intersecção entre eles. Se houver, calcule a área de intersecção e imprima o resultado. Exercício 07: Leia três números inteiros positivos dd, mm e ano, representando, respectivamente, dia, mês e ano, e, determine se os valores introduzidos caracterizam uma data válida. Exercício 08 (*): Dado as coordenadas p1 e p2 relativas aos pontos extremos de um sem intersecção tangentes intersecção coincidentes I C C - A u l a 0 3 – P r o f . P i t e r i segmento orientado e as coordenadas de um terceiro ponto p, classifique este ponto em relação ao segmento orientado, ou seja, se ele se localiza a esquerda, a direita, ou sobre a reta suporte que passa pelo segmento (pontos são colineares). 1 2p p JJJJJJG 2 2 2 2 0 0 0 0 ( , ) 0 0 0 0 x y se x e y x y se x e y f x y x y se x e y x y se x e y + ≥ ≥⎧⎪ + ≥ <⎪= ⎨ + < ≥⎪⎪ + < <⎩ Exercício 10: Avalie a função abaixo para quaisquer dois valores de entrada introduzidos pelo usuário. ( , )f x y Próxima aula: Continuação da representação de algoritmos por meio de fluxogramas. I C C - A u l a 0 3 – P r o f . P i t e r i ¾ Estrutura de controle de repetição; ¾ Resolução de exercícios usando esta estrutura e todas as anteriores; ¾ Obviamente que o nível de dificuldade de nossos exercícios (problemas) vão aumentar consideravelmente. Portanto, estudem todas as aulas anteriores e não deixem as dúvidas se acumularem. Bons estudos e excelentes leituras!!! A linguagem é apenas o instrumento da ciência, e as palavras não passam de símbolos das idéias. Samuel Johnson (1709-1794) Um bom programador pode superar uma linguagem ruim ou um sistema operacional desajeitado, mas nem mesmo um excelente ambiente de programação poderá salvar um programador ruim. Brian W. Kernighan e Rob Pike The Practice of Programming I C C - A u l a 0 3 – P r o f . P i t e r i Na primeira noite /eles se aproximam Colhem uma flor de nosso jardim/ E não dizemos nada./ Na segunda noite/ Já não se escondem;/ pisam as flores/ Matam nosso cão/ e não dizemos nada/ Até que um dia/ o mais frágil deles/ Entra sozinho em nossa casa/ rouba-nos a lua e,/ conhecendo nosso medo/ Arranca-nos a voz da garganta./ E porque não dissemos nada,/ Já não podemos dizer nada. Maiakowski I C C - A u l a 0 3 – P r o f . P i t e r i
Compartilhar