Диалоговый режим работы. Программирование циклических процессов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Диалоговый режим работы. Программирование циклических процессов



 

Диалоговый режим

 

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

Чаще всего программы записываются в косвенном режиме – каждая строка начинается с номера. В этом режиме выполнение операторов задерживается до подачи специальной команды RUN.

Операторы могут печататься в строке без номера. Выполнение оператора осуществляется после нажатия клавиши “ENTER” в конце строки. Этот режим называется непосредственным. В этом режиме результат выполнения хранится, а сам оператор теряется. Режим является удобным и может использоваться при редактировании и отладке программ, записанных в косвенном режиме. В любом месте выполнения программы она может быть остановлена, и может быть применим непосредственный режим работы.

Диалоговый режим обеспечивается использованием оператора INPUT. Грубые ошибки пользователя обнаруживаются программой сразу после нажатия клавиши “ENTER”, другие ошибки – в процессе выполнения программы. При этом следует “подсказка” о типе ошибки.

 

Оператор INPUT

 

Оператор INPUT позволяет создавать универсальные программы, не зависимые от значений исходных данных. Его структура:

 

нc INPUT <переменные>,

 

где INPUT – ключевое слово “ввести”; угловые скобки заменяются переменными, которые необходимо ввести оператору при запросе через запятые.

Пример: 90 INPUT А, В, Х

 

Встретив, этот оператор, BASIC выводит на экран сообщение: “?” (знак вопроса) и ждёт ввода значений переменных. Значения переменных набираются на клавиатуре и отделяются друг от друга запятыми (в конце списка запятая не ставится). Ввод переменных заканчивается нажатием клавиши “ENTER”.

 

Пример: Пусть А = 0.25, В = 3, С = 4Е-1 для вышерассмотренного примера (строка 90). Тогда после вопроса необходимо печатать так:

 

?.25, 3, 4Е-1              

 

Знак вопроса будет появляться на экране до тех пор, пока не будут введены все значения переменных.

 

В GB появилась вторая структура, которая объединяет PRINT и первую форму INPUT:

 

INPUT ”<комментарий >”; <переменные>

 

Оператором INPUT удобно пользоваться при неоднократном использовании программы с разными значениями исходных данных, а также при программировании циклических вычислительных процессов и в программах с подпрограммами.

 

 

Циклические вычислительные процессы

 

Циклические вычислительные процессы – это вычислительные процессы, при которых отдельные участки вычислений используются многократно. Программы, в которых группа операторов используется многократно, называются циклическими.

Циклические вычислительные процессы можно разделить на три группы: итерационные, циклы с параметром (циклы со счётчиком) и циклы при обработке массивов.

В циклической программе в явном или неявном виде можно выделить четыре характерные части: подготовку цикла, тело цикла (операторы, осуществляющие вычисление по неоднократно используемым формулам), подготовку данных для очередного выполнения цикла и анализ условия окончания цикла.

 

 

Итерационные циклы

 

Итерационные циклы тесно связаны с итерационными методами решения уравнений и систем уравнений.

Например, для вычисления корней нелинейных уравнений используется метод простой итерации, метод Ньютона, метод бисекций (деления пополам) и др. Программирование таких процессов осуществляется, как правило, с использованием операторов IF и GOTO.

 

 

Циклы с параметром

 

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

 

,

 

где  и  - начальное и конечное значения параметра, - шаг изменения. Циклы с параметром при  вещественного типа можно свести к циклическому процессу с  целого типа:

 

.

 

Однако при вещественном значении параметра не всегда возможно получить целое , поэтому следует округлять  до целого с учётом анализа условия задачи.

Таким образом, цикл с параметром сводится к циклу со счётчиком, который организуется пользователем в теле цикла, а при подготовке цикла содержимое счётчика должно обнуляться.

В языке BASIC имеются специальные операторы для организации циклов с параметром: FOR - NEXT. Такой цикл называется циклом с управляющей переменной или циклом со встроенным счетчиком.

 

 

Операторы FOR и NEXT

 

Синтаксическая структура оператора:

 

нс FOR <переменная> = Е1 ТО Е2 {STEP E3},

 

где FOR – ключевое слово “для”; Е1 – арифметическое выражение, определяющее начальное значение переменной, которое называется управляющей; ТО – служебное слово “до” (включительно); Е2 – арифметическое выражение, определяющее конечное значение управляющей переменой; STEP - служебное слово “шаг”; Е3 – выражение, определяющее величину шага, то есть приращение. Таким образом, Е1-Е2 представляет область действий управляющей переменной.

Оператор FOR вычисляет начальное и конечное значение управляющей переменной цикла, величину шага и присваивает управляющей переменной её начальное значение, занося во встроенный счетчик. При каждом цикле оператора FOR производит анализ на окончание цикла (с помощью анализа встроенного счётчика). Цикл повторяется до тех пор, пока значение управляющей переменной не станет строго больше (при положительном шаге) или строго меньше (при отрицательном шаге) её конечного значения.

Операторы цикла записываются вслед за оператором FOR, который является фактически заголовком тела цикла.

Служебное слово STEP указывает величину шага. Оно может опускаться только в том случае, если шаг +1 – во всех остальных случаях STEP необходим.

Оператор NEXT завершает цикл. Его структура:

 

нс NEXT <управляющая переменная>,

 

где NEXT – ключевое слово “следующий”. Этот оператор изменяет значение управляющей переменной на величину шага.

 

Пример1. Вычислить   при изменении с шагом 1 на интервале

 

Фрагмент программы:

40 FOR B = 1 TO 5

50 Y = A + B         здесь STEP не указан, т.е. равен +1

60 NEXT B

 

Пример2. Вычислить с шагом 0.4 значение функции (с параметром)  на интервале .

 

Фрагмент программы:

30 FOR X = -1 TO 1 STEP.4

40 Y = COS(X)

50 NEXT X

 

Вложенные циклы

 

Вложенные циклы организуются с помощью вложенных операторов FOR – NEXT, которые образуют внутренние циклы, и служат для программирования циклов внутри циклов.

 

Пример. Вычислить причем a и b изменяются на интервале {1, 5} с шагом 1.

 

Фрагмент программы:

 

30 FOR A = 1 TO 5

40 FOR B = 1 TO 5

50 Y = A+B

…                            Внутренний цикл Внешний цикл

60 NEXT B

70 NEXT A


На каждый внешний цикл внутренний отвечает всеми циклами.

В случаях, когда необходимо вывести на экран или печатающее устройство n любых символов, более экономично вместо FOR-NEXT использовать функцию генерации строки:

STRING$(n, <”символ”>),

где n - количество; в качестве символа можно использовать любой символ.

Строки 40-60 выполняются в каждом внешнем цикле 5 раз, всего внешних циклов 5. Количество вычисленных значений у равно 25.

Пересечения циклов не допускается. Организация вложенных циклов осуществляется по различным управляющим переменным. Если программа позволяет, то можно использовать один NEXT:

NEXT B, A

Сначала записывается управляющая переменная внутреннего цикла. Максимальная глубина вложения у многих версий не более восьми.

Циклы обработки массивов рассматриваются в следующем разделе.

 

 

Операторы WHILE – WEND

 

Операторы WHILE-WEND образуют циклы с предусловием. Они могут использоваться для организации циклов с непредсказуемыми условиями. Такой цикл не требует оператора IF и может применяться при организации итерационных циклов (например, при решении нелинейных уравнений).

Синтаксическая структура такого цикла:

WHILE <условие>

    …

…    операторы цикла

WEND

В операторе WHILE (ключевое слово “пока”) вычисляется сначала условие: если “истина”, то выполняются операторы цикла. Как только встречается WEND (ключевое слово “вернуться”) управление передается на оператор WHILE. Это будет повторяться до тех пор, пока условие будет “истина”. При ложном значении управление передается оператору, следующему за WEND.

 

 

Операторы DO – LOOP

 

Эти операторы есть только в QB и TB. В этих циклах пользователь сам может выбирать вариант проверки условия повторения – в начале цикла (предусловие) или в конце (постусловие) DO – ключевое слово выполнять; LOOP- ключевое слово цикл. Использование WHILE <условие> повторяет цикл пока условие “истина”, а UNTIL <условие> приводит к повторению цикла при ложности условия.

Синтаксическая структура:

 

DO [WHILE <условие>] или [UNTIL <условие>]

… операторы цикла

…  

LOOP [WHILE <условие>] или [UNTIL <условие>]

 

В структуре показана возможность выбора двух условий сразу при составлении более сложных программ.

Задание 1.

1. Составить схему алгоритма для вычисления функций, приведенных в табл. 6.1.

2. Написать программу.

3. Произвести расчёты на микроЭВМ.

4. Распечатать листинг программы.

5. Исходные данные, промежуточные и окончательные результаты вывести на экран и на печатающее устройство.

Таблица 6.1. Список заданий

Вариант Функция Исходные данные
1 х = 0,35 а = [ 0,5 – 2,5 ] шаг D a = 0,5
2 х = 0, 54 а = [ 0, 2 – 1] шаг D a = 0,2
3 х = 0, 7 а = [ 0, 3 – 1,5 ] шаг D a = 0,3
4 х = 0, 8 а = [ 0, 4 – 2] шаг D a = 0,4
5 х = 1,2 а = [ 0,1 – 0,5 ] шаг D a = 0,1
6 х = 1,5 а = [ 1,2 – 2 ] шаг D a = 0,2
7 х = 0,4 а = [ 0,7 – 1,1 ] шаг D a = 0,1
8 х = 0,3 а = [ 0,5 – 1,1 ] шаг D a = 0,2
9 х = 0,45 а = [ 0,7 – 1,9 ] шаг D a = 0, 3
10 х = 0,7 а = [ 1,2 – 2 ] шаг D a = 0, 2

 

Задание 2.

1. Составить схему алгоритма для вычислений функций, приведенных в табл.6.1.

2. Выполнить пп.2-5 задания 1.

 

Таблица 6.2. Список заданий

Вариант Исходные данные
1 х = [0,35 – 0,43], шаг D x = 0, 0 2; а = [ 0,5 – 2,5 ], шаг D a = 0,5;
2 х = [0,5 4 – 0, 58 ], шаг D x = 0,1; а = [ 0,2 – 1 ], шаг D a = 0,2;
3 х = [0, 7 – 1,9 ], шаг D x = 0,3; а = [ 0,3 – 1,5 ], шаг D a = 0,3;
4 х = [0, 8 – 1,3 ], шаг D x = 0,1; а = [ 0,4 – 2 ], шаг D a = 0,4;
5 х = [1,2 – 2], шаг D x = 0,2; а = [ 0,1 – 0,5 ], шаг D a = 0, 1;
6 х = [ 1,5 – 1,9 ], шаг D x = 0,1; а = [ 1,2 – 2 ], шаг D a = 0,2;
7 х = [0, 4 – 1,2 ], шаг D x = 0,2; а = [ 0,7 – 1,1 ], шаг D a = 0,1;
8 х = [0,3 – 0, 7 ], шаг D x = 0,1; а = [ 0,5 – 1,2 ], шаг D a = 0,2;
  9 х = [0,45 – 0,49], шаг D x = 0,01; а = [0,7 – 1,9], шаг D a = 0,3;
10 х = [0,7 – 1,1], шаг D x = 0,1; а = [1,2 – 2], шаг D a = 0,2;

ОБРАБОТКА МАССИВОВ

 

Массивы

 

Массив – это упорядоченная последовательность величин, идентифициро-ванных одним именем, в которой положение каждого элемента определено индексом.

Индекс представляет целую величину или набор величин, разделённых запятыми и заключёнными в круглые скобки.

Имя массива выбирается, исходя из тех же правил, что и имя переменных (из одной буквы или символов). Количество индексов определяет размерность массива.

 

Примеры. А(I) – одномерный массив;

             В(I,J) – двумерный массив.

 

Максимальное количество индексов в GB – 255, в QB – 60, в TB – 8. Минимальное значение индекса – 0. Максимальное значение индекса в GB – 16387, в QB и TB – 32767.

 

Оператор DIM

 

При обработке массивов память микроЭВМ резервируется под элементы массива. Предусмотрены два способа резервирования: по умолчанию и с помощью специального оператора DIM. По умолчанию резервируется 10 элементов массива от 0 до 9. При обработке большего количества элементов массива на экране монитора появится сообщение об ошибке.

Оператор DIM используется для описания максимального размера массива.

Структура оператора:

нс DIM <имя> (мн1, мн2),

 

где DIM – ключевое слово (сокр. от DIMENSION) – “размер”; вместо угловых скобок указывается имя массива, а в круглых скобках максимальный (для одномерного) или максимальные (для двумерного или другой размерности) массивов индексы мн1 и мн2.

 

Пример. 30 DIM А1(2,3), В(10)

 

В 30-й строке резервируется место в памяти для 12-ти элементов двумерного и 11-ти элементов одномерного массивов (учитываются нулевые индексы).

Оператор DIM должен записываться вначале программы до первого выполнения оператора.

 

 

Обработка массивов

 

Обработка массивов включает: ввод или формирование массивов, вывод на печать массивов и использование массивов в вычислениях.

 

 

Ввод массивов

 

Для ввода или формирования массивов можно использовать операторы DATA - READ или оператор INPUT с использованием операторов циклов.

 

Пример. Ввести 5 первых элементов массива А(I): 1;2;3;4;5.

 

Фрагмент программы:

20 DIM А(5)

30 FOR I = 1 TO 5

40 INPUT A(I)

50 NEXT I

 

Для большинства версий системы INТEL знаки вопроса (?) после команды RUN печатаются в столбик:

 

? 1  

? 2  

Аналогично с помощью INPUT производится ввод двумерного массива через организацию вложенных циклов, при этом в памяти микроЭВМ элементы двумерного массива располагаются по строкам: В(0,0); В(0,1); В(0,2);…В(1,0); В(1,1);…

 

 

Вывод массивов

 

Организация вывода одномерного массива ничем не отличается от организации ввода – только вместо INPUT используется PRINT (для вывода на экран) или LPRINT (для вывода на печатающее устройство).

При выводе двумерных массивов на микроЭВМ между оператором NEXT J (окончание внутреннего цикла) и NEXT I (окончание внешнего цикла) следует употреблять PRINT без списка – для закрытия строки, чтобы матрица распечаталась в привычном виде, а в конце PRINT A(I,J); надо использовать знаки препинания ‘,’или ‘;’.

 

 



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.145.114 (0.078 с.)