ILA - Unisinos
ILA - Unisinos
ILA - Unisinos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (<strong>ILA</strong>) - Página 15<br />
2. Calcule d = b² - 4ac.<br />
3. Se d < 0 forneça como resposta a mensagem: A equação não possui raízes reais.<br />
4. Se d ≥ 0<br />
4.1 Calcule x 1 = (-b + raiz(d))/2a e x 2 = (-b - raiz(d))/2a.<br />
4.2 Forneça x 1 e x 2 como raízes da equação.<br />
De maneira mais ou menos evidente, raiz(d) está representando a raiz quadrada de d e a<br />
execução deste algoritmo requer que o processador seja capaz de determinar valores de expressões<br />
aritméticas, calcular raízes quadradas, efetuar comparações e que conheça a linguagem matemática.<br />
Algoritmos para problemas genéricos são mais complicados e as linguagens utilizadas<br />
anteriormente não são adequadas (para o caso da ordenação de uma relação de nomes, foram<br />
desenvolvidos vários algoritmos e teremos oportunidade de discutir alguns deles ao longo deste<br />
livro).<br />
1.7 Exemplos de algoritmos matemáticos<br />
Para uma primeira discussão em termos de aprendizagem de desenvolvimento de algoritmos e<br />
utilizando a linguagem usada no exemplo da equação do segundo grau, apresentamos a seguir<br />
alguns exemplos de algoritmos que objetivam a solução de questões da matemática. Para eles<br />
supomos que o processador seja capaz de efetuar somas, subtrações e divisões decimais, de realizar<br />
comparações, de repetir a execução de um conjunto de instruções um número determinado de vezes<br />
ou enquanto uma condição seja atendida.<br />
1. No exemplo do algoritmo para obtenção do algarismo da casa das unidades de um inteiro<br />
dado supomos que o processador seria capaz de calcular o resto de uma divisão inteira. Observando<br />
que não está suposto que o nosso processador seja capaz de determinar restos de divisões inteiras,<br />
vamos discutir um algoritmo para a determinação do quociente e do resto da divisão de dois inteiros<br />
positivos dados. Por exemplo: se o dividendo for 30 e o divisor for 7, o algoritmo deve fornecer os<br />
valores 4 para o quociente e 2 para o resto. Fomos ensinados que, para determinar o quociente,<br />
deveríamos, por tentativa, encontrar o número que multiplicado pelo divisor resultasse no maior<br />
número menor que o dividendo. No exemplo numérico citado, poderíamos tentar o 5 e teríamos 5x7<br />
= 35 que é maior que 30; tentaríamos o 3 obtendo 3x7 = 21 que talvez seja pequeno demais em<br />
relação ao 30; aí tentaríamos o 4 obtendo 4x7 = 28, encontrando então o quociente 4. Um<br />
algoritmo para solucionar esta questão poderia ser:<br />
1. Chame de D1 e D2 o dividendo e o divisor dados.<br />
2. Faça I = 1.<br />
3. repita 3.1 até IxD2 > D1.<br />
3.1. Substitua I por I + 1.<br />
4. Calcule Q = I – 1.<br />
5. Calcule R = D1 - QxD2.<br />
6. Forneça R para o resto e Q para o quociente pedidos.<br />
No exemplo numérico proposto, teríamos a seguinte tabela com os valores obtidos durante a<br />
execução do algoritmo:<br />
D1 D2 I QxI Q R<br />
30 7<br />
1 7<br />
2 14<br />
3 21<br />
4 28<br />
5 35<br />
4 2