01 (537404), страница 4
Текст из файла (страница 4)
2 строка
3 строка
4 строка
123456789.123456789.123456789.12...80
Вариант_1
Исходные данные:
A = –.025 L = .FALSE.
I = 10000 C = .5E-05
Текст программы может быть записан следующим образом:
123456789.........................72 73......80
C *** Пример ввода-вывода информации ***
Logical L Character N*9
Open(5, File = 'prog.dat')
Open(6, File = 'prog.res')
Read(5, 20) A, I, C, L, N
20 Format(/5X, F6.3, 4X, I5, T26, E7.1/
* T9, L7, 7X, A)
Write(6, 30) N, A, L, I, C
30 Format(4X, A9/9X, 'Исходные данные:'/
* 4X, 'A = ', F5.3, T19, 4HL = , L2/
* T5, 3HI =, I6, 6X, 'C =', E8.1)
Close(6)
Close(5)
End
При написании оператора Format надо учитывать следующие особенности его работы.
-
Если в нем используются повторяющиеся комбинации спецификаций I, F, E, D, A или L, то перед ними можно использовать параметр повторения, указывающий их количество. Вместо оператора Format(I4, I4, I4, F6.2, F6.2) можно записать Format(3I4, 2F6.2). Аналогичным образом можно повторять и группы спецификаций, заключая их в скобки. Например оператор Format(I4, F6.2, I4, F6.2, I4, F6.2) может быть заменен на Format(3(I4, F6.2)).
-
Если количество спецификаций в операторе Format меньше количества переменных в списке ввода-вывода, то после использования всех спецификаций работа продолжается с первой спецификации, стоящей после последней внутренней открывающей скобки.
-
При выводе данных на экран монитора или принтер первая позиция каждой выводимой строки должна оставаться свободной, так как она используется под управляющий символ терминального устройства и ее содержание не выводится.
Пример выполнения задания. Составить программу для вычисления и печати восьми значений функции
для восьми значений аргумента, принадлежащих отрезку от xmin=-2 до xmax= 8,15. Исходные данные задать в файле prog_2.dat. Результат поместить в файл с именем prog_2.res в форме:
1 строка
2 строка
..............
8 строка
123456789.123456789.123456789.123456789...........80
Значение функции Y=<знач.> при Х=<знач.>
Значение функции Y=<знач.> при Х=<знач.>
.................................................. .........................
Значение функции Y=<знач.> при Х=<знач.>
Данные в файле prog_2.dat располагаются следующим образом123456789.12345.............................80
-2.
-1.14
.........
8.15
1 строка
2 строка
..............
8 строка
Программа будет иметь вид:
123456789..............................................................72 73......80
C *** Лабораторная работа 2 ***
Open(5, File = 'prog_2.dat')
Open(6, File = 'prog_2.res')
15 Read(5, 20, End = 100) X
Y = X*X - X*Sign(Abs(X)**(1./3.), X)/2.
Write(6, 30) Y, X Go to 15
20 Format(5X, F5.2)
30 Format(1X,'Значение функции Y= ', E14.7,
* T37, 'при Х=', F6.2)
100 Close(5)
Close(6)
End
*** Замечание:– оператор Go to 15 передает управление на оператор ввода Read с меткой 15, что дает возможность осуществить многократный ввод значений переменной X;
З а д а н и е к л а б о р а т о р н о й р а б о т е
Составить программу для вычисления значений функции для десяти значений аргумента, принадлежащих отрезку [xmin, xmax]. Исходные данные задать в файле prog_2.dat. Результат поместить в файл prog_2.res в форме, указанной в таблице 1. По результатам расчетов построить график функции. Структуру вводимых и выводимых данных отразить в отчете.
Таблица 1.
№ | Форма вывода информации | № | Форма вывода информации |
1 | +------------------+-----------------+ I Аргумент I Функция I +------------------+-----------------+ I x1 I y1 I I x2 I y2 I I ... I I +------------------+-----------------+ Составил : <Ф.И.О.> | 2 | +-----------------+----------------+ : Функция : при Х : +----------------+----------------+ : y1 : x1 : y2 : x2 : ... : ... :+-----------------+----------------+ Составил : <Ф.И.О.> |
3 | Таблица ************************** I X = x1 I Y = y1 I ************************** I X = x2 I Y = y2 I ************************* I ......... I ........... I ************************* Составил : <Ф.И.О.> | 4 | Результат ************************** I X = x1 дает Y = y1 I ************************** I X = x2 дает Y = y2 I ************************** I ......... ......... I ************************** Составил : <Ф.И.О.> |
5 | ---------------------------------------- I Аргумент I Функция I ---------------------------------------- I x1 I y1 I I x2 I y2 I I ... I ... I +----------------+------------------+ Составил : <Ф.И.О.> | 6 | Значения функции: для Х = х1 ==> Y = y1 для Х = х2 ==> Y = y2 для Х = х3 ==> Y = y3 для Х = х4 ==> Y = y4 ................................. Составил : <Ф.И.О.> |
7 | Результаты расчетов: при Х = х1 функция Y = y1 при Х = х2 функция Y = y2 при Х = х3 функция Y = y3 ....................................... Составил : <Ф.И.О.> | 8 | Получено: Y( х1 ) = y1 Y( х2 ) = y2 Y( х3 ) = y3 ................. Составил : <Ф.И.О.> |
Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 3
РАЗВЕТВЛЯЮЩИЕСЯ ПРОГРАММЫ. ОПЕРАТОРЫ УПРАВЛЕНИЯ
С п р а в о ч н а я и н ф о р м а ц и я
В рассмотренных ранее программах были реализованы линейные алгоритмы, которые требовали последовательного выполнения операций. Однако существует класс задач, решение которых предполагает наличие нескольких путей получения конечного результата. Например, при решении квадратного уравнения требуется анализировать величину дискриминанта и, в зависимости от его знака, принимать решение о наличии и кратности действительных корней. Поэтому в алгоритме решения должны существовать по крайней мере два взаимоисключающих пути получения конечного результата. Эти пути принято называть ветвями алгоритма, а реализующие его программы - разветвляющимися.
Рис.1.
Разветвляющийся алгоритм можно продемонстрировать на примере решения следующей задачи. В компьютер вводятся значения переменных X и Y, представляющие собой координаты точки M(x, y) на плоскости xOy (смотри рисунок 1). Вся плоскость xOy разбита на три области, каждая из которых имеет признак n – номер от 0 до 2-х. Требуется разработать алгоритм и составить программу идентификации области, в которую попала точка M. Точки границ отнести к области с большим номером.Решение поставленной задачи может быть описано следующей последовательностью действий:
-
Ввести значения x и y;
-
Если длина радиуса-вектора точки M(x, y) больше радиуса окружности, ограничивающей области с номерами 1 и 2, то перейти к пункту 3. В противном случае перейти к пункту 4;
-
Присвоить переменной n значение 0 и перейти к пункту 7;
-
Если y больше 0, то перейти к пункту 5, иначе перейти к пункту 6;
-
Присвоить переменной n значение 1 и перейти к пункту 7;
-
Присвоить переменной признака области n значение 2;
-
Вывести значения x, y и n.
Данное описание неудобно, поэтому при разработке разветвляющихся программ рекомендуется составлять блок-схему алгоритма, так как это позволяет получить наглядную схему его функционирования и избежать ошибок. Под блок-схемой понимают графическое отображение алгоритма программы, где каждой операции соответствует свой образ, а последовательность решения изображается соединяющими их линиями. Символьное обозначение операций приведено ниже в таблице.
Выполняемая операция | Образ |
Начало и окончание работы алгоритма или программы | |
Оператор или группа операторов, изменяющих значение данных | |
Операторы ввода-вывода данных | |
Оператор условного перехода |
Внутри каждого элемента блок-схемы в произвольной форме описывается выполняемая операция.