Introdução à Programação em Python
Aprenda Python, uma linguagem de programação popular, abrangendo conceitos centrais para desenvolvimento web e de software, ciência de dados e garantia de qualidade. Habilidades adquiridas incluem escrever programas em Python 3 e simplificar códigos.
Visão Geral do Curso
📚 Visão Geral do Curso
Aprenda Python, uma linguagem de programação popular, abrangendo conceitos centrais para tudo, desde desenvolvimento web e de software até ciência de dados e garantia de qualidade. As habilidades adquiridas incluem a escrita de programas Python 3 e a simplificação de código.
Um breve resumo dos objetivos principais: Domine os fundamentos do Python, fluxo de controle, estruturas de dados (Listas, Strings, Dicionários), funções, módulos e manipulação de arquivos, culminando com uma introdução à Programação Orientada a Objetos.
🎯 Objetivos de Aprendizagem
- Escreva e execute scripts básicos em Python 3, aplicando sintaxe fundamental e tipos de dados embutidos (int, float, str).
- Implemente lógica de programa complexa usando estruturas de fluxo de controle (if/else, laços for/while) para gerenciar caminhos de execução.
- Projete e utilize funções e módulos para estruturar programas com melhor reutilização e manutenibilidade.
- Gerencie dados efetivamente usando as estruturas centrais do Python, incluindo Listas, Strings e Dicionários.
- Interaja com fontes externas de dados realizando operações de Entrada/Saída de Arquivo (texto, CSV e JSON).
🔹 Aula 1: Olá Mundo e Sintaxe Básica
Visão Geral: Esta lição fundamental apresenta os elementos centrais da linguagem de programação Python, começando com o tradicional programa "Olá Mundo" usando a função print(). Estabeleceremos regras essenciais de sintaxe, cobrindo a importância da indentação, sensibilidade a maiúsculas/minúsculas e como usar comentários de forma eficaz para documentar o código. Um foco significativo será dado às variáveis, abrangendo declaração, atribuição e tipos de dados fundamentais como inteiros, floats e strings, necessários para armazenar preços e nomes de itens. Finalmente, aplicaremos imediatamente esses conceitos construindo o framework de um sistema simples de ponto de venda voltado para uma loja de móveis. Essa aplicação envolverá a definição de variáveis específicas de itens (por exemplo, 'preco_sofa', 'quantidade') e realizar cálculos aritméticos básicos para determinar o total de uma compra, consolidando o entendimento do fluxo operacional do Python.
Resultados de Aprendizagem:
- Execute o programa padrão "Olá Mundo" usando a função
print()do Python. - Descreva e aplique as regras básicas de sintaxe do Python, incluindo indentação adequada e uso eficaz de comentários.
- Defina, declare e atribua valores a variáveis usando tipos de dados fundamentais apropriados (int, float, str).
- Utilize operadores aritméticos básicos para realizar cálculos simples dentro de um programa.
- Construa a estrutura inicial de um sistema de ponto de venda, definindo preços de itens e calculando o total de uma transação.
🔹 Aula 2: Fluxo de Controle e Lógica
Visão Geral: Esta lição apresenta o conceito fundamental de Fluxo de Controle, que determina a ordem em que o código de um programa é executado. Começaremos explorando a lógica booleana, compreendendo o tipo de dados bool (True/Falso) e os operadores relacionais (por exemplo, ==, >, <) usados para criar expressões condicionais. A estrutura central, a instrução if, será analisada detalhadamente, demonstrando como executar blocos de código apenas quando uma condição for atendida. Em seguida, expandiremos isso para lidar com caminhos mutuamente exclusivos usando as instruções else e elif, permitindo árvores de decisão complexas no código Python. Por fim, os alunos dominarão os operadores lógicos (and, or, not), permitindo combinar múltiplas verificações condicionais de forma eficiente. Exemplos práticos focarão na verificação de restrições de entrada do usuário e no roteamento da execução do programa com base em critérios específicos.
Resultados de Aprendizagem:
- Defina variáveis booleanas e use operadores relacionais (por exemplo, ==, >, <) para avaliar expressões condicionais.
- Construa estruturas básicas de lógica condicional usando a instrução
if. - Implemente lógica de decisão com múltiplos caminhos usando as instruções
elseeelif. - Explique o papel crítico da indentação na definição dos blocos de fluxo de controle do Python.
- Aplique operadores lógicos (
and,or,not) para criar testes condicionais compostos.
🔹 Aula 3: Trabalhando com Listas
Visão Geral: Esta lição apresenta a lista do Python, o tipo de dados sequencial fundamental para armazenar coleções ordenadas e modificáveis. Começaremos definindo como criar listas usando colchetes [] e demonstraremos sua capacidade de conter tipos de dados heterogêneos. Os mecanismos centrais das listas — indexação e fatiamento — serão abordados extensivamente, mostrando aos alunos como acessar elementos específicos ou subseções usando tanto indexação positiva (baseada em 0) quanto negativa. Um ponto teórico crucial abordado é a mutabilidade, explicando que as listas podem ser modificadas in loco após sua criação. Exemplos práticos focarão nos métodos essenciais de gerenciamento de listas, incluindo adicionar elementos (append(), insert()), remover elementos (remove(), pop(), palavra-chave del) e determinar o tamanho (len()). Os alunos aprenderão a armazenar e manipular grupos dinâmicos de dados, uma habilidade crítica para qualquer aplicação Python.
Resultados de Aprendizagem:
- Defina e inicialize uma lista no Python usando a sintaxe apropriada, compreendendo seu papel como sequência ordenada e mutável.
- Acesse, modifique e extraia elementos ou subseções de listas usando indexação positiva, indexação negativa e fatiamento.
- Aplique métodos fundamentais de listas, como
append(),insert(),pop()eremove(), para gerenciar dinamicamente o conteúdo da lista. - Explique o conceito de mutabilidade e diferencie como o conteúdo da lista é gerenciado em comparação com tipos de dados imutáveis.
🔹 Aula 4: Iteração e Laços
Visão Geral: Esta lição introduz o conceito de iteração, uma ferramenta fundamental de programação que permite aos desenvolvedores executar blocos de código repetidamente, levando a programas mais simples e altamente eficientes. Analisaremos as duas estruturas principais de laço no Python: o laço for, ideal para iterar sobre uma sequência conhecida (como elementos em uma lista ou números gerados pela função range()), e o laço while, que executa repetidamente enquanto uma condição booleana especificada permanecer verdadeira. Demonstraremos como construir laços robustos, garantindo critérios de término adequados para laços while para evitar execução infinita. Além disso, abordaremos mecanismos especializados de controle de laço, incluindo a instrução break para sair imediatamente de um laço, e a instrução continue para pular o restante da iteração atual e prosseguir para a próxima, permitindo um controle de fluxo complexo para soluções iterativas.
Resultados de Aprendizagem:
- Diferencie os papéis estruturais dos laços
forewhilee selecione o tipo de laço apropriado para uma tarefa de programação específica. - Construa e utilize laços
forpara iterar eficientemente sobre sequências (como Listas) e use a funçãorange()para iteração numérica. - Implemente laços
whileseguros e controlados, garantindo condições claras de término para evitar execução infinita. - Aplique as instruções
breakecontinuepara modificar o fluxo padrão de execução de laços conforme requisitos condicionais específicos.
🔹 Aula 5: Reutilização de Código com Funções
Visão Geral: Esta lição apresenta o conceito essencial de reutilização de código por meio de funções no Python. Os alunos aprenderão primeiro a sintaxe fundamental para definir uma função usando a palavra-chave 'def', compreendendo a importância da indentação adequada e dos docstrings opcionais. Cobriremos como estruturar funções para aceitar entradas por meio de parâmetros (argumentos) e como retornar saídas usando a instrução 'return'. O benefício central das funções — simplificar o código, melhorar a legibilidade e evitar redundâncias (princípio DRY) — será enfatizado. A aplicação prática envolverá resolver problemas matemáticos do mundo real. Os alunos definirão e chamarão funções para calcular fórmulas famosas da física, como Energia Cinética ou força gravitacional, demonstrando como funções encapsulam lógica específica para uso fácil e repetido em qualquer programa Python. Resultados de Aprendizagem:
- Defina o propósito das funções na programação Python e articule os benefícios da reutilização de código e modularidade.
- Construa e defina funções simples no Python usando a palavra-chave 'def', incorporando parâmetros apropriados e convenções de nomeação padrão.
- Chame com sucesso funções definidas, passando argumentos necessários para executar a lógica encapsulada.
- Utilize a instrução 'return' para produzir resultados de uma função para atribuição ou cálculo posterior.
- Aplique conceitos de programação funcional para implementar e calcular fórmulas físicas famosas, como calcular distância ou velocidade.
🔹 Aula 6: Manipulação de Strings
Visão Geral: Esta lição mergulha no poderoso objeto string do Python, fundamental para lidar com dados de texto. Começaremos explorando como as strings são criadas, incluindo o uso de aspas simples versus duplas, e discutiremos sua natureza imutável. Um foco principal será o acesso e rearranjo de texto usando indexação e fatiamento, que permitem extrair caracteres ou substrings específicos de forma eficiente. Em seguida, abordaremos métodos essenciais para manipulação de texto, incluindo limpeza de texto usando .strip(), alteração de caixa com .lower() e .upper(), e verificação de conteúdo usando métodos como .startswith(). Por fim, os alunos dominarão o processo de desmontar grandes blocos de texto em listas de palavras ou linhas usando o poderoso método .split(), e subsequentemente reconstruí-los de forma eficiente usando o método versátil .join(), permitindo aplicações automatizadas de processamento de texto.
Resultados de Aprendizagem:
- Defina o objeto string do Python e aplique indexação e fatiamento para acessar caracteres ou substrings específicos.
- Utilize métodos comuns de string como .upper(), .lower() e .strip() para limpar e formatar dados de texto.
- Implemente técnicas de interpolação de strings usando f-strings e o método .format() para criar texto dinâmico.
- Demonstre o uso do .split() para desmontar texto em listas e do método .join() para reconstruir sequências em strings.
🔹 Aula 7: Módulos do Python
Visão Geral: Esta lição apresenta o conceito essencial de módulos do Python, que permitem organização de código e extensão massiva de funcionalidades por meio de arquivos reutilizáveis. Definiremos o que é um módulo (um arquivo padrão .py) e explicaremos por que o uso de módulos promove reutilização de código e clareza. O foco principal será dominar a instrução 'import', cobrindo a sintaxe padrão (import nome_do_modulo), aliasing (import modulo as alias) e importações diretas (from modulo import item) para gerenciar eficazmente o namespace do programa. Exploraremos exemplos práticos usando módulos integrados fundamentais da Biblioteca Padrão do Python, como o módulo math (para funções como sqrt ou constantes como pi) e o módulo random. Por fim, ilustraremos como criar e implementar um módulo personalizado simples para estruturar e reutilizar suas próprias funções em diferentes arquivos Python.
Resultados de Aprendizagem:
- Defina o que é um módulo do Python e explique seu papel na extensão de funcionalidades e organização de programas grandes.
- Utilize corretamente a instrução padrão
importe suas variantes (aliasing e importações diretas). - Demonstre a capacidade de chamar e utilizar funções de módulos integrados comuns, como
matherandom. - Explique como diferentes métodos de importação afetam o namespace do programa atual.
- Crie um módulo personalizado simples do Python contendo funções reutilizáveis.
🔹 Aula 8: Uso de Dicionários
Visão Geral: Esta lição mergulha no dicionário do Python, uma estrutura de dados fundamental e poderosa usada para mapear chaves únicas a valores específicos. Começaremos definindo a estrutura do dicionário usando chaves e pares chave-valor separados por vírgula, enfatizando que os dicionários são mutáveis e otimizados para buscas rápidas com base na chave. A lição cobrirá operações essenciais, incluindo como acessar valores de forma eficiente usando notação entre colchetes, e como adicionar novos pares ou modificar valores existentes de forma dinâmica. Exploraremos as restrições de chaves, observando que as chaves devem ser tipos imutáveis (como strings ou tuplas). Finalmente, os alunos aprenderão métodos críticos como ".keys()", ".values()" e ".items()" para visualizar o conteúdo do dicionário, e como iterar sobre esses elementos usando laços, consolidando sua capacidade de armazenar e recuperar dados complexos e não estruturados de forma eficaz. Resultados de Aprendizagem:
- Defina a estrutura do dicionário do Python e articule sua função principal como um contêiner de mapeamento chave-valor.
- Construa e inicialize um dicionário usando sintaxe literal e atribua e recupere corretamente valores com base em suas chaves correspondentes.
- Realize operações CRUD (Criar, Ler, Atualizar, Deletar) em elementos de dicionário usando notação entre colchetes e a palavra-chave 'del'.
- Utilize métodos internos de dicionários, incluindo .keys(), .values() e .items(), para extrair de forma eficiente diferentes visões dos dados armazenados.
- Aplique dicionários em exemplos práticos de codificação, como modelar um perfil de usuário ou gerenciar configurações.
🔹 Aula 9: Entrada e Saída de Arquivos (I/O)
Visão Geral: Esta lição apresenta a Entrada e Saída de Arquivos (I/O) no Python, permitindo automação e persistência de dados. Começamos dominando as operações principais de manipulação de arquivos: abrir arquivos usando a função embutida open(), especificar vários modos de acesso (leitura 'r', escrita 'w', anexar 'a') e entender o papel crucial do gerenciador de contexto with open() as f: para garantir que os arquivos sejam fechados automaticamente, evitando vazamentos de recursos. Posteriormente, exploraremos leitura e escrita de dados não estruturados usando arquivos de texto padrão (.txt). A segunda parte foca em dados estruturados: utilizando o módulo dedicado csv para leitura e escrita eficientes de valores separados por vírgula, e implementando o módulo json (especificamente json.load() e json.dump()) para lidar com estruturas de dados JSON complexas e aninhadas, essenciais para interagir com APIs e arquivos de configuração modernos. Domínio desses conceitos é essencial para construir aplicações Python práticas que interagem com fontes externas de dados.
Resultados de Aprendizagem:
- Explique o processo fundamental de manipulação de arquivos no Python, incluindo o uso da função
open()e a especificação de modos de leitura/escrita/anexar. - Implemente a instrução
with(gerenciador de contexto) para gerenciar recursos de arquivos de forma segura e confiável, garantindo que os arquivos sempre sejam fechados. - Escreva código Python para ler e escrever dados sequenciais em arquivos de texto padrão (.txt).
- Aplique o módulo integrado
csvpara ler, analisar e gerar dados em formato CSV de forma programática. - Utilize o módulo
jsonpara serializar objetos Python em formato JSON e desserializar dados JSON de volta em estruturas Python utilizáveis.
🔹 Aula 10: Introdução às Classes e POO
Visão Geral: Esta lição oferece uma introdução fundamental à Programação Orientada a Objetos (POO) no Python. Começaremos esclarecendo a diferença entre os tipos de dados padrão e embutidos do Python (como int, str, list) e as estruturas poderosas e definidas pelo usuário chamadas de classes. Os aprendizes compreenderão que uma classe serve como um plano de construção, enquanto um objeto é uma instância concreta derivada desse plano. Cobriremos a sintaxe essencial para definir uma classe usando a palavra-chave class, focando fortemente em como inicializar o estado do objeto usando o método especial __init__ (construtor) e como definir métodos operacionais. Finalmente, exploraremos como esses conceitos permitem a encapsulação — agrupar dados e os métodos que operam sobre esses dados — e brevemente discutiremos o papel das interfaces na definição de contratos comportamentais claros para objetos, estabelecendo as bases para arquiteturas de software complexas.
Resultados de Aprendizagem:
- Distinga entre tipos de dados embutidos do Python e tipos de classes personalizadas definidas pelo usuário.
- Defina e articule a diferença fundamental entre uma classe e um objeto (instância).
- Implemente uma classe básica do Python, incluindo instanciação e definição de atributos de instância.
- Utilize o método
__init__(construtor) para inicializar corretamente o estado do objeto na criação. - Explique como a encapsulação estrutura o código e contribui para reutilização e manutenibilidade do código.