menu_book Índice

Logo UFPR

Informática e Introdução à Programação

Logo Licenciatura

Disciplina: Informática e Introdução à Programação

Carga Horária Total: 30 horas (15 semanas – 2h/semana)

Faltas permitidas: 30 horas * 0,25% = 7,5 horas ou 3 encontros

Público: Alunos de cursos de Engenharia

Objetivos: Ambientar os alunos às ferramentas de informática (Google Docs, Sheets, Presentation) e introduzir os conceitos básicos de programação em Python, com apoio dos conteúdos do PensePy.

Logo UFPR

Semana 1: Intro ao Python, Tipos de Dados, Entrada e Saída

Logo Licenciatura

Objetivos da Aula

  • Compreender os fundamentos da lógica de programação com exemplos práticos em pseudocódigo (Portugol).
  • Introduzir o Python como linguagem de programação, explorando tipos de dados, variáveis, entrada e saída.
  • Praticar conceitos básicos por meio de exemplos interativos e atividades online complementares.

1. Fundamentos de Lógica de Programação (Portugol)

A lógica de programação é como usar um GPS: você dá instruções claras, passo a passo, para chegar a um destino. Cada instrução deve ser precisa para o computador entender e executar. O Portugol nos ajuda a praticar essa lógica escrevendo algoritmos em português, preparando-nos para o Python.

  • Exemplo 1: Atribuição e Operações
    
    algoritmo "Potências de 9"
    inicio
      inteiro VAR1
      VAR1 <- 9
      escrever "9 = ", VAR1
    
      inteiro VAR2
      VAR2 <- 9 * 9
      escrever "9² = ", VAR2
    
      inteiro VAR3
      VAR3 <- 9 * 9 * 9
      escrever "9³ = ", VAR3
    
      inteiro SOMA
      SOMA <- VAR1 + VAR2 + VAR3
      escrever "Soma total = ", SOMA
    fim
            

    Saída: 9 = 9, 9² = 81, 9³ = 729, Soma total = 819

    Explicação: Declaramos variáveis inteiras, atribuímos valores (9, 9², 9³) e calculamos a soma. O comando escrever exibe os resultados.

  • Exemplo 2: Lógica Condicional Simples
    
    algoritmo "Par ou Ímpar"
    inicio
      inteiro NUM
      escrever "Digite um número: "
      ler NUM
      se (NUM % 2 = 0) entao
        escrever NUM, " é par"
      senao
        escrever NUM, " é ímpar"
      fimse
    fim
            

    Explicação: O programa lê um número e usa o operador % (resto da divisão) para verificar se é par ou ímpar.

Como testar seu código Portugol online

Você pode testar os exemplos acima usando uma IDE online chamada Visualg Web, que simula o comportamento do Visualg diretamente no navegador, sem precisar instalar nada.

Acesse: https://visualg.netlify.app

Passos para usar:

  1. Acesse o link acima.
  2. Apague o conteúdo padrão da janela de código.
  3. Cole o exemplo fornecido (como "Par ou Ímpar").
  4. Clique em Executar (ícone de ▶️) para ver o funcionamento do algoritmo.

Dica: Você pode alterar os valores e experimentar com diferentes condições!

2. Introdução ao Python

  • O que é Python?

    Python usa indentação (espaços ou tabs) para organizar o código, ao invés de chaves ({}) como outras linguagens. Isso melhora a legibilidade, mas cuidado: misturar espaços e tabs pode causar erros!

    • Linguagem de programação simples, legível e amplamente usada em ciência de dados, automação e ensino.
    • Não exige ponto e vírgula (;) nem chaves ({}), usando indentação para estruturar o código.
    Dica: Sempre use 4 espaços para indentar no Python, conforme recomendado pela comunidade.
  • Primeiros Passos no Repl.it:
    1. Acesse replit.com, crie uma conta e clique em "Create Repl" > "Python".
    2. Escreva e execute: print("Olá, mundo!").
    3. Saída: Olá, mundo!
  • Tipos de Dados em Python:
    Tipo Descrição Exemplo
    int Números inteiros 42, -10
    float Números decimais 3.14, -0.5
    str Texto (strings) "Olá", "Python"
    bool Verdadeiro ou Falso True, False
  • Pense nos tipos como ferramentas para diferentes tarefas:

    • int: Uma maçã inteira (ex.: 5).
    • float: Uma maçã cortada (ex.: 5.25).
    • str: Uma etiqueta com texto (ex.: "Maçã").
    • bool: Um interruptor (ex.: True ou False).

    Entrada e Saída: A função input() sempre retorna texto (str). Para números, use int() ou float(). Sem conversão, operações podem falhar. Exemplo: "2" + "3" resulta em "23", não 5.

  • Variáveis:
    • Atribuição é feita com =. Exemplo:
    • 
      nome = "Ana"
      idade = 20
      altura = 1.65
      estudante = True
      print(nome, idade, altura, estudante)
                

      Saída: Ana 20 1.65 True

  • Entrada e Saída:
    • print(): Exibe dados na tela.
    • input(): Lê dados do usuário. Exemplo:
    • 
      nome = input("Digite seu nome: ")
      idade = int(input("Digite sua idade: "))
      print("Olá,", nome, "! Você tem", idade, "anos.")
                

      Saída (exemplo): Digite seu nome: João
      Digite sua idade: 22
      Olá, João! Você tem 22 anos.

      Nota: Use int() para converter a entrada (string) em número.

3. Exemplos Práticos em Python

  • Exemplo 1: Cálculo de Potências (similar ao Portugol)
    
    var1 = 9
    var2 = 9 ** 2  # 9²
    var3 = 9 ** 3  # 9³
    soma = var1 + var2 + var3
    print("9 =", var1)
    print("9² =", var2)
    print("9³ =", var3)
    print("Soma total =", soma)
            

    Saída: 9 = 9
    9² = 81
    9³ = 729
    Soma total = 819

  • Exemplo 2: Verificar Par ou Ímpar
    
    num = int(input("Digite um número: "))
    if num % 2 == 0:
        print(num, "é par")
    else:
        print(num, "é ímpar")
            

    Saída (exemplo): Digite um número: 7
    7 é ímpar

  • Exemplo 3: Conversor de Moeda
    
    # Conversor de Real (BRL) para Dólar (USD)
    real = float(input("Digite o valor em Reais (R$): "))
    taxa = 5.50  # Taxa de câmbio fixa
    dolar = real / taxa
    print(f"R${real:.2f} equivale a US${dolar:.2f}")
            

    Saída (exemplo): Digite o valor em Reais (R$): 100
    R$100.00 equivale a US$18.18

    Explicação: O programa lê um valor em Reais, divide pela taxa de câmbio e usa f-string com .2f para formatar com duas casas decimais.

    Teste Você Mesmo! No Repl.it, mude a taxa para 5.70 ou teste valores como 50.0.

  • Exemplo 4: Calculadora de Idade
    
    # Calcula a idade com base no ano de nascimento
    ano_nascimento = int(input("Digite seu ano de nascimento: "))
    ano_atual = 2025
    idade = ano_atual - ano_nascimento
    print(f"Em {ano_atual}, você tem {idade} anos.")
            

    Saída (exemplo): Digite seu ano de nascimento: 2000
    Em 2025, você tem 25 anos.

    Explicação: O programa subtrai o ano de nascimento do ano atual (2025) para calcular a idade, usando int() para garantir um número inteiro.

    Teste Você Mesmo! Teste com anos como 1995 ou 2010.

4. Recursos Complementares

5. Quiz

  • Pergunta 1: Qual é a saída de print(type("Hello"))?
    Resposta Correta: B) <class 'str'>
    Explicação: A função type() retorna o tipo de dado. Como "Hello" é uma string, o resultado é <class 'str'>.
  • Pergunta 2: O que acontece se você não converter input() para int em num = input("Digite um número: "); print(num + num)?
    Resposta Correta: B) Concatena as strings
    Explicação: input() retorna uma string. Se num for "5", num + num resulta em "55", não 10.
  • Pergunta 3: Qual tipo de dado é usado para 3.14?
    Resposta Correta: B) float
    Explicação: 3.14 é um número decimal, representado pelo tipo float em Python.

6. Atividade Final da Aula

  • Tema: "Mini Programa de Cadastro"
  • Instruções:
    1. Abra o Repl.it e crie um novo projeto Python.
    2. Escreva um programa que:
      • Peça o nome, idade e altura do usuário com input().
      • Armazene os dados em variáveis (use int() para idade e float() para altura).
      • Exiba uma mensagem personalizada com print(), como: "Olá, [nome]! Você tem [idade] anos e [altura] metros."
    3. Exemplo de código esperado:
    4. 
      nome = input("Digite seu nome: ")
      idade = int(input("Digite sua idade: "))
      altura = float(input("Digite sua altura (ex.: 1.75): "))
      print("Olá,", nome, "! Você tem", idade, "anos e", altura, "metros.")
                
    5. Execute o programa e teste com seus próprios dados.
    6. Salve o link do Repl.it e compartilhe com o professor.
  • Extra (opcional): Adicione uma condição para exibir "Você é maior de idade" se a idade for >= 18.
  • Exercício 4: Calculadora de IMC

    Crie um programa que peça o peso (kg) e a altura (m) do usuário e calcule o Índice de Massa Corporal (IMC) usando a fórmula: IMC = peso / (altura * altura). Exiba o resultado com duas casas decimais.

    
    # Calculadora de IMC
    peso = float(input("Digite seu peso (kg): "))
    altura = float(input("Digite sua altura (m): "))
    imc = peso / (altura * altura)
    print(f"Seu IMC é {imc:.2f}")
            

    Explicação: O programa lê peso e altura como float, calcula o IMC e usa f-string com .2f para formatar a saída.

    Teste Você Mesmo! Teste com peso 70.0 e altura 1.75.

  • Exercício 5: Saudação com Ano

    Escreva um programa que peça o nome do usuário e o ano atual, e exiba uma saudação como: "Olá, [nome]! Bem-vindo a [ano]!".

    
    # Saudação com ano
    nome = input("Digite seu nome: ")
    ano = input("Digite o ano atual: ")
    print(f"Olá, {nome}! Bem-vindo a {ano}!")
            

    Explicação: O programa lê o nome e o ano como strings e usa uma f-string para criar uma mensagem personalizada.

    Teste Você Mesmo! Use seu nome e o ano 2025.

7. Jogos e Atividades Online

  • Silent Teacher - Teste sua lógica com desafios simples.
  • Little Dot - Jogo de sequência para treinar pensamento lógico.
  • Star Wars Blocks - Programação visual com tema Star Wars.
  • Em Casa: Crie um jogo simples no Scratch (ex.: "Catch Game").
Logo UFPR

Semana 2: Usando o Python

Logo Licenciatura

1. Python IDLE e Execução Básica

O Python IDLE tem dois modos: interativo (para testar comandos rapidamente, como uma calculadora) e script (para escrever e salvar programas). No modo interativo, você vê resultados imediatamente após digitar. No modo script, use File > New File, escreva o código, salve e execute com Run > Run Module.


$ python
>>> 10 + 10
20
>>> print("aprendendo python")
aprendendo python
    

Atenção: Use aspas corretas para delimitar strings (ex.: "aprendendo python").

Dica: Sempre salve seu script com extensão .py antes de executar, ou o IDLE mostrará um erro.

Exemplos em IDLE

  • Exemplo 1: Conversor de Temperatura

    Crie um novo arquivo no IDLE, escreva o código abaixo, salve como conversor.py e execute.

    
    # Conversor de Celsius para Fahrenheit
    celsius = float(input("Digite a temperatura em Celsius: "))
    fahrenheit = (celsius * 9/5) + 32
    print(f"{celsius}°C equivale a {fahrenheit}°F")
            

    Saída (exemplo): Digite a temperatura em Celsius: 25
    25°C equivale a 77°F

    Explicação: O programa usa float para aceitar decimais, aplica a fórmula F = (C * 9/5) + 32, e formata a saída com f-string.

    Teste Você Mesmo! No IDLE, crie o arquivo e teste com valores como 0 ou 37.

  • Exemplo 2: Área de um Círculo

    Escreva este código no IDLE, salve e execute.

    
    # Calcula a área de um círculo
    import math
    raio = float(input("Digite o raio (m): "))
    area = math.pi * (raio ** 2)
    print(f"A área do círculo é {area:.2f} m²")
            

    Saída (exemplo): Digite o raio (m): 5
    A área do círculo é 78.54 m²

    Explicação: Importamos math para usar math.pi. O operador ** calcula o quadrado do raio, e .2f limita a saída a duas casas decimais.

    Teste Você Mesmo! Teste com raios como 2.5 ou 10.

2. Operadores e Operandos

Operadores seguem regras de precedência, como na matemática (PEMDAS: Parênteses, Exponenciação, Multiplicação/Divisão, Adição/Subtração). Por exemplo, em 2 + 3 * 4, a multiplicação ocorre primeiro, resultando em 14, não 20. Use parênteses para clareza, como (2 + 3) * 4 para obter 20.

Operadores são úteis em cenários reais, como calcular descontos em compras ou converter unidades de tempo.

Operador Descrição Exemplo
+ Adição 5 + 3 = 8
- Subtração 5 - 3 = 2
* Multiplicação 5 * 3 = 15
/ Divisão 6 / 2 = 3.0
** Potenciação 2 ** 3 = 8

3. Desafios Interativos

Teste seus conhecimentos com estes desafios:

4. Variáveis e Expressões

Variáveis são "caixas" para armazenar valores. Veja alguns exemplos:


# Atribuição de variáveis
lucky = 7
print(lucky)  # Imprime: 7

mensagem = "E aí, velhinho?"
n = 17
pi = 3.14159

print(mensagem)  # Imprime: E aí, velhinho?
print(n)         # Imprime: 17
print(pi)        # Imprime: 3.14159
    

Prática:


red = 5
blue = 10
print(red, blue)  # Imprime: 5 10

yellow = red
print(yellow, red, blue)  # Imprime: 5 5 10
    

5. Tipos de Dados

Python trabalha com diferentes tipos de dados. Use a função type() para identificar o tipo:


print(type("Alô, Mundo!"))  # 
print(type(17))            # 
print(type(3.2))           # 
    

6. Trabalhando com Strings

  • Impressão simples: print("I am a single quoted string")
  • Uso de aspas e escape: print("So I said, \"You'll never understand me!\"")
  • Repetição: print("bouncy, " * 8)
  • Comprimento: len("Hello, world!") retorna 13

Concatenando strings:


fruta = "banana"
assada = " com canela"
print(fruta + assada)  # banana com canela
    

Fatiamento (slicing):


string = "Hello, world!"
print(string[0])      # 'H'
print(string[-6:-1])  # 'world'
    

Conversão de tipos:


number = 2
print(str(number))  # '2'
print(int("2"))     # 2
    
  • Operações com strings: concatenação, fatiamento, métodos como .upper() e .lower().
  • Atividade: Criar um programa para inverter uma palavra ou contar o número de vogais.
  • Recurso: PensePy - Strings

7. Listas

Listas armazenam vários valores:


spam = ["bacon", "eggs", 42]
print(spam[0])  # 'bacon'
spam.append(10)
print(spam)     # ['bacon', 'eggs', 42, 10]
spam.insert(1, 'and')
print(spam)     # ['bacon', 'and', 'eggs', 42, 10]
del spam[1]
print(spam)     # ['bacon', 'eggs', 42, 10]
    

8. Criando Arquivos Python

Exemplo de programa para calcular a área e o perímetro de um retângulo:


# coding: utf-8
print("Insira as informações do retângulo.")
length = input("Comprimento: ")
width = input("Largura: ")
print("Área:", length * width)
print("Perímetro:", 2 * length + 2 * width)
    

Salve este código em um arquivo area.py e execute com python area.py.

9. Exercícios Práticos

  • Calcule seu Índice de Massa Corporal (IMC) usando a fórmula: imc = peso / (altura * altura).
  • Converta temperaturas Celsius em Fahrenheit (F = (C * 9/5) + 32) e vice-versa.
  • Implemente o cálculo da Bhaskara para resolver equações do segundo grau, tratando deltas negativos.
  • Mais exercícios:

10. Funções e Métodos Úteis

Exemplos de funções integradas:


print("max(80, 100, 1000):", max(80, 100, 1000))
pyList = ['e', 'a', 'u', 'o', 'i']
print(sorted(pyList))
    

Funções comuns: print(), type(), str(), int(), float(), bool(), max(), sorted(), etc.

11. Recursos Online

12. Usando o Google Colab

O Google Colab é uma ferramenta gratuita que permite escrever e executar código Python diretamente no navegador. Ele é ideal para quem está começando, pois não requer instalação e oferece acesso a bibliotecas populares como NumPy, Pandas e Matplotlib.

  • Passo a Passo:
    1. Acesse Google Colab.
    2. Clique em "Novo Notebook" para criar um novo ambiente de programação.
    3. Escreva e execute código Python diretamente nas células. Exemplo:
    4. 
      # Exemplo de código no Google Colab
      nome = input("Digite seu nome: ")
      print("Olá,", nome, "! Bem-vindo ao Google Colab.")
                
    5. Para executar o código, clique no ícone de "play" ao lado da célula ou pressione Ctrl + Enter.
    6. Salve seu notebook no Google Drive clicando em "Arquivo" > "Salvar uma cópia no Drive".
  • Exemplos Básicos:
    • Exemplo 1: Cálculo Simples
    • 
      # Cálculo de potências
      base = 2
      expoente = 10
      resultado = base ** expoente
      print(f"{base} elevado a {expoente} é {resultado}")
                
    • Exemplo 2: Manipulação de Strings
    • 
      # Contar vogais em uma string
      texto = "Google Colab é incrível!"
      vogais = "aeiouAEIOU"
      contador = sum(1 for letra in texto if letra in vogais)
      print(f"O texto tem {contador} vogais.")
                
    • Exemplo 3: Listas e Loops
    • 
      # Criar e percorrer uma lista
      frutas = ["maçã", "banana", "laranja"]
      for fruta in frutas:
          print(f"Eu gosto de {fruta}!")
                
  • Vantagens do Google Colab:
    • Não requer instalação:
      • O Google Colab é uma ferramenta baseada em nuvem, o que significa que você não precisa instalar nada no seu computador.
      • Basta acessar colab.research.google.com e começar a programar diretamente no navegador.
      • Ideal para quem não quer se preocupar com configurações de ambiente ou compatibilidade de sistemas operacionais.
    • Integração com o Google Drive:
      • Os notebooks criados no Colab são automaticamente salvos no Google Drive, facilitando o armazenamento e o compartilhamento.
      • Você pode acessar seus projetos de qualquer dispositivo com acesso à internet.
      • Exemplo: Para abrir um notebook salvo no Drive, basta ir em "Arquivo" > "Abrir notebook" e selecionar o arquivo desejado.
    • Acesso a GPUs gratuitas para tarefas de machine learning:
      • O Colab oferece acesso gratuito a GPUs (Unidades de Processamento Gráfico) e TPUs (Unidades de Processamento Tensor), que são essenciais para treinar modelos de machine learning e deep learning.
      • Para ativar uma GPU, vá em "Ambiente de execução" > "Alterar tipo de ambiente de execução" > "Acelerador de hardware" e selecione "GPU".
      • Exemplo de uso: Treinar redes neurais com bibliotecas como TensorFlow ou PyTorch.
    • Suporte a bibliotecas populares de Python:
      • O Colab já vem pré-instalado com as principais bibliotecas de Python, como NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow e PyTorch.
      • Você também pode instalar bibliotecas adicionais diretamente no notebook usando o comando !pip install. Exemplo:
      • 
        !pip install seaborn
                
      • Isso facilita a execução de projetos complexos sem a necessidade de configurar ambientes locais.
    • Colaboração em tempo real:
      • Assim como o Google Docs, o Colab permite que várias pessoas trabalhem no mesmo notebook simultaneamente.
      • Ideal para projetos em equipe ou para receber feedback de colegas e professores.
      • Para compartilhar, clique em "Compartilhar" no canto superior direito e defina as permissões de acesso.
    • Visualização de dados e gráficos:
      • O Colab suporta a criação de gráficos interativos com bibliotecas como Matplotlib, Seaborn e Plotly.
      • Exemplo de gráfico com Matplotlib:
      • 
        import matplotlib.pyplot as plt
        x = [1, 2, 3, 4, 5]
        y = [10, 20, 25, 30, 40]
        plt.plot(x, y)
        plt.title("Gráfico de Linha")
        plt.xlabel("Eixo X")
        plt.ylabel("Eixo Y")
        plt.show()
                
      • Os gráficos são exibidos diretamente no notebook, facilitando a análise de dados.
    • Execução de células de código de forma independente:
      • No Colab, você pode executar células de código individualmente, o que facilita a depuração e o teste de partes específicas do programa.
      • Exemplo: Execute apenas a célula que calcula a média de uma lista, sem precisar rodar todo o código.
    • Exportação para diferentes formatos:
      • Você pode exportar seu notebook para diversos formatos, como PDF, HTML, .py (arquivo Python) ou até mesmo como um arquivo Jupyter Notebook (.ipynb).
      • Para exportar, vá em "Arquivo" > "Fazer download" e escolha o formato desejado.
  • Pergunta 1: Qual é a saída de 2 + 3 * 4?
    Resposta Correta: B) 14
    Explicação: A multiplicação (*) tem precedência sobre a adição (+). Assim, 3 * 4 = 12, e 2 + 12 = 14.
  • Pergunta 2: Qual operador calcula 5 ao cubo?
    Resposta Correta: B) 5 ** 3
    Explicação: O operador ** é usado para potenciação. 5 ** 3 calcula 5³, que é 125.
  • Pergunta 3: No IDLE, como você executa um programa salvo?
    Resposta Correta: B) Run > Run Module
    Explicação: No IDLE, após salvar o script, selecione Run > Run Module (ou pressione F5) para executá-lo.

13. Conclusão e Próximos Passos

Este slide apresentou os conceitos básicos de lógica de programação e introdução ao Python. Pratique esses conceitos e explore os recursos e exercícios sugeridos para aprimorar seu conhecimento. Experimente criar seus próprios programas e manipular variáveis, strings, listas e funções. Além disso, utilize o Google Colab para praticar e compartilhar seus projetos de forma colaborativa.

Logo UFPR

Semana 3: Condicionais

Logo Licenciatura

Objetivos da Aula

  • Entender o funcionamento das estruturas de decisão: if, elif, else.
  • Praticar situações com condições simples e múltiplas.
  • Aplicar decisões em programas que respondem a diferentes entradas.

1. Introdução às Condicionais

Pense em condicionais como uma árvore de decisões: se você está com vontade de ação, escolhe um filme de super-heróis; se prefere comédia, vai de animação; senão, talvez um drama. O Python usa if, elif e else para guiar o programa por essas escolhas.

Na vida real, tomamos decisões o tempo todo: "Se estiver chovendo, levo guarda-chuva; senão, vou sem." Em programação, usamos if para expressar esse tipo de lógica.

if condição:
    # código executado se a condição for verdadeira
elif outra_condição:
    # código executado se a outra condição for verdadeira
else:
    # código executado se nenhuma for verdadeira

Cuidados comuns: Esquecer os dois pontos (:) ou a indentação causa erros. Além disso, use == para comparar valores, não = (que atribui valores).

Exemplo de erro:


# Errado
if idade = 18  # Usa = em vez de ==
    print("Maior")

# Correto
if idade == 18:
    print("Maior")
    

Operadores Lógicos: Combine condições com and, or e not.

Operador Descrição Exemplo
and Verdadeiro se ambas condições são verdadeiras idade >= 18 and possui_carteira
or Verdadeiro se pelo menos uma condição é verdadeira idade < 13 or idade > 65
not Inverte o valor da condição not esta_chovendo

2. Exemplos Práticos

Exemplo 1: Verificar se é maior de idade

idade = int(input("Digite sua idade: "))

if idade >= 18:
    print("Você é maior de idade.")
else:
    print("Você é menor de idade.")

Exemplo 2: Nota para conceito

nota = float(input("Digite sua nota: "))

if nota >= 9:
    print("Conceito A")
elif nota >= 7:
    print("Conceito B")
elif nota >= 5:
    print("Conceito C")
else:
    print("Conceito D")

  • Exemplo 3: Elegibilidade para Desconto

    Verifica se um cliente recebe desconto com base no valor da compra e status de membro.

    
    # Verifica elegibilidade para desconto
    valor_compra = float(input("Digite o valor da compra (R$): "))
    membro = input("É membro? (sim/não): ").lower()
    
    if valor_compra >= 100 and membro == "sim":
        print("Você tem direito a 10% de desconto!")
    else:
        print("Desconto não aplicável.")
            

    Saída (exemplo): Digite o valor da compra (R$): 150
    É membro? (sim/não): sim
    Você tem direito a 10% de desconto!

    Explicação: Usa and para combinar condições. .lower() converte a entrada para minúsculas, garantindo consistência.

    Teste Você Mesmo! No Python Tutor, teste com valor 80 e “não” ou 200 e “sim”.

  • Exemplo 4: Simulador de Semáforo

    Simula ações baseadas na cor do semáforo.

    
    # Simulador de semáforo
    cor = input("Digite a cor do semáforo (vermelho, amarelo, verde): ").lower()
    
    if cor == "vermelho":
        print("Pare!")
    elif cor == "amarelo":
        print("Atenção, prepare-se.")
    elif cor == "verde":
        print("Siga em frente.")
    else:
        print("Cor inválida.")
            

    Saída (exemplo): Digite a cor do semáforo (vermelho, amarelo, verde): verde
    Siga em frente.

    Explicação: Usa múltiplos elif para verificar a cor. O else lida com entradas inválidas.

    Teste Você Mesmo! Teste com “AMARELO” ou “azul” no Python Tutor.

3. Atividade Prática

Crie um programa que:

  • Peça o nome e a temperatura corporal de uma pessoa.
  • Se a temperatura for maior ou igual a 37.5°C, exiba: "[nome], você pode estar com febre."
  • Se for menor, exiba: "[nome], sua temperatura está normal."
nome = input("Digite seu nome: ")
temperatura = float(input("Digite sua temperatura corporal: "))

if temperatura >= 37.5:
    print(nome, "você pode estar com febre.")
else:
    print(nome, "sua temperatura está normal.")

4. Dicas Importantes

  • Não esqueça os : no final de cada linha com if, elif ou else.
  • O bloco de código dentro de cada condição precisa ser indentado (recuado com 4 espaços ou Tab).
  • Use int() ou float() para converter valores de input().

5. Recursos Complementares

  • Estruturas de seleção: if, elif e else.
  • Atividade: Criar um programa que verifica se um número é par ou ímpar.
  • Recurso: PensePy - Seleção
  • Exemplo Contar Condicional: PensePy - Seleção

Como Usar o Python Tutor para Entender o Código Passo a Passo

O Python Tutor é uma ferramenta online gratuita que permite visualizar como o Python executa seu código linha por linha. Isso é muito útil para entender melhor o funcionamento das variáveis, das estruturas de decisão (como o if) e do fluxo de execução.

  1. Acesse o site: https://pythontutor.com
  2. Na área de edição, escreva ou cole o código Python que deseja analisar.
  3. Selecione "Python 3" no menu suspenso ao lado do botão "Visualize Execution".
  4. Clique em "Visualize Execution".
  5. Use os botões "Next" e "Prev" para avançar ou voltar na execução do programa.

Você verá, em tempo real, como o Python cria e modifica as variáveis, toma decisões com if, e executa cada linha do código. É uma ótima maneira de estudar e aprender com calma!

Atividade: Visualize o funcionamento das condicionais no Python Tutor

Copie e cole o código abaixo no site Python Tutor e clique em "Visualize Execution" para ver passo a passo como o Python interpreta cada linha.


idade = 16

if idade < 13:
    print("Criança")
elif idade < 18:
    print("Adolescente")
else:
    print("Adulto")

O que observar:

  • O Python verifica a condição idade < 13 e como é falsa, pula para o elif.
  • Como idade < 18 é verdadeira, ele executa print("Adolescente").
  • O bloco else é ignorado.
  • Ao clicar em “Next” no Python Tutor, observe a linha sendo executada e o fluxo de decisão.

Dica: Altere o valor de idade para 10, 18 ou 30 e veja como muda o resultado!

Quiz: Teste seus conhecimentos

1. Qual operador é usado para comparação de igualdade em Python?

  • A) ==
  • B) =
  • C) !=

2. O que acontece se uma condição if for falsa e não houver else?

  • A) Nada é executado
  • B) Um erro ocorre
  • C) Sempre executa o if

3. Em que caso devemos usar elif?

  • A) Quando há várias condições a verificar
  • B) Quando queremos sair do programa
  • C) Quando usamos apenas um if

4. O que acontece se esquecermos os dois pontos : após o if?

  • A) Erro de sintaxe
  • B) Nada acontece
  • C) O else é executado

5. Qual é a saída do código abaixo se x = 8?

if x > 5:
    print("Maior que 5")
else:
    print("Menor ou igual a 5")
  • A) Maior que 5
  • B) Menor ou igual a 5
Logo UFPR

Semana 4: Loops

Logo Licenciatura

Conceitos de Repetição

Loops são como seguir uma receita: um for é ideal para repetir um passo um número fixo de vezes, como cortar 5 cenouras; um while repete até atingir um estado, como amassar a massa até ficar macia.

Os loops permitem repetir ações várias vezes. Em Python, os dois principais tipos são:

  • while: repete enquanto uma condição for verdadeira.
  • for: percorre uma sequência ou intervalo de valores.

Cuidados: Em while, evite loops infinitos esquecendo de atualizar a condição. Em for, atenção ao intervalo do range para evitar erros de contagem.

Exemplo de erro:


# Errado (loop infinito)
contador = 1
while contador <= 5:
    print(contador)  # Falta contador += 1

# Correto
contador = 1
while contador <= 5:
    print(contador)
    contador += 1
    


Loops Aninhados: Um loop dentro de outro, útil para tarefas como criar tabelas ou padrões. Exemplo: imprimir um grid 3x3.

Exemplo com while

contador = 1
while contador <= 5:
    print("Contando:", contador)
    contador += 1

Saída: Contando: 1, 2, 3, 4, 5

Exemplo com for

for i in range(1, 6):
    print("Contando:", i)

Saída: Contando: 1, 2, 3, 4, 5

Comparação entre while e for

O for é ideal quando você sabe quantas vezes quer repetir algo.
O while é melhor para repetições com condições dinâmicas, como esperar uma senha correta.

Exemplo no Python Tutor

Copie o código abaixo e cole no Python Tutor para visualizar passo a passo.

# Soma de 1 até N
n = int(input("Digite um número: "))
soma = 0
for i in range(1, n + 1):
    soma += i
print("A soma é:", soma)

Observe: como a variável i percorre os valores e como soma é atualizada em cada passo.

Exemplos Práticos

  • Exemplo 3: Validador de Senha

    Pede uma senha até que tenha pelo menos 6 caracteres.

    
    # Validador de senha
    senha = input("Digite uma senha (mínimo 6 caracteres): ")
    while len(senha) < 6:
        print("Senha muito curta!")
        senha = input("Digite novamente: ")
    print("Senha válida!")
            

    Saída (exemplo): Digite uma senha (mínimo 6 caracteres): abc
    Senha muito curta!
    Digite novamente: python123
    Senha válida!

    Explicação: O while continua até len(senha) >= 6. Usa input para interação dinâmica.

    Teste Você Mesmo! No Python Tutor, teste com senhas como “123” e “segura”.

  • Exemplo 4: Tabela de Multiplicação

    Imprime uma tabela de multiplicação 5x5.

    
    # Tabela de multiplicação 5x5
    for i in range(1, 6):
        for j in range(1, 6):
            print(f"{i} x {j} = {i * j}")
        print()  # Linha em branco após cada linha
            

    Saída (exemplo):
    1 x 1 = 1
    1 x 2 = 2
    ...
    5 x 4 = 20
    5 x 5 = 25

    Explicação: Usa loops aninhados: o externo (i) controla linhas, o interno (j) controla colunas.

    Teste Você Mesmo! Teste com range(1, 4) para uma tabela 3x3.

Exercícios práticos - Tente

  • 1. Crie um programa que imprime os múltiplos de 3 de 1 a 30.
  • 2. Escreva um código que peça um número e mostre sua tabuada até 10.
  • 3. Faça um programa que conta de 10 até 1 usando while.

Desafios (com solução)

Desafio: Some todos os números pares entre 1 e 100.

soma = 0
for i in range(2, 101, 2):
    soma += i
print("Soma dos pares:", soma)

Desafio: Conte quantos números entre 1 e 50 são divisíveis por 7.

contador = 0
for i in range(1, 51):
    if i % 7 == 0:
        contador += 1
print("Quantidade divisíveis por 7:", contador)

Atividade Gamificada

Implemente um jogo simples onde o usuário deve adivinhar um número entre 1 e 10.

import random
numero_secreto = random.randint(1, 10)
tentativa = 0

while True:
    chute = int(input("Adivinhe o número entre 1 e 10: "))
    tentativa += 1
    if chute == numero_secreto:
        print(f"Parabéns! Acertou em {tentativa} tentativas!")
        break
    else:
        print("Tente novamente!")

Objetivo: Praticar o uso de while com entrada de dados e condição de parada.

Recurso complementar: PensePy - Iteração

Quiz: Teste seus conhecimentos sobre Loops

1. Qual a principal diferença entre os laços for e while?

2. O que o código for i in range(3): faz?

3. Qual é o papel do i += 1 em um laço while?

4. Qual saída é gerada por: for i in range(1, 4): print(i)?

5. O que acontece se a condição do while for sempre verdadeira e não houver break?

Logo UFPR

Semana 5: Listas (Vetores) e Matrizes

Logo Licenciatura

1. O que são listas?

Listas são como uma lista de compras: você pode adicionar itens (ex.: maçãs, leite), remover ou alterar, e ela cresce ou encolhe conforme necessário. Em Python, listas são flexíveis e podem conter números, textos ou até outras listas.

Listas em Python (também chamadas de vetores) são estruturas que armazenam coleções de valores. Elas podem crescer dinamicamente e armazenar qualquer tipo de dado.

Criação de uma lista

notas = [7.5, 8.0, 9.2]

Acessando e modificando elementos

print(notas[0])  # exibe 7.5
notas[1] = 8.5   # altera a segunda nota

Iterando sobre uma lista

for nota in notas:
    print("Nota:", nota)

Métodos Úteis:

Método Descrição Exemplo
append(x) Adiciona x ao final da lista notas.append(8.0)
pop(i) Remove e retorna o item no índice i notas.pop(0)
len(lista) Retorna o tamanho da lista len(notas)

Cuidados: Evite acessar índices inválidos (ex.: notas[10] em uma lista de 3 itens) ou modificar uma lista enquanto itera, o que pode causar erros.

Exemplo de erro:


# Errado
notas = [1, 2, 3]
for n in notas:
    notas.pop(0)  # Modifica durante iteração

# Correto
notas = [1, 2, 3]
while len(notas) > 0:
    print(notas.pop(0))
    

2. Atividade: Média de notas

Vamos criar um programa que calcula a média das notas informadas pelo usuário.

notas = []
for i in range(3):
    valor = float(input(f"Digite a nota {i+1}: "))
    notas.append(valor)
media = sum(notas) / len(notas)
print("Média:", media)

3. Matrizes (listas de listas)

Matrizes são como uma planilha: cada linha é uma lista, e cada célula é acessada por dois índices (linha, coluna). Por exemplo, em matriz[1][2], 1 é a linha e 2 é a coluna.

Cuidados: Verifique os limites da matriz para evitar erros de índice (ex.: matriz[3][0] em uma matriz 3x3 causa erro).

Em Python, uma matriz pode ser representada por uma lista de listas. Exemplo: matriz 3x3.

matriz = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

Acessando valores

print(matriz[1][2])  # exibe 6

Iterando sobre uma matriz

for linha in matriz:
    for elemento in linha:
        print(elemento, end=" ")
    print()

Exemplos Práticos

  • Exemplo 1: Inverter uma Lista

    Inverte uma lista usando pop e append.

    
    # Inverter uma lista
    numeros = [1, 2, 3, 4, 5]
    invertida = []
    while len(numeros) > 0:
        invertida.append(numeros.pop())
    print("Lista invertida:", invertida)
            

    Saída: Lista invertida: [5, 4, 3, 2, 1]

    Explicação: pop() remove o último elemento, e append adiciona à nova lista, invertendo a ordem.

    Teste Você Mesmo! Teste com [10, 20, 30] no Python Tutor.

  • Exemplo 2: Transpor uma Matriz

    Transpõe uma matriz 3x3 (troca linhas por colunas).

    
    # Transpor matriz 3x3
    matriz = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    transposta = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
    for i in range(3):
        for j in range(3):
            transposta[j][i] = matriz[i][j]
    print("Matriz transposta:")
    for linha in transposta:
        print(linha)
            

    Saída:
    Matriz transposta:
    [1, 4, 7]
    [2, 5, 8]
    [3, 6, 9]

    Explicação: Usa loops aninhados para copiar matriz[i][j] para transposta[j][i].

    Teste Você Mesmo! Teste no Python Tutor e observe a troca de índices.

4. Python Tutor

Cole esse código no Python Tutor para entender passo a passo:

# Soma dos elementos de uma matriz 3x3
matriz = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
soma = 0
for linha in matriz:
    for valor in linha:
        soma += valor
print("Soma total:", soma)

Observe: o valor da variável soma sendo atualizado a cada passo no laço aninhado.


Exercícios Práticos

Escreva os programas abaixo no Python Tutor ou IDLE, execute e compartilhe o código com o professor.

  • Exercício 1: Filtrar Notas Aprovadas

    Crie um programa que peça 5 notas e crie uma lista apenas com notas ≥ 7.0.

    
    # Filtrar notas aprovadas
    notas = []
    aprovadas = []
    for i in range(5):
        nota = float(input(f"Digite a nota {i+1}: "))
        notas.append(nota)
        if nota >= 7.0:
            aprovadas.append(nota)
    print("Notas aprovadas:", aprovadas)
            

    Explicação: Usa um loop para coletar notas e uma condição para adicionar apenas notas ≥ 7.0 à lista aprovadas.

    Teste Você Mesmo! Teste com notas como 6.5, 7.8, 9.0, 5.5, 8.2.

  • Exercício 2: Soma da Diagonal Principal

    Escreva um programa que some os elementos da diagonal principal de uma matriz 3x3.

    
    # Soma da diagonal principal
    matriz = [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    soma_diagonal = 0
    for i in range(3):
        soma_diagonal += matriz[i][i]
    print("Soma da diagonal principal:", soma_diagonal)
            

    Explicação: A diagonal principal tem índices [0][0], [1][1], [2][2]. O loop usa i para acessar ambos.

    Teste Você Mesmo! Teste com uma matriz diferente no Python Tutor.

  • Exercício 3: Remover Duplicatas

    Crie um programa que remova duplicatas de uma lista, mantendo a ordem original.

    
    # Remover duplicatas
    numeros = [1, 2, 2, 3, 1, 4]
    sem_duplicatas = []
    for num in numeros:
        if num not in sem_duplicatas:
            sem_duplicatas.append(num)
    print("Lista sem duplicatas:", sem_duplicatas)
            

    Explicação: Verifica se cada número já está em sem_duplicatas antes de adicioná-lo, preservando a ordem.

    Teste Você Mesmo! Teste com [5, 5, 3, 3, 2].

5. Recurso complementar

Estude mais sobre listas no PensePy:

PensePy - Listas

6. Quiz

1. Como acessar o terceiro elemento de uma lista notas?

  • A) notas[2]
  • B) notas[3]
  • C) notas[1]

2. Qual método adiciona um elemento ao final de uma lista?

  • A) append
  • B) pop
  • C) len

3. Como acessar o elemento na segunda linha, terceira coluna de uma matriz?

  • A) matriz[1][2]
  • B) matriz[2][1]
  • C) matriz[0][2]

4. O que acontece ao tentar acessar lista[5] em uma lista com 3 elementos?

  • A) Erro de índice
  • B) Retorna 0
  • C) Retorna o último elemento

5. Qual é a saída do código abaixo?

numeros = [1, 2, 3]
numeros.append(4)
print(numeros)
  • A) [1, 2, 3, 4]
  • B) [4, 1, 2, 3]
  • C) [1, 2, 3]
Logo UFPR

Semana 6: Dicionários

Logo Licenciatura

O que são dicionários?

Dicionários em Python são coleções que armazenam pares chave-valor. Cada chave é única e aponta para um valor.

Dicionários são como uma agenda telefônica: cada nome (chave) está ligado a um número (valor). As chaves devem ser imutáveis (ex.: strings, números, tuplas), mas os valores podem ser qualquer tipo, até outros dicionários.

Cuidados: Evite acessar chaves inexistentes (use .get()) e modificar um dicionário durante iteração, o que pode causar erros.

Exemplo de erro:


# Errado
d = {"a": 1, "b": 2}
for k in d:
    del d[k]  # Modifica durante iteração

# Correto
d = {"a": 1, "b": 2}
for k in list(d.keys()):
    del d[k]
    

Dicionários Aninhados: Um dicionário pode conter outros dicionários, útil para estruturas complexas como um banco de dados de alunos.

Criação e acesso

aluno = {"nome": "João", "idade": 20, "curso": "Computação"}
print(aluno["nome"])  # Saída: João

Modificação e adição de dados

aluno["idade"] = 21
aluno["nota"] = 8.5

Métodos úteis

aluno.keys()      # retorna todas as chaves
aluno.values()    # retorna todos os valores
aluno.items()     # retorna tuplas (chave, valor)

Verificar chave

if "curso" in aluno:
    print("Curso presente")

Apelidos e cópias

Ao copiar um dicionário, use copy() para evitar referências:

novo = aluno.copy()
novo["nome"] = "Maria"

Uso em matrizes esparsas

Dicionários são úteis para representar matrizes esparsas, onde a maioria dos valores é zero:

matriz = {}
matriz[(1, 2)] = 5
matriz[(3, 4)] = 7
print(matriz.get((1, 2), 0))  # retorna 5
print(matriz.get((0, 0), 0))  # retorna 0 (padrão)

Glossário

  • Chave (key): Identificador único de um valor.
  • Valor (value): Dados associados a uma chave.
  • item(): Retorna pares chave-valor como tuplas.
  • copy(): Cria uma cópia independente do dicionário.

Visualizando Dicionários no Python Tutor

Copie o código abaixo e cole no Python Tutor para entender como o Python manipula dicionários.

# Exemplo de uso de dicionários
aluno = {
    "nome": "Ana",
    "idade": 21,
    "notas": [8.5, 9.0, 7.5]
}

# Acessando valores
print("Nome:", aluno["nome"])
print("Idade:", aluno["idade"])

# Alterando um valor
aluno["idade"] = 22

# Adicionando uma nova chave
aluno["curso"] = "Engenharia"

# Iterando sobre o dicionário
for chave in aluno:
    print(chave, "->", aluno[chave])

🧠 O que observar:

  • Como o dicionário aluno armazena pares chave-valor.
  • Como acessar e alterar valores por chave.
  • Como adicionar novas chaves.
  • Como o laço for percorre cada chave e exibe o valor correspondente.

Novos Exemplos Práticos

  • Exemplo 1: Contador de Frequência de Palavras

    Conta quantas vezes cada palavra aparece em uma frase.

    
    # Contador de frequência
    frase = input("Digite uma frase: ").lower()
    palavras = frase.split()
    frequencia = {}
    for palavra in palavras:
        frequencia[palavra] = frequencia.get(palavra, 0) + 1
    print("Frequência:", frequencia)
            

    Saída (exemplo): Digite uma frase: olá mundo olá
    Frequência: {'olá': 2, 'mundo': 1}

    Explicação: Usa .get() para evitar erros com chaves novas e atualiza contagens dinamicamente.

    Teste Você Mesmo! Teste com “a a b” no Python Tutor.

  • Exemplo 2: Banco de Dados de Alunos

    Gerencia um dicionário aninhado de alunos com notas.

    
    # Banco de dados de alunos
    alunos = {
        "João": {"idade": 20, "notas": [8.0, 7.5]},
        "Maria": {"idade": 19, "notas": [9.0, 8.5]}
    }
    print("Notas de João:", alunos["João"]["notas"])
    alunos["Maria"]["notas"].append(9.5)
    print("Notas atualizadas de Maria:", alunos["Maria"]["notas"])
            

    Saída:
    Notas de João: [8.0, 7.5]
    Notas atualizadas de Maria: [9.0, 8.5, 9.5]

    Explicação: Acessa e modifica dicionários aninhados usando múltiplos índices.

    Teste Você Mesmo! Adicione um novo aluno no Python Tutor.

Exercícios

  • 1. Crie um dicionário para armazenar informações de um livro (título, autor, ano).
    livro = {
        "título": "Dom Casmurro",
        "autor": "Machado de Assis",
        "ano": 1899
    }
    print(livro)

    Explicação: Um dicionário permite armazenar pares chave-valor. Neste exemplo, temos três informações associadas ao livro.

  • 2. Escreva um código que conte a quantidade de letras de cada palavra de uma frase digitada.
    frase = input("Digite uma frase: ")
    palavras = frase.split()
    resultado = {}
    
    for palavra in palavras:
        resultado[palavra] = len(palavra)
    
    print(resultado)

    Explicação: O código divide a frase em palavras e cria um dicionário onde a chave é a palavra e o valor é seu comprimento.

  • 3. Implemente um dicionário para representar uma matriz esparsa 3x3 com três elementos preenchidos.
    matriz_esparsa = {
        (0, 1): 5,
        (1, 2): 8,
        (2, 0): 3
    }
    print(matriz_esparsa)

    Explicação: Em uma matriz esparsa, apenas as posições com valores diferentes de zero são armazenadas. As chaves são tuplas com as coordenadas (linha, coluna).

  • Exercício 4: Atualizar Notas de Aluno

    Crie um programa que peça o nome de um aluno e uma nova nota, atualizando seu dicionário de notas.

    
    # Atualizar notas
    alunos = {"João": [8.0, 7.5], "Maria": [9.0, 8.5]}
    nome = input("Digite o nome do aluno: ")
    nota = float(input("Digite a nova nota: "))
    if nome in alunos:
        alunos[nome].append(nota)
        print(f"Notas de {nome}:", alunos[nome])
    else:
        print("Aluno não encontrado.")
            

    Explicação: Verifica se o aluno existe com in e usa append para adicionar a nota.

    Teste Você Mesmo! Teste com “João” e nota 9.0, ou um nome inválido.

  • Exercício 5: Inverter Dicionário

    Escreva um programa que inverta chaves e valores de um dicionário (assumindo valores únicos).

    
    # Inverter dicionário
    d = {"a": 1, "b": 2, "c": 3}
    invertido = {}
    for chave, valor in d.items():
        invertido[valor] = chave
    print("Dicionário invertido:", invertido)
            

    Explicação: Usa .items() para acessar pares chave-valor e cria um novo dicionário com chaves e valores trocados.

    Teste Você Mesmo! Teste com {"x": 10, "y": 20}.

  • Exercício 6: Soma de Matriz Esparsa

    Some os valores não-nulos de uma matriz esparsa representada por um dicionário.

    
    # Soma de matriz esparsa
    matriz = {(0, 1): 5, (1, 2): 8, (2, 0): 3}
    soma = 0
    for valor in matriz.values():
        soma += valor
    print("Soma dos valores:", soma)
            

    Explicação: Usa .values() para somar todos os valores do dicionário, ignorando as chaves (coordenadas).

    Teste Você Mesmo! Teste com uma matriz diferente.

Quiz Interativo

Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.

1. Como acessar o valor associado à chave "idade" em um dicionário aluno?

  • A) aluno['idade']
  • B) aluno('idade')
  • C) aluno.idade

2. Qual método retorna todas as chaves de um dicionário?

  • A) keys()
  • B) values()
  • C) items()

3. O que acontece ao acessar uma chave inexistente sem .get()?

  • A) Erro KeyError
  • B) Retorna 0
  • C) Retorna None

4. Qual é a saída do código abaixo?

d = {'a': 1, 'b': 2}
d['c'] = 3
print(d)
  • A) {'a': 1, 'b': 2, 'c': 3}
  • B) {'a': 1, 'b': 2}
  • C) {'c': 3}

5. Como iterar sobre as chaves e valores de um dicionário d em um laço for?

  • A) for k, v in d.items():
  • B) for k in d:
  • C) for v in d.values():
Logo UFPR

Semana 7: Arquivos

Logo Licenciatura

1. Trabalhando com Arquivos

Em Python, arquivos podem ser abertos, lidos e escritos facilmente usando a função open().

Arquivos em Python são como cadernos: você pode ler anotações (modo leitura), escrever novas (modo escrita) ou adicionar ao final (modo append). A função open() gerencia essas operações.

Modos de Abertura:

Modo Descrição Exemplo
"r" Leitura (padrão, erro se o arquivo não existe) open("dados.txt", "r")
"w" Escrita (sobrescreve, cria se não existe) open("saida.txt", "w")
"a" Adicionar ao final (cria se não existe) open("log.txt", "a")

Cuidados: Evite abrir arquivos sem fechá-los (use with) e verifique se o arquivo existe ao ler para evitar erros como FileNotFoundError.

Exemplo de erro:


# Errado
arquivo = open("nao_existe.txt", "r")  # Erro: arquivo não existe
print(arquivo.read())

# Correto
try:
    with open("nao_existe.txt", "r") as arquivo:
        print(arquivo.read())
except FileNotFoundError:
    print("Arquivo não encontrado!")
    

Tipos de Arquivos: Esta aula foca em arquivos de texto (ex.: .txt), que armazenam strings. Arquivos binários (ex.: imagens) usam modos como "rb" ou "wb".

2. Abrindo e Fechando Arquivos

# Abre um arquivo para leitura
arquivo = open("dados.txt", "r")
conteudo = arquivo.read()
print(conteudo)
arquivo.close()

Dica: Sempre feche o arquivo após usá-lo com close().

3. Usando with (forma recomendada)

with open("dados.txt", "r") as arquivo:
    for linha in arquivo:
        print(linha.strip())

Vantagem: O arquivo é fechado automaticamente, mesmo se ocorrerem erros.

4. Escrevendo em um Arquivo

with open("saida.txt", "w") as arquivo:
    arquivo.write("Linha 1\n")
    arquivo.write("Linha 2\n")

Observação: O modo "w" sobrescreve o conteúdo. Para adicionar ao final use "a".

5. Visualize no Python Tutor

Copie e cole o código abaixo em Python Tutor para entender como arquivos são manipulados:

with open("exemplo.txt", "w") as f:
    f.write("Olá mundo\nAprendendo arquivos")

with open("exemplo.txt", "r") as f:
    for linha in f:
        print(linha)

Observe: O conteúdo é gravado e, depois, lido linha por linha.

7. Exemplos Práticos

  • Exemplo 1: Contar Linhas em um Arquivo

    Conta quantas linhas existem em um arquivo de texto.

    
    with open("dados.txt", "r") as arquivo:
        linhas = arquivo.readlines()
        print("Número de linhas:", len(linhas))
            

    Saída (exemplo): Número de linhas: 3

    Explicação: readlines() retorna uma lista de linhas, e len() conta quantas são.

    Teste Você Mesmo! Crie um arquivo com 5 linhas e teste no Python Tutor.

  • Exemplo 2: Adicionar a um Arquivo de Log

    Adiciona uma entrada com data e hora a um arquivo de log.

    
    from datetime import datetime
    with open("log.txt", "a") as arquivo:
        agora = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
        arquivo.write(f"Entrada em: {agora}\n")
            

    Saída (exemplo no arquivo): Entrada em: 05/05/2025 14:30:00

    Explicação: Usa modo "a" para adicionar sem sobrescrever e formata a data com strftime.

    Teste Você Mesmo! Execute várias vezes e verifique o arquivo.

  • Exemplo 3: Filtrar Dados de um Arquivo

    Lê números de um arquivo e imprime os maiores que 10.

    
    with open("numeros.txt", "r") as arquivo:
        for linha in arquivo:
            numero = float(linha.strip())
            if numero > 10:
                print("Número:", numero)
            

    Saída (exemplo): Número: 15.5
    Número: 20.0

    Explicação: Lê cada linha, converte para float, e filtra com uma condição.

    Teste Você Mesmo! Crie um arquivo com números (ex.: 5, 12, 8, 15) e teste.

7. Exercícios

  • 1. Crie um arquivo chamado alunos.txt e escreva o nome de 3 alunos nele.
    with open("alunos.txt", "w") as f:
        f.write("Ana\nBruno\nCarlos")
  • 2. Leia o arquivo alunos.txt e imprima cada nome com a mensagem "Presente: " antes do nome.
    with open("alunos.txt", "r") as f:
        for nome in f:
            print("Presente:", nome.strip())

8. Glossário

  • open(): Abre um arquivo.
  • read(): Lê todo o conteúdo de um arquivo.
  • write(): Escreve em um arquivo.
  • with: Gerencia contexto, fechando o arquivo automaticamente.
  • "r", "w", "a": Modos de abertura: leitura, escrita e adicionar.

Novos Exercícios Práticos

  • Exercício 3: Copiar Conteúdo de um Arquivo

    Crie um programa que copie o conteúdo de entrada.txt para saida.txt.

    
    with open("entrada.txt", "r") as origem:
        with open("saida.txt", "w") as destino:
            destino.write(origem.read())
            

    Explicação: Lê todo o conteúdo de entrada.txt com read() e escreve em saida.txt com write().

    Teste Você Mesmo! Crie entrada.txt com algumas linhas e verifique saida.txt.

  • Exercício 4: Contar Palavras em um Arquivo

    Escreva um programa que conte o número total de palavras em um arquivo.

    
    with open("texto.txt", "r") as arquivo:
        palavras = 0
        for linha in arquivo:
            palavras += len(linha.split())
        print("Total de palavras:", palavras)
            

    Explicação: split() divide cada linha em palavras, e len() conta quantas há. Soma todas as linhas.

    Teste Você Mesmo! Crie um arquivo com um parágrafo e teste.

  • Exercício 5: Salvar Notas de Alunos

    Salve um dicionário de alunos e notas em um arquivo notas.txt.

    
    alunos = {"Ana": 8.5, "Bruno": 7.0, "Carlos": 9.0}
    with open("notas.txt", "w") as arquivo:
        for nome, nota in alunos.items():
            arquivo.write(f"{nome}: {nota}\n")
            

    Explicação: Itera sobre o dicionário com .items() e escreve cada par nome-nota em uma linha.

    Teste Você Mesmo! Verifique o arquivo notas.txt após executar.

Quiz Interativo

Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.

1. Qual é a função usada para abrir um arquivo em Python?

  • A) open()
  • B) read()
  • C) write()

2. Qual é a vantagem de usar a instrução with ao abrir um arquivo?

  • A) Fecha o arquivo automaticamente
  • B) Lê o arquivo mais rápido
  • C) Cria o arquivo automaticamente

3. Qual modo de abertura sobrescreve o conteúdo de um arquivo?

  • A) 'w'
  • B) 'r'
  • C) 'a'

4. O que acontece se tentar abrir um arquivo inexistente no modo 'r'?

  • A) Erro FileNotFoundError
  • B) Cria um novo arquivo vazio
  • C) Retorna None

5. Qual é a saída do código abaixo, assumindo que texto.txt contém duas linhas: “Linha 1” e “Linha 2”?

with open("texto.txt", "r") as f:
    print(f.readline().strip())
        
  • A) Linha 1
  • B) Linha 1\nLinha 2
  • C) Linha 1\n

Uso de bibliotecas no Python

Introdução às Bibliotecas em Python

Bibliotecas em Python são coleções de funções e ferramentas que expandem as capacidades do idioma, permitindo realizar tarefas complexas de forma simples e eficiente. Elas são como caixas de ferramentas especializadas, oferecendo soluções prontas para cálculos, visualizações, manipulações de dados e mais. Nesta seção, exploraremos cinco bibliotecas essenciais para iniciantes: math para cálculos matemáticos, matplotlib para criação de gráficos, random para geração de números e escolhas aleatórias, datetime para manipulação de datas e horas, e numpy para operações com arrays e dados numéricos.

Biblioteca math e Visualização com matplotlib

Trabalhando com operações matemáticas e gráficos em Python

-------------------------------------

Uso da biblioteca math

Bibliotecas em Python são como ferramentas especializadas: a math é uma calculadora avançada para operações matemáticas, enquanto a matplotlib é um caderno de esboços para visualizar dados em gráficos.

Biblioteca math: Fornece funções para cálculos como arredondamentos, potências, raízes e trigonometria.

Função Descrição Exemplo
floor(x) Arredonda para baixo math.floor(3.7) → 3
ceil(x) Arredonda para cima math.ceil(3.2) → 4
sqrt(x) Raiz quadrada math.sqrt(16) → 4.0
pow(x, y) x elevado a y math.pow(2, 3) → 8.0

Para cálculos matemáticos, a biblioteca math fornece várias funções úteis:

import math

n = 100.7
print(math.floor(n))  # arredonda para baixo
print(math.ceil(n))   # arredonda para cima

print(sum([0.9999999, 1, 2, 3]))

print(math.trunc(123.45))  # remove a parte decimal

print(math.pow(2, 3))       # 2 elevado a 3
print(2 ** 3)               # mesmo resultado com operador

print(math.sqrt(9))
print(math.sqrt(16))

print(math.cos(math.radians(60)))
print(math.sin(math.radians(90)))
print(math.tan(math.radians(45)))

Conversões angulares

print(math.degrees(math.pi))  # converte radianos em graus
print(math.radians(180))     # converte graus em radianos

Documentação

Documentação oficial da biblioteca math


-------------------------------------

Biblioteca matplotlib

Biblioteca matplotlib: Permite criar gráficos como linhas, barras e dispersão para visualizar dados.

Cuidados:

  • math: Use radians() para funções trigonométricas, pois elas esperam ângulos em radianos, não graus.
  • matplotlib: Verifique que listas de dados (x, y) tenham o mesmo tamanho e use plt.savefig() para salvar gráficos.

Exemplo de erro:


# Errado: listas de tamanhos diferentes
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [10, 20]  # Erro: tamanhos não correspondem
plt.plot(x, y)
plt.savefig("erro.png")

# Correto
x = [1, 2, 3]
y = [10, 20, 30]
plt.plot(x, y)
plt.savefig("correto.png")
    

Para criar gráficos em Python, usamos a biblioteca matplotlib.pyplot:


import matplotlib.pyplot as plt

# Dados
year = [2000, 2001, 2002, 2003]
cs = [15.1, 16.3, 17.2, 18.5]
ps = [20.0, 21.5, 22.1, 22.8]

# Um gráfico simples
plt.plot(year, ps, color='blue', label='Ciências Físicas')
plt.plot(year, cs, color='red', label='Ciência da Computação')
plt.title('Comparativo entre áreas')
plt.xlabel('Ano')
plt.ylabel('% de diplomas')
plt.grid(True)
plt.legend()
plt.savefig("comparativo.png")
    

Saída: Um gráfico de linhas salvo como comparativo.png com duas curvas (azul e vermelha) e legenda.

Subplots lado a lado


plt.subplot(1, 2, 1)
plt.plot(year, ps, color='blue')
plt.title('Ciências Físicas')
plt.xlabel('Ano')
plt.ylabel('% de diplomas')

plt.subplot(1, 2, 2)
plt.plot(year, cs, color='red')
plt.title('Ciência da Computação')
plt.xlabel('Ano')
plt.ylabel('% de diplomas')

plt.tight_layout()
plt.savefig("subplots.png")
    

Saída: Dois gráficos de linhas lado a lado salvos como subplots.png.

Exemplos Práticos

  • Exemplo 1: Calcular Área de um Círculo (math)

    Calcula a área de um círculo dado o raio.

    
    import math
    
    raio = float(input("Digite o raio do círculo: "))
    area = math.pi * math.pow(raio, 2)
    print(f"Área do círculo: {area:.2f}")
            

    Saída (exemplo): Digite o raio do círculo: 5
    Área do círculo: 78.54

    Explicação: Usa math.pi e math.pow para calcular a área (πr²).

    Teste Você Mesmo! Teste com raio 3 no Python Tutor.

  • Exemplo 2: Gráfico de Barras (matplotlib)

    Cria um gráfico de barras comparando notas de alunos.

    
    import matplotlib.pyplot as plt
    
    alunos = ["Ana", "Bruno", "Carlos"]
    notas = [8.5, 7.0, 9.0]
    
    plt.bar(alunos, notas, color='green')
    plt.title('Notas dos Alunos')
    plt.xlabel('Alunos')
    plt.ylabel('Nota')
    plt.savefig("barras.png")
            

    Saída: Um gráfico de barras salvo como barras.png com notas por aluno.

    Explicação: Usa plt.bar para criar barras, com rótulos para eixos e título.

    Teste Você Mesmo! Adicione mais alunos e notas.

  • Exemplo 3: Gráfico de Seno (math + matplotlib)

    Plota uma onda senoidal combinando math e matplotlib.

    
    import math
    import matplotlib.pyplot as plt
    
    x = [i * 0.1 for i in range(100)]
    y = [math.sin(math.radians(i * 3.6)) for i in range(100)]
    
    plt.plot(x, y, color='purple')
    plt.title('Onda Senoidal')
    plt.xlabel('x')
    plt.ylabel('sin(x)')
    plt.grid(True)
    plt.savefig("seno.png")
            

    Saída: Um gráfico de uma onda senoidal salvo como seno.png.

    Explicação: Gera pontos com math.sin e plota com plt.plot.

    Teste Você Mesmo! Teste com math.cos no Python Tutor.


Exercícios Práticos

  • Exercício 1: Calculadora de Hipotenusa (math)

    Crie um programa que calcule a hipotenusa de um triângulo retângulo dados os catetos.

    
    import math
    
    a = float(input("Digite o cateto a: "))
    b = float(input("Digite o cateto b: "))
    hipotenusa = math.sqrt(math.pow(a, 2) + math.pow(b, 2))
    print(f"Hipotenusa: {hipotenusa:.2f}")
            

    Explicação: Usa o teorema de Pitágoras (√(a² + b²)) com math.sqrt e math.pow.

    Teste Você Mesmo! Teste com catetos 3 e 4 (hipotenusa = 5).

  • Exercício 2: Gráfico de Dispersão (matplotlib)

    Crie um gráfico de dispersão com 5 pontos de coordenadas fornecidas.

    
    import matplotlib.pyplot as plt
    
    x = [1, 2, 3, 4, 5]
    y = [2, 4, 1, 5, 3]
    
    plt.scatter(x, y, color='blue')
    plt.title('Gráfico de Dispersão')
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.grid(True)
    plt.savefig("dispersao.png")
            

    Explicação: Usa plt.scatter para plotar pontos individuais, com grade e rótulos.

    Teste Você Mesmo! Altere os pontos e verifique o gráfico.

  • Exercício 3: Salvar Gráfico de Cosseno (math + matplotlib)

    Crie e salve um gráfico da função cosseno para x de 0 a 360 graus.

    
    import math
    import matplotlib.pyplot as plt
    
    x = [i for i in range(361)]
    y = [math.cos(math.radians(i)) for i in range(361)]
    
    plt.plot(x, y, color='orange')
    plt.title('Função Cosseno')
    plt.xlabel('Ângulo (graus)')
    plt.ylabel('cos(x)')
    plt.grid(True)
    plt.savefig("cosseno.png")
            

    Explicação: Converte graus para radianos com math.radians e plota com plt.plot.

    Teste Você Mesmo! Verifique o arquivo cosseno.png.


Quiz Interativo

Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.

1. Qual função da biblioteca math arredonda um número para baixo?

  • A) floor()
  • B) ceil()
  • C) trunc()

2. Como salvar um gráfico criado com matplotlib como uma imagem?

  • A) plt.savefig('nome.png')
  • B) plt.show()
  • C) plt.plot()

3. Qual é a saída de math.radians(180)?

  • A) 3.1416
  • B) 180
  • C) 360

4. O que acontece se as listas x e y em plt.plot(x, y) tiverem tamanhos diferentes?

  • A) Erro de dimensão
  • B) Ignora os dados extras
  • C) Preenche com zeros

5. Qual é a saída de math.sqrt(25)?

  • A) 5.0
  • B) 25
  • C) 625

Mais sobre matplotlib: Tutorial USP

-------------------------------------

Biblioteca random

A biblioteca random é como um dado ou urna: permite gerar números aleatórios, escolher itens ou embaralhar listas. É ideal para jogos e simulações.

Funções principais:

  • randint(a, b): Gera um inteiro aleatório entre a e b (inclusivo).
  • choice(lista): Escolhe um item aleatório de uma lista.
  • shuffle(lista): Embaralha os itens de uma lista.

Exemplo 1: Simular um Dado


import random

dado = random.randint(1, 6)
print(f"Resultado do dado: {dado}")
    

Saída (exemplo): Resultado do dado: 4

Explicação: randint(1, 6) simula um dado de 6 faces, retornando um número entre 1 e 6.

Teste Você Mesmo! Execute várias vezes no Python Tutor para ver resultados diferentes.

Exemplo 2: Escolher um Aluno


import random

alunos = ["Ana", "Bruno", "Carlos"]
escolhido = random.choice(alunos)
print(f"Aluno sorteado: {escolhido}")
    

Saída (exemplo): Aluno sorteado: Bruno

Explicação: choice seleciona um item aleatório da lista alunos.

Teste Você Mesmo! Adicione mais nomes e teste.

Cuidados: Sempre importe random antes de usar suas funções.

Documentação: Documentação oficial da biblioteca random


-------------------------------------

Biblioteca datetime

A biblioteca datetime é como um calendário e relógio: ajuda a trabalhar com datas e horas, úteis para logs ou cálculos temporais.

Funções principais:

  • datetime.now(): Retorna a data e hora atuais.
  • strftime(formato): Formata uma data/hora como string.

Exemplo 1: Data e Hora Atuais


from datetime import datetime

agora = datetime.now()
print(f"Data e hora: {agora.strftime('%d/%m/%Y %H:%M:%S')}")
    

Saída (exemplo): Data e hora: 05/05/2025 14:30:00

Explicação: strftime formata a data com dia/mês/ano e hora:minuto:segundo.

Teste Você Mesmo! Teste no Python Tutor e experimente outros formatos (ex.: '%Y-%m-%d').

Exemplo 2: Log com Timestamp


from datetime import datetime

with open("log.txt", "a") as arquivo:
    agora = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
    arquivo.write(f"Evento registrado em: {agora}\n")
    

Saída (exemplo no arquivo): Evento registrado em: 05/05/2025 14:30:00

Explicação: Adiciona uma linha com a data/hora atual ao arquivo, combinando com manipulação de arquivos (Slide 7).

Teste Você Mesmo! Execute várias vezes e verifique log.txt.

Cuidados: Use formatos válidos em strftime (ex.: %d para dia, %Y para ano).

Documentação: Documentação oficial da biblioteca datetime

-------------------------------------

Biblioteca numpy

A biblioteca numpy é como uma calculadora para listas: simplifica operações com arrays (listas numéricas), ideal para dados e gráficos com matplotlib.

Funções principais:

  • array(lista): Cria um array a partir de uma lista.
  • linspace(início, fim, n): Gera n valores igualmente espaçados.
  • mean(array): Calcula a média de um array.

Exemplo 1: Média de Notas


import numpy as np

notas = np.array([8.5, 7.0, 9.0, 6.5])
media = np.mean(notas)
print(f"Média das notas: {media:.2f}")
    

Saída: Média das notas: 7.75

Explicação: Converte a lista em um array com np.array e calcula a média com np.mean.

Teste Você Mesmo! Adicione mais notas e teste no Python Tutor.

Exemplo 2: Pontos para Gráfico


import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y = x ** 2

plt.plot(x, y, color='blue')
plt.title('Função Quadrática')
plt.xlabel('x')
plt.ylabel('y = x²')
plt.grid(True)
plt.savefig("quadratica.png")
    

Saída: Um gráfico de uma parábola salvo como quadratica.png.

Explicação: np.linspace gera 100 pontos entre 0 e 10, usados para plotar y = x² com matplotlib.

Teste Você Mesmo! Altere a função (ex.: y = x ** 3) e verifique o gráfico.

Cuidados: Sempre importe numpy como np e use arrays para operações numéricas.

Documentação: Documentação oficial da biblioteca numpy

Exercícios Práticos (Adicionais)

  • Exercício 4: Simulador de Loteria (random)

    Crie um programa que gere 6 números aleatórios entre 1 e 60 para uma loteria.

    
    import random
    
    numeros = [random.randint(1, 60) for _ in range(6)]
    print(f"Números da loteria: {sorted(numeros)}")
            

    Explicação: Usa uma lista por compreensão com randint para gerar 6 números, ordenados com sorted.

    Teste Você Mesmo! Execute várias vezes para ver diferentes combinações.

  • Exercício 5: Embaralhar Lista (random)

    Escreva um programa que embaralhe uma lista de nomes fornecida.

    
    import random
    
    nomes = ["Ana", "Bruno", "Carlos", "Daniela"]
    random.shuffle(nomes)
    print(f"Lista embaralhada: {nomes}")
            

    Explicação: shuffle reordena a lista nomes aleatoriamente.

    Teste Você Mesmo! Teste com mais nomes no Python Tutor.

  • Exercício 6: Registrar Data de Aniversário (datetime)

    Crie um programa que peça uma data de aniversário (dia/mês/ano) e formate como “DD/MM/AAAA”.

    
    from datetime import datetime
    
    dia = int(input("Dia: "))
    mes = int(input("Mês: "))
    ano = int(input("Ano: "))
    data = datetime(ano, mes, dia)
    print(f"Aniversário: {data.strftime('%d/%m/%Y')}")
            

    Explicação: Cria um objeto datetime e usa strftime para formatar a data.

    Teste Você Mesmo! Teste com sua data de aniversário.

  • Exercício 7: Média e Desvio Padrão (numpy)

    Calcule a média e o desvio padrão de uma lista de notas usando numpy.

    
    import numpy as np
    
    notas = [8.5, 7.0, 9.0, 6.5, 8.0]
    array_notas = np.array(notas)
    media = np.mean(array_notas)
    desvio = np.std(array_notas)
    print(f"Média: {media:.2f}, Desvio padrão: {desvio:.2f}")
            

    Explicação: Converte a lista em um array e usa np.mean e np.std para cálculos estatísticos.

    Teste Você Mesmo! Altere as notas e verifique os resultados.

Quiz Interativo

Clique em uma alternativa para verificar sua resposta. A correta será destacada em verde, e a incorreta em vermelho, com feedback detalhado.

1. Qual função da biblioteca random escolhe um item aleatório de uma lista?

  • A) choice()
  • B) randint()
  • C) shuffle()

2. Como obter a data e hora atuais usando datetime?

  • A) datetime.now()
  • B) strftime()
  • C) datetime.date()

3. Qual é a saída de np.linspace(0, 10, 5) na biblioteca numpy?

  • A) [0, 2.5, 5, 7.5, 10]
  • B) [0, 2, 4, 6, 8]
  • C) [0, 1, 2, 3, 4]

4. Qual função da biblioteca math calcula a raiz quadrada?

  • A) sqrt()
  • B) pow()
  • C) floor()

5. Como salvar um gráfico criado com matplotlib como uma imagem?

  • A) plt.savefig('nome.png')
  • B) plt.plot()
  • C) plt.grid()

Recursos Complementares

Logo UFPR

Explorando Gráficos com Turtle

Logo Licenciatura

O que é a biblioteca Turtle?

A turtle é uma biblioteca gráfica embutida no Python que permite desenhar na tela com comandos simples. É ideal para introduzir lógica de programação de forma visual e divertida.

Exemplo: desenhando com a tartaruga

import turtle

wn = turtle.Screen()
wn.bgcolor("lightgreen")         # define a cor de fundo da janela

tess = turtle.Turtle()           # cria uma tartaruga chamada tess
tess.color("blue")               # define a cor da caneta como azul
tess.pensize(3)                  # define a espessura da caneta

tess.forward(50)                 # anda 50 pixels para frente
tess.left(120)                   # gira 120 graus para a esquerda
tess.forward(50)                 # anda mais 50 pixels

wn.exitonclick()                 # fecha a janela ao clicar nela

Explicação: Este código cria uma tartaruga gráfica que desenha dois lados de um triângulo. O fundo da janela é verde e a caneta da tartaruga é azul e grossa.

Atividade prática

Tente criar uma figura geométrica usando a tartaruga. Você pode usar comandos como forward(), left(), right() e mudar cores com color().

Desafio: Acesse a atividade interativa proposta no Laboratório Turtle.

Dica de aprendizado

Crie desenhos combinando loops com a tartaruga, como estrelas ou polígonos regulares. Exemplo:

# Desenho de um triângulo com loop
import turtle

t = turtle.Turtle()
for i in range(3):
    t.forward(100)
    t.left(120)
turtle.done()

Glossário

  • forward(px): Move a tartaruga para frente.
  • left(ang): Gira a tartaruga para a esquerda.
  • right(ang): Gira a tartaruga para a direita.
  • color(cor): Define a cor da caneta.
  • pensize(tam): Define a espessura da caneta.
  • exitonclick(): Fecha a janela ao clicar nela.

Exercícios com botão de resposta

1. Faça um quadrado com a tartaruga.

import turtle

t = turtle.Turtle()
for i in range(4):
    t.forward(100)
    t.left(90)
turtle.done()

2. Desenhe uma estrela de 5 pontas.

import turtle

t = turtle.Turtle()
for i in range(5):
    t.forward(100)
    t.right(144)
turtle.done()

Recurso adicional

Explore mais no PensePy - Turtle

Atividade Gamificada com Turtle

Vamos criar uma pequena animação onde a tartaruga desenha várias formas coloridas em sequência.

Desafio: Faça com que a tartaruga desenhe 6 triângulos girando em torno de um centro, como se fossem pétalas de uma flor.

import turtle

t = turtle.Turtle()
t.pensize(2)
colors = ["red", "blue", "green", "orange", "purple", "cyan"]

for i in range(6):
    t.color(colors[i])
    for _ in range(3):           # desenha um triângulo
        t.forward(100)
        t.left(120)
    t.right(60)                  # gira para fazer a próxima "pétala"

turtle.done()

Objetivo: Praticar o uso de for aninhado, controle de ângulo e mudança de cor em cada repetição.

Modifique e experimente

Você pode:

  • Trocar a forma (por exemplo, pentágono ou estrela).
  • Mudar as cores.
  • Aumentar ou diminuir o número de repetições.

Compartilhe seu desenho final com a turma ou tire uma captura de tela como evidência de participação.

Logo UFPR

Interfaces com CodeSkulptor (simplegui)

Logo Licenciatura

Introdução ao CodeSkulptor

O CodeSkulptor é uma plataforma online para programar em Python com suporte a gráficos interativos, ideal para aprender programação visual.

Exemplo básico

Este exemplo cria uma janela com um botão e uma mensagem desenhada na tela:

# CodeSkulptor: https://py2.codeskulptor.org

import simplegui

message = "Welcome!"

def click():
    global message
    message = "Good job!"

def draw(canvas):
    canvas.draw_text(message, [50,112], 48, "Red")

frame = simplegui.create_frame("Home", 300, 200)
frame.add_button("Click me", click)
frame.set_draw_handler(draw)
frame.start()

O que acontece: Quando o botão "Click me" é pressionado, a mensagem muda na tela.

Explore você mesmo!

Acesse o CodeSkulptor, cole o código acima e clique em ▶ Run para ver o resultado.

Desafios

  • 1. Altere a cor da mensagem para azul.
  • 2. Mude o texto do botão e a frase exibida ao clicar.
  • 3. Adicione mais um botão que redefine o texto para "Welcome!"

Desafio extra: Faça a tela mostrar um contador de cliques.

import simplegui

contador = 0

def incrementar():
    global contador
    contador += 1

def draw(canvas):
    canvas.draw_text("Cliques: " + str(contador), [50,100], 36, "Blue")

frame = simplegui.create_frame("Contador", 300, 200)
frame.add_button("Clique aqui", incrementar)
frame.set_draw_handler(draw)
frame.start()

Recurso complementar

Logo UFPR

Explorando Interfaces com Python no Trinket

Logo Licenciatura

Trinket: Python direto no navegador

O Trinket é uma plataforma online que permite programar em Python (inclusive com interfaces visuais) sem precisar instalar nada. Você pode escrever código, executar e compartilhar com facilidade.

Exemplo com PyScript (HTML + Python)

Abaixo está um exemplo simples de interface criada com PyScript, que pode ser testada no Trinket:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
    <script defer src="https://pyscript.net/latest/pyscript.js"></script>
  </head>
  <body>
    <py-script>
      from js import document
      def alterar_texto(*args):
          document.getElementById("output").innerText = "Você clicou!"
      document.getElementById("botao").addEventListener("click", alterar_texto)
    </py-script>

    <button id="botao">Clique aqui</button>
    <p id="output">Mensagem inicial</p>
  </body>
</html>

O que observar: esse código mistura HTML com Python para criar uma pequena interface com botão interativo.

Como usar o Trinket

  1. Acesse: https://trinket.io
  2. Crie uma conta gratuita (ou use sem conta para testes rápidos).
  3. Escolha o tipo de projeto: HTML + Python (PyScript).
  4. Cole o código acima e clique em Run.

Atividade sugerida

Modifique o exemplo acima para que, ao clicar no botão, o programa mostre uma saudação com o nome digitado pelo usuário.

Recurso adicional

Explore exemplos prontos e inspiradores:

Galeria do Trinket
Logo UFPR

Semana x: Códigos no colab

Logo Licenciatura
Logo UFPR

Semana x: Trabalho Implementação

Logo Licenciatura
  • Desenvolvimento de um programa mais completo (ex.: calculadora simples ou gerenciador de notas).
  • Utilize o Repl.it ou Google Colab para a implementação.
  • Orientações e apoio em sala durante a atividade.
Logo UFPR

Semana x: Trabalho Final + Exame

Logo Licenciatura
  • Conteúdos: informática básica e programação.
  • Exercícios práticos e resolução de dúvidas finais.
  • Avaliação prática: Exercícios de programação (condicionais, loops, listas) e uma questão de informática básica.
  • Preparação para a avaliação final utilizando o Google Colab.