22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

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:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!