MAC2166
Introdução à Computação - aulas 03 e 04 -
Mauro Cesar Bernardes
11/Março/2014
Agenda
• Revisão – Comando de saída print()
– Comando de entrada input
– Comando while
– Comando if, elif, else
• Exemplos de problemas
• Tipo float
• Monitoria
• EP1
Variáveis: revisão
• Nomes de variáveis devem obrigatoriamente iniciar com uma letra ou sublinhado (_).
• Podem conter números e o símbolo sublinhado (_)
Exemplos de nomes válidos e inválidos
Nome Válido?
b2
velocidade
Velocidade90
Salario medio
Salario_medio
_b
2b
Operadores numéricos
Operador Descrição
+ Adição
- Subtração
* Multiplicação
/ Divisão
// Divisão inteira
% Módulo (resto da divisão)
** Potência
Operadores relacionais Utilizado para realização de comparações
Também chamadas expressões lógicas
Resultam em verdadeiro (True) ou falso (False)
Símbolo
matemático Operador
Python operação
= = = Igualdade
> > Maior que
< < Menor que
≠ != diferente
≥ >= Maior ou igual
≤ <= Menor ou igual
Primeiros comandos em Python
Saída de dados: print()
Entrada de dados: input()
Estrutura de repetição: while
• Utilizadas para executar partes de um programa várias vezes, normalmente dependendo de uma condição.
while <condição>:
comando_1
comando_2
comando_3
comando_fora_do_while
x=1
while x<3:
print(x)
x = x + 1
print("fim do programa")
• while: repete um bloco de comandos enquanto uma
condição for verdadeira.
Problema 2: Dados números inteiros n e k, com k>=0, determinar nk.
Por exemplo, dados os números 3 e 4 o seu programa deve escrever o número 81.
n = int(input("Digite o valor de n: "))
k = int(input("Digite o valor de k: "))
pot = n
while k > 1:
pot = pot*n
k = k - 1
print("A potência é", pot)
Problema 2: Dados números inteiros n e k, com k>=0, determinar nk.
Por exemplo, dados os números 3 e 4 o seu programa deve escrever o número 81.
n = int(input("Digite o valor de n: "))
k = int(input("Digite o valor de k: "))
pot = 1
i = 1
while i <= k:
pot = pot*n
i = i + 1
print("A potência é", pot)
print("O valor de %d elevado a %d é %d" %(n, k, pot))
Outra solução....
Problema 3: Dado um número inteiro n >= 0, calcular n! .
n = int(input("Digite o valor de n: "))
fat = n
while n > 1:
n = n -1
fat = fat*n
print("O resultado é =", fat)
n = int(input("Digite o valor de n: ")) fat = 1 i = 2 while i <= n: fat = fat*i i = i + 1 print("O valor de %d! é =" % n, fat)
Outra solução....
Problema 3: Dado um número inteiro n >= 0, calcular n! .
Condições: if, elif, else
if <condição>:
comando_1
comando_2
elif <condição>:
comando_3
comando_4
elif <condição>:
comando_5
comando_6
else:
comando_7
comando_8
comando_fora_do_if_else
a=int(input("valor 1:"))
b=int(input("valor 2:"))
if a > b:
print("maior valor:", a)
elif a= =b:
print(a,"=",b)
else:
print("maior valor:", b)
print("fim do programa")
PROBLEMA 6. Leia um número inteiro n, n > 0, e uma sequência com n números inteiros, determinar
quantos números da sequência são pares e quantos são ímpares. Por exemplo, para a sequência: 6 -2 7 0 -5 8 4
o seu programa deve escrever o número 4 para o número de pares e 2 para o de ímpares.
n = int(input("Digite o tamanho da sequência: "))
n_salvo = n
conta_par = 0
while n > 0:
n = n - 1
num = int(input("Digite um número da sequência: "))
if num % 2 == 0:
conta_par = conta_par + 1
print(conta_par,"números pares")
print(n_salvo-conta_par, "números ímpares")
PROBLEMA 6. Leia um número inteiro n, n > 0, e uma sequência com n números inteiros, determinar
quantos números da sequência são pares e quantos são ímpares. Por exemplo, para a sequência: 6 -2 7 0 -5 8 4
o seu programa deve escrever o número 4 para o número de pares e 2 para o de ímpares.
#solução 2
n = int(input("Digite o tamanho da sequência: "))
conta_par = 0
conta_ímpar = 0
while n > 0:
num = int(input("Digite um num da seq: "))
n = n - 1
if num % 2 == 0:
conta_par = conta_par + 1
else:
conta_ímpar = conta_ímpar + 1
print(conta_par, "números pares")
print(conta_ímpar, "números ímpares")
PROBLEMA 7. Leia um número inteiro n, n>0, e um dígito d(0 ≤ d ≤ 9), determinar quantas vezes d ocorre em n. Exemplo 1: Digite o valor de n (n > 0): 63543
Digite o valor de d (0<=d<=9): 3
O dígito 3 ocorre 2 vezes em 63543
Exemplo 2: Digite o valor de n (n > 0): 0
Digite o valor de d (0<=d<=9): 0
O dígito 0 ocorre 0 vezes em 0
Exemplo 3: Digite o valor de n (n > 0): 0110
Digite o valor de d (0<=d<=9): 0
O dígito 0 ocorre 1 vezes em 110
PROBLEMA 7. Dados um número inteiro n, n>0, e um dígito d(0 ≤ d ≤ 9), determinar quantas vezes d ocorre em n. n = int(input("Digite o valor de n (n > 0): "))
d = int(input("Digite o valor de d (0<=d<=9): "))
conta_dígito = 0
n_salvo = n
while n > 0:
dig = n % 10
n = n // 10
if dig == d:
conta_dígito = conta_dígito + 1
print("O dígito",d,"ocorre",conta_dígito,"vezes em ",n_salvo)
Tipos Numéricos Operações com int, produz int (exceto para /). Operações com float produz float
Tipos Numéricos
PROBLEMA 4. leia um número inteiro n, n>0, e n notas de uma turma de MAC2166, determinar a média da
turma. Por exemplo, para a sequência
6 2.3 7.5 0.5 5.1 8.7 4.9
o seu programa deve escrever:
A média da turma é 4.833333333333333
n = int(input("Digite o número de alunos: "))
n_salvo = n
soma = 0.0
while n > 0:
nota = float(input("Digite uma nota: "))
n = n - 1
soma = soma + nota
print("A média da turma é ", soma/n_salvo)
PROBLEMA 5. Leia um número inteiro n, n>0, e uma sequência com n médias de MAC2166, determinar:
1. quantos alunos aprovados (média ≥ 5.0);
2. quantos alunos em recuperação (3.0 ≤ média < 5.0);
3. quantos alunos reprovados (média < 3.0); e
4. quantos alunos excelentes (média ≥ 8.0);
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
while n > 0:
media = float(input("Digite uma média: "))
n = n - 1
if media >= 5.0:
conta_aprovados = conta_aprovados + 1
print("Total de alunos aprovados: ", conta_aprovados)
Solução Parcial: resolvendo item 1
PROBLEMA 5. Dados um número inteiro n, n>0, e uma sequência com n médias de MAC2166, determinar:
1. quantos alunos aprovados (média ≥ 5.0);
2. quantos alunos em recuperação (3.0 ≤ média < 5.0);
3. quantos alunos reprovados (média < 3.0); e
4. quantos alunos excelentes (média ≥ 8.0);
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
conta_recuperacao = 0
while n > 0:
media = float(input("Digite uma média: "))
n = n - 1
if média >= 5.0:
conta_aprovados = conta_aprovados + 1
if média < 5.0:
if média >= 3.0:
conta_recuperacao = conta_recuperacao + 1
print("Total de alunos aprovados: ", conta_aprovados)
print("Total de alunos de recuperacao: ", conta_recuperacao)
Solução Parcial: resolvendo item 1 e item 2
PROBLEMA 5. Dados um número inteiro n, n>0, e uma sequência com n médias de MAC2166, determinar:
1. quantos alunos aprovados (média ≥ 5.0);
2. quantos alunos em recuperação (3.0 ≤ média < 5.0);
3. quantos alunos reprovados (média < 3.0); e
4. quantos alunos excelentes (média ≥ 8.0);
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
conta_recuperação = 0
conta_reprovados = 0
while n > 0:
média = float(input("Digite uma média: "))
n = n - 1
if média >= 5.0:
conta_aprovados = conta_aprovados + 1
elif média < 3.0:
conta_reprovados = conta_reprovados + 1
else:
conta_recuperação = conta_recuperação + 1
print("Total de alunos aprovados: ", conta_aprovados)
print("Total de alunos de recuperacao: ", conta_recuperação)
print("Total de alunos reprovados: ", conta_reprovados)
Solução Parcial: resolvendo itens 1, 2 e 3
PROBLEMA 5.Dados um número inteiro n, n>0, e uma sequência com n médias de MAC2166,
determinar:
1. quantos alunos aprovados (média ≥ 5.0);
2. quantos alunos em recuperação (3.0 ≤ média <5.0);
3. quantos alunos reprovados (média < 3.0)
4. quantos alunos excelentes (média ≥ 8.0);
n = int(input("Digite o número de alunos: "))
conta_aprovados = 0
conta_recuperação = 0
conta_reprovados = 0
conta_excelentes = 0
while n > 0:
média = float(input("Digite uma média: "))
n = n - 1
if media >=8:
conta_excelentes=conta_excelentes+1
conta_aprovados=conta_aprovados+1
elif média >=5:
conta_aprovados = conta_aprovados + 1
elif média < 3.0:
conta_reprovados = conta_reprovados + 1
else:
conta_recuperação = conta_recuperação + 1
print("Total de alunos aprovados: ", conta_aprovados)
print("Total de alunos de recuperacao: ", conta_recuperação)
print("Total de alunos reprovados: ", conta_reprovados)
Uma solução completa
PROBLEMA EXTRA I (exercício 10 da lista de exercícios sobre inteiros). Dizemos que um número inteiro positivo é triangular se ele é o produto
de três números inteiros consecutivos. Por exemplo, 120 é triangular, pois 4*5*6 é igual a 120.
Leia um número inteiro positivo n, verificar se n é triangular.
'''
Programa que lê um inteiro positivo n e imprime uma mensagem
indicando se ele é ou não triangular
'''
print("Determina se um número n é triangular\n")
# leia o valor de n
n = int(input("Digite o valor de n: "))
i = 1
while i * (i+1) * (i+2) < n:
i = i + 1
if i * (i+1) * (i+2) == n:
print("%d é o produto %d*%d*%d" %(n,i,i+1,i+2))
else:
print("%d não é triangular" %(n))
Uma solução
num=int(input("Número para transformar da base2 para a base10:"))
# inicializações
num_salvo=num
final = 0
pot2 = 1
while num != 0:
final = final + (num % 10) * pot2
num = num // 10
pot2 = pot2 * 2
print("%d na base 10 é: %d" %(num_salvo,final))
Uma solução completa
PROBLEMA EXTRA II (exercício 16 da lista de exercícios sobre inteiros). Dado um número natural na base binária, transformá-lo para a base decimal. Exemplo:
Dado 10010 a saída será 18, pois
1×24 + 0×23 + 0×22 + 1×21 + 0×20 = 18.
Tabela Verdade: Operador and (e)
O resultado é verdadeiro apenas quando
todos os operadores forem verdadeiros
v1 V2 v1 and v2
True True
True False
False True
False False
True
False
False False
Tabela Verdade: Operador or (ou)
O resultado é falso apenas quando todos os
operadores forem falsos
v1 V2 v1 or v2
True True
True False
False True
False False
True
True True
False
Tabela Verdade: Operador not (não)
O resultado é uma inversão do valor
v1 not v1
True False
False True
Operadores lógicos
• Utilizados para agrupar operações com lógica booleana • Python permite a utilização de três operadores lógicos: and (e), or (ou), not (não)
Operador Python Operação
and e
or ou
not não
n = int(input("Digite n: "))
rec = 0
cont = 0
while cont < n:
media = float(input("Digite uma nota: "))
if media >= 3.0 and media < 5.0:
rec = rec + 1
cont = cont +1
print(rec, "alunos ficaram de recuperação")
Uma solução completa
PROBLEMA 8.
Dados um número inteiro n>0 e as médias de n alunos, determinar
quantos ficaram de recuperação. Um aluno está de recuperação se sua
média for maior ou igual a 3,0 e menor 5,0 (nota máxima é 10,0).
Para mais exercícios:
• Lista de Exercícios com Inteiros http://www.ime.usp.br/~macmulti/exercicios/inteiros/index.html
• Lista de Exercícios com Reais http://www.ime.usp.br/~macmulti/exercicios/reais/index.html