diff --git a/meta-ai/tutor-python/2024-11-03-meta-ai-ensina-python.md b/meta-ai/tutor-python/2024-11-03-meta-ai-ensina-python.md new file mode 100644 index 0000000..f047876 --- /dev/null +++ b/meta-ai/tutor-python/2024-11-03-meta-ai-ensina-python.md @@ -0,0 +1,381 @@ +# 03/11/2024: Meta AI como tutor de programação em Python + +Você sabia que dá para aprender a programar em Python usando o [Meta AI](https://www.meta.ai/) dentro do próprio WhatsApp? + +--- +![Tela inicial do WhatsApp com Meta AI](meta-ai-whatsapp-01.jpg) +--- + +Fiz isso hoje. Minhas mensagens foram: + +1. Ensine-me a programar em Python. +2. Funções. +3. ```python + def area_retangulo(largura: int, altura: int) -> int: + return largura*altura + ``` +4. E como eu poderia criar uma função que desenharia tal retângulo? Gostaria de usar a biblioteca turtle. +5. Não seria melhor deixar a instrução "turtle.done()" no final do código? +6. Meu professor pediu que a função tenha mais dois parâmetros: x e y, para indicar o ponto onde será iniciado o desenho do retângulo. +7. Ele solicitou também o parâmetro zoom, para ampliar ou reduzir. + +--- +![Conversa do WhatsApp com Meta AI](meta-ai-whatsapp-02.jpg) +--- + +## Respostas do Meta AI + +### 1. Ensine-me a programar em Python. + +Claro! Estou aqui para ajudar. O Python é uma linguagem de programação fácil de aprender e muito útil. Vamos começar com os conceitos básicos: + +**Variáveis e Tipos de Dados** + +- Variáveis: armazenam valores. +- Tipos de dados: `int` (números inteiros), `float` (números decimais), `str` (textos), `bool` (valores lógicos). + +Exemplo: + +```python +nome = "João" +idade = 25 +altura = 1.75 +admin = True + +print(nome) +print(idade) +print(altura) +print(admin) +``` + +**Operadores** + +- Aritméticos: `+`, `-`, `*`, `/`, `%` +- Comparação: `==`, `!=`, `>`, `<`, `>=`, `<=` +- Lógicos: `and`, `or`, `not` + +**Exemplo:** + +```python +x = 5 +y = 3 + +soma = x + y +igualdade = x == y + +print(soma) +print(igualdade) +``` + +**Estruturas Condicionais** + +- `if` (se) +- `elif` (senão se) +- `else` (senão) + +**Exemplo:** + +```python +idade = 18 + +if idade >= 18: + print("Maior de idade") +else: + print("Menor de idade") +``` + +**Laços de Repetição** + +- `for` (para) +- `while` (enquanto) + +**Exemplo:** + +```python +frutas = ["maçã", "banana", "laranja"] + +for fruta in frutas: + print(fruta) +``` + +**Funções** + +- Blocos de código reutilizáveis. + +Exemplo: + +```python +def saudacao(nome): + print("Olá, " + nome) + +saudacao("João") +``` + +Vamos continuar aprendendo? Qual tópico você gostaria de explorar em seguida? + + +### 2. Funções. + +Funções são blocos de código reutilizáveis que realizam uma tarefa específica. Elas são fundamentais em programação e ajudam a manter o código organizado e eficiente. + +**Definindo Funções em Python** + +Para definir uma função em Python, use a palavra-chave `def` seguida do nome da função e parênteses que contêm os parâmetros (opcional). + +```python +def nome_da_função(parâmetro1, parâmetro2, ...): + # código da função +``` + +**Exemplo:** + +```python +def saudacao(nome): + print("Olá, " + nome) + +saudacao("João") # Saída: Olá, João +``` + +**Tipos de Funções** + +1. Funções sem parâmetros: Não recebem valores externos. + +```python +def mensagem(): + print("Bem-vindo!") + +mensagem() # Saída: Bem-vindo! +``` + +2. Funções com parâmetros: Recebem valores externos. + +```python +def soma(x, y): + return x + y + +resultado = soma(5, 3) +print(resultado) # Saída: 8 +``` + +3. Funções com valor padrão: Parâmetros com valores padrão. + +```python +def saudacao(nome = "Visitante"): + print("Olá, " + nome) + +saudacao() # Saída: Olá, Visitante +saudacao("João") # Saída: Olá, João +``` + +4. Funções com retorno múltiplo: Usam tuplas ou listas. + +```python +def dados_pessoa(): + return "João", 25, "Desenvolvedor" + +nome, idade, profissão = dados_pessoa() +print(nome, idade, profissão) +``` + +**Prática** + +Crie uma função que calcule a área de um retângulo. A função deve receber a largura e altura como parâmetros e retornar o resultado. + +(Dica: área = largura * altura) + +Você precisa de ajuda para criar a função? + + +### 3. Função `area_retangulo()` + +```python +def area_retangulo(largura: int, altura: int) -> int: + return largura*altura +``` + +Excelente! + +Sua função está correta e bem estruturada: + +```python +def area_retangulo(largura: int, altura: int) -> int: + return largura * altura +``` + +Você utilizou: + +- Tipagem de parâmetros (`largura: int` e `altura: int`) +- Tipagem de retorno (`-> int`) +- Nomenclatura clara e concisa (`area_retangulo`) +- Código conciso e eficiente (`return largura * altura`) + +Agora, vamos testar sua função: + +```python +print(area_retangulo(5, 3)) # Saída: 15 +print(area_retangulo(10, 2)) # Saída: 20 +``` + +Parabéns! + +Você gostaria de criar outra função? Talvez uma que calcule o perímetro do retângulo? + +### 4. E como eu poderia criar uma função que desenharia tal retângulo? Gostaria de usar a biblioteca turtle. + +A biblioteca Turtle é perfeita para criar gráficos simples e interativos. + +Aqui está um exemplo de como criar uma função que desenha um retângulo usando a biblioteca Turtle: + +```python +import turtle + +def desenha_retangulo(largura, altura): + tartaruga = turtle.Turtle() + tartaruga.speed(1) # Velocidade do desenho + + for _ in range(2): + tartaruga.forward(largura) # Desenha lado horizontal + tartaruga.right(90) # Vira 90 graus para direita + tartaruga.forward(altura) # Desenha lado vertical + tartaruga.right(90) # Vira 90 graus para direita + + turtle.done() # Mantém a janela aberta + +# Teste a função +desenha_retangulo(100, 50) +``` + +Nessa função: + +- Criamos uma instância da classe `Turtle` chamada `tartaruga`. +- Definimos a velocidade do desenho com `tartaruga.speed(1)`. +- Usamos um *loop* `for` para desenhar os quatro lados do retângulo. +- Utilizamos `tartaruga.forward()` para desenhar os lados e `tartaruga.right()` para virar 90 graus. +- Por fim, chamamos `turtle.done()` para manter a janela aberta. + +Agora, você pode chamar a função `desenha_retangulo()` com diferentes valores de largura e altura para criar retângulos variados! + +Gostaria de adicionar mais funcionalidades, como cores ou bordas? + +### 5. Não seria melhor deixar a instrução "turtle.done()" no final do código? + +Deixar a instrução `turtle.done()` no final do código é uma prática mais adequada. + +A razão é que `turtle.done()` é usada para manter a janela da `turtle` aberta até que o usuário feche. Se colocarmos essa instrução dentro da função `desenha_retangulo()`, a janela será fechada imediatamente após o desenho do retângulo, não permitindo que o usuário veja o resultado. + +Deixando `turtle.done()` no final do código, podemos: + +- Chamar a função `desenha_retangulo()` várias vezes para desenhar múltiplos retângulos. +- Visualizar todos os retângulos desenhados antes de fechar a janela. + +Aqui está o código corrigido: + +```python +import turtle + +def desenha_retangulo(largura, altura): + tartaruga = turtle.Turtle() + tartaruga.speed(1) # Velocidade do desenho + + for _ in range(2): + tartaruga.forward(largura) # Desenha lado horizontal + tartaruga.right(90) # Vira 90 graus para direita + tartaruga.forward(altura) # Desenha lado vertical + tartaruga.right(90) # Vira 90 graus para direita + +# Teste a função +desenha_retangulo(100, 50) +desenha_retangulo(50, 100) + +turtle.done() # Mantém a janela aberta +``` + +Muito obrigado por ter apontado isso! + +### 6. Meu professor pediu que a função tenha mais dois parâmetros: x e y, para indicar o ponto onde será iniciado o desenho do retângulo. + +Excelente! + +Aqui está a função atualizada com os parâmetros x e y: + +```python +import turtle + +def desenha_retangulo(x, y, largura, altura): + tartaruga = turtle.Turtle() + tartaruga.speed(1) # Velocidade do desenho + tartaruga.penup() # Levanta a caneta + tartaruga.goto(x, y) # Vai para o ponto (x, y) + tartaruga.pendown() # Baixa a caneta + + for _ in range(2): + tartaruga.forward(largura) # Desenha lado horizontal + tartaruga.right(90) # Vira 90 graus para direita + tartaruga.forward(altura) # Desenha lado vertical + tartaruga.right(90) # Vira 90 graus para direita + +# Teste a função +desenha_retangulo(-100, 50, 100, 50) +desenha_retangulo(50, -50, 50, 100) + +turtle.done() # Mantém a janela aberta +``` + +Nessa versão: + +- Adicionei os parâmetros `x` e `y` à função. +- Usei `tartaruga.penup()` para levantar a caneta antes de mover para o ponto (x, y). +- Usei `tartaruga.goto(x, y)` para mover a tartaruga para o ponto (x, y). +- Usei `tartaruga.pendown()` para baixar a caneta após chegar ao ponto. + +Agora, você pode especificar o ponto inicial do desenho do retângulo usando os parâmetros x e y! + +Se tiver mais alguma dúvida ou precisar de ajuda, basta perguntar! + +### 7. Ele solicitou também o parâmetro zoom, para ampliar ou reduzir. + +Mais um desafio! + +Aqui está a função atualizada com o parâmetro zoom: + +```python +import turtle + +def desenha_retangulo(x, y, largura, altura, zoom=1): + tartaruga = turtle.Turtle() + tartaruga.speed(1) # Velocidade do desenho + tartaruga.penup() # Levanta a caneta + tartaruga.goto(x, y) # Vai para o ponto (x, y) + tartaruga.pendown() # Baixa a caneta + + # Aplica o zoom + largura *= zoom + altura *= zoom + + for _ in range(2): + tartaruga.forward(largura) # Desenha lado horizontal + tartaruga.right(90) # Vira 90 graus para direita + tartaruga.forward(altura) # Desenha lado vertical + tartaruga.right(90) # Vira 90 graus para direita + +# Teste a função +desenha_retangulo(-100, 50, 100, 50, zoom=2) # Retângulo grande +desenha_retangulo(50, -50, 50, 100, zoom=0.5) # Retângulo pequeno + +turtle.done() # Mantém a janela aberta +``` + +Nessa versão: + +- Adicionei o parâmetro `zoom` com valor padrão 1. +- Multipliquei a `largura` e `altura` pelo valor do `zoom`. + +Agora, você pode controlar o tamanho do retângulo usando o parâmetro `zoom`! + +Observações: + +- `zoom > 1`: amplia o retângulo. +- `zoom < 1`: reduz o retângulo. +- `zoom = 1`: mantém o tamanho original. + +Se tiver mais alguma dúvida ou precisar de ajuda, basta perguntar! diff --git a/meta-ai/tutor-python/meta-ai-whatsapp-01.jpg b/meta-ai/tutor-python/meta-ai-whatsapp-01.jpg new file mode 100644 index 0000000..65ae314 Binary files /dev/null and b/meta-ai/tutor-python/meta-ai-whatsapp-01.jpg differ diff --git a/meta-ai/tutor-python/meta-ai-whatsapp-02.jpg b/meta-ai/tutor-python/meta-ai-whatsapp-02.jpg new file mode 100644 index 0000000..2611faa Binary files /dev/null and b/meta-ai/tutor-python/meta-ai-whatsapp-02.jpg differ