Algoritmo expresso em forma textual de uma seqüência imperativa de comandos:
1) Obter coeficientes a, b, c;
2) Coeficiente a = 0 ?
2.1) Então: preparar Resposta = "equação inválida";
2.2) Senão:
2.2.1) Calcular delta = b^2 - 4*a*c;
2.2.2) Valor de delta < 0 ?
2.2.2.1) Então: preparar Resposta = "inexistência de solução Real";
2.2.2.2) Senão: valor de delta = 0 ?
2.2.2.2.1) Então:
2.2.2.2.1.1) Calcular x = - b / 2 * a;
2.2.2.2.1.2) Preparar Resposta = "X = " + ConverterParaTexto( x );
2.2.2.2.2) Senão:
2.2.2.2.2.1) Calcular x1 = ( - b + RaizQuadrada( delta ) ) / 2 * a;
2.2.2.2.2.2) Calcular x2 = ( - b - RaizQuadrada( delta ) ) / 2 * a;
2.2.2.2.2.3) Preparar Resposta = " X1 = " +
ConverterParaTexto( x1 ) +
" X2 = " +
ConverterParaTexto( x2 );
3) Apresentar Resposta;
Considerações:
1) o conceito de biblioteca de funções, previamente implementadas na maioria das linguagens de programação de alto nível, permite a abstração de certas operações elementares e corriqueiras, como exemplo a linguagem de programação C Ansi oferece:
- obtenção de raiz quadrada: sqrt( valor );
- conversão/concatenação de dados diversos para texto: sprintf( buffer, "formatação", variáveis );
2) as operações aritméticas básicas são normalmente representadas pelos símbolos: + - * /
3) o operador de exponenciação ou potenciação vai depender da linguagem de programação: ** ou ^ são os casos mais usuais, porém tomando a linguagem de programação C Ansi como exemplo, existe a função de biblioteca pow(a, n) para calcular a elevado a n;
4) também é comum a necessidade de concatenção de textos, variando muito entre as linguagens de programação, mas podendo ser representada pelo operador + ou & ou até mesmo por funções de biblioteca; no caso da linguagem C Ansi podemos usar a mesma função sprintf() mencionada acima;
5) ao fazer uso de operadores relacionais >, < e = devemos tomar cuidado para não confundir o teste de igualdade com a operação de atribuição:
Atribuição | Teste de igualdade | Linguagem |
delta = pow(b,2) - 4 * a * c | if ( delta == 0 ) | C ansi, C++ |
delta := b ** 2 - 4 * a * c | if ( delta = 0 ) | Pascal, Delphi |
6) por último, uma consulta ao dicionário Michaelis (http://michaelis.uol.com.br/moderno/portugues/index.php?lingua=portugues-portugues&palavra=dentear) nos apresenta o verbo: "dentear (den.te.ar) (dente+ear) vtd 1 Formar dentes em. 2 Recortar, chanfrar. Var: dentelar.". Reparar que o algoritmo acima apresentado em forma textual, assim como a escrita de comandos na maioria das linguagens de programação de alto nível, devem usar este recurso para facilitar a leitura dinâmica dos mesmos e agilizar a compreensão do raciocínio, assim como acelerar e manter um controle sobre o fluxo de execução das instruções; ou seja, um hábito a ser desenvolvido.
Até a próxima.
Nenhum comentário:
Postar um comentário