Logo Saci
Projeto Programando o Futuro
Programação para Iniciantes (Blockly+Python)
registrar
login
Aula 11 - Verificando se é par, interrompendo um laço
Avalie esta aula
 
Avalie esta revisão

Bloco Resto da Divisão

O bloco Resto da divisão é encontrado no menu "Matemática" da Barra de Ferramentas. Ele tem dois espaços vagos, um para colocarmos o dividendo da operação de divisão e outro para colocar o divisor. O resultado do bloco, como o nome indica, é o resto da divisão do dividendo pelo divisor. Exemplos:

Um uso frequente do bloco é para verificar se o valor de uma variável é par. Sabemos que um número é par se o resto da divisão desse número por 2 é zero. Então podemos usar um bloco Resto da divisão para verificar o resto da divisão da variável por 2:

E usamos um bloco de comparação para comparar o resultado do bloco resto da divisão com zero:

Se a variável num tem resto zero quando dividida por 2, o valor de num é par. Senão, o valor de num é ímpar. Podemos usar esse bloco como condição de um comando de execução condicional:

Interrompendo um laço

Na aula anterior vimos o bloco Repita, que é útil para realizar repetições quando sabemos de antemão quantas vezes precisamos repetir uma dada ação.

Mas em alguns casos precisamos interromper a repetição dos comandos antes que todas as repetições sejam executadas. Suponha por exemplo o seguinte problema:

dada uma lista de N números, verificar se a lista está em ordem crescente. Como resultado, o programa deve escrever na saída "S" se a lista estiver em ordem crescente e "N" caso contrário.

Para resolver esse problema, basta ler cada número da lista com um bloco repita, verificando se o número lido é maior do que o número lido no passo anterior.

Note que se a lista estiver em ordem crescente, temos que verificar todos os números da lista antes de escrever o resultado. Afinal, somente podemos saber que a lista está em ordem crescente após verificar o último número da lista.

Por outro lado, se a lista NÃO está em ordem crescente, podemos parar a repetição e escrever o resultado. Considere a lista

1 4 12 13 14 29 21 22 34 41 43 46 47

Nesse exemplo, determinamos que a lista não está ordenada ao encontrar o número 21. Os demais números da lista não precisam ser verificados, podemos portanto interromper o laço de repetição.

Para interromper um laço usamos o bloco Encerre o laço, que é encontrado no menu "Laços" da Barra de Ferramentas:

.

Quando o Bloco Encerre o Laço é executado, o bloco de repetição é interrompido imediatamente.

Para ilustrar o uso dos bloco "Encerre o laço" e "Resto da Divisão" vamos resolver um pequeno problema:

Dada uma lista com N números inteiros, escrever na saída o primeiro número da lista que é par. Se não existe número par, escreva -1 na saída.

Aqui está uma solução em Blockly para o problema:

Veja esse programa na linguagem Python (não precisa entender o programa em Python, o exemplo é apenas para você ter uma ideia da linguagem Python; mais adiante no curso vamos ver os comandos em Python em detalhes):

resultado = -1
N = int(input())
for count in range(int(N)):
    num = int(input())
    if num % 2 == 0:
        resultado = num
        break
print(resultado)

 

 

Entrada
Saída
Avalie este desafio

Parada Ordenada

O sargento quer que os recrutas desfilem na parada em ordem de altura. Um recruta não pode desfilar depois de um recruta com altura maior do que a sua (pode desfilar se tem a mesma altura).

O sargento coletou as alturas dos recrutas e fez uma lista com a ordem dos recrutas para o desfile. Mas ele não é bom de matemática e ordenou que você confira se a lista está corretamente ordenada.

Dados o número de recrutas e uma lista com a ordem dos recrutas preparada pelo sargento, escreva um programa para determinar se a lista está ordenada por ordem de altura.

Entrada

A primeira linha da entrada contém um número inteiro N, o número de recrutas na. Cada uma das N linhas seguintes contém um número inteiro Xi, a altura de um recruta, em milimetros, na ordem em que o sargento preparou.

Saída

Seu programa deve escrever uma única linha na saída, contendo o caractere 'S' se os recrutas estão em ordem não decrescente ou o caractere 'N' caso contrário. A ordem é não decrescente se a altura do próximo recruta a desfilar é maior ou igual à altura do recruta anterior.

Restrições

  • 1 ≤ N ≤ 100
  • 1500 ≤ Xi ≤ 2000, para 1 ≤ i ≤ N

Exemplos

Entrada
4
1600
1700
1700
1701
Saída
S
	

Entrada
5
1800
1801
1802
1801
1803
Saída
N
	

 

Solução

Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.

Solução do Desafio
Solução do Desafio

Blockly

Python

# Solução do Desafio 1 da Aula 11

altura = 0
resultado = 'S'
N = int(input())
for count in range(int(N)):
    x = int(input())
    if x < altura:
        resultado = 'N'
        break
    altura = x
print(resultado)
      

 

 

Avalie este desafio

Impedido!

A regra do impedimento no futebol funciona dadas as posições de três jogadores: L o jogador atacante que lança a bola; R o jogador atacante que recebe a bola; e D o último jogador defensor.

Neste problema o campo tem 100 metros de comprimento. Dadas as posições desses três jogadores, no momento exato do lançamento, haverá impedimento se e somente se a seguinte condição for verdadeira:

(R>50) e (L< R) e (R >D).

O seu programa deve determinar, dadas as três posições L,R e D, se há ou não impedimento, implementando exatamente a condição acima. A figura abaixo mostra um exemplo onde não há impedimento:

Entrada

A entrada é composta de três linhas, contendo os três inteiros L, R e D, nessa ordem.

Saída

Seu programa deve produzir uma única linha, contendo um único caractere, que deve ser "S" caso haja impedimento, ou "N" caso contrário.

Restrições

  • 0 ≤ L ≤ 100
  • 0 ≤ R ≤ 100
  • 0 ≤ D ≤ 100

Exemplos

Entrada
35
60
75
Saída
N
	

Entrada
55
68
67
Saída
S
	

Entrada
66
80
80
Saída
N
	

 

Solução

Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.

Solução do Desafio
Solução do Desafio

Blockly

Python

# Solução do Desafio 2 da Aula 9

L = int(input())
R = int(input())
D = int(input())
if R > 50 and L < R and R > D:
  print('S')
else:
  print('N')