Обработка программ на компьютере

Обработка программ на ПК состоит из трех этапов:

а) трансляция; б) загрузка; в) выполнение.

Для выполнения каждого этапа необходимо дать соответствующую команду ЭВМ. Ошибки в программе могут быть обнаружены на каждом из трех этапов. Комп'ютер сигнализирует об ошибке специальным сообщением, указывая в какой строке программы она обнаружена, а также ее тип и характеристики.

При обнаружении ошибки на этапах загрузки и выполнения обработка программы, как правило, прекращается. Трансляция же продолжается до конца программы, чтобы выявить все ошибки за один прогон программы.

а)Транслятор проверяет синтаксис программы и выдает сообщения о синтаксических ошибках. Обычно первая трансляция всегда выявляет ошибки, возникшие из-за неправильного набора текста на клавиатуре, даже если программа написана опытным программистом. Бывает и так, что транслятор, обнаружив одну ошибку в операторе, нередко воспринимает как ошибочные и другие части того же оператора, а то и другие операторы. В таких случаях выдаются сообщения о действительных и "наведенных" ошибках. Важно устранить первые ошибки из обнаруженных.

б)Вторым этапом обработки программы является этап загрузки или сборки. Во время загрузки к программе подключаются все необходимые программные модули. Большинство сообщений об ошибках на данном этапе возникает из-за неправильного указания имен подпрограмм или функций.

в)Последний этап обработки программ – выполнение. На этом этапе компьютер наконец-то выполняет написанную программу. Во время ее выполнения могут возникать ситуации, когда от ЭВМ требуется обработка недопустимых данных. В таких случаях операционная система выдает сообщения об ошибках выполнения. Например, такие сообщения выдаются при попытках заставить ЭВМ выполнить деление на ноль или извлечь квадратный корень из отрицательного числа и т.п.

Иногда программа благополучно проходит все три этапа обработки, однако результаты вычислений оказываются неверными. Ошибку в этом случае следует искать в использовании неправильной формулы или в логике (алгоритме) построения программы. Следовательно, каждую новую программу необходимо тестировать с использованием таких наборов данных, которые приводят к известному результату. Если это не сделано, то к любому выданному программой результату нужно относиться с недоверием. Более того, все программы, за исключением лишь очень простых, должны проходить не одну, а несколько проверок. Тестирование программы должно гарантировать проверку всех ветвлений программной логики. Начинающие программисты часто этого не делают. В этом случае их программы могут давать «верные» результаты для одного набора исходных данных, но приводить к ошибкам при другом наборе данных.

Оператор бесформатного ввода READ

Реализованный в программах ЕХ21 и EX23 оператор READ называется оператором бесформатного ввода. Ввод под управлением списка позволяет осу­ществить передачу данных без оператора FORMAT. Общая форма его имеет вид:

READ(5,*) список

Под списком понимается список вводимых величин, в котором имя каждой величины отделено от следующего имени запятой. После последнего имени запятая не ставится. В примере ЕХ21 список состоит из трех переменных A,B,I. Имена их выбраны программистом по определенным правилам (в соответствии с этими правилами А и В - вещественные переменные, I - целая переменная).

Звездочкауказывает на ввод под управлением списка, т.е. операционная система вводит переменные в том порядке, в каком они указаны в списке, определяя тип переменной по умолчанию. Поэтому оператор бесформатного ввода называется также оператором ввода под управлением списка.

Число в скобках при операторе READ (5,*) является кодом способа ввода исходных данных. Данные могут вводиться с дискеты, с жесткого диска, с экрана. В данном случае – пятерка (5) означает ввод с экрана. Это наиболее удобный ввод, так как все вводимые числа можно контролировать визуально.

Каждое число в записи исходных данных отделяется от следующего пробелами. Программист должен обеспечивать соответствие типов чисел в записи исходных данных и типов переменных в списке ввода. Если этого не сделать, то операционная система прекращает обработку программы и выдает сообщение об ошибке. Например, если с программой ЕХ21 будут использованы данные 3.14159 - 0.005 2240. то ЭВМ отвергнет ввод вещественного числа 2240. в ячейку I, предназначенную для хранения только целого числа.

Операторы вывода

В FORTRANе существует два вида операторов вывода информации из оперативной памяти компьютера:

PRINT * , «список выводимых величии»

или WRITE(n,*) «список выводимых величии»

Оператор WRITE может выводить информацию на экран, на жесткий диск или на принтер. Поэтому в написание оператора входит число n, указывающее код устройства, на которое должна выводиться информация. При n = 6 вывод осуществляется на экран, при n = 7 данные из оперативной памяти записываются на жесткий диск в файл с именем ft07f001.

Оператор PRINT* может выводить информацию только на экран с возможностью последующей распечатки на принтере. Поэтому нет необходимости указывать номер устройства, на которое выводятся данные.

Звездочка в обоих операторах указывает на то, что вывод осуществляется под управлением списка, т.е. список определяет расположение печатаемых чисел на строке вывода. Число позиций на строке вывода для каждого числа задает транслятор. Он же определяет и количество цифр в дробной части числа, т.е. бесформатный вывод. Поэтому для удобства в работе и улучшения внешнего вида распечатки используют форматный вывод, который будет подробно рассмотрен дальше.

Операторы вывода в тексте программы могут иметь такой формат:

PRINT*, A, B, I

или WRITE(6,*) A, B, I

В этом случае на экран выводятся копии содержимого ячеек с именами А, В, І в том порядке, в котором они записаны в списке, т.е. сначала А, потом В и наконец I - все в одну строку. Если все числа, указанные в списке, на одной строке не размещаются, то транслятор автоматически переносит часть чисел на следующую строку.

Список в операторах бесформатного вывода может отсутствовать, т.е. операторы могут иметь вид PRINT * или WRITE (6,*). В этом случае печатающее устройство одну строку пропускает, как бы печатая пустую строку изодних пробелов.

Рассмотрим пример:

PRINT*, ' ИСХОДНЫЕ ДАННЫЕ '

PRINT*

PRINT*, ' А=', А, 'В=' , В, ' І=' , І

В этом примере сначала будут напечатаны слова ИСХОДНЫЕ ДАННЫЕ, первая буква которых будет находиться на расстоянии n символов от начала строки, где n - количество пробелов между первым (открывающим)апострофом и первой буквой. С помощью второго оператора PRINT* будет получена пустая строка. Если значения переменных А, В, І принять такими же, как в предыдущем примере, то будет напечатано:

А= 3,14159 В= -0,005 І= 2240

Следует обратить внимание на то, что в рассмотренном примере в список оператора PRINT включены символьные константы. Они применяются для вывода поясняющей информации. Не следует путать вывод символьной константы с выводом содержимого ячейки. Например, оператор PRINT*,'A=' напечатает константу А= , в то время как оператор PRINT*, А напечатает значение (число), содержащееся в ячейке с именем А. Необходимо также внимательно следить за количеством и расположением апострофов: их должно быть два - перед константой и за ней.

Наши рекомендации