# Lógica de programação ## com `Python` ---- ### criado por Bossa ---- # Aula 01 ## Engatinhando --- # O que é um algoritmo - Um algoritmo é como uma receita de bolo. - Ele tem *entradas*, *instruções* e uma *saída*; --- ## Bolo Simples para Café ![image alt](https://vovopalmirinha.com.br/wp-content/uploads/2016/06/bolo-simples-702x336.jpg "Bolo de caneca") ---- ### Ingredientes - 2 xícaras (chá) farinha de trigo - 2 xícaras (chá) açúcar - 1 xícara (chá) leite - 2 ovos - 4 colheres (sopa) óleo - 1 pitada de sal - 1 colher (sopa) fermento em pó - essência de baunilha a gosto (opcional) ---- ### Modo de preparo - Separe o fermento - Na batedeira bata os demais ingredientes por aproximadamente 5 minutos - Retire a tigela da batedeira, junte o fermento e misture cuidadosamente com uma colher - Despeje a massa do bolo em uma forma de cone untada e enfarinhada - Leve ao forno preaquecido a 180ºC por aproximadamente 35 minutos ou até que ao espetar um palito ele saia limpo ---- ### Rendimento - 1 porção > Fonte: [vovopalmirinha.com.br](https://vovopalmirinha.com.br/bolo-simples-para-cafe/) --- | Algoritmo | | Receita | | --------- | -- | :----- | | Entradas | :arrow_right: | ingredientes | | Instruções | :arrow_right: | modo de preparo | | Saída | :arrow_right: | :cake: | | | ---- ## :game_die: Dados Num algoritmo, as *entradas* são os **dados** sobre os quais trabalhamos. Podem vir de - um banco de dados - um arquivo - uma entrada do usuário ---- ## :wrench: Instruções Na parte das *instruções* onde dizemos para o computador o que fazer com esses dados. - verificar se os dados são consistentes - realizar computações com esses dados ---- ## :computer: Saída E a *saída* é o resultado do que fazemos com esses dados. Alguns exemplos: - Mostrar os valores na tela - Atualizar um banco de dados - Escrever o resultado do cálculo num arquivo --- # Mão na massa Não precisamos instalar o `Python`, podemos rodá-lo online no site [`repl.it`](https://repl.it/languages/python3 "Python online") --- ## O `repl.it` O repl.it é composto de algumas partes - Um gerenciador de arquivos - Um editor de texto - Um _prompt_ do `python` <!-- ![](https://i.imgur.com/9K1jg2X.png) --> --- # Saída de dados --- ## Olá mundo! Escreva o seguinte código no arquivo `main.py` e pressione ==run ▶== ```python= print("Olá Mundo!") ``` <span> <!-- .element: class="fragment" data-fragment-index="1" --> - a função `print()` imprime na tela o que for passado como argumento </span> ---- ### Mais sobre `print` - Podemos passar uma lista de coisas para serem impressas ```python print("Coisa 1", "Coisa 2", "Coisa 3") ``` - Opção `sep` diz como vamos separar os items ```python print("Coisa 1", "Coisa 2", "Coisa 3", sep=", ") ``` - Opção `end` diz o final da frase ```python print("Coisa 1", "Coisa 2", "Coisa 3", sep=", ", end=".") ``` --- # Entrada de dados ---- - A função `input` mostra uma mensagem na tela e exige uma entrada. ```python input("Digite qualquer coisa e aperte enter: ") ``` - Podemos guardar o valor digitado em uma variável ```python variavel = input("Digite qualquer coisa e aperte enter: ") ``` --- ### Exemplo 01 - Vamos criar um programa que pergunta o nome da pessoa e exibe uma saudação ```python nome = input("Digite seu nome:") print("Olá,", nome) ``` <!-- .element: class="fragment" data-fragment-index="1" --> --- ### Exemplo 02 - Vamos criar um programa que pede dois números como entrada e retorna a soma deles ```python a = input("Digite o primeiro número:") b = input("Digite o segundo número:") soma = a + b print("A soma é", soma) ``` <!-- .element: class="fragment" data-fragment-index="1" --> --- # O que aconteceu? --- # Tipos de dados ---- O `python` tem alguns tipos de dados "de fábrica" - **Numéricos**: inteiros, ponto flutuante (número com vírgula), complexos; - **Texto**; - ***Booleanos***: verdadeiro ou falso; - **Estruturados**: listas, tuplas, dicionários, conjuntos. ---- | tipo de dado | nome | | --------------:| --------- | | inteiro | `int` | | "racional" | `float` | | texto | `str` | | lista | `list` | | booleano | `bool` | ---- - Podemos acessar o tipo do dado usando `type` ```python # vamos declarar o valor das variáveis no # próprio código a = 2 b = 3.0 texto = "Olá" print(type(a), type(b), type(texto)) ``` --- # Operadores ---- - Matemáticos: `+`, `-`, `*`, `/`, `//`, `%`, `**` - Lógicos: `or`, `and`, `not` - Comparação: `==`, `<=`, `>=`, `!=`, `is`, `is not` - Outros: `=`, `.`, `[]`, `()` --- ## O que aconteceu: - A função `input` retorna dados no formato *texto* - O operador `+` quando aplicado em textos, apenas concatena eles > Precisamos então converter o texto em número para efetuar a soma --- ### Exemplo 02, consertado 1 ```python a_texto = input("Digite o primeiro número:") b_texto = input("Digite o segundo número:") # vamos usar a função `int` para converter # texto em número inteiro a = int(a_texto) b = int(b_texto) soma = a + b print("A soma é", soma) # esse # é usado para escrever um comentário no código ``` ---- ### Exemplo 02, consertado 2 ```python a_texto = input("Digite o primeiro número:") b_texto = input("Digite o segundo número:") # vamos usar a função `float` para converter # texto em número racional a = float(a_texto) b = float(b_texto) soma = a + b print("A soma é", soma) # esse # é usado para escrever um comentário no código ``` ---- ### Exemplo 02, consertado 3 ```python # podemos também usar a composição de funções # para reduzir o nosso código a = float(input("Digite o primeiro número:")) b = float(input("Digite o segundo número:")) soma = a + b print("A soma é", soma) # esse # é usado para escrever um comentário no código ``` --- # Objetos - As variáveis em `Python` são _objetos_, que podem ter _métodos_ e _propriedades_ - Acessamos um método ou propriedade de um objeto com o operador `.` ou `[]` ---- ## Métodos - Um método de um objeto é uma maneira de acessar ou alterar alguma informação desse objeto - Usamos uma das seguintes _sintaxes_ ```python objeto.método(argumento1, argumento2, ...) objeto[argumentos] ``` --- # Texto Textos são objetos do tipo `str` e são criados entre aspas duplas `" "` ou aspas simples `' '` ---- ## Métodos de texto - O texto em `python` nada mais é do que uma sequência de caracteres - Podemos acessar pedaços do texto usando `[]` e indicando as posições que estamos acessando ---- ### Acessando pedaços do texto ```python texto = "Luiz Fernando" a = texto[0] # é a primeira letra do texto b = texto[2:5] # retorna os caracteres nas posições 2, 3, 4 c = texto[5:] # retorna os caracteres da posição 5 em diante d = texto[:6] # retorna os caracteres até a posição 6 e = texto[-1] # retorna o último caractere print(a,b,c,d,e, sep="|") ``` ---- ### Exemplo 03 - Vamos criar um programa que pergunta o CPF da pessoa e imprime os dígitos de verificação ```python cpf = input("Digite um número de CPF:") verificador = cpf[-2:] # pega o penúltimo e último números print(verificador) ``` <!-- .element: class="fragment" data-fragment-index="1" --> ---- ### Formatando o texto ```python texto = "LuiZ FerNandO" a = texto.lower() # retorna o texto todo em minúsculas b = texto.upper() # retorna o texto todo em maiúsculas c = texto.swapcase() # troca maiúsculas e minúsculas d = texto.title() # deixa em formato de título print(a,b,c,d, sep="\n") ``` ---- ### Manipulando texto: substituindo ```python # o método `find` procura um pedaço de texto e retorna # a posição em que foi encontrada, ou -1 se não foi # encontrado nada texto = "Olá, faça a transferência para a conta corrente \ 472127-1 agência 1287-2 banco Santander." # o método `replace` substitui uma palavra por outra no # texto dado texto_alterado = texto.replace("transferência", "depósito") print(texto_alterado) ``` ---- ### Manipulando texto: procurando ```python # o método `find` procura um pedaço de texto e retorna # a posição em que foi encontrada, ou -1 se não foi # encontrado nada texto = "Olá, faça a transferência para a conta corrente \ 472127-1 agência 1287-2 banco Santander." pos = texto.find("conta") # retorna a posição que foi encontrada # A palavra "conta" print(pos) print(texto[pos:]) # imprime o texto começando # na posição indicada ``` ---- ### Manipulando texto: extraindo ```python # A função `len` retorna o tamanho de vários objetos. # No caso de texto, # retorna o número de caracteres. texto = "Olá, faça a transferência para a conta corrente \ 472127-1 agência 1287-2 banco Lehman Brothers." procurar = "conta corrente" # vamos usar mais vezes esse trecho tamanho = len(procurar) # tamanho do trecho pos = texto.find(procurar) # retorna a posição que foi # encontrado o trecho # "conta corrente" print(pos) # vamos imprimir o texto começando depois do trecho # "conta corrente", usando para isso o tamanho do trecho print(texto[pos+tamanho:]) ``` --- ### Exemplo 04 - Vamos criar um programa que recebe um texto no formato abaixo, extrai as informações importantes, salva nas variáveis e imprime ```python texto = "[..] conta corrente {xyz} agência {abc} banco {ijk}." conta={xyz} agencia={abc} banco={ijk} print(banco, agencia, conta) ``` ---- #### Solução ```python texto = "Olá, faça a transferência para a conta corrente \ 472127-1 agência 1287-2 banco Lehman Brothers." cc = "conta corrente" ag = "agência" bc = "banco" # Para cada um dos pedaços acima, vamos criar duas variáveis # uma para a posição e outra para o tamanho do pedaço cc_pos = texto.find(cc) cc_tam = len(cc) ag_pos = texto.find(ag) ag_tam = len(ag) bc_pos = texto.find(bc) bc_tam = len(bc) # a conta é o que está entre # 'conta corrente' e 'agência' conta = texto[cc_pos+cc_tam:ag_pos] # a agência é o que está entre # 'agência' e 'banco' agencia = texto[ag_pos+ag_tam:bc_pos] # o banco é o que está entre # 'banco' e o ponto final banco = texto[bc_pos+bc_tam:-1] print(banco, agencia, conta) ``` --- # Condicionais ---- - Todos os programas que fizemos até agora são executados linha por linha - As vezes, gostaríamos que alguns pedaços do código sejam executados somente em determinadas condições ---- ## `if` O bloco `if` tem a seguinte sintaxe ```python if condição: # bloco de código que vai ser executado # caso a `condição` for verdadeira # os espaços no início desse bloco são # estritamente necessários, e são chamados # de identação ``` ---- ### condições - Em `python`, uma expressão booleana possui os valores `True` ou `False` - Podemos usar os operadores de comparação e combiná-los usando os operadores lógicos `and`, `or` e `not` ```python if delta > 0 and a > 0: #.... if x == 3 or y != 4: #.... ``` ---- ## `if` ```python a = float(input("Digite um número:")) b = float(input("Digite um outro:")) if a > b: print("O primeiro número é maior") ``` ---- ## `if ... else` ```python if condição: # bloco de código que vai ser executado # caso a `condição` for verdadeira else: # bloco de código que vai ser executado # caso a `condição` for falsa ``` ---- ## `if...else` ```python a = float(input("Digite um número:")) b = float(input("Digite um outro:")) if a > b: print("O primeiro número é maior") else: print("O segundo número é maior") ``` ---- ## `if...elif...else` ```python if condição1: # bloco de código que vai ser executado # caso a `condição1` for verdadeira elif condição2: # bloco de código que vai ser executado # caso a `condição2` for verdadeira else: # bloco de código que vai ser executado # caso contrário ``` ---- ## `if...elif...else` ```python a = float(input("Digite um número:")) b = float(input("Digite um outro:")) if a > b: print("O primeiro número é maior") elif a == b: print("Os números são iguais") else: print("O segundo número é maior") ``` ---- ### Importante Quando tempos `if` com uma sequência de `elif`, o python executa o primeiro que tiver a condição verdadeira e depois sai do bloco. --- # Condições aninhadas ---- Quando temos um `if` dentro de outro `if`, temos condicionais aninhados ```python if condição_1: if condição_2: print("Saída 1") else: print("Saída 2") else: if condição_3: print("Saída 3") else: print("Saída 4") ``` --- ### Exemplo 05 - Vamos criar um programa que pede a data de nascimento da pessoa no formato `DD/MM/AAAA`, e diz qual a idade dela hoje (19/11/2019) ---- ### Solução ```python data = input("Digite sua data de nascimento (DD/MM/AAAA):") # contando os caracteres do formato da data # D D / M M / A A A A # 0 1 2 3 4 5 6 7 8 9 dia = int(data[0:2]) mes = int(data[3:5]) ano = int(data[6:10]) hoje_dia = 19 hoje_mes = 11 hoje_ano = 2019 idade = hoje_ano - ano - 1 # -1 pois não sabemos se a pessoa já fez aniversário if hoje_mes > mes: # se já passamos do mes do aniversário idade = idade + 1 # a idade já aumentou elif hoje_mes == mes: # se estamos no mes do aniversário if hoje_dia >= dia: # e se já passamos do dia do aniversário idade = idade + 1 # a idade já aumentou print("Sua idade é", idade) ``` --- A [sala de aula](https://repl.it/classroom/invite/iN6uHfl) no repl.it contém os exercícios - Aula01 - Media - Aula01 - Ano bissexto - Aula01 - Tirando CNH que devem ser resolvidos e enviados para correção. --- # Fim Aula 01 > In reality, programming languages are how programmers express and communicate _ideas_ — and the audience for those ideas is other programmers, not computers. > [name=Guido van Rossum]
{"metaMigratedAt":"2023-06-15T01:39:12.125Z","metaMigratedFrom":"YAML","title":"Lógica de programação 1 - v2","breaks":true,"description":"Minicurso de lógica de programação.","slideOptions":"{\"theme\":\"blood\",\"transition\":\"none\"}","contributors":"[{\"id\":\"97cff931-683e-4939-8bd1-380f6caced12\",\"add\":27499,\"del\":13487}]"}
    933 views