{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "ULxWGdhVqcRt" }, "source": [ "# Capítulo 1: Introdução à programação em Python\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "TUXPVopGqgeo" }, "source": [ "\"Cozinhando\n", "\n", "## O que é programação de computadores?\n", "\n", "Programar computadores é a arte e ciência de conceber e criar conjuntos de instruções que capacitam computadores a realizar tarefas específicas. Esse processo envolve a expressão lógica de algoritmos por meio de uma linguagem de programação, atuando como a ponte entre a mente humana e a máquina.\n", "\n", "Essa habilidade é fundamental para aqueles que buscam atuar no universo da computação, desempenhando um papel essencial em diversas disciplinas, como engenharia, ciência, negócios, saúde, educação e entretenimento. A capacidade de programar não apenas possibilita a automação de processos, mas também estimula a resolução criativa de problemas e impulsiona a inovação tecnológica.\n", "\n", "Na prática da programação, os desenvolvedores convertem conceitos abstratos em linguagem compreensível pelos computadores, proporcionando-lhes a habilidade de executar tarefas complexas. Essa interação entre humanos e máquinas desempenha um papel fundamental na contínua evolução da sociedade digital, moldando desde avanços científicos até transformações sociais significativas.\n", "\n", "A habilidade de programar transcende a mera condição técnica, transformando-se em uma ferramenta importante para explorar novas ideias e o aprimoramento pessoal. Filosoficamente falando, programar é também uma forma de enxergar o mundo sob diferentes perspectivas, processos e abstrações." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dentro do contexto do Python, esta é uma linguagem de alto nível, interpretada e multiparadigma. Isso significa que o Python se destaca pela facilidade de aprendizado e uso, sendo aplicável a uma ampla gama de propósitos. Sua versatilidade é reforçada pela capacidade de suportar diversos paradigmas de programação, proporcionando aos desenvolvedores uma abordagem flexível e adaptável para resolver problemas em diferentes domínios {cite}`python_docs`.\n", "\n", "O Python desempenha papéis significativos em diversas áreas. A seguir, um breve resumo de algumas dessas possibilidades:\n", "\n", "- **Engenharia e Ciências:** Utilizado em simulação, análise e visualização de dados, além de ser amplamente empregado em projetos de aprendizado de máquina. Sua sintaxe clara e concisa, juntamente com uma extensa biblioteca de módulos científicos, o torna uma escolha popular para essas aplicações {cite}`mckinney_python_2017`.\n", "\n", "- **Negócios:** Ferramenta essencial para análise de dados, automação de processos e desenvolvimento de aplicativos web. A flexibilidade e eficiência do Python o tornam versátil para soluções empresariais {cite}`sweigart_automate_2020`.\n", "\n", "- **Educação:** Considerado a linguagem de programação mais popular para o ensino em escolas e universidades, sua sintaxe simples e intuitiva facilita o aprendizado, mesmo para iniciantes {cite}`matthes_python_2019`.\n", "\n", "- **Entretenimento:** Empregado na criação de jogos, aplicativos móveis e outros softwares de entretenimento. A robustez e flexibilidade do Python permitem o desenvolvimento de aplicações de alta qualidade em diversas áreas {cite}`lutz_learning_2013`.\n", "\n", "- **Saúde:** Amplamente utilizado em análise de dados médicos, desenvolvimento de softwares especializados e pesquisa médica. Sua capacidade analítica e adaptabilidade o tornam uma ferramenta valiosa para inovação e pesquisa em saúde {cite}`psf_healthcare`.\n", "\n", "Além dessas áreas, o Python atende a uma ampla gama de necessidades, desde a automatização de tarefas repetitivas até desafios avançados. Suas aplicações abrangem:\n", "\n", "- **Automação de tarefas e processos**\n", "- **Análise e visualização de dados**\n", "- **Desenvolvimento de jogos**\n", "- **Inteligência artificial e aprendizado de máquina**\n", "- **Automação de redes e segurança cibernética**\n", "- **Desenvolvimento de aplicativos de desktop e web**\n", "- **Construção de APIs**\n", "- **Simulações científicas e matemáticas**\n", "- **Internet das Coisas (IoT)**\n", "- **Produção e manipulação de mídia**\n", "\n", "A flexibilidade do Python o torna uma ferramenta indispensável em diversas áreas, oferecendo uma base sólida para a inovação no cenário tecnológico atual. Dominar Python não é apenas uma habilidade essencial, mas também uma forma de explorar as constantes inovações e desafios deste mundo tecnológico em rápida evolução. De acordo com o ranking atualizado da IEEE Spectrum para 2024, o Python continua consolidando sua posição entre as linguagens de programação mais influentes e utilizadas, impulsionado por bibliotecas e frameworks que atendem áreas emergentes como a inteligência artificial ([spectrum.ieee.org/top-programming-languages-2024](https://spectrum.ieee.org/top-programming-languages-2024?utm_source=chatgpt.com))" ] }, { "cell_type": "markdown", "metadata": { "id": "rGKHTTkn1BMc" }, "source": [ "## O que você precisa para começar?\n", "\n", "Para iniciar seu aprendizado em Python, além desta documentação, é fundamental contar com os seguintes requisitos:\n", "\n", "1. **Computador com Acesso à Internet:** \n", " Recomenda-se utilizar um computador com conexão à internet para facilitar o download de pacotes adicionais e o acesso à documentação online, enriquecendo sua experiência de aprendizado. Contudo, é possível programar em Python mesmo em ambientes offline, o que pode ser útil quando a conexão não estiver disponível.\n", "\n", "2. **Editor de Texto ou IDE (Ambiente de Desenvolvimento Integrado):** \n", " Escolha um editor ou IDE que atenda às suas preferências e necessidades. Pode ser algo simples, como o Notepad, ou opções mais avançadas, como o [Sublime Text](https://www.sublimetext.com/), [Visual Studio Code](https://code.visualstudio.com/), [Cursor](https://www.cursor.com/), ou editores online como o [Replit](https://replit.com), [Google Colab](https://colab.research.google.com/) e [Jupyter Notebook](https://jupyter.org/). Além disso, o [PyCharm](https://www.jetbrains.com/pycharm/) é uma poderosa IDE específica para Python, que oferece recursos avançados e é amplamente utilizada por desenvolvedores. Se você prefere uma experiência altamente customizável e baseada em terminal, o [NeoVim](https://neovim.io/) é uma excelente alternativa.\n", "\n", "3. **Interpretador Python:** \n", " Faça o download do interpretador Python diretamente do site da Python Software Foundation ([python.org](https://www.python.org/)). Alternativamente, você pode utilizar ambientes online, como o Replit, que já incluem um interpretador Python integrado a um editor de texto.\n", "\n", "Equipado com esses recursos, você estará pronto para explorar e aprimorar suas habilidades em Python. Seja trabalhando localmente em seu computador ou em ambientes online, você terá a flexibilidade necessária para mergulhar no mundo da programação, adaptando-se ao seu estilo de aprendizado.\n", "\n", "**Observação:** Por ser interpretada, o código Python é executado diretamente pelo interpretador sem necessidade de compilação, tornando o aprendizado mais rápido e prático, principalmente para iniciantes.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "DzIku84CyrC0" }, "source": [ "## Escrevendo seu primeiro programa em Python\n", "\n", "Vamos criar um programa simples em Python que soma dois números e mostra o resultado. O arquivo pode ser chamado de \"soma.py\" e o código é este:\n", "\n", "```python\n", "a = 1\n", "b = 2\n", "soma = a + b\n", "print(soma)\n", "```\n", "\n", "Ao rodar o programa, ele vai exibir:\n", "\n", "```python\n", "3\n", "```\n", "\n", "### Explicação do código:\n", "\n", "- **`a = 1`**: Define o valor 1 para a variável `a`.\n", "- **`b = 2`**: Define o valor 2 para a variável `b`.\n", "- **`soma = a + b`**: Soma os valores de `a` e `b` e guarda o resultado (3) na variável `soma`.\n", "- **`print(soma)`**: Mostra o valor de `soma` na tela (3).\n", "\n", "### O que são variáveis?\n", "Variáveis guardam dados para serem usados no programa. Aqui, `a`, `b` e `soma` são variáveis.\n", "\n", "### O que são funções?\n", "Funções realizam tarefas específicas. A função `print` mostra algo na tela.\n", "\n", "### Como rodar o programa:\n", "\n", "1. Escreva o código em um editor de texto.\n", "2. Salve como \"soma.py\".\n", "3. Abra o terminal ou prompt de comando.\n", "4. Vá até a pasta onde o arquivo foi salvo.\n", "5. Execute o código com o comando:\n", "\n", "```python\n", " python soma.py\n", "```\n", "\n", "6. O resultado será o número 3, que é a soma de 1 e 2.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "CyHHkXhuHch2" }, "source": [ "## Como um programa em Python funciona?\n", "\n", "A execução de um programa em Python passa por várias etapas importantes. Tudo começa com o desenvolvimento do código-fonte, que é normalmente salvo em arquivos com extensão \".py\". Esse código é, então, enviado ao interpretador Python.\n", "\n", "O **interpretador** é responsável por ler e processar o código Python. Ele transforma o código em **bytecode**, uma forma intermediária que pode ser executada em diferentes tipos de hardware. O bytecode é uma representação mais simples, que será executada pela Máquina Virtual Python (PVM).\n", "\n", "A **PVM (Máquina Virtual Python)** é o componente que realmente roda o programa. Ela executa o bytecode, gerencia a memória e interage com o sistema operacional. Em algumas versões do Python, como o **CPython**, o interpretador pode usar um **Compilador Just-In-Time (JIT)**, que melhora o desempenho do programa durante a execução {cite}`lutz_learning_2013`. \n", "\n", "![Funcionamento Interno do Python](pythonWorks2.png)\n", "\n", "**Figura: Funcionamento Interno do Python.**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estrutura básica de um programa em Python\n", "\n", "Um programa em Python segue uma estrutura simples, composta por um algoritmo, que é uma sequência de passos definidos para realizar uma tarefa. Assim como uma receita de cozinha, o algoritmo envolve **entrada** (dados), **processamento** (etapas a serem seguidas) e **saída** (resultado).\n", "\n", "A estrutura básica de um programa Python é:\n", "\n", "```python\n", "def main():\n", " # Bloco de código principal\n", "\n", "if __name__ == \"__main__\":\n", " main()\n", "```\n", "\n", "- **`main()`**: A função principal do programa, chamada quando o código é executado.\n", "- **Bloco de código principal**: É onde o programa faz seu trabalho, e o código é indentado para indicar que pertence ao bloco principal.\n", "- **`__name__`**: Variável especial que identifica o contexto de execução do arquivo. Se o arquivo está sendo executado diretamente, `__name__` será `\"__main__\"`, mas se for importado como um módulo, `__name__` terá o nome do arquivo sem a extensão `.py`.\n", "- **`if __name__ == \"__main__\"`**: Verifica se o arquivo está sendo executado diretamente como o programa principal. Se sim, a função `main()` é chamada.\n", "\n", "Essa verificação (`if __name__ == \"__main__\":`) evita que código indesejado seja executado ao importar o arquivo como um módulo, garantindo que a função `main()` só rode quando o script for executado diretamente.\n", "\n", "### Exemplo de um programa simples:\n", "\n", "```python\n", "def main():\n", " print(\"Hello, world!\")\n", "\n", "if __name__ == \"__main__\":\n", " main()\n", "```\n", "\n", "Para executar o programa, siga estes passos:\n", "\n", "- Salve o código em um arquivo com extensão \".py\" (por exemplo, \"hello_world.py\").\n", "- No terminal ou prompt de comando, execute o seguinte:\n", "\n", "```\n", "python hello_world.py\n", "```\n", "\n", "### Dica: A importância da indentação\n", "\n", "Em Python, a indentação não é apenas uma questão de estilo, mas uma parte essencial da sintaxe. Ela define a estrutura do programa e o agrupamento dos blocos de código. O uso de quatro espaços por nível de indentação é recomendado pela **[PEP 8](https://peps.python.org/pep-0008/)**, o guia oficial de estilo do Python. Seguir essa recomendação não só melhora a legibilidade, como também mantém o código organizado e fácil de entender.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "vCssW6YEGJRH" }, "source": [ "## Exemplo aprimorado: capturando nome e idade\n", "\n", "Vamos melhorar nosso código inicial para aprender a interagir com o usuário. Neste exemplo, o programa vai solicitar o nome e a idade do usuário, armazenar essas informações e depois exibi-las na tela. Siga os passos abaixo:\n", "\n", "- Crie um novo arquivo para o código.\n", "\n", "- Insira o seguinte código no arquivo:\n", "\n", " ```python\n", " nome = input(\"Qual é o seu nome? \")\n", " idade = input(\"Qual é a sua idade? \")\n", " print(\"Seu nome é:\", nome)\n", " print(\"Você tem\", idade, \"anos.\")\n", " ```\n", "\n", " O código usa a função `input` para pedir que o usuário insira seu nome e idade. As informações são guardadas nas variáveis `nome` e `idade`. Depois, o programa imprime esses dados formatados.\n", "\n", "- Salve o arquivo e execute-o com o Python.\n", "\n", "- Quando você rodar o programa, ele vai pedir o nome e a idade:\n", "\n", " ```\n", " Qual é o seu nome? Ana Maria\n", " Qual é a sua idade? 25\n", " ```\n", "\n", "- Após inserir as informações, o programa vai mostrar a saída:\n", "\n", " ```\n", " Seu nome é: Ana Maria\n", " Você tem 25 anos.\n", " ```\n", "\n", "Neste exemplo, você aprende a usar a função `input` para receber dados do usuário e a função `print` para mostrar essas informações. Isso é essencial para criar programas interativos que respondem ao que o usuário insere.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "vCssW6YEGJRH" }, "source": [ "### Comentando seu código\n", "\n", "Comentar o código é essencial para facilitar sua compreensão, tanto para você quanto para outros que possam ler ou trabalhar no mesmo projeto. Em Python, usamos o símbolo `#` para comentários de uma única linha, e `'''` ou `\"\"\"` para comentários que ocupam várias linhas.\n", "\n", "#### Exemplos:\n", "\n", "**Comentário de uma linha:**\n", "\n", "```python\n", "# Solicita o nome do usuário\n", "nome = input(\"Qual é o seu nome? \")\n", "```\n", "\n", "**Comentário de várias linhas com aspas simples:**\n", "\n", "```python\n", "'''\n", "Este bloco de código solicita a idade do usuário\n", "e armazena o valor na variável 'idade'.\n", "'''\n", "idade = input(\"Qual é a sua idade? \")\n", "```\n", "\n", "**Comentário de várias linhas com aspas duplas:**\n", "\n", "```python\n", "\"\"\"\n", "A seguir, exibimos o nome e a idade inseridos pelo usuário.\n", "Esta parte do código é responsável pela exibição dos dados.\n", "\"\"\"\n", "print(\"Nome:\", nome)\n", "print(\"Idade:\", idade)\n", "```\n", "\n", "**Comentário explicando a lógica do código:**\n", "\n", "```python\n", "# Verifica se o usuário é maior de 18 anos para determinar a elegibilidade\n", "elegivel = int(idade) > 18\n", "```\n", "\n", "### Dicas importantes:\n", "- **Seja claro e objetivo**: Use os comentários para explicar a lógica e as intenções do código, não para descrever ações óbvias que o código já explica por si só.\n", "- **Evite excessos**: Comentários são úteis, mas comentários em excesso podem poluir o código. Use-os com moderação para explicar partes mais complexas ou decisões importantes.\n", "- **Atualize seus comentários**: Sempre que modificar o código, lembre-se de atualizar os comentários para evitar inconsistências.\n", "\n", "Com boas práticas de comentário, o código se torna mais fácil de manter, entender e colaborar, especialmente em projetos maiores ou quando compartilhado com outras pessoas.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estratégias para Estudar Programação\n", "\n", "Aprender a programar envolve não só compreender a lógica e a sintaxe, mas também otimizar a maneira como nosso cérebro processa e retém informações. Entender o funcionamento da **memória de trabalho** (curto prazo) e da **memória de longo prazo** pode transformar sua forma de estudar {cite}`oakley2021uncommon`\n", "\n", "- **Memória de trabalho**: Responsável por armazenar temporariamente informações enquanto realizamos uma tarefa. Tem capacidade limitada e é essencial para o raciocínio lógico e resolução de problemas.\n", "- **Memória de longo prazo**: Onde as informações são armazenadas de forma mais duradoura, permitindo a recuperação do conhecimento adquirido ao longo do tempo.\n", "\n", "Além disso, a Inteligência Artificial (IA) e ferramentas de anotação, como o [Obsidian](https://obsidian.md/), podem ser grandes aliadas nesse processo.\n", "\n", "### Repetição Espaçada e Consolidação da Memória\n", "\n", "Revisar conteúdos em intervalos crescentes permite que as informações sejam transferidas da memória de trabalho para a memória de longo prazo, consolidando o aprendizado. \n", "**Aplicação em Programação:** Revise seus códigos e materiais periodicamente para fixar o aprendizado e evitar o esquecimento. \n", "{cite}`cepeda_2006`\n", "\n", "### Interleaving: Mistura de Tópicos\n", "\n", "Alternar entre diferentes assuntos evita a sobrecarga da memória de trabalho e fortalece a criação de conexões duradouras. \n", "**Aplicação em Programação:** Alterne entre linguagens ou paradigmas, combinando teoria e prática para desenvolver uma aprendizagem mais flexível. \n", "{cite}`rohrer_2012`\n", "\n", "### Prática Ativa e Uso Estratégico da IA\n", "\n", "Programar ativamente, em vez de apenas ler, fortalece a memória de trabalho e, com a revisão, a memória de longo prazo. \n", "**Aplicação em Programação:** Desenvolva pequenos projetos e resolva problemas reais. Utilize a IA para obter exemplos práticos, esclarecer dúvidas e sugerir melhorias em seu código, sempre tentando resolver os desafios por conta própria primeiro. \n", "{cite}`ericsson_pool_2016`\n", "\n", "### Compreensão Profunda com Apoio da IA\n", "\n", "Buscar entender o “porquê” e o “como” dos algoritmos favorece a fixação do conhecimento na memória de longo prazo. \n", "**Aplicação em Programação:** Analise a lógica por trás do código e dos algoritmos e peça à IA explicações alternativas e exemplos para reforçar sua compreensão. \n", "{cite}`chi_wylie_2014`\n", "\n", "### Foco e Minimização de Interrupções\n", "\n", "Manter a concentração ajuda a preservar a limitada capacidade da memória de trabalho e facilita a transferência de informações para a memória de longo prazo. \n", "**Aplicação em Programação:** Use técnicas como o método Pomodoro para períodos concentrados de estudo e permita que a IA monitore seu tempo, sugerindo pausas estratégicas. Além disso, evite manter o smartphone ao alcance da visão durante os estudos, pois mesmo sua presença pode comprometer a atenção e reduzir o foco.\n", "{cite}`baumann_kuhl_2005` {cite}`wardetal2017`\n", "\n", "### Aprendizagem Baseada em Problemas\n", "\n", "Resolver desafios práticos ativa tanto a memória de trabalho quanto a de longo prazo, ajudando a fixar o aprendizado. \n", "**Aplicação em Programação:** Envolva-se com problemas reais em plataformas como [LeetCode](https://leetcode.com/).\n", "{cite}`hmelo-silver_2004` \n", "\n", "### Recursos Diversificados, Reflexão e Ferramentas de Anotação\n", "\n", "Combinar múltiplas fontes, como livros, vídeos e cursos online, enriquece o aprendizado e estimula a retenção. \n", "**Aplicação em Programação:** \n", "- Explore diferentes formatos e, em seguida, reflita sobre o que aprendeu escrevendo resumos ou discutindo com colegas. \n", "- Utilize o [Obsidian](https://obsidian.md/) para organizar suas anotações. \n", "- A IA pode ajudar a integrar informações de diversas fontes em resumos concisos. \n", "{cite}`mayer_2014` {cite}`boud_keogh_walker_1985`\n", "\n", "### Revisão Regular e Aprendizagem Colaborativa\n", "\n", "Revisar continuamente o material combate o esquecimento e fortalece as conexões neurais, enquanto a colaboração amplia a compreensão dos temas. \n", "**Aplicação em Programação:** \n", "- Planeje revisões periódicas com ferramentas de repetição espaçada, como [RemNote](https://www.remnote.com/). \n", "- Participe de grupos de estudo ou fóruns (por exemplo, [Stack Overflow](https://stackoverflow.com/)). \n", "- Utilize a IA para mediar discussões e fornecer feedback adicional. \n", "{cite}`karpicke_blunt_2011` {cite}`dillenbourg_1999` \n", "\n", "Integrar essas estratégias com o entendimento dos mecanismos da memória, o uso inteligente da IA e o aproveitamento de ferramentas pode acelerar seu aprendizado em programação. A prática constante, a revisão e a aplicação ativa dessas técnicas são fundamentais para transformar a teoria em habilidades duradouras.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 📝 Exercícios\n", "\n", "Antes de iniciar os exercícios, é importante esclarecer que todos seguem um padrão específico de entradas e saídas. O sistema irá fornecer entradas simulando a interação de um usuário, e seu programa deverá produzir as saídas corretas para garantir que a lógica e o processamento foram implementados adequadamente.\n", "\n", "1. Escreva um programa que imprime a famosa mensagem do mundo da programação.\n", "\n", "Neste exercício, você deve simplesmente exibir uma mensagem na tela. Não é necessário ler nenhuma entrada do usuário, apenas utilizar o comando print para exibir o texto desejado.\n", "\n", "```python\n", "# Teste 1\n", "Saída: Olá Mundo!\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Neste exercício, você deve ler duas entradas: o nome de um aluno e sua matrícula. Em seguida, exiba uma mensagem de boas-vindas formatada com esses dados.\n", "\n", "```python\n", "# Teste 1\n", "Entrada:\n", "Python da Silva\n", "2024123456\n", "Saída: Olá Python da Silva Matrícula: 2024123456 Seja bem vindo!\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Informações de um Pedido. Crie um programa que deve ler quatro entradas do usuário: \n", "\n", "- Nome do cliente \n", "- Produto comprado \n", "- Quantidade adquirida \n", "- Valor unitário do produto \n", "\n", "Em seguida, exiba uma mensagem formatada informando os detalhes da compra, incluindo o valor total. \n", "\n", "```python\n", "# Teste 1\n", "Entrada:\n", "Ana Souza \n", "Livro de Python \n", "1 \n", "45.50 \n", "Saída:\n", "Pedido confirmado: Livro de Python \n", "Valor total: R$ 45.50\n", "Obrigado pela preferência!\n", "```\n", "\n", "**📌 Observação Importante:**\n", "Neste exercício, perceba que todas as entradas do usuário são inicialmente tratadas como strings. Para realizar cálculos corretamente, é necessário converter os valores apropriados para números.\n", "\n", "**🏆 Desafio:**\n", "E se fossem 3 livros em vez de 1? Como calcular o valor final corretamente?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Referências\n", "\n", "```{bibliography}\n", ":filter: docname in docnames\n", "```\n", "\n" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.20" } }, "nbformat": 4, "nbformat_minor": 4 }