AI001

Introdução à Programação em Python

Aprenda Python, uma linguagem de programação popular, cobrindo conceitos essenciais para desenvolvimento web e de software, ciência de dados e garantia de qualidade. As habilidades adquiridas incluem escrever programas em Python 3 e simplificar o código.

5.0 Avaliação
512 Alunos

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 escrever programas em Python 3 e simplificar o código.

Um breve resumo dos objetivos principais: Dominar 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

  1. Escrever e executar scripts básicos em Python 3, aplicando sintaxe fundamental e tipos de dados embutidos (int, float, str).
  2. Implementar lógica de programa complexa usando estruturas de fluxo de controle (if/else, laços for/while) para gerenciar caminhos de execução.
  3. Projetar e utilizar funções e módulos para estruturar programas com melhor reutilização e manutenibilidade.
  4. Gerenciar dados efetivamente usando as estruturas centrais do Python, incluindo Listas, Strings e Dicionários.
  5. Interagir 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 de sintaxe cruciais, cobrindo a importância da indentação, sensibilidade a maiúsculas/minúsculas e como usar comentários de forma eficaz para documentação de 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, que são necessários para armazenar preços e nomes de itens. Finalmente, aplicaremos esses conceitos imediatamente ao construir o framework de um sistema simples de ponto de venda voltado para uma loja de móveis. Esta aplicação envolverá definir variáveis específicas de itens (por exemplo, 'preco_sofa', 'quantidade') e realizar cálculos aritméticos básicos para determinar um total final da compra, solidificando o entendimento do fluxo operacional do Python. Resultados de Aprendizagem:

  • Executar o programa padrão "Olá Mundo" usando a função print() do Python.
  • Descrever e aplicar as regras básicas de sintaxe do Python, incluindo indentação adequada e uso eficaz de comentários.
  • Definir, declarar e atribuir valores a variáveis usando tipos de dados fundamentais apropriados (int, float, str).
  • Utilizar operadores aritméticos básicos para realizar cálculos simples dentro de um programa.
  • Construir a estrutura inicial de um sistema de ponto de venda, definindo preços de itens e calculando um total de transação.

🔹 Aula 2: Fluxo de Controle e Lógica

Visão Geral: Esta lição introduz o conceito fundamental de Fluxo de Controle, que determina a ordem na qual o código de um programa é executado. Começaremos explorando a lógica booleana, compreendendo o tipo de dado bool (True/False) e os operadores relacionais (por exemplo, ==, >, <) usados para criar expressões condicionais. A estrutura central, a instrução if, será examinada 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 combiná-los de forma eficiente em múltiplas verificações condicionais. Exemplos práticos focarão em verificar restrições de entrada do usuário e direcionar a execução do programa com base em critérios específicos. Resultados de Aprendizagem:

  • Definir variáveis booleanas e usar operadores relacionais (por exemplo, ==, >, <) para avaliar expressões condicionais.
  • Construir estruturas básicas de lógica condicional usando a instrução if.
  • Implementar lógica de decisão com múltiplos caminhos usando as instruções else e elif.
  • Explicar o papel crítico da indentação na definição dos blocos de fluxo de controle do Python.
  • Aplicar 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 demonstrando sua capacidade de conter tipos de dados heterogêneos. Os mecanismos centrais das listas — indexação e fatiamento — serão cobertos 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 a 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 comprimento (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:

  • Definir e inicializar uma lista no Python usando sintaxe apropriada, compreendendo seu papel como sequência ordenada e mutável.
  • Acessar, modificar e extrair elementos ou subseções de listas usando indexação positiva, indexação negativa e fatiamento.
  • Aplicar métodos fundamentais de listas, como append(), insert(), pop() e remove(), para gerenciar dinamicamente o conteúdo da lista.
  • Explicar o conceito de mutabilidade e diferenciar como o conteúdo da lista é gerenciado comparado a 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 simplificados 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 evitar execuções infinitas em laços while. Além disso, cobriremos 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 ignorar 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:

  • Diferenciar os papéis estruturais dos laços for e while e selecionar o tipo de laço apropriado para uma tarefa de programação específica.
  • Construir e utilizar laços for para iterar de forma eficiente sobre sequências (como Listas) e usar a função range() para iteração numérica.
  • Implementar laços while seguros e controlados, garantindo condições claras de término para evitar execuções infinitas.
  • Aplicar as instruções break e continue para modificar o fluxo padrão da 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 de docstrings opcionais. Cobriremos como estruturar funções para aceitar entradas via 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 prevenir 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:

  • Definir o propósito das funções na programação Python e articular os benefícios da reutilização de código e modularidade.
  • Criar e definir funções simples em Python usando a palavra-chave def, incorporando parâmetros apropriados e convenções de nomeação padrão.
  • Chamar com sucesso funções definidas, passando argumentos necessários para executar a lógica encapsulada.
  • Utilizar a instrução return para produzir resultados de uma função para atribuição ou cálculo posterior.
  • Aplicar 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 manipular 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 central será acessar e rearranjar texto usando indexação e fatiamento, que permitem extrair caracteres ou substrings específicos de forma eficiente. Em seguida, cobriremos 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(). Finalmente, 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 posteriormente reconstruí-los de forma eficiente usando o versátil método .join(), permitindo aplicações automatizadas de processamento de texto. Resultados de Aprendizagem:

  • Definir o objeto string do Python e aplicar indexação e fatiamento para acessar caracteres específicos ou substrings.
  • Utilizar métodos comuns de string como .upper(), .lower() e .strip() para limpar e formatar dados de texto.
  • Implementar técnicas de interpolação de string usando f-strings e o método .format() para criar textos dinâmicos.
  • Demonstrar o uso do método .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 através 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_modulo), aliasing (import modulo as alias) e importações diretas (from modulo import item) para gerenciar efetivamente 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:

  • Definir o que é um módulo do Python e explicar seu papel na extensão de funcionalidades e organização de programas grandes.
  • Utilizar corretamente a instrução import padrão e suas variantes (aliasing e importações diretas).
  • Demonstrar a capacidade de chamar e utilizar funções de módulos integrados comuns, como math e random.
  • Explicar como diferentes métodos de importação afetam o namespace do programa atual.
  • Criar um módulo Python personalizado simples 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 de dicionário usando chaves e pares chave-valor separados por vírgula, enfatizando que os dicionários são mutáveis e otimizados para pesquisas 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:

  • Definir a estrutura de dicionário do Python e articular sua função principal como container de mapeamento chave-valor.
  • Criar e inicializar um dicionário usando sintaxe literal e atribuir e recuperar corretamente valores com base em suas chaves correspondentes.
  • Realizar operações CRUD (Criar, Ler, Atualizar, Deletar) em elementos de dicionário usando notação entre colchetes e a palavra-chave del.
  • Utilizar métodos internos de dicionários, incluindo .keys(), .values() e .items(), para extrair de forma eficiente diferentes visões dos dados armazenados.
  • Aplicar dicionários em exemplos de codificação práticos, 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 introduz a Entrada e Saída de Arquivos (I/O) no Python, possibilitando automação e persistência de dados. Começamos dominando as operações centrais 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: utilizar o módulo dedicado csv para leitura e escrita eficientes de valores separados por vírgula, e implementar o módulo json (especificamente json.load() e json.dump()) para lidar com estruturas de dados JSON complexas e aninhadas, vitais 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:

  • Explicar o processo fundamental de manipulação de arquivos no Python, incluindo o uso da função open() e especificação de modos de leitura/escrita/anexar.
  • Implementar a instrução with (gerenciador de contexto) para gerenciar recursos de arquivo de forma segura e confiável, garantindo que arquivos sempre sejam fechados.
  • Escrever código Python para ler e gravar dados sequenciais em arquivos de texto padrão (.txt).
  • Aplicar o módulo integrado csv para ler, analisar e gerar dados em formato CSV de forma programática.
  • Utilizar o módulo json para 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 definidas pelo usuário conhecidas como 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 os fundamentos para arquiteturas de software complexas. Resultados de Aprendizagem:

  • Distinguir entre tipos de dados embutidos do Python e tipos de classes definidos pelo usuário.
  • Definir e articular a diferença fundamental entre uma classe e um objeto (instância).
  • Implementar uma classe Python básica, incluindo instanciação e definição de atributos de instância.
  • Utilizar o método __init__ (construtor) para inicializar corretamente o estado do objeto na criação.
  • Explicar como a encapsulação estrutura o código e contribui para reutilização e manutenibilidade do código.