quarta-feira, 28 de outubro de 2009

Errar é humano...

Todos nós erramos. E quando estamos a aprender uma nova linguagem de programação, ou mesmo a aprender a programar, os erros são frequentes. E muitas vezes ... básicos. Eis alguns exemplos.

1. Definir uma função e depois nada fazer, esperando que ela por milagre se lembre do que queremos resolver em concreto. É a dualidade definir/usar que nos escapa.

2. Importar um módulo com a instrução "import [nome do módulo]" para usar uma operação [nome da operação] e não qualificar a operação com o nome do módulo no momento do seu uso.

1.>>> import math
2.>>> sin(5)
3.Traceback (most recent call last):
4.  File "<string>", line 1, in <fragment>
5.NameError: name 'sin' is not defined
6.>>> math.sin(5)
7.-0.95892427466313845
8.>>>


3. Não ter em atenção as consequência da mutabilidade de alguns objectos. Alguns dos métodos modificam o objecto mas não devolvem nenhum valor.

01.>>> a = [1,2,3]
02.>>> b = a.append(4)
03.>>> b    # -----> b = None!!
04.>>> a
05.[1, 2, 3, 4]
06.>>> b=a # ----> assim pode-se fazer!
07.>>> b
08.[1, 2, 3, 4]
09.>>>


4. Não ter em atenção que o código deve estar correctamente alinhado.

01.# caso 1
02.def dobros(n):
03.    for i in range(n):
04.        d = 2 * i
05.        print d,
06.         
07.dobros(4)
08.>>> 0 2 4 6
09. 
10.# caso 2
11.def dobros(n):
12.    for i in range(n):
13.        d = 2 * i
14.    print d, # <----- Aqui
15.         
16.dobros(4)
17.>>>  6


5. Referir o nome de um objecto que não foi ainda criado.

1.Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
2.[GCC 4.0.1 (Apple Computer, Inc. build 5250)]
3.Type "help", "copyright", "credits" or "license" for more information.
4.>>> a
5.Traceback (most recent call last):
6.  File "<string>", line 1, in <fragment>
7.NameError: name 'a' is not defined
8.>>>


6. Tentar fazer operações impossíveis.

01.>>> 5 + 'a'
02.Traceback (most recent call last):
03.  File "<string>", line 1, in <fragment>
04.TypeError: unsupported operand type(s) for +: 'int' and 'str'
05.>>> 5 / 0
06.Traceback (most recent call last):
07.  File "<string>", line 1, in <fragment>
08.ZeroDivisionError: integer division or modulo by zero
09.>>>


Nalgumas situações o Python avisa-nos do erro. Nestes casos deve ler com atenção a mensagem de erro. E por hoje é tudo.
Há muitos mais erros! Quer contribuir com o seu erro preferido?? É só mandar para o blogue!

Sem comentários:

Enviar um comentário