x
MAC2166 - Introdução à Computação
x
01/04/2014 - Aula 3
x
Operador de divisão inteira: //
x
O operador //
realiza a divisão inteira de dois números.
Veja um exemplo a seguir.
minutos = 252
horas = minutos // 60
print(minutos, "minutos contêm", horas, "horas completas")
252 minutos contêm 4 horas completas
x
Operador de resto de divisão inteira: %
x
O operador %
devolve o resto da divisão inteira entre dois números.
Veja exemplos de uso a seguir:
resto = 13 % 5
print(resto)
3
minutos = 252
horas = minutos // 60
minutos_excedentes = minutos % 60
print(minutos, "minutos =", horas, "horas e", minutos_excedentes, "minutos")
252 minutos = 4 horas e 12 minutos
x
Comandos para a execução condicional: if
- else
x
Comandos para a execução condicional dão ao programador a habilidade de verificar condições e mudar o comportamento do programa de acordo com isso.
O comando if
é a forma mais simples de se fazer uma execução condicional. Veja o exemplo a seguir.
x = int(input("Digite um número: ")) # Considere que o número digitado foi 10
if x > 0:
print(x, "é um número positivo.")
print("Tchau!")
10 é um número positivo. Tchau!
x
A expressão lógica depois do if
é chamada de condição.
Se ela for verdadeira, o bloco de comandos indentados será executado.
Se ela for falsa, nenhum comando de dentro do bloco indentado será
executado.
Não há um limite para a quantidade de comandos que podem aparecer dentro de um bloco do if
, mas sempre deve haver pelo menos um comando no bloco.
Uma segunda forma do comando if
é a execução alternativa, ou comando if-else
, em que há duas possibilidades de execução e é a condição quem determina qual delas será realizada.
Os comandos relacionados a uma das possibilidades aparecem como um bloco indentado do if
e serão executados quando a condição for verdadeira. Os comandos da outra possibilidade aparecem como um bloco indentado do else
e serão executados quando a condição do if
for falsa. Veja um exemplo de uso a seguir:
x = int(input("Digite um número: ")) # Considere que o número digitado foi -10
if x > 0:
print(x, "é um número positivo.")
else:
print(x, "NÃO é um número positivo.")
print("Tchau!")
-10 NÃO é um número positivo. Tchau!
x
Criação de laços com o comando for
e a função range
x
Na Aula 2, vimos como usar o comando while
para criar laços para executar repetidamente blocos de comandos.
Quando se sabe exatamente quantas vezes é preciso repetir a execução de um bloco, uma alternativa ao uso do while
é o uso do comando for
combinado à função range
.
Veja um exemplo a seguir:
print("Iniciando contagem:")
for i in range(5):
print(i)
print("Bum!")
Iniciando contagem: 0 1 2 3 4 Bum!
x
Usando while
, o programa acima ficaria duas linhas mais longo:
print("Iniciando contagem:")
i = 0
while i < 5 :
print(i)
i = i + 1
print("Bum!")
Iniciando contagem: 0 1 2 3 4 Bum!
x
Problema 4
x
Dados 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.
x
Solução 1
x
Nessa primeira solução apresentada, exercitaremos o uso do operador %
e do comando if
:
n = n_salvo = int(input("Digite o tamanho da sequência: ")) # atribuição múltipla
conta_par = 0
while n > 0:
num = int(input("Digite um número da sequência: "))
n = n - 1
if num % 2 == 0:
conta_par = conta_par + 1
print(conta_par, "números pares")
print(n_salvo-conta_par, "números ímpares")
x
Um número é par quando ele é divisível por 2. Isso equivale a dizer que um número é par quando o resto da divisão inteira dele por 2 é zero. No programa acima, a linha que verifica se o número digitado é par é a seguinte:
if num % 2 == 0:
Quando a condição desse if
é satisfeita (ou seja, quando
o resto da divisão inteira do número por 2 é zero), então a contagem
dos números pares é incrementada.
Ao final do programa, teremos que quantidade de números ímpares pode ser obtida subtraindo a quantidade de pares da quantidade total de números lidos como entrada.
Atenção: A primeira linha da Solução 1 acima se trata de um comando de atribuição múltipla
.
Em uma atribuição desse tipo, uma sequência de variáveis recebe um
mesmo valor (o que aparece do lado direito do operador de atribuição =
mais à direita no comando).
x
Solução 2
x
Nessa segunda solução, exercitaremos o uso do else
:
n = int(input("Digite o tamanho da sequência: "))
conta_par = 0
conta_impar = 0
while n > 0:
num = int(input("Digite um número da sequência: "))
n = n - 1
if num % 2 == 0:
conta_par = conta_par + 1
else:
conta_impar = conta_impar + 1
print(conta_par, "números pares")
print(conta_impar, "números ímpares")
x
No programa acima, quando a condição do if
é satisfeita (ou seja, quando o número lido é divisível por 2), então o
contador de pares é incrementado. Entretando, como esse if
possui um comando else
associado a ele, quando o número lido não é divisível por 2, o bloco de comandos associado ao else
é executado, causando um incremento na contagem de números ímpares.
x
Solução 3
x
Na Solução 3, substituiremos o laço while
usado nas duas soluções anteriores por um laço for
+ range
:
n = int(input("Digite o tamanho da sequência: "))
conta_par = 0
conta_impar = 0
for i in range(n):
num = int(input("Digite um número da sequência: "))
if num % 2 == 0:
conta_par = conta_par + 1
else:
conta_impar = conta_impar + 1
print(conta_par, "números pares")
print(conta_impar, "números ímpares")
x
Problema 5
x
Dados 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
x
Solução
x
Nessa solução, mais uma vez exercitamos o uso dos operadores //
e %
, e do comando if
:
n = int(input("Digite o valor de n (n > 0): "))
d = int(input("Digite o valor de d (0<=d<=9): "))
conta_digito = 0
n_salvo = n
while n > 0:
dig = n % 10
n = n // 10
if dig == d:
conta_digito = conta_digito + 1
print("O dígito", d, "ocorre", conta_digito, "vezes em ", n_salvo)
x
É importante observar que, nessa solução, os operadores %
e //
estão sendo usados para "descascar" um número inteiro (ou seja, para obter cada um dos seus dígitos separadamente).
Se n
é um número na base decimal, o resultado da operação n % 10
é o dígito menos significativo de n
, ao passo que o operação n // 10
devolve como resultado o próprio n
sem o seu dígito menos significativo.
x
Problema 6
x
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.
Obs.: Esse exercício corresponde ao exercício 16 da lista de exercícios sobre inteiros.
x
Solução
n = n_binario = int(input("Digite o número na base binária: ")) # Considere que o número digitado foi o 10010
n_decimal = 0
pot2 = 1
while n > 0:
digito_binario = n % 10
n = n // 10
n_decimal = n_decimal + digito_binario * pot2
pot2 = pot2 * 2
print("O número decimal correspondente ao número binário", n_binario, "é o", n_decimal)
x
Tópicos vistos na Aula 3
x
- Execução condicional
if
- Execução alternativa
if-else
- Operador de divisão inteira
//
- Operador de resto de divisão inteira
%
x
Referências e outros materiais para estudo
x
- Computer Science Circles >> http://cscircles.cemc.uwaterloo.ca/
- Think Python - How to Think Like a Computer Scientist >> http://www.greenteapress.com/thinkpython/thinkpython.html
- Projeto MacMulti - Listas de exercícios (Introdução à Computação) >> http://www.ime.usp.br/~macmulti/exercicios/