mac2166 introdução à computaçãomcesar/aulas_03e04.pdfintrodução à computação - aulas 03 e...

31
MAC2166 Introdução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014

Upload: others

Post on 09-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

MAC2166

Introdução à Computação - aulas 03 e 04 -

Mauro Cesar Bernardes

11/Março/2014

Page 2: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 3: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 4: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 5: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 6: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

Primeiros comandos em Python

Saída de dados: print()

Entrada de dados: input()

Page 7: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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.

Page 8: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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)

Page 9: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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....

Page 10: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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)

Page 11: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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! .

Page 12: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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")

Page 13: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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")

Page 14: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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")

Page 15: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 16: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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)

Page 17: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

Tipos Numéricos Operações com int, produz int (exceto para /). Operações com float produz float

Page 18: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

Tipos Numéricos

Page 19: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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)

Page 20: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 21: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 22: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 23: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 24: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 25: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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.

Page 26: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 27: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 28: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

Tabela Verdade: Operador not (não)

O resultado é uma inversão do valor

v1 not v1

True False

False True

Page 29: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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

Page 30: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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).

Page 31: MAC2166 Introdução à Computaçãomcesar/aulas_03e04.pdfIntrodução à Computação - aulas 03 e 04 - Mauro Cesar Bernardes 11/Março/2014 . Agenda

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