Estruturas de Repetição
Programação de Scripts
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
processa-mento 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"
Estrutura de Repetição FOR
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).
Estrutura de Repetição FOR
A estrutura de repetição
for do ... done
pode ser
utilizada da seguinte maneira*:
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.
TamanhoTotal=0
for arq in *
do
tamanho=$(stat –c %s $arq)
TamanhoTotal=$(($TamanhoTotal + $tamanho))
done
Estrutura de Repetição FOR
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.
Estrutura de Repetição FOR
Veja o exemplo a seguir:
frase="escreva-me 20 vezes."
for ((cont=1; cont <= 20; cont++))
do
echo $frase
done
Estrutura de Repetição FOR
A execução do script anterior traria como resultado uma
tela semelhante a que está sendo mostrada a seguir:
Estrutura de Repetição
Fluxograma
frase ← "escreva-me 20 vezes" Início cont <= 20? Fim Escreva frase Verdadeiro Falso cont ← 1 cont ← cont + 1
Estrutura de Repetição FOR
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
sucessiva-mente até que ela chegue ao valor 20.
Estrutura de Repetição FOR
Observe o exemplo a seguir:
frase="a vez"
for ((cont=1; cont <= 20; cont++))
do
echo "$cont$frase."
done
Estrutura de Repetição FOR
O código mostrado anteriormente apresentaria
a seguinte tela como resultado de sua
execução:
Estrutura de Repetição FOR
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.
Estrutura de Repetição FOR
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.
Estrutura de Repetição FOR
Veja o exemplo a seguir:
for ((cont=20; cont >= 1; cont--))
do
echo $cont
done
Estrutura de Repetição FOR
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.
Estrutura de Repetição FOR
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
Estrutura de Repetição FOR
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 = 24 = 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.
Estrutura de Repetição FOR
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.
Estrutura de Repetição FOR
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