Guia de estudo
TP1 e o ritmo da semana
O TP1 já está liberado. A orientação é ler as questões agora e tentar resolvê-las aos poucos, no mesmo ritmo em que o conteúdo avança. Deixar o trabalho inteiro para o fim de semana prejudica a retenção: o que foi visto na aula esfria e precisa ser reaprendido na pressa. Na sexta-feira a aula será majoritariamente para a leitura do TP e a explicação da entrega. Um detalhe já adiantado: cada questão do TP deve ficar em um bloco de código. Os demais detalhes da entrega saem na sexta. Esta aula continua na sexta-feira, então trate variáveis, tipos e aritmética como base das questões, não como um capítulo isolado.
Objetos, variáveis e atribuição
Em Python, qualquer informação é representada como objeto. Dado pode ser visto como uma subcategoria mais primitiva, mas não dá para representar informação sem objeto. A variável funciona como uma etiqueta colada nesse valor: organiza o código e evita repetição. Em vez de copiar o mesmo valor várias vezes, você dá um nome e reutiliza esse nome. O sinal = é o símbolo de atribuição. Não se lê ‘é igual a’; lê-se ‘atribua o valor à variável’. O interpretador lê e interpreta as instruções. Se a instrução não é clara ou viola uma regra, ele não adivinha a sua intenção: lança erro. Uma linha iniciada com # é comentário. O Python ignora essa linha por completo; o texto fica só para quem lê o código. Comentários longos ainda não foram detalhados. A sequência típica desta aula é: comentar se preciso, atribuir um valor a um nome e depois reutilizar essa etiqueta em um print ou em um cálculo.
Atribuição com comentário
# etiqueta para guardar um valor
ano = 1991
print(ano)
A linha com # é ignorada pelo Python. O = atribui o inteiro à variável ano. O print mostra o valor guardado pela etiqueta.
Regras de nomes e erro de sintaxe
O interpretador só aceita nomes que seguem as regras da linguagem. Três regras foram destacadas. Primeira: espaços não são permitidos. Um nome escrito como duas palavras gera erro de sintaxe, porque deixa de ser um identificador único e o Python não tenta adivinhar o que você quis dizer. Segunda: símbolos não são permitidos, com uma exceção — o underline (_), que substitui o espaço. Terceira: números são permitidos no nome, mas o nome da variável não pode começar com número. Letras são permitidas, inclusive maiúsculas e com acento, pelo menos do ponto de vista da sintaxe. Erro de sintaxe acontece quando o código não segue essas regras. Por isso o naming começa pela legalidade: se o nome é ilegal, o programa nem chega a executar. Só depois entram estilo e clareza.
Underline no lugar do espaço
meu_nome = "Joao"
print(meu_nome)
O espaço quebraria o nome e geraria erro de sintaxe. O underline mantém uma única etiqueta legal.
Número no nome, mas não no começo
aluno1 = "Pedro"
print(aluno1)
Dígitos podem aparecer depois da primeira letra. Começar com número tornaria o nome inválido.
Boas práticas de naming
Naming é o ato de dar nome às variáveis. As boas práticas não são obrigação do interpretador; servem para padronizar e facilitar a leitura. Evite acentos nos nomes, mesmo que a sintaxe aceite, para reduzir problemas de compatibilidade entre sistemas. Use nomes indicativos: o nome deve revelar a informação guardada. Prefira nomes longos e claros a abreviações. No Python, o estilo padrão de variáveis é o snake case: letras minúsculas com palavras separadas por underline. Camel case (primeira palavra minúscula e as seguintes com inicial maiúscula) é comum em JavaScript e Java, não em variáveis Python. Pascal case é como o camel case, mas a primeira letra também é maiúscula; no Python esse estilo nomeia classes, conceito posterior — por isso não use Pascal case em variável. Kebab case (minúsculas separadas por hífen) aparece em arquivos e URLs, não em variáveis: o hífen seria lido como subtração. Pode-se usar snake case em outras linguagens, mas naming é convenção cultural. Seguir o padrão da linguagem deixa o código homogêneo. Espaços em torno de operadores não são obrigatórios; existem por legibilidade, para o código não ficar claustrofóbico. Ponte com a seção anterior: primeiro o nome precisa ser legal; depois ele precisa ser snake case, sem acento e com significado.
Snake case com nome indicativo
nome_do_album = "Album exemplo"
print(nome_do_album)
Minúsculas e underline separam as palavras. O nome já diz o que a etiqueta guarda, no estilo padrão do Python.
Tipos primitivos e o exemplo do álbum
Foram apresentados quatro tipos: string, int, bool e float. Chamamos de tipos primitivos os blocos básicos de informação, usados para montar dados mais complexos. A analogia da aula: primitivos são como átomos, a menor unidade; o restante se compõe a partir deles. Em Python, estritamente, tudo é objeto e não existem primitivos — essa classificação é uma licença pedagógica para começar. String representa texto e fica entre aspas. Int representa números inteiros, como ano de lançamento ou idade. Bool é o tipo lógico de sim ou não; os valores são True e False, com inicial maiúscula e sem aspas. Se houver aspas, vira string. Float é o número de ponto flutuante, com parte decimal, usado para dinheiro, temperatura e afins. No Python o separador decimal é o ponto, não a vírgula, porque a linguagem segue a convenção americana. No armazenamento e no cálculo usa-se sempre ponto. A vírgula brasileira entra só na hora de exibir, conforme a localização e o idioma do usuário. O exemplo da aula colocou lado a lado os dados de um álbum: banda e álbum como string, ano como int, recomendo como bool e lucro como float. Esses tipos existem na maioria das linguagens. Java tem strings, ints, floats e booleanos; JavaScript tem strings, booleanos e um tipo number único. Python é o fio condutor desta disciplina porque os conceitos se transferem e porque é uma das linguagens mais fáceis para começar, já que esconde muita complexidade. A etiqueta da seção de naming agora ganha um valor com tipo.
Álbum com string, int, bool e float
banda = "Nome da banda"
album = "Nome do album"
ano = 1991
recomendo = True
lucro = 12.5
print(banda)
print(album)
print(ano)
print(recomendo)
print(lucro)
banda e album são texto entre aspas. ano é inteiro. recomendo é True, sem aspas. lucro usa ponto, nunca vírgula.
Aritmética, precedência e o 15.0
Os operadores aritméticos básicos são + (soma), - (subtração), * (multiplicação) e / (divisão). Multiplicação não se escreve com x e divisão não se escreve com contrabarra. Eles funcionam como na matemática. O Python respeita a precedência: multiplicação e divisão acontecem antes de soma e subtração. Parênteses mudam essa ordem: o que está dentro é resolvido primeiro. Quando o cálculo fica longo, use variáveis intermediárias: calcule uma parte, guarde, calcule outra e combine os resultados. Qualquer multiplicação ou divisão feita com inteiros retorna float, mesmo que o resultado pareça inteiro — o exemplo da aula foi 15.0. Dá para formatar a exibição, mas o valor continua float. Transformar esse float em outro tipo (conversão) foi só mencionado e fica para outra aula. Fazer o TP junto com o conteúdo ajuda a reter. Recomenda-se também estudar estatística, SQL e networking. O conteúdo continua na sexta-feira.
Precedência e parênteses
print(2 + 2)
print(2 + 2 * 3)
print((2 + 2) * 3)
2 + 2 resulta 4. Em 2 + 2 * 3 a multiplicação vem primeiro, então o resultado é 8. Os parênteses forçam a soma antes e mudam o valor para 12.
Cálculo dividido em a, b e resultado
a = 2 + 2
b = 2 * 3
resultado = a + b
print(resultado)
Cada parte fica em uma variável intermediária. Depois as partes se combinam. O print mostra só o valor final.
Divisão de inteiros com resultado 15.0
print(30 / 2)
A divisão de inteiros devolve float. O valor impresso é 15.0, não 15. Converter tipo para remover o .0 não foi o tema desta aula.
Avisos administrativos — 4 recados sobre prazos, regras e funcionamento do curso
00:05:27TP1 já liberado; leiam as questões e tentem fazer aos poucos. Na sexta-feira a aula será majoritariamente para a leitura do TP e explicação da entrega.01:22:33Recomendação: façam o TP conforme o conteúdo avança; deixar tudo para o fim de semana prejudica a retenção.01:23:15Cada questão do TP deve ficar em um bloco de código; detalhes de entrega serão explicados na sexta-feira.01:29:53A aula continua na sexta-feira.
Perguntas de aluno — 9 perguntas respondidas na gravação
Francisco perguntou: tudo em Python é objeto; existe diferença entre objeto e dado? 00:08:32
Dado é uma subcategoria mais primitiva, mas qualquer informação no Python é representada como objeto; não dá para representar informação sem objeto.
Pedro perguntou: se eu quiser usar snake case em outras linguagens, não posso? 00:46:31
Pode, mas é uma questão cultural/convenção; cada linguagem tem seu padrão recomendado, e seguir a convenção facilita a homogeneidade do código.
Alexandre perguntou: como compatibilizar a vírgula usada no Brasil com o ponto usado em programação? 01:03:43
No armazenamento e cálculo sempre se usa ponto; a exibição depende da localização/idioma do usuário, então você formata o número na hora de mostrar.
Esses tipos de variável estão presentes na maioria das linguagens né? Em c tinha umas a mais eu acho, mas essas estavam lá 01:04:54 · chat 01:01:02
Sim; Python é um fio condutor e os conceitos são transferíveis. Java tem strings, ints, floats e booleanos; JavaScript tem strings, booleanos e um tipo number único.
Alguma restrição com comentários longos/recomendação sobre a extensão deles? Melhor manter conciso do que ir full Saramago? 01:06:46 · chat 01:01:37
Ainda não foi explicado; comentários serão abordados mais para frente.
Vinicius perguntou: o que é tipo primitivo e qual a diferença do não primitivo? 01:07:36
Tipos primitivos são como átomos: a menor unidade de informação; estruturas de dados são compostas a partir deles. Em Python, estritamente, tudo é objeto e não existem primitivos — é uma licença pedagógica.
Uma pessoa perguntou: Python é a linguagem mais difícil, então? 01:10:37
Não; Python é uma das linguagens mais fáceis para começar, porque esconde muita complexidade por trás.
tem motivo para ficar usando espaço? EX: (2 + 2) em vez de (2+2) 01:20:05 · chat 01:19:50
O espaço não é obrigatório; é usado por legibilidade, para o código não ficar claustrofóbico.
Marina e Vinicius perguntaram: por que apareceu 15.0 e dá para tirar o ponto zero? 01:20:35
Toda multiplicação ou divisão feita com inteiros tem resultado float, mesmo sendo inteiro; tirar o zero exige conversão de tipo, assunto de outra aula. Você pode formatar a exibição, mas o valor continua float.
Trechos que valem reouvir — 6 momentos que mais rendem uma segunda escuta
00:13:53— Ver na tela o erro de sintaxe gerado por nome de variável com espaço e a explicação de por que o Python não adivinha.00:19:29— As três regras de nomes de variáveis com exemplos executados na tela.00:33:51— Definições de snake case, camel case, pascal case e kebab case com os exemplos escritos na tela.00:52:10— Exemplo do álbum: visualizar lado a lado string, int, bool e float.01:15:03— Precedência de operadores, parênteses e divisão do cálculo em variáveis, com execução na tela.01:20:41— Explicação do 15.0: por que multiplicação/divisão de inteiros vira float.