Logo Saci
Projeto Programando o Futuro
Programação para Iniciantes (Blockly+Python)
registrar
login
Aula 13 - Repetindo a repetição
Avalie esta aula
 
Avalie esta revisão

O bloco Imprima com final

Até o momento temos usado o bloco para escrever na saída. Vamos ver agora outro bloco para escrever na saída, o bloco imprima com final, que pode ser encontrado no menu E/S da Barra de Ferramentas:

O bloco "imprima com final" tem um campo para inserirmos um texto que vai ser escrito ao final da execução do comando:

Por exemplo, se o bloco for utilizado para escrever a cadeia de caracteres "abc" e escolhermos o caractere "*" (asterisco) como texto final:

será escrito na saída:

abc*

e o computador não inicia uma nova linha, ou seja, a proxima vez que for escrever vai escrever na mesma linha, após o caractere asterisco. Assim, se bloco seguinte for outro bloco imprima com final para escrever a cadeia de cadeia de caracteres "def" com o caractere "+" como texto final:

será escrito na saída:

abc*def+

Para ilustrar melhor, vamos comparar a execução do bloco imprima com final com a execução do bloco imprima.

               
1
2
3
4
       
1234

 

Usando o bloco imprima, este comando de repetição escreve quatro linhas na saída, com os números 1, 2, 3, 4, e o computador muda de linha, em preparação para escrever a próxima linha.

Já o mesmo comando de repetição, mas agora com o bloco imprima com final, com o campo do texto final vazio, indicando que não queremos um texto impresso ao final de cada execução do comando, escreve na saída os números 1, 2, 3, 4 na mesma linha, um após o outro, e o computador não muda de linha ao final do comando.

Vamos ver um outro exemplo usando o mesmo comando de repetição, agora com o caractere asterisco como texto final:

será escrito na saída:

1*2*3*4*

e o computador não muda de linha ao final do comando.

O símbolo especial "\n"

Vamos ver mais outro exemplo usando o mesmo comando de repetição, agora com "\n" como texto final:

será escrito na saída:

1
2
3
4

e o computador muda de linha ao final do comando. Ou seja, o bloco imprima com final com texto final igual a "\n" (barra invertida seguida de n minúsculo) produz exatamente o mesmo resultado que o bloco imprima.

Isto acontece porque a cadeia de caracteres "\n" representa um símbolo especial da linguagem Python, que representa para o computador o comando "mude de linha".

Você pode usar o símbolo "\n" em qualquer texto. Por exemplo, um bloco imprima usado para escrever na saída o texto "Tic\nTac" tem o mesmo resultado que dois blocos imprima, um para escrever "Tic" e outro para escrever "Tac":

               
Tic
Tac	  
       
Tic
Tac	  

 

Repetindo a repetição

Vamos agora usar um comando de repetição com uma variável chamada coluna, e que vai variar de 1 até 6.

usar um bloco "imprima com final" para escrever um sinal de mais, com o campo do texto final sem preencher, ou seja, não vai haver texto após o sinal de mais. Vamos também usar um bloco imprima para fazer o computador iniciar uma nova linha. Note que podemos encaixar no bloco imprima um bloco Texto sem nada preenchido, ou posso deixar o comando imprima sem um bloco encaixado. O resultado é o mesmo, o computador vai mudar de linha. Vou deixar sem o bloco texto:

Quando executada, a repetição produz seis sinais de mais na saída. Então o comando imprima é executado e o computador muda de linha.

++++++
	  

Vamos agora usar um outro bloco de repetição, com uma variável chamada linha, que vai variar de 1 até 3, e encaixar a repetição da coluna na repetição da linha.

Quando executado, esse trecho de programa escreve três linhas, cada linha contendo seis colunas com o sinal de mais:

++++++
++++++
++++++

Vamos fazer uma modificação no programa: ao invés de escrever sempre seis colunas, fazer o laço da coluna executar com a variável coluna de 1 até o valor de linha:

Ou seja, agora o laço da coluna vai ser executado três vezes, a primeira vez de 1 até o valor de linha que é 1, a segunda vez de 1 até até o valor de linha,, que é 2, e a terceira vez de 1 até até o valor de linha, que é 3.

Quando executado, esse trecho de programa produz:

+
++
+++

Veja esse último trecho 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):

for linha in range(1, 4):
    for coluna in range(1, linha + 1):
        print('+', end='')
    print()

 

 

Entrada
Saída
Avalie este desafio

Bandeira Mudante

A bandeira do reino da Nlogônia é um retângulo de 3 x 5 caracteres, ou seja, três linhas de cinco caracteres cada. Quatorze caracteres são pontos, representando os condados do reino, e um caractere é uma estrela, representando a capital, onde fica o castelo do Rei. O problema é que o Rei constantemente altera a posição da estrela na bandeira. Ora ele quer que a estrela esteja numa posição, ora em outra. A figura abaixo mostra três exemplos de bandeiras possíveis:

Na figura, a bandeira mais à esquerda tem a estrela na linha 1, coluna 1. A bandeira do meio tem a estrela na linha 3, coluna 5. E na bandeira mais à direita a estrela está na linha 2, coluna 3.

O Rei determinou que você faça um programa para, dada a posição da estrela na bandeira, escrever na saída a bandeira correspondente.

Entrada

A primeira linha da entrada contém um inteiro L, o número da linha da posição da estrela, a segunda linha da entrada contém um inteiro C, o número da coluna da posição da estrela. As linhas são numeradas de 1 a L e as colunas são numeradas de 1 a C.

Saída

Seu programa deve escrever na saída a bandeira correspondente à entrada, com três linhas, cada uma contendo cinco caracteres. Utilize os caracteres . (ponto) e * (asterisco) para desenhar a bandeira.

Restrições

  • 1 ≤ L ≤ 3
  • 1 ≤ C ≤ 5

Exemplos

Entrada
1
1	
Saída
*....
.....
.....
	

Entrada
2
5	
Saída
.....
....*
.....
	

 

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

Vamos usar duas variáveis L e C para armazenar a posição da estrela. Então usamos um laço com a variável linha de 1 a 5 e encaixado nesse um outro laço com a variável coluna de 1 até 5. A cada passo da repetição, verificamos se o valor de linha é igual a L e o valor de coluna é igual a C. Nesse caso, usamos um bloco imprima com final para escrever um asterisco. Senão, usamos um bloco imprima com final para escrever um ponto. Note que temos que usar um bloco imprima para fazer o computador mudar de linha.

Blockly

Python

# Solução do Desafio 1 da Aula 13

L = int(input())
C = int(input())
for linha in range(1, 4):
    for coluna in range(1, 6):
        if linha == L and coluna == C:
            print('*', end="")
        else:
            print('.', end="")
    print()

 

 

Avalie este desafio

Bandeira Radical

O partido Radical da Nlogônia é pequeno mas muito ativo e propõe uma mudança na bandeira nacional, para refletir suas ideias avançadas. A bandeira deverá ter L × C caracteres, ou seja, L linhas de C caracteres cada. Os caracteres usados na bandeira são pontos e estrelas. Todos os caracteres de uma mesma linha são do mesmo tipo. Mais precisamente, todos os caracteres das linhas ímpares são pontos, todos os caracteres das linhas pares são estrelas.

A figura abaixo mostra dois exemplos de bandeiras possíveis:

Na figura, a bandeira à esquerda tem três linhas e cinco colunas, e a bandeira à direita tem seis linhas e três colunas.

Dados os números de linhas e de colunas da bandeira, faça um programa para escrever na saída a bandeira correspondente à proposta do Partido Radical.

Entrada

A primeira e única linha da entrada contém dois inteiros L e C, indicando respectivamente o número de linhas e o número de colunas da bandeira. As linhas são numeradas de 1 a L e as colunas são numeradas de 1 a C.

Saída

Seu programa deve escrever na saída a bandeira correspondente à entrada, conforme descrito acima, com L linhas, cada uma contendo C caracteres. Utilize os caracteres . (ponto) e * (asterisco) para desenhar a bandeira.

Restrições

  • 1 ≤ L ≤ 7
  • 1 ≤ C ≤ 7

Exemplos

Entrada
3
4	
Saída
....
****
....
	

Entrada
1
6	
Saída
......
	

Entrada
6	
3
Saída
...
***
...
***
...
***

 

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

Vamos usar duas variáveis L e C para armazenar respectivamente o número de linhas e o número de colunas da bandeira. Então usamos um laço com a variável linha de 1 a L e encaixado nesse um outro laço com a variável coluna de 1 até C. A cada passo da repetição da linha, verificamos se o valor de linha é par ou ímpar. Se for ímpar, fazemos uma variável de nome caractere_da_linha valer '.' (esse vai ser o caractere escrito nesta linha, que é ímpar). Se for par, fazemos a variável de nome caractere_da_linha valer '*'.

Então, no laço de repetição da coluna, usamos um bloco imprima com final para escrever a linha com a variável caractere_da_linha. Note que temos que usar um bloco imprima para fazer o computador mudar de linha.

Blockly

Python

# Solução do Desafio 2 da Aula 13

L = int(input())
C = int(input())
for linha in range(1, L + 1):
    if linha % 2 == 1:
        caracter_da_linha = '.'
    else:
        caracter_da_linha = '*'
    for coluna in range(1, C + 1):
        print(caracter_da_linha, end="")
    print()