ILA - Unisinos
ILA - Unisinos
ILA - Unisinos
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (<strong>ILA</strong>) - Página 14<br />
formulação do tal algoritmo. Entendemos que esta não é a melhor abordagem, visto que o<br />
conhecimento do que o processador pode executar pode ser definidor na elaboração do algoritmo.<br />
Por exemplo: imagine que queiramos elaborar um algoritmo para extrair o algarismo da casa das<br />
unidades de um inteiro dado (apresentaremos posteriormente uma questão bastante prática cuja<br />
solução depende deste algoritmo). Evidentemente, o algoritmo para resolver esta “grande” questão<br />
depende do processador que vai executá-lo. Se o processador for um ser humano que saiba o que é<br />
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,<br />
mas não saiba o que é casa das unidades, o algoritmo não poderia ser mais esse. Neste caso, para<br />
resolver a questão, o processador deveria conhecer mais alguma coisa, como, por exemplo, ter a<br />
noção de "mais à direita", ficando 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 à<br />
direita", etc.? Nesta hipótese, quem está elaborando o algoritmo deveria conhecer que instruções o<br />
processador é capaz de executar para poder escrever o seu algoritmo. Por exemplo, se a máquina é<br />
capaz de determinar o resto de uma divisão inteira, o algoritmo poderia ser:<br />
1. Chame de n o inteiro dado;<br />
2. Calcule o resto da divisão de n por 10;<br />
3. Forneça este resto como o algarismo pedido.<br />
Algumas das questões anteriores são importantes para se desenvolver o raciocínio, mas não é<br />
este tipo de questão que se pretende discutir ao longo deste livro. Estamos interessados em<br />
algoritmos para:<br />
1. Resolver problemas matemáticos, como algoritmos para determinar a média aritmética de<br />
vários números dados, determinar as raízes de uma equação do segundo grau, encontrar o máximo<br />
divisor comum de dois números dados, totalizar as colunas de uma tabela, etc.<br />
2. Resolver questões genéricas, como algoritmos para colocar em ordem alfabética uma<br />
relação de nomes de pessoas, atualizar o saldo de uma conta bancária na qual se fez um depósito,<br />
corrigir provas de um teste de múltipla escolha, cadastrar um novo usuário de uma locadora, etc..<br />
Na linguagem natural, o algoritmo para o cálculo da média pode ser escrito de forma muito<br />
simples:<br />
1. Determine a quantidade de números;<br />
2. Some os números dados;<br />
3. Divida esta soma pela quantidade de números.<br />
Qualquer pessoa que saiba contar, somar e dividir números é capaz de executar este algoritmo<br />
dispondo apenas de lápis e papel. A questão que se põe é: e se a relação contiver 13.426 números? A<br />
tal pessoa é capaz de executar, porém, quanto tempo levará para fazê-lo?<br />
Um outro aspecto a ser observado é que nem sempre a linguagem natural é eficiente para que<br />
as instruções sejam escritas. Nessa linguagem o algoritmo para determinação das raízes de uma<br />
equação do segundo grau teria uma instrução difícil de escrever e difícil de compreender como:<br />
n. Subtraia do quadrado do segundo coeficiente o produto do número quatro pelo produto dos<br />
dois outros coeficientes.<br />
Isto pode ser parcialmente resolvido utilizando-se uma linguagem próxima da linguagem<br />
matemática que já foi utilizada em exemplos da seção anterior. No caso da equação do segundo<br />
grau teríamos o seguinte algoritmo, que nos é ensinado nas últimas séries do ensino fundamental:<br />
1. Chame de a, b e c os coeficientes da equação.