SlideShare a Scribd company logo
1 of 26
Download to read offline
PEP 8
                 OU,
POR QUE UTILIZAR PADRÕES DE CÓDIGO?
AGENDA
Quem sou eu?
Motivação
PEP8
QUEM SOU EU?
Renato Oliveira
CIn-UFPE
PUG-PE
Linux User - #532503
Js e Rails developer na E.Life
MOTIVAÇÃO
“40% ~ 80% of the lifetime cost of a piece
   of software goes to maintenance”
“Hardly any software is mainteined for its
    hole life by the original author”
                   Sun
PROBLEMA
Desenvolvi um produto há 2 anos e o cliente voltou agora
     e pediu para adicionar mais alguns módulos

                     PERGUNTA
           Você tem orgulho do seu código?
           Está fácil fazer esta manutenção?
CODE SMELL
Não é um bug
Está mais para um sintoma do código que indica um
problema maior
Indica que o código é fraco de design e que pode
atrasar o desenvolvimento ou aumentar o risco de
bugs ou falhas no futuro
Um código que não segue padrões é mais suscetível a
'smells'
MANUTENÇÃO
 QUALIDADE
 REFATORAR
ENTÃO VAMOS FALAR DE COISA BOA NÉ?
      Você já conhece a nova top therm?
E POR QUE COM
PYTHON SERIA
  DIFERENTE?
PEP 8
Escrita por Guido Van Rossum e Barry Warsaw
THE ZEN OF PYTHON
      import this
THE ZEN OF PYTHON, BY TIM PETERS
             Beautiful is better than ugly.
            Explicit is better than implicit.
            Simple is better than complex.
         Complex is better than complicated.
              Flat is better than nested.
             Sparse is better than dense.
                 Readability counts.
Special cases aren't special enough to break the rules.
          Although practicality beats purity.
          Errors should never pass silently.
              Unless explicitly silenced.
THE ZEN OF PYTHON, BY TIM PETERS
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious
                      way to do it.
   Although that way may not be obvious at first unless
                     you're Dutch.
                Now is better than never.
     Although never is often better than *right* now.
 If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good
                           idea.
 Namespaces are one honking great idea -- let's do more
                        of those!
FORMATAÇÃO DE CÓDIGO
   Identação
   Tabs ou espaços
   Comprimento da linha
   Linhas em branco
   imports
ERRADO
ipr o,ss
 mot s y




                   CERTO
ipr o
 mot s
ipr ss
 mot y




                  CERTO[2]
fo o ipr pt,mdr
 rm s mot ah ki
ERRADO
pitsm(fb 5) fb 1 ))
 rn oa i(  , i( 0




                      CERTO
pitsm(i() fb1)
 rn oafb5, i(0)
OPERADORES
           ERRADO
x1
 =0
ay1
 =<0




           CERTO
x=10
a=y<10
OPERADORES
                ERRADO
sm( =1,y=2)
 oax 0    0




                CERTO
sm(=0 y2)
 oax1, =0
ATRIBUTOS
AGM_OSAT =2
 LUACNTNE  0
agm_aivl="luasrn"
 luavrae  agm tig
_tiuod_s_nen ="ur srn"
 arbt_euoitro  ota tig


casNmeelse
 ls odDCas:
     _arbt_rvd_ecas =Tu
      _tiuopiaod_lse re

    dfagm_uco)
     e luafna(:
         #cdg d ba
           óio e o

    dfOtauco)
     e urFna(:
         #cdg tnoau
           óio es qi
RECOMENDAÇÕES
i xi Nn:
 f  s oe
     ..
      .

i z
 f :
       ..
        .



i tp(b)i tp()
 f yeoj s ye1:
     #erd
       rao

i iisac(b,it:
 f sntneoj n)
     #cro
       et
RECOMENDAÇÕES
i fo:]= 'a'
 f o[3 = br:
     #erd
       rao

i frsatwt(br)
 f o.trsih'a':
     #cro
       et
MAIS EM
http://www.python.org/dev/peps/pep-0008/
DÚVIDAS?
OBRIGADO
    @_renatoOliveira
 renato@labcodes.com.br
github.com/renatooliveira
Por que utilizar padrões de código em Python (PEP 8

More Related Content

What's hot

TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosFábio José Moraes
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design PatternsMaicon Heck
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheirasLuiz Borba
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Multidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo timesMultidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo timesHélio Medeiros
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Danilo Sato
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 

What's hot (20)

TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviços
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
Code smell gsw
Code smell   gswCode smell   gsw
Code smell gsw
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Multidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo timesMultidisciplinaridade - Desconstruindo especialistas e construindo times
Multidisciplinaridade - Desconstruindo especialistas e construindo times
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Como Programar Melhor em Java
Como Programar Melhor em JavaComo Programar Melhor em Java
Como Programar Melhor em Java
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 

Viewers also liked

NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Pythonpugpe
 
Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com PythonFernando Rocha
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cythonAnderson Dantas
 
Blender Com Python
Blender Com PythonBlender Com Python
Blender Com Pythonpugpe
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvaspugpe
 
Wikilytics
WikilyticsWikilytics
Wikilyticspugpe
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidaspugpe
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDRafael Carício
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebNielson Santana
 
Python na formacao_de_jovens
Python na formacao_de_jovensPython na formacao_de_jovens
Python na formacao_de_jovensMarcos Egito
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Pythonpugpe
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o HerokuFilipe Ximenes
 
Computação Científica com Python
Computação Científica com PythonComputação Científica com Python
Computação Científica com PythonHugo Serrano
 
Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE Arthur Alvim
 
Python e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMMPython e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMMpugpe
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletivapugpe
 
Qml + Python
Qml + PythonQml + Python
Qml + Pythonpugpe
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 

Viewers also liked (20)

NoSQL com Cassandra e Python
NoSQL com Cassandra e PythonNoSQL com Cassandra e Python
NoSQL com Cassandra e Python
 
Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com Python
 
Clustering com numpy e cython
Clustering com numpy e cythonClustering com numpy e cython
Clustering com numpy e cython
 
REST APIs com Django
REST APIs com DjangoREST APIs com Django
REST APIs com Django
 
Blender Com Python
Blender Com PythonBlender Com Python
Blender Com Python
 
Rain Toolbox - Previsão de Chuvas
Rain Toolbox -  Previsão de ChuvasRain Toolbox -  Previsão de Chuvas
Rain Toolbox - Previsão de Chuvas
 
Wikilytics
WikilyticsWikilytics
Wikilytics
 
Criando comunidades bem sucedidas
Criando comunidades bem sucedidasCriando comunidades bem sucedidas
Criando comunidades bem sucedidas
 
Peça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDDPeça seu código em casamento: Votos, Tópicos e TDD
Peça seu código em casamento: Votos, Tópicos e TDD
 
Pug
PugPug
Pug
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para Web
 
Python na formacao_de_jovens
Python na formacao_de_jovensPython na formacao_de_jovens
Python na formacao_de_jovens
 
Palestra sobre Collections com Python
Palestra sobre Collections com PythonPalestra sobre Collections com Python
Palestra sobre Collections com Python
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o Heroku
 
Computação Científica com Python
Computação Científica com PythonComputação Científica com Python
Computação Científica com Python
 
Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE
 
Python e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMMPython e Cadeias de Markov GHMM
Python e Cadeias de Markov GHMM
 
Palestra sobre Inteligência Coletiva
Palestra sobre Inteligência ColetivaPalestra sobre Inteligência Coletiva
Palestra sobre Inteligência Coletiva
 
Qml + Python
Qml + PythonQml + Python
Qml + Python
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 

Similar to Por que utilizar padrões de código em Python (PEP 8

Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Evaldo Junior
 
Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Evaldo Junior
 
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumAgile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumLuca Bastos
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em PythonRober Guerra
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Do legado ao DDD
Do legado ao DDDDo legado ao DDD
Do legado ao DDDLeonn Leite
 
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedoresHenrique Fernandes Gonçalves
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDDomingos Teruel
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Gustavo Pereira
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Leandro Silva
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinarZG Soluções
 

Similar to Por que utilizar padrões de código em Python (PEP 8 (20)

Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013Lidando com Código Duplicado - PHP Conference Brasil 2013
Lidando com Código Duplicado - PHP Conference Brasil 2013
 
Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013Lidando com Código Duplicado - DevInSantos 2013
Lidando com Código Duplicado - DevInSantos 2013
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumAgile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelum
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
PostgreSQL Rock Star
PostgreSQL Rock StarPostgreSQL Rock Star
PostgreSQL Rock Star
 
Do legado ao DDD
Do legado ao DDDDo legado ao DDD
Do legado ao DDD
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
[Interagil 2019] recuperando a essencia da agilidade para desenvolvedores
 
EaD sem Dor
EaD sem DorEaD sem Dor
EaD sem Dor
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Não São Apenas Sapatos
Não São Apenas SapatosNão São Apenas Sapatos
Não São Apenas Sapatos
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDD
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Refatoração 1/3 webinar
Refatoração 1/3   webinarRefatoração 1/3   webinar
Refatoração 1/3 webinar
 

Por que utilizar padrões de código em Python (PEP 8

  • 1. PEP 8 OU, POR QUE UTILIZAR PADRÕES DE CÓDIGO?
  • 3. QUEM SOU EU? Renato Oliveira CIn-UFPE PUG-PE Linux User - #532503 Js e Rails developer na E.Life
  • 4. MOTIVAÇÃO “40% ~ 80% of the lifetime cost of a piece of software goes to maintenance” “Hardly any software is mainteined for its hole life by the original author” Sun
  • 5. PROBLEMA Desenvolvi um produto há 2 anos e o cliente voltou agora e pediu para adicionar mais alguns módulos PERGUNTA Você tem orgulho do seu código? Está fácil fazer esta manutenção?
  • 6. CODE SMELL Não é um bug Está mais para um sintoma do código que indica um problema maior Indica que o código é fraco de design e que pode atrasar o desenvolvimento ou aumentar o risco de bugs ou falhas no futuro Um código que não segue padrões é mais suscetível a 'smells'
  • 8. ENTÃO VAMOS FALAR DE COISA BOA NÉ? Você já conhece a nova top therm?
  • 9. E POR QUE COM PYTHON SERIA DIFERENTE?
  • 10. PEP 8 Escrita por Guido Van Rossum e Barry Warsaw
  • 11. THE ZEN OF PYTHON import this
  • 12. THE ZEN OF PYTHON, BY TIM PETERS Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced.
  • 13. THE ZEN OF PYTHON, BY TIM PETERS In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
  • 14.
  • 15. FORMATAÇÃO DE CÓDIGO Identação Tabs ou espaços Comprimento da linha Linhas em branco imports
  • 16. ERRADO ipr o,ss mot s y CERTO ipr o mot s ipr ss mot y CERTO[2] fo o ipr pt,mdr rm s mot ah ki
  • 17. ERRADO pitsm(fb 5) fb 1 )) rn oa i( , i( 0 CERTO pitsm(i() fb1) rn oafb5, i(0)
  • 18. OPERADORES ERRADO x1 =0 ay1 =<0 CERTO x=10 a=y<10
  • 19. OPERADORES ERRADO sm( =1,y=2) oax 0 0 CERTO sm(=0 y2) oax1, =0
  • 20. ATRIBUTOS AGM_OSAT =2 LUACNTNE 0 agm_aivl="luasrn" luavrae agm tig _tiuod_s_nen ="ur srn" arbt_euoitro ota tig casNmeelse ls odDCas: _arbt_rvd_ecas =Tu _tiuopiaod_lse re dfagm_uco) e luafna(: #cdg d ba óio e o dfOtauco) e urFna(: #cdg tnoau óio es qi
  • 21. RECOMENDAÇÕES i xi Nn: f s oe .. . i z f : .. . i tp(b)i tp() f yeoj s ye1: #erd rao i iisac(b,it: f sntneoj n) #cro et
  • 22. RECOMENDAÇÕES i fo:]= 'a' f o[3 = br: #erd rao i frsatwt(br) f o.trsih'a': #cro et
  • 25. OBRIGADO @_renatoOliveira renato@labcodes.com.br github.com/renatooliveira