Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
instruções 3.1 e 3.2.<br />
Como ver<strong>em</strong>os ao longo do livro, este algoritmo é bastante utilizado <strong>em</strong> programação, sendo mais<br />
comum até o primeiro termo da relação ser "somado" dentro da repetição. Neste caso, para que o primeiro<br />
seja somado, é necessário que Soma seja inicializado com 0 (zero), ficando assim o algoritmo:<br />
1. Faça i = 0.<br />
2. Faça Soma = 0.<br />
3. Repita n vezes as instruções 3.1 e 3.2.<br />
3.1. Substitua i por i + 1.<br />
3.2. Substitua Soma por Soma + a i .<br />
Conhecendo este algoritmo, é fácil então resolver a questão de se calcular o produto de n números nas<br />
mesmas condições, e aí v<strong>em</strong>os como utilizar uma solução conhecida para resolver um probl<strong>em</strong>a. Deve-se<br />
inicializar uma referência Produto com 1 e, numa repetição, multiplicar os números como foi feito no caso<br />
da soma:<br />
1. Faça i = 0.<br />
2. Faça Produto = 1.<br />
3. Repita n vezes as instruções 3.1 e 3.2.<br />
3.1. Substitua i por i + 1.<br />
3.2. Substitua Produto por Produto x a i .<br />
1.6 Processador de um algoritmo<br />
Obviamente, um algoritmo deve ser executado por algum agente. Este agente pode ser uma pessoa<br />
munida de certos equipamentos e utensílios ou por máquinas projetadas para executar automaticamente<br />
algumas instruções básicas. O algoritmo para a travessia do senhor gordo com as galinhas, sua raposa e seu<br />
saco de milho seria executado pelo tal senhor, que estava para tal munido do barco e de r<strong>em</strong>os. O algoritmo<br />
para obtenção de quatro litros de água a partir de recipientes de conteúdos cinco litros e três litros poderia ser<br />
executado por uma pessoa que dispusesse dos dois recipientes e de água <strong>em</strong> abundância. Neste último caso,<br />
qu<strong>em</strong> sabe, a pessoa poderia ser substituída por um robô.<br />
O agente que executa um algoritmo é chamado processador e é evidente que para que o algoritmo seja<br />
executado é necessário que o processador seja capaz de executar cada uma das suas instruções. Se o senhor<br />
gordo não souber r<strong>em</strong>ar ele não será capaz de atravessar o rio. Uma pessoa que não seja capaz de esvaziar<br />
um recipiente que pese cinco quilos não será capaz de executar o algoritmo dos quatro litros de água.<br />
Alguns autores de livros com objetivos idênticos a este - facilitar a aprendizag<strong>em</strong> da programação de<br />
computadores - iniciam seus textos discorrendo exclusivamente sobre resolução de probl<strong>em</strong>as, encarando o<br />
processador como uma "caixa preta" que recebe as instruções formuladas pelo algoritmo e fornece a solução<br />
do probl<strong>em</strong>a, não levando <strong>em</strong> conta o processador quando da formulação do tal algoritmo. Entend<strong>em</strong>os que<br />
esta não é a melhor abordag<strong>em</strong>, visto que o conhecimento do que o processador pode executar pode ser<br />
definidor na elaboração do algoritmo. Por ex<strong>em</strong>plo: imagine que queiramos elaborar um algoritmo para<br />
extrair o algarismo da casa das unidades de um inteiro dado (apresentar<strong>em</strong>os posteriormente uma questão<br />
bastante prática cuja solução depende deste algoritmo). Evident<strong>em</strong>ente, o algoritmo para resolver esta<br />
“grande” questão depende do processador que vai executá-lo. Se o processador for um ser humano que saiba<br />
o que é número inteiro, algarismo e casa das unidades, o algoritmo teria uma única instrução:<br />
1. Forneça o algarismo das unidades do inteiro dado.<br />
Porém, se o processador for um ser humano que saiba o que é número inteiro e algarismo, mas não<br />
saiba o que é casa das unidades, o algoritmo não poderia ser mais esse. Neste caso, para resolver a questão, o<br />
processador deveria conhecer mais alguma coisa, como, por ex<strong>em</strong>plo, ter a noção de "mais à direita", ficando<br />
o algoritmo agora como:<br />
1. Forneça o algarismo "mais à direita" do número dado.<br />
E se o processador é uma máquina e não sabe o que é algarismo, casa das unidades, "mais à direita",<br />
etc.? Nesta hipótese, qu<strong>em</strong> está elaborando o algoritmo deveria conhecer que instruções o processador é<br />
capaz de executar para poder escrever o seu algoritmo. Por ex<strong>em</strong>plo, se a máquina é capaz de determinar o<br />
resto de uma divisão inteira, o algoritmo poderia ser: