Text Material Preview
LÓGICA DE PROGRAMAÇÃO
E ALGORITMOS I
Prezado aluno!
Durante a nossa rotina diária, acabamos executando certas atividades
praticamente todos os dias, mesmo que seja de formas diferentes. Quer um
exemplo? Todos os dias, ao acordar, você irá tomar café, tomar banho, escovar os
dentes, entre outras atividades. Essa afirmativa está correta ou errada?
Independentemente de sua resposta, sabemos que, para desempenharmos
algumas funções, acabamos executando repetições até que essa função seja
finalizada.
Em muitas situações, não basta que tenhamos somente uma estrutura de
seleção em um programa de computador ou a forma sequencial de
implementação. Em resolução de problemas reais, é comum a necessidade de uso
de estrutura de repetição, que seleciona, de certa forma, um trecho de código e
faz com que ele seja executado um determinado número de vezes ou quando
alguma operação acontecer.
Nesta aula, você verá que, com os laços ou estruturas de repetição, ocorre
o mesmo: certos trechos de código irão repetir sua execução determinado número
de vezes ou até uma condição assumir o valor lógico falso, que é quando utilizamos
a estrutura while-end, ou quando definimos a quantidade de vezes que irá repetir,
situação que exige o uso da estrutura for-end.
Bons Estudos!
AULA 3 –
ESTRUTURA DE
REPETIÇÃO
Nesta aula, você vai conferir os contextos conceituais da psicologia entenderá
como ela alcançou o seu estatuto de cientificidade. Além disso, terá a oportunidade
de conhecer as três grandes doutrinas da psicologia, behaviorismo, psicanálise e
Gestalt, e as áreas de atuação do psicólogo.
Compreender o conceito de psicologia
Identificar as diferentes áreas de atuação da psicologia
Conhecer as áreas de atuação do psicólogo.
Lógica matemática é básica para qualquer estudo em computação e informática
Nesta Unidade de Aprendizagem, você estudará a construção de um
algoritmo usando praticamente todos os conceitos de programação, com destaque
para os tipos de estrutura de repetição existentes. Após esses estudos, você será
capaz de:
Analisar os algoritmos com estruturas de repetição “enquanto” e
“repita” em pseudocódigo e linguagem Java (while e for).
Identificar problemas que necessitem de estruturas de repetição.
Desenvolver algoritmos em pseudocódigo e linguagem MATLAB que
necessitem estruturas de repetição na resolução de problemas.
3 ESTRUTURAS DE REPETIÇÃO: CONCEITOS
Durante o desenvolvimento de um software, deparamo-nos com um único
objetivo, que é o de solucionar algum problema, o que significa que o software deve
contribuir para automatizar alguma atividade, seja ela empresarial ou mesmo a
realização de um simples cálculo de multiplicação. Acabamos lidando com a análise
de diversas condições que são preestabelecidas para que, conforme sua adequação,
as regras do programa as caracterizem como verdadeiras ou falsas ou conforme
atendam, ou não, a possível solução do problema. Quando temos que fazer esse tipo
de ação, utilizamos as chamadas estruturas condicionais ou de controle – na verdade,
elas também recebem outras nomenclaturas (CHAPRA, 2013).
Existem situações, não basta que tenhamos somente uma estrutura de seleção
em um programa de computador, tão pouco somente a forma sequencial de
implementação. Em resolução de problemas reais, é comum a necessidade do uso
de estrutura de repetição, que seleciona, de certa forma, um trecho de código e faz
com que ele seja executo um determinado número de vezes ou quando alguma
operação acontecer.
Entretanto, além desse tipo de situação, podemos lidar também com a de que
um determinado trecho de código seja repetido até a condição ser atendida ou até
mesmo quando ela mudar seu valor lógico, que antes era verdadeiro, para falso.
Imagine um sistema acadêmico em que se deve inserir as notas de todos os alunos
de uma sala de aula. Então, quando o sistema volta à mesma tela e você clica em “ok”
ou em “concluir”, um trecho de código está sendo executado novamente, e isso é
possível graças aos chamados laços de repetição, que contêm, em seu interior, os
trechos que devem ser repetidos (CHAPRA, 2013).
Isso mesmo, a estrutura de repetição é, na verdade, um laço, que, muitas
vezes, é chamado de looping. Dentro desse laço, inserimos o trecho de código que
deve ser repetido e, como mencionamos anteriormente, a execução desse laço só
deve ser finalizada após a condição ser atendida. Vamos supor que você está fazendo
uma receita na qual só deve parar de mexer a massa após ela ficar uniforme. Nesse
exemplo, a “massa ficar uniforme” é a condição para que você pare, ou não, de mexê-
la. Observe que você não sabe quantas vezes essa ação será repetida, de modo que
não tem como definir um limite de vezes em que a massa será mexida, só sabe que,
quando ela ficar uniforme, estará pronta e você não vai mais precisar mexê-la. Em
algoritmo, poderíamos representar essa situação da seguinte forma:
A estrutura while
Existem algumas situações em programação que precisamos repetir o mesmo
trecho de código com valores diferentes para as nossas variáveis. Um programa que
calcula a média de uma turma de 40 alunos vai repetir a mesma operação 40 vezes:
leitura da matrícula do aluno, leituras das notas, cálculo da média e, por fim, mostrar
para o usuário o resultado desse processamento de dados. Da mesma forma que as
estruturas de seleção fazem um controle do fluxo de execução, as estruturas de
repetição vão mudar o fluxo, repetindo um trecho de código um determinado número
de vezes ou quando alguma operação for executada (CHAPRA, 2013).
Podemos pensar a estrutura de repetição como o loop da montanha-russa,
onde o carrinho vem em seu fluxo e faz um giro. Em programação, esse loop é
conhecido como repetição. O loop pode ficar repetindo um número X de vezes. Esse
número pode ser determinado pelo programador ou pode ser um valor digitado pelo
usuário. Em todos os casos, esse valor ficará armazenado em uma variável que é
conhecida como contadora.
Um detalhe: você pode dar o nome que quiser para essa variável, mas lembre-
se de que é legal o nome da variável ter relação com o significado do que ela
armazena. Além disso, o loop também pode ser controlado por algo que o usuário
digita ou alguma operação interna a ele. Imagine que o cálculo da média seja digitado
até que seja zero para a matrícula do aluno. O loop, então, encerraria como resultado
de uma operação. Esse tipo de loop é obtido por meio de um teste condicional com
uma variável, que é conhecida como variável de controle.
Em C, existem os seguintes loops: while, for e do-while. Vamos começar com
o while. Para isso, vamos a um código simples, que mostre os números de 1 a 5,
primeiro sem estrutura de repetição. Alguns detalhes:
A condição é uma expressão relacional e/ou lógica com a variável de
controle.
A variável de controle deve ser inicializada antes do loop.
A variável de controle precisa ser modificada dentro do loop de repetição.
Esses detalhes são importantes, pois, se eles não estiverem presentes no
código, o loop pode ou não funcionar ou funcionar de forma errada. Para exemplificar,
vamos a dois erros bastante comuns que podem acontecer, ou melhor, acontecem
com todos que estão aprendendo a programar (CHAPRA, 2013)
Veja este exemplo:
Fonte: (CHAPRA, 2013)
Outro exemplo:
As linguagens de programação formais utilizam os termos na língua inglesa,
mas a lógica é a mesma, devemos apenas inserir os termos de outra forma. O
enquanto-faça - fim-enquanto é utilizado da seguinte maneira:
Vamos imaginar outra situação sobre esse exemplo em que, para ficar
uniforme, a massa deve ser mexida apenas dez vezes. A diferençaé que, nessa outra
situação, podemos visualizar quantas vezes a ação será repetida. Devemos ter uma
enquanto (massa não fícar uniforme) faça
Mexa a massa
fim_enquanto
end
while (condição) {
Instruções a serem executadas enquanto a
condição for verdade}.
end
variável, que servirá de contador, ou seja, contabilizará quantas vezes a estrutura será
repetida. Como estamos querendo somar a quantidade de vezes, devemos
incrementar o laço de repetição, o que fazemos utilizando a variável de controle e uma
instrução que informa que a variável de controle será somada “+1”. Em algoritmo,
podemos representá-la da seguinte maneira:
O que esses comandos querem dizer? Devemos ler da seguinte maneira: o
contador iniciará com o valor um, já que ele tem que repetir 5 vezes, repetirá até que
o contador esteja valendo dez – o passo 1 se refere justamente a essa soma.
Tabela 1 – Contagem de repetições com o laço de repetição
Número da rodada
do laço de repetição
Contador
Valor do contador
após a rodada
Primeira repetição Iniciar com o valor de i igual a 1
1
Segunda repetição
1 (valor inicial do contador) + 1
(somado toda vez que o laço se
repete)
2
Terceira repetição
2 (valor do contador) + 1 (somado
toda vez que o laço se repete)
3
Quarta repetição
3 (valor do contador) + 1 (somado
toda vez que o laço se repete)
4
Quinta repetição
4 (valor do contador) + 1 (somado
toda vez que o laço se repete)
5
Fonte: (CHAPRA, 2013)
Esse tipo de estrutura é utilizada quando temos uma repetição finita, ou seja,
quando sabemos quantas vezes o laço se repetirá. Em uma linguagem de
programação formal seria representada por:
para i de i até 5 passo 1 faça
Mexa a massa
fim_para
Para reforçar o que comentamos sobre essa estrutura de repetição, Chapra
menciona que:
[...] o laço for funciona da seguinte forma: o índice é uma variável definida
com um valor inicial, início; o programa, então, compara a variável índice com
o valor final desejado, fim. Se o índice for menor ou igual à variável fim, o
programa executará as declarações. Quando ele chega à linha end, que
caracteriza o fim do laço, a variável índice é incrementada pelo valor da
variável passo e o programa retorna à declaração for. O processo continua
até o índice tornar-se maior que o valor de fim; neste ponto, o laço é
encerrado e o programa salta para a linha imediatamente após a declaração
end (CHAPRA, 2013, p. 67).
Atenção:
Na criação de algoritmos, utilizamos os conceitos de bloco lógico, entrada e
saída de dados, variáveis, constantes, atribuições, expressões lógicas, relacionais e
aritméticas, bem como comandos que traduzam esses conceitos para representar o
conjunto de ações. Para que esse conjunto de ações se torne viável, deve existir uma
perfeita relação lógica intrínseca ao modo pelo qual essas ações são executadas, ao
modo pelo qual é regido o fluxo de execução do algoritmo, por meio das estruturas
básicas de controle do fluxo de execução-sequenciação, seleção, repetição. E da
combinação delas, poderemos criar algoritmos para solucionar nossos problemas
(FORBELLONE; EBERSPÄCHER, 2005).
Cada linguagem traz suas particularidades, por isso é tão importante que você
compreenda a lógica em si. Os detalhes de aplicação você vai compreendendo melhor
quando, além de decidir a linguagem, conhecer suas características. Como
linguagens formais podemos citar Java, C, C++, C#, Python, entre outras. (CHAPRA,
2013).
Exemplos de uso das estruturas condicionais
Conhecemos como as estruturas funcionam, agora, vamos exemplifi car tanto
o uso da estrutura for-end quanto o da estrutura while-end. Para exemplificar o uso
for (indice = inicio; 5; indice++)
{ Intruções a serem executadas } ;
das estruturas, vamos supor que temos que realizar a soma de dois números, na qual
um desses números será o número dois e o outro será o valor que o usuário for
digitando conforme o laço de repetição for sendo executado. Porém, essa operação
matemática só irá ser executada até o resultado da soma dos valores assumir um
valor menor ou igual a 9.
Devemos ter algo em mente: como estruturaremos esse algoritmo?
Vamos utilizar o pseudocódigo para te uma ideia inicial.
Fonte: (FORBELLONE,2005)
Aproveitando o mesmo exemplo, podemos aplicar a outra estrutura de
repetição; o que mudará, além da sintaxe, é quando o laço será repetido, neste caso,
até quando, já que vamos utilizar a estrutura for-end. Você deve saber, também, que
essa estrutura é denominada estrutura controlada por variável, em que a variável é o
contador, que define quantas vezes ela se repetirá.
Para adaptar o exemplo anterior, devemos, primeiramente, definir quantas
vezes o laço será repetido, ou seja, quantas vezes queremos que a soma seja
realizada. Vamos definir, então, queremos realizar a soma apenas três vezes.
Podemos compreender melhor observando o pseudocódigo a seguir:
Fonte: (FORBELLONE,2005)
REFERÊNCIAS BIBLIOGRÁFICAS
CHAPRA, S. C. Métodos Numéricos Aplicados com MATLAB para Engenheiros
e Cientistas. 3ª. ed. Porto Alegre: AMGH, 2013.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a
construção de algoritmos e estrutura de dados. São Paulo: Makron Books, 2005.