Skip navigation

Category Archives: programação

Meu irmão tá cursando o primeiro período de Ciência da Computação na UESB, então estamos sempre batendo um papo sobre programação e compartilhando o que estamos aprendendo. Essa noite. ele comentou que quebrou a cabeça até descobrir como escrever um código para calcular o fatorial de um número inserido pelo usuário.

Eu também passei horas tentando descobrir o caminho. O mais surpreendente é que, no final, o código é muito simples…

#!/bin/python
#calculador de fatorial

n = int(raw_input(‘Digite um numero: ‘))

resultado = 1

lista = range(1,n+1)

for x in lista:

resultado = x * resultado

print ‘%s! = %s’ % (n, resultado)

O fatorial de um número é ele multiplicado por todos os números positivos e menores que ele. Exemplo 5! = 5 x 4 x 3 x 2 x 1.

A lógica do programa está em gerar uma lista que começa no número 1 e vai até o número digitado pelo usuário [ range(1,n+1) ]. O range(1,6) por exemplo, gera a lista [1, 2, 3, 4, 5]. Antes disso, eu havia atribuído o valor 1 à variável ‘resultado’. Em seguida, cada número da lista é multiplicado pelo resultado da multiplicação anterior.

A última linha apenas imprime o resultado do fatorial.

Se alguém tiver mais sugestões de bons desafios de programação, deixem comentários.

Nos últimos meses, tenho sentido vontade de me aventurar pelo mundo da programação e do desenvolvimento web, sendo assim, comecei a estudar lógica de programação e Python, uma linguagem de fácil aprendizado e com muitos recursos.

Hoje eu resolvi praticar um pouco e escrevi um programa para calcular troco e mostrar como entregá-lo com o menor número de notas possíveis.

Veja como ficou o código:

#!/bin/python
# -*- coding: iso-8859-15 -*-
#contador de troco

preco = int(raw_input(‘Digite o valor da compra: ‘))
dinheiro = int(raw_input(‘Digite a quantia de dinheiro entregue: ‘))
print

troco = dinheiro – preco

if troco > 0:

print ‘Valor do troco: R$ %s.’ % troco
print

for p in 100, 50, 20, 10, 5, 2, 1:

if troco >= p:

n = troco/p
r = troco – p*n
print ‘: %s nota(s) de R$ %s.’ % (n, p)
troco = r

else:

print ‘O dinheiro entregue é menor do que o valor da compra.’

Código comentado:

preco = int(raw_input(‘Digite o valor da compra: ‘))

O comanto raw_input(‘ ‘) recebe os dados digitados pelo usuário. Como estes dados são considerados como string, ou seja, apenas uma seqüência de caracteres, é necessário transformá-los em número para que, assim, podermos efetuar operações matemáticas com esses dados. Preferi usar o comando int(), o qual converte os dados em números inteiros. Por fim, o número é armazenado na variável preco.

O mesmo se dá na linha seguinte para a variável dinheiro. O print da linha seguinte apenas gera uma linha em branco durante a execução do programa. Já na linha:

troco = dinheiro – preco

calculamos o valor do troco.

if troco > 0:

Para que o troco exista, ele tem que ser maior do que zero (óbvio!).

Se o troco for menor que zero, o programa pula para a linha:

else:
print ‘O dinheiro entregue é menor do que o valor da compra.’

a qual avisa o usuário que o valor do dinheiro é menor do que o das despesas.

Se o troco for maior do que zero, o programa vai mostrar o valor do troco:

print ‘Valor do troco: R$ %s.’ % troco

No bloco seguinte, eu usei o seguinte raciocínio: o cliente só vai receber uma nota de 100 se o troco for maior que 100 e assim sucessivamente com todas as notas (100, 50, 20, 10, 5, 2 e 1). O comando for vai fazer a comparação com o valor de cada nota.

if troco >= p:

Se o troco é maior ou igual a 100, então o número de notas de 100 que o cliente vai receber é o valor do troco dividido por 100 (n = troco/p). Nesse caso, n sempre vai ser um número inteiro em razão do uso do comando int() no começo do programa. A operação envolvendo dois número inteiros em Python, sempre vai resultar num número inteiro. Então, se o valor do troco for R$ 107, n será igual a 1.

Daí eu uso r = troco – p*n pra calcular o resto da operação. O resto (r) é igual ao troco menos o valor da nota múltiplicado pela quantidade destas. Eu não precisei usar parênteses no p*n devido a uma propriedade do Python de efetuar a multiplicação antes da subtração.

print ‘: %s nota(s) de R$ %s.’ % (n, p)

Mostra a quantidade de notas de 100 que o cliente tem direito. Por fim, temos a linha:

troco = r

que substitui o valor da variável troco pelo valor de r. A partir daí, o programa vai repetir essas operações para todos os valores presentes na linha for p in 100, 50, 20, 10, 5, 2, 1:

É isso depois vou tentar fazer o programa calcular os centavos do troco também. Qualquer erro ou sugestão de melhorias no algoritmo, deixem comentário.

Obs.: Pra executar o programa, basta salvá-lo como arquivo de texto e digitar no terminal: python arquivo.py

Manuais que eu utilizei: Aprenda a Programar do Luciano Ramalho e Tutorial Python.