Cтраница 2
![]() |
Последовательное чтение с помощью файла произвольного доступа. [16] |
Теперь рассмотрим реальную программу обработки запросов ( рис. 14.15), использующую файл произвольной выборки для действительно мгновенного доступа. Программа оперирует с информацией по банковским счетам. Программа обновляет существующие счета, добавляет новые счета, уничтожает старые, создает текстовый файл для форматированной печати всех текущих счетов. Допустим, что выполнена программа на рис. 14.11 и создан файл credit. [17]
Если будет создана реальная программа по этому алгоритму, ее эффективность может по многим причинам увеличиться по сравнению с эффективностью, показанной в работе. Например, оценка для числа хороших с вероятно сильно занижена, так как более мягких условий, чем (6.10) и (6.11), должно быть достаточно. Это означает, что число требуемых повторений должно сократиться. Также кажется неправдоподобным, что распределение плохих значений с становится другим для простых чисел, меньших 18; если это действительно так, то нам не надо специальным образом трактовать малые простые степени. [18]
Поскольку во многих реальных программах достаточно иметь один общий блок, то такая возможность весьма удобна с практической точки зрения. [19]
Предположим теперь, что реальные программы, подлежащие графовой формализации, используют процедуры. [20]
Очень часто графы хода выполнения реальных программ содержат замкнутые пути, которые соответствуют имеющимся в программах циклическим конструкциям и обратным переходам. [21]
![]() |
Стандартные идентификаторы языка Паскаль. [22] |
Зарезервированные слова, которые в реальных программах печатают строчными буквами, в примерах, приводимых по ходу изложения материала, записаны прописными буквами. [23]
Необходимо подчеркнуть, что в реальных программах некоторые маршруты могут оказаться нереализуемыми из-за несовместимости условий, которые последовательно анализируются в разных вершинах. Для каждого реализуемого маршрута может быть необходима проверка при нескольких прохождениях циклов и нескольких значениях каждой обрабатываемой переменной. Особенно важно проверять циклы с условным выходом на одном-двух промежуточных, а также на максимальном и минимальном количествах исполнения циклов. В результате количество необходимых тестов и длительность проверки соответственно возрастают. [24]
Хорошо известно, что в реальных программах суммарное время, затрачиваемое на доступ к элементам массивов, существенно превышает время, затрачиваемое на обработку описаний массивов. Поскольку первое не зависит от типа используемых массивов ( т.е. от того, используются ли статические или динамические массивы), то существенного выигрыша во времени выполнения ожидать нельзя. [25]
![]() |
Частотная характеристика УНЧ. [26] |
Комбинационные тона могут получаться при усилении любой реальной программы. [27]
Оказывается, что практически невозможно составить реальную программу без ошибок, и почти невозможно для достаточно сложной программы быстро найти и устранить все имеющиеся в ней ошибки. Трудности программирования и отладки подчеркивает следующий популярный афоризм: В любой программе есть по крайней мере одна ошибка, Таким образом, можно сказать, что наличие ошибок в только что разработанной программе это вполне нормальное и закономерное явление. А совсем ненормальным, из ряда вон выходящим фактом является отсутствие ошибок в программе, которая не была еще подвергнута тщательной отладке. Конечно, речь здесь идет о реальных, достаточно сложных программах. [28]
Исходим из того, что в реальной программе обращение к процедуре влечет за собой следующие действия: копируется тело процедуры, копия обрабатывается по определенным правилам и выполняется в пункте обращения к процедуре. Правила обработки тела процедуры опираются на классификацию переменных, используемых в процедуре. [29]
Приведем пример того, как по реальной программе с процедурами строится соответствующая ей графовая форма. [30]