Programação de Computadores
Programação de Computadores
print("Olá, Mundo!")
Indentação em Python
A indentação se refere aos espaços no início de uma linha de código.
if 5 > 2:
print("Cinco é maior que dois!")
Variáveis em Python
Em Python, variáveis são criadas quando você atribui um valor a elas:
x = 5
y = "Olá, Mundo!"
Comentários
Python permite comentários para documentação no código.
#Este é um comentário.
print("Olá, Mundo!")
Variáveis
Variáveis são contêineres para armazenar valores de dados.
Criando Variáveis
Python não possui comando para declarar uma variável.
x = 5
y = "João"
print(x)
print(y)
Variáveis não precisam ser declaradas com um tipo particular e podem mudar de tipo após
serem definidas.
x = 4 # x é do tipo int
x = "Sally" # x agora é do tipo str
print(x)
Casting
Se você deseja especificar o tipo de dados de uma variável, isso pode ser feito com casting.
Obtendo o Tipo
Você pode obter o tipo de dados de uma variável com a função type().
x = 5
y = "João"
print(type(x))
print(type(y))
x = "João"
# é o mesmo que
x = 'João'
Nomes de Variáveis
Uma variável pode ter um nome curto (como x e y) ou um nome mais descritivo (idade,
nome_do_carro, volume_total). Regras para variáveis em Python:
- Um nome de variável deve começar com uma letra ou o caractere de sublinhado
- Um nome de variável não pode começar com um número
- Um nome de variável pode conter apenas caracteres alfanuméricos e sublinhados (A-z,
0-9 e _)
- Nomes de variáveis são sensíveis a maiúsculas e minúsculas (idade, Idade e IDADE são
três variáveis diferentes)
- Um nome de variável não pode ser uma palavra-chave do Python.
meu_var = "John"
minha_variavel = "John"
_minha_variavel = "John"
minhaVariavel = "John"
MINHAVAR = "John"
minhavar2 = "John"
Existem várias técnicas que você pode usar para torná-los mais legíveis:
Camel Case
Cada palavra, exceto a primeira, começa com uma letra maiúscula:
minhaVariavelNome = "John"
Pascal Case
Cada palavra começa com uma letra maiúscula:
MinhaVariavelNome = "John"
Snake Case
Cada palavra é separada por um caractere de sublinhado:
minha_variavel_nome = "John"
x = y = z = "Laranja"
print(x)
print(y)
print(z)
Variáveis Globais
Variáveis que são criadas fora de uma função (como em todos os exemplos acima) são
conhecidas como variáveis globais.
Variáveis globais podem ser usadas por todos, tanto dentro de funções quanto fora.
x = "incrível"
def minha_funcao():
print("Python é " + x)
minha_funcao()
Se você criar uma variável com o mesmo nome dentro de uma função, essa variável será
local e só poderá ser usada dentro da função. A variável global com o mesmo nome
permanecerá como era, global e com o valor original.
Crie uma variável dentro de uma função, com o mesmo nome da variável global
x = "incrível"
def minha_funcao():
x = "fantástico"
print("Python é " + x)
minha_funcao()
print("Python é " + x)
A Palavra-chave global
Normalmente, quando você cria uma variável dentro de uma função, essa variável é local e
só pode ser usada dentro dessa função.
Para criar uma variável global dentro de uma função, você pode usar a palavra-chave
global.
def minha_funcao():
global x
x = "fantástico"
minha_funcao()
print("Python é " + x)
Também use a palavra-chave global se você quiser alterar uma variável global dentro de
uma função.
Para alterar o valor de uma variável global dentro de uma função, faça referência à variável
usando a palavra-chave global:
x = "incrível"
def minha_funcao():
global x
x = "fantástico"
minha_funcao()
print("Python é " + x)
Teste de Mesa
Um teste de mesa em Python (ou em qualquer linguagem de programação) é uma técnica
utilizada para entender e verificar o funcionamento de um algoritmo ou código fonte. Nesse
teste, você executa o código manualmente, acompanhando o valor de cada variável ao
longo das linhas de execução, como se estivesse seguindo um mapa ou tabela (daí o nome
"teste de mesa").
Pseudocódigo
Python
Resultado final
Número 1: 8
Número 2: 12
Número 3: 10
Média: 10.0
Resultado: Menor ou igual a 10
Praticando:
Pseudocódigo
Python
# Calcula o IMC
imc = peso / (altura * altura)
Pseudocódigo
Python
Objetivo da Aula: Entender como manipular dados em Python e realizar operações básicas
de entrada e saída.
As variáveis podem armazenar dados de tipos diferentes, e cada tipo pode fazer coisas
diferentes.
Python tem os seguintes tipos de dados incorporados por padrão, nessas categorias:
- Texto: str
- Numéricos: int, float, complex
- Sequências: list, tuple, range
- Mapeamento: dict
- Conjuntos: set, frozenset
- Booleano: bool
- Binários: bytes, bytearray, memoryview
- Tipo Nulo: NoneType
# Texto: str
nome = "João"
# Mapeamento: dict
dic_alunos = {"João": 18, "Maria": 20, "Pedro": 22}
# Booleano: bool
verdadeiro = True
falso = False
Número Aleatório
Python não possui uma função random() para gerar um número aleatório, mas Python tem
um módulo embutido chamado random que pode ser usado para gerar números aleatórios:
import random
Às vezes, é necessário especificar um tipo para uma variável. Isso pode ser feito através de
conversão de tipos. Python é uma linguagem orientada a objetos e usa classes para definir
tipos de dados, incluindo os tipos primitivos.
Strings
# 10. join(): junta elementos de uma lista em uma única string usando a
string como separador
lista_palavras = ["Olá", "mundo", "Python"]
print("-".join(lista_palavras)) # Saída: "Olá-mundo-Python"
Booleanos
x = 5
y = 3
resultado = x > y
print(resultado) # Saída: True
lista = []
resultado = bool(lista)
print(resultado) # Saída: False
variavel = "Texto"
resultado = isinstance(variavel, int)
print(resultado) # Saída: False
print("Nome:", nome)
print("Idade:", idade)
print("Altura:", altura)
print("Peso:", peso)
Exemplo:
# Constantes para as taxas de imposto sobre vendas em diferentes países
TAXA_IMPOSTO_EUA = 0.08
TAXA_IMPOSTO_REINO_UNIDO = 0.20
TAXA_IMPOSTO_ALEMANHA = 0.19
TAXA_IMPOSTO_JAPAO = 0.10
Desafio
if maior_de_idade:
print("Você tem", idade, "anos, o que significa que é maior de
idade.")
else:
print("Você tem", idade, "anos, o que significa que é menor de
idade.")
if gosta_de_python:
print("É ótimo saber que você gosta de Python!")
else:
print("Tudo bem, Python pode não ser para todos, mas é uma ótima
linguagem!")
Aula 3: Operadores e Expressões
● Operadores aritméticos.
● Expressões aritméticas.
● Operadores relacionais.
● Expressões lógicas.
Operadores aritméticos
# Variáveis em português
soma = 10 + 5 # Operador de soma
subtracao = 10 - 5 # Operador de subtração
multiplicacao = 10 * 5 # Operador de multiplicação
divisao = 10 / 5 # Operador de divisão
divisao_inteira = 10 // 3 # Divisão inteira (descarta a parte decimal)
resto_divisao = 10 % 3 # Resto da divisão
exponenciacao = 10 ** 2 # Operador de exponenciação
# Exibindo os resultados
print("Soma:", soma)
print("Subtração:", subtracao)
print("Multiplicação:", multiplicacao)
print("Divisão:", divisao)
print("Divisão inteira:", divisao_inteira)
print("Resto da divisão:", resto_divisao)
print("Exponenciação:", exponenciacao)
Expressões aritméticas
Exemplo 1
# Variáveis em português
comprimento = 10 # Comprimento do retângulo
largura = 5 # Largura do retângulo
# Exibindo os resultados
print("Comprimento do retângulo:", comprimento)
print("Largura do retângulo:", largura)
print("Perímetro do retângulo:", perimetro)
print("Área do retângulo:", area)
Exemplo 2
Exemplo 3
Operadores Relacionais
# Igualdade
if numero_um == numero_dois:
print("Os números são iguais")
else:
print("Os números são diferentes")
# Desigualdade
if numero_um != numero_dois:
print("Os números são diferentes")
else:
print("Os números são iguais")
# Maior que
if numero_um > numero_dois:
print("O primeiro número é maior que o segundo")
else:
print("O primeiro número não é maior que o segundo")
# Menor que
if numero_um < numero_dois:
print("O primeiro número é menor que o segundo")
else:
print("O primeiro número não é menor que o segundo")
# Maior ou igual a
if numero_um >= numero_dois:
print("O primeiro número é maior ou igual ao segundo")
else:
print("O primeiro número não é maior ou igual ao segundo")
# Menor ou igual a
if numero_um <= numero_dois:
print("O primeiro número é menor ou igual ao segundo")
else:
print("O primeiro número não é menor ou igual ao segundo")
Expressões Lógicas
# Declaração de variáveis
idade = 25
tem_cartao = True
renda_mensal = 3000
Praticando
if atingiu_meta_lucro:
print("Parabéns! A empresa atingiu a meta de lucro.")
else:
print("A empresa não atingiu a meta de lucro. Mais esforços são
necessários para alcançá-la.")
Aula 4: Estrutura de Decisão - IF/ELSE
● Tomada de decisão simples com if.
● Tomada de decisão encadeada com if-elif-else.
● Tomada de decisão composta.
● Igual: a == b
● Diferente: a != b
● Menor que: a < b
● Menor ou igual a: a <= b
● Maior que: a > b
● Maior ou igual a: a >= b
Na forma convencional:
# Exibindo o resultado
print(f"O número {numero} é {resultado}.")
a = 200
b = 33
c = 500
# Estado do aplicativo
aplicativo_fora_do_ar = False
Você pode ter ifinstruções dentro ifde instruções, isso é chamado de instruções aninhadas .
if
x = 41
if x > 10:
print("Acima de dez,")
if x > 20:
print("e também acima de 20!")
else:
print("mas não acima de 20.")
As instruções if não podem estar vazias, mas se por algum motivo você tiver uma instrução
if sem conteúdo, coloque-a na instrução pass para evitar erros.
# Definindo os limites
limite_inferior = 10
limite_superior = 50
Exemplo prático
O SWITCH/CASE é uma estrutura de controle que permite selecionar uma entre várias
alternativas com base no valor de uma expressão. Ele simplifica o código, tornando-o mais
legível e eficiente, especialmente em situações onde há múltiplas opções de caminho a
serem seguidos.
Utilizando dicionário
Utilizando funções
def opcao_2():
return "Opção 2 selecionada"
def opcao_3():
return "Opção 3 selecionada"
switch = {
1: opcao_1,
2: opcao_2,
3: opcao_3
}
Utilizando classes
def opcao_2(self):
return "Opção 2 selecionada"
def opcao_3(self):
return "Opção 3 selecionada"
def default(self):
return "Opção inválida"
switch_instance = Switch()
print(switch_instance.switch(1)) # Saída: Opção 1 selecionada
Utilizando módulos
# Exemplo 4: Utilizando módulos
def opcao_1():
return "Opção 1 selecionada"
def opcao_2():
return "Opção 2 selecionada"
def opcao_3():
return "Opção 3 selecionada"
def default():
return "Opção inválida"
def switch(opcao):
switcher = {
1: opcao_1,
2: opcao_2,
3: opcao_3
}
func = switcher.get(opcao, default)
return func()
Utilizando match
Lambda
Ela pode receber qualquer número de argumentos, mas só pode conter uma expressão.
Sintaxe:
lambda argumentos: expressão
O poder das lambdas é melhor demonstrado quando você as utiliza como uma função
anônima dentro de outra função.
Por exemplo, suponha que você tenha uma definição de função que recebe um argumento,
e esse argumento será multiplicado por um número desconhecido:
Praticando
Loop For
O loop for em Python é usado para iterar sobre uma sequência, que pode ser uma lista,
uma tupla, um dicionário, um conjunto ou uma string. Ele funciona como um método de
iterador encontrado em outras linguagens de programação orientadas a objetos. Com o loop
for, podemos executar um conjunto de instruções uma vez para cada item em uma lista,
tupla, conjunto, etc.
# Lista de frutas
frutas = ["maçã", "banana", "cereja"]
Até mesmo strings são objetos iteráveis, pois contêm uma sequência de caracteres:
Acumuladores e Contadores
● Acumulador: Uma variável usada para somar valores ao longo de várias iterações
em uma estrutura de repetição.
● Contador: Uma variável usada para contar o número de vezes que uma condição é
atendida durante as iterações em uma estrutura de repetição.
Contador Simples
Acumulador Simples
for i in range(1, limite + 1): # Loop até o número limite digitado pelo
usuário
contador += 1
for i in range(1, limite + 1): # Loop até o número limite digitado pelo
usuário
soma += i # Acumula o valor de i na variável soma
Exemplo prático
print("\nResumo:")
print("Número total de consultas:", total_consultas)
print("Número de pacientes com consultas:", pacientes_com_consultas)
print("Número médio de consultas por paciente:",
media_consultas_por_paciente)
Aula 7: Estrutura de Repetição - Contada
● Estrutura de repetição contada (for loop).
Uma estrutura de repetição contada em Python é um tipo de loop onde você especifica
um contador ou uma variável de controle para controlar o número de vezes que o loop é
executado. A estrutura de repetição mais comum para isso em Python é o loop for, embora
você também possa usar o loop while com uma variável de controle.
# Lista de números
numeros = [1, 2, 3, 4, 5]
# Tupla de cores
cores = ('vermelho', 'azul', 'verde', 'amarelo')
Lista:
Uma lista em Python é uma estrutura de dados ordenada e mutável que permite armazenar
uma coleção de elementos. Os elementos em uma lista podem ser de diferentes tipos de
dados e são acessados por meio de índices inteiros. As listas são definidas usando
colchetes []. Além disso, as listas suportam uma variedade de métodos que podem ser
utilizados para adicionar, remover, ordenar e modificar elementos.
# Definição da lista
lista = [1, 2, 3, 4, 5]
# Ordenando a lista
lista.sort()
Tupla:
Uma tupla em Python é uma estrutura de dados ordenada e imutável que permite
armazenar uma coleção de elementos. Assim como as listas, os elementos em uma tupla
podem ser de diferentes tipos de dados e são acessados por meio de índices inteiros. As
tuplas são definidas usando parênteses (). Apesar de serem imutáveis, as tuplas ainda
oferecem métodos que permitem a manipulação de dados.
# Definição da tupla
tupla = (1, 2, 3, 4, 5)
Dicionário:
Um dicionário em Python é uma estrutura de dados não ordenada que mapeia chaves
únicas para valores associados. Os elementos em um dicionário são acessados por suas
chaves e não por índices. Os dicionários são definidos usando chaves {} e têm a sintaxe
chave: valor. Os dicionários oferecem métodos para adicionar, remover e acessar
elementos, bem como para realizar operações de iteração sobre as chaves, valores ou
itens.
# Definição do dicionário
dicionario = {'nome': 'João', 'idade': 30, 'cidade': 'São Paulo'}
For aninhado
Um loop `for` aninhado em Python é quando um loop `for` é colocado dentro de outro. Isso
é útil para iterar sobre estruturas de dados bidimensionais, como matrizes, ou realizar
operações complexas em conjuntos de dados multidimensionais. Cada iteração do loop
externo dispara uma série de iterações do loop interno, permitindo acesso sistemático a
cada elemento da estrutura de dados em diferentes níveis de profundidade. Isso simplifica a
implementação de algoritmos complexos em Python.
Tabuleiro de xadrez:
Produto de matriz:
# Duas matrizes
matriz1 = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
# Imprimindo o resultado
for linha in resultado:
print(linha)
Exemplos:
Laços while: Estes laços executam um bloco de código repetidamente enquanto uma
condição especificada for verdadeira. É importante garantir que a condição de parada seja
eventualmente alcançada para evitar loops infinitos.
Laços for: Estes laços iteram sobre uma sequência (como uma lista, tupla, conjunto ou
string) e executam um bloco de código para cada elemento da sequência. São
frequentemente utilizados quando se conhece antecipadamente a quantidade de iterações
necessárias.
A declaração `break`
Com a declaração `break`, podemos interromper o loop mesmo que a condição do while
seja verdadeira.
Verificação da hora:
import time
time.strftime('%X')
import time
senha = 1
print("Loop encerrado!")
A declaração `continue`
A declaração `continue` é útil quando queremos pular uma iteração específica do loop e
continuar com a próxima iteração. Isso pode ser útil, por exemplo, quando estamos
processando uma lista e queremos pular elementos que não atendem a certos critérios, ou
quando queremos ignorar certos valores em um loop.
Com a declaração `else`, podemos executar um bloco de código uma vez quando a
condição do loop não for mais verdadeira:
A declaração `else` em um loop é executada uma vez após a conclusão normal do loop, ou
seja, quando a condição do loop se torna falsa. Isso é útil quando queremos executar um
bloco de código após o loop ser concluído, mas apenas se o loop não for interrompido
prematuramente por uma declaração `break`.
Exemplo Prático
# Vendendo os ingressos
print("Vendendo", quantidade_ingressos, "ingressos...")
ingressos_vendidos += quantidade_ingressos
Contagem regressiva
# Contagem regressiva
numero = 5
Adivinhe o número
# Jogo de adivinhação
numero_secreto = 7
palpite = 0
import random
numero_secreto = random.randint(1, 10)
palpite = 0
soma = 0
numero = 1
soma = 0
numero = 1
maximo = int(input("Digite o número:"))
Lista de compras
lista_de_compras = []
print("Bem-vindo à lista de compras!")
while True:
item = input("Digite um item para adicionar à lista (ou digite 'fim'
para sair): ")
if item.lower() == 'fim':
break
lista_de_compras.append(item)
while True:
# Solicitando ao usuário seu nome
nome_usuario = input("Digite seu nome (ou digite 'fim' para sair):
")
while True:
# Solicitando ao usuário que adicione um item à sua lista de
compras
item = input("Digite um item para adicionar à sua lista (ou
digite 'fim' para finalizar): ")
O Python não possui uma estrutura de repetição do-while nativa. No entanto, podemos
emular esse comportamento usando um loop while junto com uma condição de controle. A
ideia básica é usar um while True com uma verificação de condição interna que, se não
satisfeita, usa um break para sair do loop.
# Inicializa a variável
numero = -1
# Inicializa a variável
senha = ""
print("Senha válida!")
Exemplo 3: Calculando a soma de números até que o usuário digite zero
# Inicializa a variável
soma = 0
# Inicializa a variável
contador = 10
import random
# Inicializa as variáveis
soma_notas = 0
quantidade_notas = 0
# Inicializa as variáveis
notas = []
soma_notas = 0
quantidade_notas = 0
# Inicializa as variáveis
funcionarios = []
funcionario = {
'nome': nome,
'horas_trabalhadas': horas_trabalhadas,
'taxa_por_hora': taxa_por_hora
}
funcionarios.append(funcionario)
except ValueError:
print("Entrada inválida. Por favor, insira valores numéricos válidos.")
# Salário líquido
salario_liquido = salario_bruto - imposto - contribuicao_previdenciaria