Estruturas de Repetição Programação de Scripts Prof. Kleber Rezende
Considerações Iniciais Uma das principais características que consolidaram o sucesso na utilização dos computadores para a resolução de problemas foi a sua capacidade de repetir o processamento de um conjunto de operações para grandes quantidades de dados.
Considerações Iniciais Por exemplo, consideremos que uma determinada loja de calçados efetue uma venda no crediário para um cliente que ainda não esteja registrado em seu sistema. Para realizar essa venda, é necessário cadastrar o cliente, solicitando informações básicas como: nome, endereço, CPF, RG, lojas do comércio onde já possui crédito, etc.
Considerações Iniciais Estas etapas para realizar o cadastro, seguirão sempre a mesma ordem para cada novo cliente que aparecer na loja. Caso precisássemos desenvolver um sistema para efetuar os cadastros de clientes de uma loja, não haveria lógica em programarmos novamente essas etapas para cada cliente novo.
Considerações Iniciais Bastaria que desenvolvêssemos uma única vez a seqüência de etapas e que, a cada novo cliente, usássemos a seqüência previamente definida. Outro exemplo que podemos observar é o cálculo da soma dos tamanhos dos arquivos de um diretório qualquer.
Considerações Iniciais Para determinar o tamanho de um único arquivo, pode-se executar o comando stat c %s e armazenar o resultado em uma variável: TamanhoTotal=$(stat c %s <nome-do-arquivo>) echo "Total: $TamanhoTotal"
Considerações Iniciais Se desejássemos calcular a soma dos tamanhos de dois arquivos, poderíamos simplesmente copiar as mesmas linhas de código e colá-las no mesmo programa: tamanho1=$(stat c %s <nome-do-arquivo1>) tamanho2=$(stat c %s <nome-do-arquivo2>) TamanhoTotal=$(($tamanho1 + $tamanho2)) echo "Total: $TamanhoTotal"
A estrutura de repetição for do... done é utilizada sempre que temos condições de estabelecer a QUANTIDADE de vezes que uma determinada sequência de operações deva ser executada. Por exemplo, na situação de cálculo da soma dos tamanhos dos arquivos, sabemos que o número de arquivos de uma pasta é limitado (mesmo não conhecendo esse valor de antemão, temos condições de determiná-lo).
A estrutura de repetição for do... done pode ser utilizada da seguinte maneira*: TamanhoTotal=0 for arq in * do tamanho=$(stat c %s $arq) TamanhoTotal=$(($TamanhoTotal + $tamanho)) done echo "Total: $TamanhoTotal" Cabe ressaltar que se faz necessário o uso de um comando para verificar se o conteúdo na variável arq refere-se a um arquivo ou a um diretório.
Caso desejemos escrever 20 vezes uma frase na tela, também poderíamos utilizar a estrutura de repetição for do... done, iniciando um contador em 1 e indicando que a repetição deva acontecer até que esse contador chegue ao número 20.
Veja o exemplo a seguir: frase="escreva-me 20 vezes." for ((cont=1; cont <= 20; cont++)) do echo $frase done
A execução do script anterior traria como resultado uma tela semelhante a que está sendo mostrada a seguir:
Estrutura de Repetição Fluxograma Início frase "escreva-me 20 vezes" cont 1 cont <= 20? Verdadeiro Escreva frase Falso cont cont + 1 Fim
A variável que representa o contador é incrementada em cada iteração (no exemplo anterior a variável cont representa o contador). Dessa forma, na 1ª iteração ela possui o valor 1, na 2ª iteração o valor 2, e assim sucessivamente até que ela chegue ao valor 20.
Observe o exemplo a seguir: frase="a vez" for ((cont=1; cont <= 20; cont++)) do echo "$cont$frase." done
O código mostrado anteriormente apresentaria a seguinte tela como resultado de sua execução:
Os valores do início e do final da iteração podem também ser definidos em tempo de execução por meio de variáveis.
Os exemplos vistos anteriormente utilizam uma ordem crescente para incrementar o contador, ou seja, a iteração varia de um número menor até alcançar um número maior. Também é possível que façamos de traz para frente, ou em ordem decrescente. Por exemplo, suponha que desejamos escrever os números de 20 até 1.
Veja o exemplo a seguir: for ((cont=20; cont >= 1; cont--)) do echo $cont done
Exercícios Exercícios utilizando somente a estrutura de repetição for do... done 1) Elabore um script que exiba todos os números de 1 até 100. 2) Elabore um script que exiba todos os números de 100 até 1. 3) Elabore um script que exiba todos os números de 250 a 500. 4) Elabore um script que exiba todos os números pares de 1 até 100. 5) Elabore um script que leia um valor (n) de entrada que indicará a quantidade de números a serem lidos. Em seguida, leia n números (conforme o valor informado anteriormente) e imprima o triplo de cada um.
Exercícios Exercício utilizando a estrutura de condição if then... fi dentro da estrutura de repetição for do... done 1) Elabore um script que leia nome, idade e sexo de 20 pessoas. Imprimir o nome, se a pessoa for do sexo masculino, e tiver mais de 21 anos. Exercícios de repetição que calculam somatórios e/ou produtórios 1) Elabore um script que exiba todos os números de 100 a 200, e ao final, imprima também, a soma deles. 2) Elabore um script que leia um valor inteiro e exiba todos os números de 1 até o valor lido, e também o seu produto. Exemplo: Número: 3 Saída: 1 2 3 Produto: 6
Exercícios 3) Construir um script que calcule o fatorial de um número. 4) Construir um script que leia dois números (BASE e EXPOENTE) e retorne como resultado a POTENCIA do cálculo da BASE elevado ao EXPOENTE. Ex: para a BASE = 2 e EXPOENTE = 4, POTENCIA = 2 4 = 16 5) Elabore um script que exiba a tabuada de um número que será informado pelo usuário. 6) Elabore um script que leia 30 números, e imprima quantos números maiores que 30 foram digitados.
Exercícios Exercícios de repetição que calculam somatórios e/ou produtos e que utilizam a estrutura de condição IF dentro da estrutura de repetição FOR 1) Elabore um script que leia um valor inteiro e imprima a soma dos números múltiplos de 5 no intervalo entre 1 e o valor informado. Suponha que o valor lido será maior que zero. 2) Elabore um script que leia 20 números, e ao final, imprima a média desses números. 3) Elabore um script que leia 200 números, e imprima quantos são pares e quantos são ímpares.
Exercícios Exercícios de repetição para localizar determinados valores dentro de um conjunto 1) Elabore um script que leia um número de entrada que indicará a quantidade de números a serem lidos. Em seguida, leia n números (conforme o valor informado anteriormente) e, ao final imprima o maior número digitado. 2) Elabore um script que leia um número de entrada que indicará a quantidade de números a serem lidos. Em seguida, leia n números (conforme o valor informado anteriormente) e, ao final imprima o menor número digitado. 3) Elabore um script que leia um número de entrada que indicará a quantidade de números a serem lidos. Em seguida, leia n números (conforme o valor informado anteriormente) e, ao final imprima o maior, menor, e a média dos números digitados.
PARA FIMPARA Exercícios Exercício utilizando a estrutura de repetição FOR aninhada. 1) Elabore um script que exiba a tabuada de 1 a 10.