Prévia do material em texto
FUNDAMENTOS DE PROGRAMAÇÃO I AULA 18: TEÓRICA Aprofundamento em Repetição e Modularização Prof. Janderson Universidade Federal de Lavras Departamento de Ciência da Computação Exemplo 1 Modularização - Números Harshad Na matemática, um número Harshad é um número inteiro que é divisível pela soma dos seus dígitos. O número 81, por exemplo, é um número Harshad pois 8 + 1 = 9, e 81 % 9 = 0. Escreva uma função que receba um inteiro, e retorne um valor lógico que diz se ele é um número Harshad ou não. O processamento dessa função deverá chamar outra função que receberá um inteiro e deverá retornar a soma de seus dígitos. Exemplo 1 Utilize ambas funções em um programa que terá como entrada um número (inteiro e positivo), e deverá exibir como saída o valor lógico retornado pela função. Dica: transforme o número em uma string para obter a soma dos dígitos. Exemplo de Entrada: 81 Exemplo de Saída: True Exemplo de Entrada: 143 Exemplo de Saída: False def somar_digitos(num): num = str(num) soma = 0 for i in range(len(num)): soma += int(num[i]) return soma def harshad(num): soma = somar_digitos(num) if num % soma == 0: return True return False def principal(): numero = int(input()) print(harshad(numero)) principal() Exemplo 2 Modularização - Condensação de strings Escreva uma função que receba como parâmetro duas strings e retorne uma string formada pela condensação das duas. As strings "guitarra" e "raio" virariam "guitarraio", por exemplo. Caso não seja possível condensar as duas strings em uma só string, sua função deverá retornar a palavra "impossivel". Essa função deverá fazer parte de um programa principal que terá como entrada duas strings, e deverá exibir como saída o retorno da função. Exemplo 2 Exemplo de Entrada: estrela elastico Exemplo de Saída: estrelastico Exemplo de Entrada: star wars Exemplo de Saída: impossivel def iguais(A,B,quant): iguais = True contA = len(A)-1-quant contB = 0 while contA < len(A) and iguais: if A[contA] != B[contB]: iguais = False contA += 1 contB += 1 return iguais def condensar(A, B): contA = 0 quant = -1 while contA < len(A): tentativa = iguais(A,B,contA) if tentativa: quant = contA contA += 1 if quant != -1: saida = A for i in range(quant+1,len(B)): saida += B[i] return saida else: return "impossivel" def principal(): palavra1, palavra2 = input().split() print(condensar(palavra1,palavra2)) principal() Exemplo 3 Modularização - Tiro ao alvo Faça um programa que calcule sua probabilidade de acertar um alvo distante. Você deve receber a distância do alvo em metros, e em seguida o alvo desenhado com a seguinte convenção: "." representa espaços em branco, "#" representa um pedaço do alvo, caractere "0" indica que terminou de ler o alvo. A probabilidade será calculada considerando a porcentagem que o alvo ocupa em relação a todo o espaço e a distância, sendo que cada metro de distância diminui 8% da chance de acerto. O cálculo da porcentagem do alvo deve ser feita através de uma função. Exemplo 3 Exemplo de entrada: 2 0 Exemplo de saída: 51 def prob(rel,dist): for i in range(dist): rel = rel - 0.08*rel return rel * 100 def espaco(alvo): total = len(alvo) area = 0 for i in range(total): if alvo[i] == "#": area += 1 return area/total def principal(): dist = int(input()) alvo = "" linha = "" while linha != "0": linha = input() if linha != "0": alvo += linha relEsp = espaco(alvo) print(round(prob(relEsp,dist))) principal() Slide 1 Passagem de Parâmetros Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10