associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "OrdemDeExecucao"

Diferenças entre as versões de 5 e 6
Revisão 5e 2008-05-27 22:04:00
Tamanho: 2286
Comentário:
Revisão 6e 2008-05-27 22:08:46
Tamanho: 2435
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 12: Linha 12:

Rode o programa somente depois de responder a pergunta, para saber se acertou!
Linha 77: Linha 79:
Anote em um pedaço de papel em que ordem todos os marcadores do programa acima aparecerão na saída, e depois rode o programa para saber se acertou. Quais é o último marcador que aparece na saída quando o programa acima é executado?
Linha 81: Linha 83:

Anote em um pedaço de papel em que ordem todos os marcadores do programa acima aparecerão na saída.


== Exercício 4 ==

Python é uma linguagem dinâmica e interpretada, e não tem um pré-processador (como existe em C). A ordem em que os comandos de um programa Python são executados obedece a algumas regras simples.

Para testar seu conhecimento sobre estas regras, faça os exercícios abaixo.

Exercício 1

Observe que a listagem abaixo possui vários comantos print (e um sys.stdout.write) com marcadores numerados assim: "-> N".

Quais são os dois primeiros marcadores que aparecem na saída quando o programa é executado?

Dica: o segundo não é o '-> 2'

Rode o programa somente depois de responder a pergunta, para saber se acertou!

   1 import sys
   2 import atexit
   3 
   4 print '-> 1 inicio'
   5 
   6 def funcaoA():
   7     print '-> 2 funcao A'
   8     return 'resultado A'
   9 
  10 def funcaoB():
  11     print '-> 3 funcao B'
  12 
  13     def funcaoC():
  14         print '-> 4 funcao C'
  15         
  16     return funcaoC
  17     
  18 funcaoD = lambda:sys.stdout.write('-> 5 funcao D\n')
  19 
  20 def funcaoE():
  21     print '-> 6 funcao E'
  22         
  23 class Classe(object):
  24     print '-> 7 bloco de declaracoes da Classe'
  25     
  26     def __init__(self):
  27         print '-> 8 inicializacao da instancia da Classe'
  28         
  29     def metodo(self):
  30         print '-> 9 metodo da instancia da Classe'
  31         return 'resultado metodo'
  32         
  33 if True:
  34     print '-> 10 condicional True'
  35     
  36 if False:
  37     assert False, 'Isso nunca devia acontecer'
  38 
  39 atexit.register(funcaoE)
  40 
  41 print '-> 11 logo antes do if __main__'
  42 
  43 if __name__=='__main__':
  44     print '-> 12 __main__'
  45     print funcaoA
  46     print funcaoA()
  47     print '-> 13 __main__ (cont.)'
  48     print funcaoB
  49     resultadoB = funcaoB()
  50     print resultadoB
  51     objeto = Classe()
  52     objeto.metodo()
  53     resultadoB()
  54     print funcaoD
  55     funcaoD()
  56     print '-> 14 __main__ (final)'
  57 print '-> 15 FIM'    

Exercício 2

Quais é o último marcador que aparece na saída quando o programa acima é executado?

Exercício 3

Anote em um pedaço de papel em que ordem todos os marcadores do programa acima aparecerão na saída.

Exercício 4

O programa abaixo importa o modulo acima. Anote em um pedaço de papel em que ordem os marcadores "-> N" e os pontos I e II aparecerão na saída do programa. Depois rode o programa para saber se acertou.

   1 print '=> ponto I'
   2 
   3 import execucao_pergunta
   4 
   5 print '=> ponto II'