ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

2
Publication date:
16 June 2024

The article was published in issue no. № 3, 1999
Abstract:
Аннотация:
Author: () -
Ключевое слово:
Page views: 6517
Print version
Full issue in PDF (1.07Mb)

Font size:       Font:

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

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

Ниже описан принцип построения блока загрузки одномерного (фигура 1) и двухмерного (фигура 2) массивов на основе управления параметром цикла на примере цикла FOR-NEXT (IBM DOS QBASIC).

На фигуре 1 значение переменной N определяет мощность загружаемого массива А. Переменная К в строке 2 позволяет установить номер позиции, с которой предполагается загружать массив. Символьная переменная X$ используется для приема как вводимого числа, так и нецифрового символа, используемого в качестве кода ошибки. Оператор условного перехода в строке 6 выполняет коррекцию параметра цикла – переменная I при вводе кода ошибки. Выбор диапазона от символа "*" до символа ">" позволяет использовать в качестве кода ошибки любой нецифровой символ, в том числе и "пустой ввод" – пробел [2]. При вводе кода ошибки происходит уменьшение текущего значения переменной I на две единицы и возврат в начало цикла по оператору NEXT в строке 10. В результате предлагается выполнить ввод в предыдущую (I-1)-ю позицию. Последовательным вводом кода ошибки возможен возврат к любой ранее введенной позиции. Оператор условного перехода в строке 5 предотвращает выход за установленный переменной К нижний предел при ошибочном вводе кода ошибки в исходную позицию. Посредством ввода знака " ' " выполняется переход к следующей позиции без изменения значения, ранее введенного в эту позицию, например при продолжении ввода после внесения исправлений. При этом число, сохраняемое в данной позиции, индицируется на экране. Ввод символа "е" позволяет закончить загрузку до достижения последней позиции или перейти в режим коррекции, начиная с исходной или конечной позиции.

При передаче в переменную X$ числовой константы ее значение переводится из символьной формы в числовую с помощью функции VAL и передается в числовой массив А на место, определяемое текущим значением переменной I. При этом производится индикация числа, записанного в массив А.

После завершения ввода в строке 11 формируется соответствующее сообщение с предложением ввести символ "Y", если требуются исправления, или любой иной символ в противном случае. При вводе символа "Y" выводится сообщение об установленном значении исходной позиции и предложение ввести символ "Y", если требуется ее изменение. При вводе символа "Y" происходит переход на строку 2, что позволяет ввести новое значение в переменную К и продолжить загрузку массива, начиная с новой исходной позиции. При вводе произвольного символа переменная I принимает значение N, и осуществляется переход на строку 5, благодаря чему предлагается выполнить ввод в последнюю N-ю позицию. От последней позиции возможен возврат к любой предыдущей позиции описанным выше образом. Ввод символов управления осуществляется в ждущем режиме, что позволяет управлять блоком загрузки посредством нажатия одной клавиши.

На фигуре 2 числа М и N определяют соответственно "строки" и "столбцы" числового массива A. Переменные I и J – параметры внешнего и внутреннего циклов – управляют индексами "строк" и "столбцов". Управление возвратом выполняется по переменной J. Переменные К и L задают исходную позицию ввода. Дополнительно к изложенному выше в строке 6 выполняется переход на предыдущую (I-1)-ю строку при отрицательном значении переменой J. При этом устанавливается значение J=N-l. При I<К значение параметра I устанавливается равным К в строке 7. После возврата в начало цикла по оператору NEXT в строке 10 предлагается выполнить ввод в последнюю N-ю позицию предыдущей строки. Присвоение J=K блокирует выход за нижние пределы индексов I и J, определенные значением переменных К и L. Использование переменной R позволяет загружать строки массива, не содержащие исходную позицию – элемент А(К,L), начиная с первого элемента строки.

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

Очевидно, что описанный принцип управления параметром цикла применим и к циклам типа WHILE.

Список литературы

1.        Дьяконов В.П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. - М.: Наука, 1987. - С.65.

2.        Уолш В. Программирование на Бейсике. - М.: Радио и связь,1988. - С.319.


Permanent link:
http://swsys.ru/index.php?page=article&id=949&lang=en
Print version
Full issue in PDF (1.07Mb)
The article was published in issue no. № 3, 1999

Perhaps, you might be interested in the following articles of similar topics: