multimidia, python, iniciaçao a programacao, ideologia e outros temas livres
Calculando fatorial em Python
27 de Setembro de 2008, 0:00 - Um comentárioMeu 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 fatorialn = 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.
Related posts:
Minhas impressões do Arch Linux e do KDE 4.1
25 de Setembro de 2008, 0:00 - sem comentários aindaJá estou usando Arch Linux (versão 64 bits) há mais de um mês. Antes disso, eu estava utilizando o Slackware, mas, influenciado pelo relato do Liquuid, resolvi testar o Arch.
A instalação do Arch é bem parecida com a instalação do Slack, a maior diferença é que o disco de instalação do Arch tem apenas 380 MB e contém apenas a base mínima de um sistema GNU/Linux. Com isso, a pós-instalação dá um pouco de trabalho, é necessário consultar alguns tutoriais pra não ficar perdido depois de instalar a base do sistema. Tive problemas também para configurar o pppd (tenho uma conexão da vivo em que é necessário usar o pppd para conectar). Por sorte, eu estava com um notebook de um amigo em casa, daí copiei os arquivos de configuração do pppd de lá e consegui conectar à internet.
Gostei muito do pacman, o gerenciador de pacotes do Arch Linux, ele resolve dependências de maneira muito eficaz e possui o conceito de grupos de pacotes. Pra instalar o X, por exemplo, que é composto de dezenas de pacotes, basta digitar pacman -S xorg. Inicialmente o pacman é bastante rápido, porém depois de instalar algumas dezenas de pacotes, o desempenho dele fica mais lento.
O Arch é bastante estável e rápido. A inicialização do sistema é feita em cerca de 30 segundos e não cheguei a ter problemas com travamentos. Apesar de seguir a filosofia de simplicidade do Slackware, achei o Arch bem mais amigável e prático. O Slackware parece primitivo perto do Arch Linux. Quanto ao uso de um sistema 64 bits, os únicos problemas que tive foram com o flash e com o java. O flash tá funcionando, mas às vezes não renderiza corretamente certos sites. Já o java da Sun, não roda o aplicativo do Banco do Brasil.
KDE 4.1
Instalei o KDE 4.1 no Arch, utilizando os pacotes do kdemod, os quais permitem instalar o kde de forma totalmente modular. Na versão 4.1.0, achei alguns aplicativos como o Okular (o novo leitor de PDF), o Dolphin e o Konqueror muito pesados, porém após atualizar pra 4.1.1, notei um grande avanço nessa questão e a velocidade destes aplicativos não mais prejudicam a usabilidade. O KDE 4 também já está bastante estável, o maior problema que senti é que algumas coisas ainda não estão configuráveis. Não consegui, por exemplo, alterar a cor da barra inferior da área de trabalho.
Alguns tutoriais que me ajudaram na instalação do Arch:
Related posts:
Programando em Python: contador de troco
28 de Agosto de 2008, 0:00 - sem comentários aindaNos ú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 trocopreco = int(raw_input(’Digite o valor da compra: ‘))
dinheiro = int(raw_input(’Digite a quantia de dinheiro entregue: ‘))troco = dinheiro - preco
if troco > 0:
print ‘Valor do troco: R$ %s.’ % troco
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 = relse:
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.
Related posts: