Fala, meus consagrados! Tudo beleza com vocês?
Já iniciamos nossa jornada sobre as semelhanças e diferenças entre Python e R. Nosso primeiro artigo foi sobre conceituação e sintaxe das linguagens.
Neste artigo, iremos tratar sobre variáveis e tipos das linguagens.
Variáveis
Variáveis em Python e R
Elas não possuem um comando para serem declaradas. São criadas no momento em que se atribui um valor a elas:
x = 15 y = "Rogerão Araújo"
Não precisam ser declaradas com nenhum tipo em particular. Podem até mudar de tipo depois de terem sido definidas:
# Variável do tipo int em Python e do tipo numeric em R. x = 15 # Variável do tipo str em Python e do tipo character em R. x = "Rogerão Araújo"
Exemplos em Python
Código:
x = 15 y = "Rogerão Araújo" z = 1.84 print(x) print(type(x)) print(y) print(type(y)) print(z) print(type(z))
Resultado da execução:
15 <class 'int'> Rogerão Araújo <class 'str'> 1.84 <class 'float'>
Exemplos em R
Código:
x = 15 y = "Rogerão Araújo" z = 1.84 x class(x) y class(y) z class(z)
Resultado da execução:
[1] 15 [1] "numeric" [1] "Rogerão Araújo" [1] "character" [1] 1.84 [1] "numeric"
Regras de nomes de variáveis em Python e R
Na tabela abaixo, faremos uma comparação entre as regras para formação de nomes de variáveis em Python e R.
Regra
|
Python
|
R
|
São case-sensitive
|
Sim
|
Sim
|
Possuem sequência de tamanho ilimitado
|
Sim
|
Sim
|
Podem conter caracteres alfanuméricos (A-z 0-9)
|
Sim
|
Sim
|
Podem conter sublinhados (_)
|
Sim
|
Sim
|
Podem conter ponto (.)
|
Não
|
Sim
|
Podem conter espaços em branco
|
Não
|
Não
|
Podem iniciar com letra (A-z)
|
Sim
|
Sim
|
Podem iniciar com sublinhado (_)
|
Sim
|
Não
|
Podem iniciar com ponto (.)
|
Não
|
Sim, desde que não seja seguido por um número
|
Podem iniciar com números
|
Não
|
Não
|
Podem ser palavra-chave ou palavra reservada
|
Não
|
Não
|
Exemplos de nomes de variáveis em Python
Nomes de variáveis corretos:
ab = "Python" a_b = "Python" _a_b = "Python" aB = "Python" AB = "Python" ab2 = "Python"
Nomes de variáveis incorretos:
1ab = "Python" .ab = "Python" a-b = "Python" a b = "Python" $ab = "Python" ab% = "Python" while = "Python"
Observações:
- Os itens em azul também são permitidos em R; e
- Os itens em vermelho também NÃO são permitidos em R.
Exemplos de nomes de variáveis em R
Nomes de variáveis corretos:
ab = "R" a.b = "R" .ab = "R" a_b = "R" aB = "R" AB = "R" ab2 = "R"
Nomes de variáveis incorretos:
1ab = "R" _ab = "R" .2ab = "R" a-b = "R" a b = "R" $ab = "R" ab% = "R" while = "R"
Observações:
- Os itens em azul também são permitidos em Python; e
- Os itens em vermelho também NÃO são permitidos em Python.
Beleza! Agora vamos fazer algumas questões para testarmos o que estudamos.
Questões de concursos
[MS Concursos 2016 Creci 1° Região (RJ) – Analista de TI] Qual alternativa representa a declaração de uma variável do tipo texto, na linguagem de programação Python?
[A] var valor = 3;
[B] boolean inicio = falso;
[C] textp = “texto de exemplo”;
[D] int i = 1;
Comentários:
Não um comando (por exemplo, var) nem há a definição de um tipo para criação de variáveis em Python e R.
Então temos:
Letra A: var valor = 3;
Letra errada. Forma correta:
valor = 3
Letra B: boolean inicio = falso;
Letra errada.
Forma correta em Python:
inicio = False
Forma correta em R:
inicio = FALSE
Letra C: textp = “texto de exemplo”;
Letra certa.
Letra D: int i = 1;
Letra errada. Forma correta:
i = 1
Gabarito: letra C.
[IFB 2017 IFB – Professor – Informática/Desenvolvimento de Sistemas] Com relação a Algoritmos e Estrutura de Dados, dadas as afirmações abaixo, segundo Farrer (1999), assinale a alternativa CORRETA: (Marque CERTO ou ERRADO)
[B] A declaração de variáveis é algo obrigatório em Python.
Comentários:
A declaração de variáveis não é obrigatória em Python e R
Gabarito: ERRADO.
Tipos das linguagens
Linguagens estática e dinamicamente tipadas
Linguagens estaticamente tipadas são linguagens em que o tipo de uma variável é conhecido em tempo de compilação:
# A variável x abaixo é do tipo int em Java: int x = 15;
Linguagens dinamicamente tipadas são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código:
# A variável x abaixo é do tipo int em Python e do tipo numeric em R: x = 15
Conclusão: Python e R são dinamicamente tipadas!
Linguagens fraca e fortemente tipadas
Linguagens fracamente tipadas são linguagens em que se pode fazer operações sem a necessidade da realização de cast.
Código:
x = '11' print(1 + x)
Resultado da execução:
111
Muitas vezes, há uma confusão entre os conceitos de uma linguagem ser fracamente tipada com uma linguagem ser estaticamente tipada. São conceitos diferentes.
Linguagens fortemente tipadas são linguagens em que se deve fazer operações com a necessidade da realização de cast.
Código:
x = '11' print(1 + x)
Resultado da execução em Python:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Resultado da execução em R:
Error in 1 + x : non-numeric argument to binary operator
No código acima, é um exemplo de linguagem que tem uma função print que não faz um cast implícito. Tanto em Python quanto em R, não há cast implícito, o que faz com que elas sejam classificadas como fortemente tipadas.
Conclusão: Python e R são fortemente tipadas!
Com essa informação, podemos matar várias questões. Trouxe apenas um subconjunto que trata sobre isso.
Questões de concursos
[UFPel-CES 2015 UFPEL – Técnico em Tecnologia da Informação] Em relação às características da linguagem Python, é correto afirmar que (Marque CERTO ou ERRADO)
[B] é uma linguagem fortemente tipada, ou seja, é preciso declarar variáveis e seus tipos.
Comentários:
Primeiro ponto é que o conceito da questão é de uma linguagem estaticamente tipada.
Python e R são:
- Fortemente tipadas, ou seja, são linguagens em que se deve fazer operações com a necessidade da realização de cast; e
- Dinamicamente tipadas, ou seja, são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código.
Gabarito: ERRADO.
[MS Concursos 2016 Creci 1° Região (RJ) – Analista de TI] Qual alternativa representa a declaração de uma variável do tipo texto, na linguagem de programação Python?
[A] var valor = 3;
[B] boolean inicio = falso;
[C] textp = “texto de exemplo”;
[D] int i = 1;
Comentários:
Não um comando (por exemplo, var) nem há a definição de um tipo para criação de variáveis em Python e R. Python e R são dinamicamente tipadas, ou seja, são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código.
Eu trouxe essa questão novamente justamente para explicar com Python e R serem dinamicamente tipadas.
Voltando à questão, temos:
Letra A: var valor = 3;
Letra errada. Forma correta:
valor = 3
Letra B: boolean inicio = falso;
Letra errada.
Forma correta em Python:
inicio = False
Forma correta em R:
inicio = FALSE
Letra C: textp = “texto de exemplo”;
Letra certa.
Letra D: int i = 1;
Letra errada. Forma correta:
i = 1
Gabarito: letra C.
[IF Sul Rio-Grandense 2019 IF Sul Rio-Grandense – Analista de Tecnologia da Informação] Em relação às características da linguagem Python, é correto afirmar que (Marque CERTO ou ERRADO)
[C] tem tipagem fraca e dinâmica.
Comentários:
Python e R são:
- Fortemente tipadas, ou seja, são linguagens em que se deve fazer operações com a necessidade da realização de cast; e
- Dinamicamente tipadas, ou seja, são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código.
Python e R são dinamicamente tipadas, porém, são fortemente tipadas. Isso é muito importante ter em mente para poder responder questões sobre esse tópico.
Gabarito: ERRADO.
[IFMT 2018 IFMT – Informática] Sobre a linguagem Python, é INCORRETO afirmar que: (Marque CERTO ou ERRADO)
[D] Python é uma linguagem de tipagem dinâmica e forte.
Comentários:
Python e R são:
- Fortemente tipadas, ou seja, são linguagens em que se deve fazer operações com a necessidade da realização de cast; e
- Dinamicamente tipadas, ou seja, são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código.
Gabarito: CERTO.
[IFCE 2017 IFCE – Técnico de Laboratório – Informática] Considere as afirmações sobre os paradigmas de linguagens de programação. (Marque CERTO ou ERRADO)
[I] Python, Ruby e Java são linguagens de programação interpretada multiparadigma, de tipagem dinâmica e forte.
Comentários:
Java é uma linguagem de tipagem:
- Estática; e
- Forte.
Python e R são linguagens de tipagem:
- Dinâmica; e
- Forte.
Gabarito: ERRADO.
[FCC 2012 TRE/CE – Técnico Judiciário – Programação de Sistemas] Sobre Python é correto afirmar: (Marque CERTO ou ERRADO)
[B] É uma linguagem fortemente tipada, ou seja, é preciso declarar variáveis e seus tipos.
Comentários:
Novamente um texto parecido com outra questão que já respondemos. O primeiro ponto é que o conceito da questão é de uma linguagem estaticamente tipada.
Python e R são:
- Fortemente tipadas, ou seja, são linguagens em que se deve fazer operações com a necessidade da realização de cast; e
- Dinamicamente tipadas, ou seja, são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código.
Gabarito: ERRADO.
[CESPE 2010 SERPRO – Analista – Suporte Técnico] Acerca das linguagens de programação, julgue os itens subsequentes.
As linguagens Perl e Python são dinamicamente tipadas, ou seja, o tipo da variável é definido em tempo de execução. As linguagens C e Java são estaticamente tipadas, ou seja, o tipo de variável é definido em tempo de compilação.
Comentários:
Java é uma linguagem de tipagem:
- Estática; e
- Forte.
Python e R são linguagens de tipagem:
- Dinâmica; e
- Forte.
Gabarito: CERTO.
[CCV/UFS 2014 UFS – Técnico de Tecnologia da Informação] Sobre a linguagem Python, afirma-se: (Marque CERTO ou ERRADO)
[IV] É uma linguagem que possui tipagem estática.
Comentários:
Python e R são dinamicamente tipadas, ou seja, são linguagens em que o tipo de uma variável pode ser alterado durante a execução do código.
Gabarito: ERRADO.
Então é isso!
[]s e até a próxima!
_________________________
Professor Rogerão Araújo
Professor Rogerão, com relação à linguagem R. não é equivocado dizer que é fortemente tipada? Em algumas consultas que fiz o R. aparece como uma linguagem não fortemente tipada, ou fracamente tipada.
Obrigado
Jonatas! Há uma confusão no conceito de uma linguagem ser fortemente tipada.
Tanto Python quanto a linguagem R são dinâmica e fortemente tipadas.
Em [1], temos que “As a programming language, R is strongly but dynamically typed, functional and interpreted (therefore not compiled).”
[1] https://mlconference.ai/blog/introduction-to-the-r-programming-language/