logo search
Лекции ПИС / Книги / Кулямин - Технологии программирования

Программы «большие» и «маленькие»

Основная тема данного курса — методы разработки «больших» и сложных программ.

Каждый человек хоть раз написавший какую-либо программу, достаточно хорошо может представить себе, как разработать «небольшую» программу, решающую обычно одну конкретную несложную задачу и предназначенную, чаще всего, для использования одним человеком или узкой группой людей.

Примером может служить программа, вычисляющая достаточно много (но не слишком, не больше 30000) знаков числа π.

Воспользуемся следующими формулами.

arctan(x) = x – x3/3 + x5/5 – x7/7 + … + (-1)nx2n+1/(2n+1) + O(x2n+3) π/4 = arctan(1) = 4*arctan(1/5) – arctan(1/239)

Соответсвующая программа на языке Java может выглядеть примерно так.

public class PiCalculator

{

//Позволяет при вычислениях с повышенной точностью умножать и делить на числа

//<= 42949 = ( 2^32 mod CLUSTER_SIZE )

//Эта константа должна быть степенью 10 для простоты представления чисел. private final static long CLUSTER_SIZE = 100000;

//Определенное значение этого поля позволяет сосчитать

// numberOfClusters * lg( CLUSTER_SIZE ) //точных цифр.

private static int numberOfClusters;

private static void print(long a[])

{

for(int i = 0; i < numberOfClusters + 1; i++)

{

if (i == 0) System.out.print("" + a[i] + '.'); else

{

StringBuffer s = new StringBuffer(); long z = CLUSTER_SIZE/10;

while(z > 0)

{

if (z > a[i]) { s.append(0); z /= 10; } else break;

}

if (z != 0) s.append(a[i]); System.out.print(s);

}