Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Estruturas de Dados I Estruturas Condicionais em Python Resolução de Problemas Algorítmicos Definir as entradas e as saídas Fim Iden?ficar o problema Início Converter o algoritmo em declarações da linguagem de programação Projetar o algoritmo Decompor Refinar passo a passo Testar o programa resultante 1 2 3 4 5 Conteúdo Estruturas Condicionais Simples Estruturas Condicionais Compostas Como montar uma condição? Estruturas Condicionais Encadeadas Estruturas de Programação ¨ Qualquer programa de computador pode ser escrito combinando-‐se os três ?pos básicos de estruturas de programação: Sequencial Condicional Repe?ção Estrutura Sequencial ¨ É a estrutura de programação mais simples. ¨ O fluxo de comandos do algoritmo segue a mesma sequência linear da nossa escrita: ¤ De cima para baixo ¤ Da esquerda para direita p/ esquerda p/ baixo a = 3 b = 4 m = (a + b)/2 print(m) Estrutura Condicional ¨ Permite alterar o fluxo de execução, de forma a selecionar qual parte do algoritmo deve ser executada. ¨ Essa decisão é tomada a par?r de uma condição, que pode resultar apenas em: ¤ Verdade, ou ¤ Falsidade ? Estrutura Condicional Simples ¨ Quando a condição é verdadeira, o “bloco verdade” é executado. ¨ Quando a condição é falsa, o “bloco verdade” não é executado. if (delta < 0): print('Nao tem raizes reais') início a, b, c fim delta < 0 F Não tem raízes reais V delta ← b**2 – 4*a*c Estrutura Condicional Simples :: Em Python a = float(input("Digite a: ")) b = float(input("Digite b: ")) c = float(input("Digite c: ")) início a, b, c fim delta < 0 F Não tem raízes reais v delta ← b**2 – 4*a*c if (delta < 0): print("Nao tem raizes reais") delta = b**2 – 4 * a * c Condições sempre terminam com sinal de dois pontos Comandos internos às condições devem ser recuados (tecla TAB) Exemplo A # Script que calcula o valor do ingresso # a depender de se houver meia entrada op = input("Meia entrada? (S/N) ") ingresso = 30 if (op == "S"): ingresso = ingresso/2 print("Valor do ingresso: ", ingresso) Recuo do comandos dependente da condição (tecla TAB) Conteúdo Estruturas Condicionais Simples Estruturas Condicionais Compostas Como montar uma condição? Estruturas Condicionais Encadeadas Estruturas Condicionais Compostas ¨ Quando a condição é verdadeira, o “bloco verdade” é executado. ¨ Quando a condição é falsa, o “bloco falsidade” é executado. if (delta < 0): print("Nao tem raiz real") else: print("Tem raiz real") início a, b, c fim delta < 0 F Não tem raízes reais V delta ← b**2 – 4*a*c Tem raiz real Estruturas Condicionais Compostas :: Em Python if (delta < 0): print("Nao tem raiz real") else: print("Tem raiz real") if e else sempre terminam com sinal de dois pontos Comandos internos ao if e ao else devem ser recuados início a, b, c fim delta < 0 F Não tem raízes reais V delta ← b**2 – 4*a*c Tem raiz real a = float(input("Digite a: ")) b = float(input("Digite b: ")) c = float(input("Digite c: ")) delta = b**2 – 4 * a * c Exemplo B # Script que verifica se o aluno passou ou nao com base na media m = float(input("Digite sua media: ")) if (m >= 5.0): print("Passou") else: print("Reprovou") if e else sempre terminam com sinal de dois pontos Comandos internos ao if e ao else devem ser recuados Indentação ¨ O comando else deve estar alinhado com o comandos if correspondente. ¨ Todos os comandos de um mesmo bloco deverão ter o mesmo recuo. Indentação :: Cuidados Indentação Válida Indentação Inválida if (condição): comando comando else: comando comando if (condição): comando comando else: comando comando if (condição): comando comando else: comando comando Indentação :: Diferenças if (temp > 25): print("Quente") print("Ligue o ventilador") print("Tchau") if (temp > 25): print("Quente") print("Ligue o ventilador") print("Tchau") F V t > 25 Tchau Quente Ligue o ... F V t > 25 Tchau Quente Ligue o ... Não confunda Indentação (identação) • Inserção de espaços em um código de linguagem de programação Endentação • Encaixe dos dentes de uma peça denteada com os de outra Problema 1 ¨ Uma lata de leite em pó da marca A, com 400g, custa R$ 8,39. ¨ Um saco de leite em pó da marca B, com 1kg, custa R$ 20,30. ¨ Qual marca tem o melhor preço? Problema 1 2 – Definir entradas e saídas Grandeza Unidade de medida Faixa de valores Entradas Saídas Grandeza Unidade de medida Faixa de valores Entradas PrecoA R$ 8.39 PesoA kg 0.4 PrecoB R$ 20.30 PesoB kg 1.0 Saídas Marca -‐-‐-‐ {“A”, “B”} Problema 1 3 – Projetar algoritmo F V início PrecoA, PesoA PrecoB, PesoB fim marca ← “A” rA > rB marca ← “B” rA ← PrecoA/PesoA rB ← PrecoB/PesoB marca Problema 1 4 – Codificar em Python # Entrada de dados pA = float(input("Digite o preco da marca A: ")) pB = float(input("Digite o preco da marca B:")) mA = float(input("Digite o peso da marca A: ")) mB = float(input("Digite o peso da marca B: ")) rA = pA / mA rB = pB / mB if (rA > rB): marca = "B" else: marca = "A" print("Compre a marca ", marca) Recuo do comandos dependente da condição (tecla TAB) Problema 2 ¨ Um radar de trânsito verifica a velocidade dos veículos. ¨ Caso ultrapassem 60 km/h, emite-‐se um registro de multa. ¨ O valor da multa é de R $ 200,00 mais R$ 3,00 para cada 1 km/h acima do limite. ¨ Escreva um programa para determinar o valor da multa. Problema 2 2 – Definir entradas e saídas Grandeza Unidade de medida Faixa de valores Entradas Saídas Grandeza Unidade de medida Faixa de valores Entradas Velocidade km/h ≥ 0 Saídas Multa R$ ≥ 0 Problema 2 3 – Projetar o algoritmo V F início vel fim multa ← 200 + 3 * (vel – lim) vel > lim multa ← 0 lim ← 60 multa Problema 2 4 – Codificar em Python # Entrada de dados e definicao de constantes vel = float(input("Informe a velocidade: ")) lim = 60 # Limite de velocidade # Calculo do valor da multa if (vel > lim): multa = 200 + 3 * (vel – lim) else: multa = 0 # Exibicao de resultados print(multa) Problema 2 5 – Testar o script resultante 40 km/h 60 km/h 80 km/h Problema 3 ¨ A equação de uma circunferência de raio R é 𝑥↑2 + 𝑦↑2 = 𝑅↑2 . ¨ Escreva um algoritmo que, dado um ponto P qualquer, verifique se ele se encontra: ¤ Na circunferência ¤ No interior ¤ No exterior y x R Problema 3 2 – Definir entradas e saídas Grandeza Unidade de medida Faixa de valores Entradas Saídas Grandeza Unidade de medida Faixa de valores Entradas Raio -‐-‐-‐ >= 0 Coordenada X de P -‐-‐-‐ Coordenada Y de P -‐-‐-‐ Saídas Localização de P -‐-‐-‐ {interior, exterior, na circunferência} Problema 3 3 – Projetar algoritmo X**2 + Y**2 == R**2 X**2 + Y**2 < R**2 Na circunferência V P é interno F P é externo V F Problema 3 3 – Projetar algoritmo V F fim Externo C2 Interno V F início R, X, Y Na circunferência C1 X**2 + Y**2 == R**2 C1 X**2 + Y**2 < R**2 C2 Problema 3 4 – Codificar em Python # Entrada de dados r = float(input("Digite raio: ")) x = float(input("Digite coord. X do ponto: ")) y = float(input("Digite coord. Y do ponto: ")) if (x**2 + y**2 == r**2): print("Ponto estah na circunferencia.") else: if (x**2 + y**2 < r**2): print("Ponto eh interno.") else: print("Ponto eh externo.") Problema 4 ¨ Dados os coeficientes a, b, c de uma equação de 2º grau, determine se há raízes reais e, caso posi?vo, quais são elas. Problema 4 2 – Definir entradas e saídas Grandeza Unidade de medida Faixa de valores Entradas Saídas Grandeza Unidade de medida Faixa de valores Entradas Coeficiente a -‐-‐-‐ Coeficiente b -‐-‐-‐ Coeficiente c -‐-‐-‐ Saídas Raiz , se houver -‐-‐-‐ Raiz , se houver -‐-‐-‐ Problema 4 3 – Projetar algoritmo V F início a, b, c fim Não tem raiz real delta < 0 r ← -‐ b/(2*a) delta ← b**2 – 4*a*c V delta == 0 F r r1 ← (-‐ b + √delta)/(2*a) r2 ← (-‐ b -‐ √delta)/(2*a) r1, r2 Problema 4 4 – Codificar em Python # Entrada de dados a = float(input("Digite a: ")) b = float(input("Digite b: ")) c = float(input("Digite c: ")) delta = b**2 – 4 * a * c if (delta < 0): print("Nao tem raiz real.") else: if (delta == 0): r = -b / (2 * a) print("Uma raiz real") print(r) else: r1 = (-b + delta**0.5) / (2 * a) r2 = (-b - delta**0.5) / (2 * a) print("Duas raizes reais:") print(r1) print(r2) Problema 5 ¨ Projete um algoritmo para uma máquina caça-‐ níquel que gere 3 números aleatórios entre 1 e 10. ¨ Se os três números forem iguais, o jogador ganha. Caso contrário, ele perde. Problema 5 2 – Definir entradas e saídas Grandeza Unidade de medida Faixa de valores Entradas Saídas Grandeza Unidade de medida Faixa de valores Entradas N1 -‐-‐-‐ [1,10] N2 -‐-‐-‐ [1,10] N3 -‐-‐-‐ [1,10] Saídas Sucesso no jogo -‐-‐-‐ {Perdeu, Ganhou} Problema 5 3 – Projetar algoritmo N1 == N2 N2 == N3 perdeu F perdeu V ganhou F V Problema 5 3 – Projetar algoritmo V F F início Gerar N1, N2, N3 Ganhou! fim N1 == N2 Perdeu! Perdeu! N2 == N3 V Como gerar números aleatórios? Problema 5 4 – Codificar em Python # Biblioteca de nos. aleatorios import random # Gera nos. aleatorios entre 1 e 10 n1 = random.randint(1,10) n2 = random.randint(1,10) n3 = random.randint(1,10) if (n1 == n2): if (n2 == n3): print("Ganhou") else: print("Perdeu") else: print("Perdeu") Módulos em Python (Bibliotecas) ¨ Bibliotecas organizam funções bastante u?lizadas em arquivos diferentes. ¨ Assim, elas podem ser chamadas quando necessário, sem ter de reescrever tudo. ¨ Em Python, as bibliotecas também são conhecidas como módulos. Uso: <módulo>.<função>
Compartilhar