14.03.2015 Views

ILA - Unisinos

ILA - Unisinos

ILA - Unisinos

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!