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



ЗНАЕТЕ ЛИ ВЫ?

Операторы обращения к функциям

Поиск

Таблица 11.3 Математические функции с примерами обращения

Функция Смысл Пример Результат
rnd - случайное число от 0 до 1 rnd 0,2347
sgn (x) определение знака x sgn(-2) -1
CEIL (X) ближайшее целое, превосходящее х ceil(-5/3) -1
int (x) - ближайшее целое, не превосходящее х int(-5/3) -2
fix (x) выделение целой части от x fix(-5/3) -1
abs (x) абсолютное значение числа abs(-2) 2
sqr (x) квадратный корень числа sqr(16) 4
sin (x) синус sin(0) 0
cos (x) косинус cos(0) 1
tan (x) тангенс tan(0) 0
atn (x) арктангенс atn(0) 0
exp (x) экспонента ехр(0) 1
exp2 (x) вычисление 2x exp2(2) 4
exp10 (x) вычисление 10x ехр10(2) 100
log (x) логарифм натуральный log (1) 0
log2 (x) логарифм по основанию 2 log2(2) 1
log10 (x) логарифм десятичный log10(10) 1

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

 

Графические операторы

Таблица 11.4 Примеры графических операторов:

Оператор Действие
pset(x,y),c точка(х,у),с
line(x,y)-(u,v),c линия(х,у)-(и, v), с
line(x,y)-(u,v),c,b рамка(х,у)-(и,у),с
circle(x,y),r,c окружность(х,у), r,с
circle(x,y),r,c,al,a2 дуга(х,у), r,с,а1,а2
paint(x,y),c закраска(х,у),с
сls очистка_экрана
screen 0,0 текстовый_экран
screen 1,0 графический_экран1
screen 2,0 графический_экран2

Операторы присваивания

Примеры операторов присваивания.
а=0
b=а+1
с=2*b+3
d=b/c
b=b+1

  beta=(x+2*a)^(1/3)/exp(x)/x beta=(x+2*a)^(1/3)/(exp(x)*x)

Операторы описания данных

Операторы DEFINT, DEFLNG, DEFSNG, DEFDBL, DEFSTR объявляют тип идентификаторов переменных по умолчанию.
Синтаксис DEFtype letter range [, letter range]....
Комментарий type представляет один из пяти типов переменных ТУРБО БЕЙСИКа:
INT, LNG, SNG, DBL и STR.
letter range это либо одиночный алфавитный символ (от A до Z), либо диапазон букв (две буквы отделенные друг от друга тире, например: A-M). Оператор типа DEF сообщает компилятору что переменные и определенные пользователем функции, начиная с конкретной буквы или набора букв будут определенного типа. Это дает возможность использовать в программе без включения идентификаторов типа (например, %, #) переменные не только с одинарной точностью и плавающей запятой. По умолчанию, когда компилятор находит имя переменной без идентификатора типа, он допускает, что переменная с плавающей запятой и с одинарной точностью. Например: в данном операторе как n так и m являются переменными с одинарной точностью: n = m + 16. Однако если, этому оператору предшествуют DEFINT n,m, тогда n и m обе будут целочисленными переменными, как и любая другая переменная, чье имя начинается с n или m в верхнем или нижнем регистре.
5% - целое число;
5& - целое число с удвоенной точностью;
5 или 5! - вещественное число;
5# - вещественное число с удвоенной точностью;
Как уже отмечено выше, к данным относятся и массивы, представляющие собой организованный набор однотипных переменных, компактно расположенных в оперативной памяти. Все элементы одного массива снабжаются общим идентификатором, вслед за которым в круглых скобках записываются один или несколько индексов, определяющих местоположение элемента в массиве.
Наиболее просто организованы одномерные массивы, являющиеся эквивалентами векторов. Все их элементы пронумерованы последовательными натуральными числами, которые и выполняют роль индексов. Минимальное значение индекса устанавливается либо по умолчанию, либо задается явным или неявным образом.
Максимальное значение индекса обычно указывается при объявлении массива. Для необъявленных массивов максимальный индекс принимается равным 10.
Двумерные массивы являются аналогами матриц. Первый индекс элемента двумерного массива определяет номер строки, а второй - номер столбца, на пересечении которых расположен элемент. Строки и столбцы нумеруются либо от единого, установленного заранее минимального значения индекса, либо от граничного значения, заданного одновременно с объявлением массива.
Примеры: DIM a(12): dim b(23,23): dim c[15,15,15]

Работа с файлами

Файловая система

Информация, вводимая с клавиатуры или обрабатываемая с помощью программных средств Бейсика размещается в оперативной памяти компьютера, которая является энергозависимой, и, как только мы выключим питание, вся наша информация погибнет. Чтобы избежать это и донести наши гениальные программы по крайней мере до преподавателя (чтобы он их достойно оценил), а лучше до далеких потомков, необходимо сохранять наши работы на диске в виде файлов.
Файл — это поименованная область на магнитном или лазерном диске. Поименованная — значит, имеющая имя. В файлах могут содержаться тексты, графические и видеоизображения, звуки и музыка, таблицы и базы данных и многое другое, но нас интересуют прежде всего программы, написанные на Бейсике и данные для этих программ.

Имя файлу мы даем сами, но к нему есть некоторые требования:

  • имя не должно быть больше чем 8 символов;
  • имя может состоять из букв латинского алфавита, цифр и символов, например, _, -, (,), $ и некоторых других. Впрочем, злоупотреблять специальными символами не стоит — букв и цифр вполне хватает;
  • в имени файла запрещены символы <Пробел>, *, точка, запятая, кавычки, двоеточие.

У файла также есть расширение имени. Оно имеет длину не более трех символов, указывается через точку после имени и характеризует тип файла. Изучаемая нами версия Бейсика (как, впрочем, и практически все другие) автоматически при сохранении добавляет к имени файла расширение bas, что упрощает поиск написанных нами программ и работу с ними.
Для того чтобы хранить свои файлы и результаты работы с ними на диске, лучше завести свой личный каталог (или папку — это одно и то же).
Для работы в Бейсике нам чаще нужны файлы, хранящие однородные по типу или структуре сведения о каких-либо объектах. Набор данных о каком-либо одном объекте называется записью.
За самой последней записью находится невидимый символ конца файла, который устанавливается автоматически. Файл может быть пустым, т. е. содержать 0 байт информации, но имя файла и символ конца файла будут присутствовать всегда.

Способы доступа к файлам

В изучаемом нами Бейсике существуют два метода доступа к информации, хранящейся в файлах:

  • последовательный доступ;
  • прямой доступ.

Файлы последовательного доступа наиболее просты как в организации, так и в работе с ними. Записи обрабатываются последовательно одна за другой. Информация в таких файлах хранится в виде текста в кодах ASCII. Подобные файлы легко просмотреть на экране, используя любой простейший редактор, или в самом Бейсике. Но, как всегда, у каждой медали две стороны. Простота — хорошо, а последовательность в данном случае — плохо. Если информация об интересующих меня объектах упорядочена в файле по алфавиту, то мне всякий раз придется перебирать практически весь файл, чтобы добраться до нужной записи. Отсюда, при большом информационном объеме файла обработка его резко замедляется.
Файлы прямого доступа хранят информацию в специальном формате, в котором каждая запись занимает строго фиксированную одинаковую с остальными длину. То, что такие файлы могут занимать на диске больше места, чем файлы последовательного доступа, с лихвой компенсируется скоростью работы с ними.
Предупреждение
Если при каждом обращении к файлу вы собираетесь использовать почти все данные, а менять их содержимое часто не предполагается, то выбирайте метод последовательного доступа. Его применение будет и более оптимальным и облегчит вам программирование. Прямой доступ к файлу целесообразен в том случае, когда требуется часто менять содержимое записей и просматривать их в произвольном порядке. Так адреса для рассылки корреспонденции уместнее хранить в последовательном файле, а бронированные места в зале театра, меняющиеся от спектакля к спектаклю, — в файле прямого доступа.

Операции над файлами

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

  • открытие файла;
  • чтение и запись обрабатываемых данных;
  • закрытие файла.

Предупреждение
Нельзя одновременно пытаться читать и записывать в открытый файл. Сначала надо открыть файл для чтения, прочитать нужную информацию, обработать ее и закрыть файл. Потом открыть файл для записи, записать туда результаты обработки и закрыть файл.
Открытие файла
Для открытия файла предназначен оператор open, имеющий следующий формат:
OPEN имя_файла FOR режим AS # номер файла
С именем файла должно быть уже все понятно. Режим определяет доступ к данным файла.

Возможны следующие режимы:

  • input. Это режим чтения информации из файла. В случае, если указывается несуществующее имя файла, возникнет сообщение об ошибке "Файл не найден".
  • output. Режим записи информации в файл. Обычно при этом создается новый файл. Если же открывается для записи уже существующий файл, то ранее хранимая в нем информация будет безвозвратно утеряна.
  • append. Режим добавления информации в файл. Новая информация будет размешена в конце файла, за последней записью.


Номер файла предваряется необязательным знаком #, после которого следует целое число от 1 до 255.
Запись в файл
Рассмотрим пример записи в файл.
OPEN "capitals.dat" FOR OUTPUT AS #1
FOR X=l TO 5
INPUT "ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ"; F$
PRINT #1, F$
NEXT X
CLOSE #1
END
При этом на диске в текущем каталоге образуется файл, содержащий пять строковых значений. Имя файла будет capitals.dat.
Удобнее всего при работе с файлами сделать текущим каталог, где эти файлы содержатся или будут содержаться, а при обращении к ним указывать только их имена.
В качестве параметра имя_файла можно использовать переменную текстового типа. Это позволяет вводить имя файла с клавиатуры и является универсальным способом работы с файлами. Например:
INPUT " Введите имя файла "; FileName$ OPEN FileName$ FOR OUTPUT AS #1
После ключевого слова as указывается номер файла. Больше открыть файл с таким номером в данной программе нельзя. Для каждого последующего файла должен быть указан свой собственный неповторимый номер в пределах от 1 до 255. Сколько всего может быть открыто файлов, зависит от файла конфигурации вашего компьютера config.sys, в котором число одновременно открытых файлов определяется командой files.
Предупреждение
Во избежание неприятностей не открывайте одновременно слишком много файлов. Рекомендуется по окончании работы с файлом сразу закрыть его.
Запись в файл может производиться операторами
PRINT # номер_файла, выражение
ИЛИ
WRITE # номер_файла, выражение
Результат работы этих операторов одинаков.
Для закрытия файлов применяется оператор
CLOSE # номер_файла
Предупреждение
Если номер файла в операторе close указан, то будет закрыт именно этот, вполне определенный файл. Если же номер не указан, будут закрыты все открытые файлы.
Изменения данных в файле
Для изменения какой-либо записи, удаления старых или добавления новых данных в последовательном файле необходимо открыть два файла: подлежащий изменению и новый, в котором создается обновленная версия исходного файла. Старый файл в дальнейшем можно удалить. Приведенная ниже программа в файле avto.dat изменяет "МОСКВИЧ" на "МЕРСЕДЕС". В первых строках открываются исходный файл avto.dat и новый файл avto2.dat, сначала пустой. Очередная запись считывается из файла avto.dat и, при условии, что это не "МОСКВИЧ", переписывается без изменения в новый файл. Если же встречается значение "МОСКВИЧ", то оно заменяется на "МЕРСЕДЕС" путем присваивания нового значения переменной м$. В следующей строке данное значение попадает в выходной файл. После того как весь входной файл просмотрен, оба файла закрываются.
OPEN "avto.dat" FOR INPUT AS #1 OPEN "avto2.dat" FOR OUTPUT AS #2 FOR 1=1 TO 5
INPUT #1, M$, N$, C$, G$, S$
IF UCASE$(M$)="MOCKBM4" THEN М$="МЕРСЕДЕС"
PRINT #2, M$, N$, C$, G$, S$ NEXT I CLOSE 1, 2 KILL "avto.dat"
NAME "avto2.dat" AS "avto.dat" END
Заключительный этап — удаление исходного и переименование нового файла, которому придается прежнее имя, что обеспечивает и в дальнейшем наличие на дискете файла avto.dat.
Добавление данных в файл
Указание for append в операторе open подготавливает файл для вывода данных и смещает указатель на конец файла. Последующие операторы приписывают новую информацию к уже имеющейся.

 

Лекция 9. Управляющие конструкции языка BASIC

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

Циклы и табулирование

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

z=0,5·x3−lg|x−5|
x=tg(Θ+a)
Θ∈[2,2;3,2]
ΔΘ=0,25
a=1,12

Результаты расчетов должны быть представлены в табличном виде по примеру Табл. 9.1

Таблица 9.1.

Параметр Аргумент х Функция z 2,2 0,2538 - 0,72865 2,4 0,2040 - 0,67664 : : : 3,2 1,1784 0,23610

С целью решения подобного рода задач можно использовать т.н. операторы цикла.

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

Как видно из приведенного примера, параметру Θ последовательно придается значение из интервала [2,2;3,2] с шагом 0,2 и по нему производятся вычисления аргумента x и значения функции z. Параметр Θ называют управляющим, его значение изменяется от начального Θн до конечного Θк с некоторым шагом ΔΘ.

В лекции 7 уже перечислялись виды циклов

Цикл "пока" (цикл с предусловием):

 

Цикл "до" (цикл с постусловием):

 

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

 

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

Рассмотрим способы реализации циклов на следующем примере (ЛР№2).

Пример:
Вычислить значение функции

где x=lna при а, изменяющемся от ан до ак, с шагом Δа: aн=2, ак=3, Δа=0,2

Результаты ручного счета:
При а=ан=2 с помощью калькулятора находим, что x=ln(2)≈0,693; y≈0,861
При а=ак=3 с помощью калькулятора находим, что x=ln(3)≈1,099; y≈0,962

9.2.2. Цикл "пока" (цикл с предусловием) − операторы WHILE - WEND

 

Этот вид цикла может быть реализован с помощью операторов WHILE - WEND:

WHILE условие
тело цикла
WEND
Этот оператор позволяет сочетать свойства условного оператора и оператора цикла. С их помощью можно выполнять повторяющиеся действия с заранее неизвестным количеством повторений.
Работает он следующим образом. Сначала идет оператор while с условием, при котором цикл выполняется. Ключевое слово wend аналогично по своему назначению слову next, т. е. является последней строкой цикла. Всякий раз, доходя до wend, компьютер проверяет, выполняется ли условие, указанное оператором while. Если оно не выполняется, то программа переходит к исполнению операторов, следующих за wend. Если же выполняется, то цикл повторяется снова.

Работа такого цикла начинается с проверки условия, записанного в заголовке WHILE. Если условие истинно, то начинается выполнение тела цикла, после чего оператор WEND вновь возвращает нас на заголовок цикла WHILE. Если в теле цикла происходят какие-то изменения, влияющие на результат проверки условия, то может наступить момент, когда это условие становится ложным, и управление из WHILE будет передано на оператор, следующий за WEND. В противном случае цикл будет повторяться до тех пор, пока в его теле не сработает один из операторов перехода (GOTO, IF, ON) или досрочного выхода из цикла (EXIT).

Таблица 9.2. Пример организации цикла "пока" с помощью операторов
WHILE - WEND: блок схема, листинг программы и результаты расчетов

Блок-схема Листинг программы и результаты расчетов
  Текст программы cls:rem Student Ivanov NDT-06 open "Ivanov1.dat" for input as#1 open "Ivanov2.dat" for output as#2 input #1, an,da,ak a=an while a<ak+da/2 x=log(a) y=(abs(sin(x)))^(1/3)? using "a=#.## x=##.### y=##.###";a,x,y? #2, using "a=#.## x=##.### y=##.###";a,x,y a=a+da wend close 1,2 end Результаты расчетов a=2.00 x= 0.693 y= 0.861 a=2.20 x= 0.788 y= 0.892 a=2.40 x= 0.875 y= 0.916 a=2.60 x= 0.956 y= 0.935 a=2.80 x= 1.030 y= 0.950 a=3.00 x= 1.099 y= 0.962 "Ivanov1.dat" - файл данных "Ivanov2.dat" - файл для записи результатов расчета

В лабораторной работе №2 требуется считывать исходные данные из файла данных и заносить результаты расчетов в другой файл. Открытие файла для чтения производится в строке
open "Ivanov1.dat" for input as#1
Открытие файла для записи результатов расчета
open "Ivanov2.dat" for output as#2
Закрытие этих файлов производится так: close 1,2
Обратите внимание на строку while a<ak+da/2. Здесь увеличение значения ak на полшага сделано для того, чтобы включить в цикл последнее значение управляющей переменной а.

9.1.3. Цикл "до" (цикл с постусловием) − операторы DO - LOOP

 

Цикл "до" может быть создан операторами DO - LOOP:

DO [ WHILE условие | UNTIL условие ]
тело цикла
LOOP [ WHILE условие | UNTIL условие ]
Оператор do...loop чем-то похож на оператор while...wend, но возможности его применения несколько шире — проверяемое условие может быть использовано не только в начале оператора, но и в конце.

Поэтому возможны четыре различные формы написания оператора:

1. первая форма
DO UNTIL условие
тело цикла LOOP

2. вторая форма
DO WHILE условие
тело цикла LOOP

3. третья форма
DO
тело цикла LOOP UNTIL условие

4. четвертая форма
DO
тело цикла
LOOP WHILE условие

ВНИМАНИЕ
Если используется ключевое слово until, цикл будет выполняться, только когда условие имеет значение "ложь".
При указании ключевого слова while цикл будет выполняться до тех пор, пока условие будет иметь значение "истина".
Размещение условий в начале или конце цикла приводит к разным результатам: при проверке условия в конце оператора цикла, конструкции, составляющие его тело, будут исполняться хотя бы один раз, в то время как при проверке условия в начале возможен вариант, что цикл исполняться вообще не будет.

В таких циклах программист сам может выбрать вариант проверки условия повторения - в начале цикла (предусловие) или в конце (постусловие). А можно воспользоваться и двумя условиями сразу или организовать бесконечно повторяющийся цикл, который можно прервать либо с помощью оператора EXIT LOOP, либо при наступлении какого-либо события (прерывание от активного внешнего устройства, истечение заданного временного интервала и т.п.). Конструкция "WHILE условие" заставляет повторять тело цикла до тех пор, пока условие остается истинным. Сочетание "UNTIL условие" приводит к повтору цикла при ложности условия.

Для организации цикла с постусловием можно использовать конструкцию DO - LOOP UNTIL

Таблица 9.6. Пример организации цикла "до" с помощью операторов
DO - LOOP UNTIL: блок схема, листинг программы и результаты расчетов

Блок-схема Листинг программы и результаты расчетов
  Текст программы cls:rem Student Ivanov BGB-06 open "Ivanov1.dat" for input as #1 open "Ivanov2.dat" for output as#2 input #1, an,da,ak Q$="#.## ##.### ##.###"? " a x y" a=an do x=log(a) y=(abs(sin(x)))^(1/3)? using Q$;a,x,y? #2,using Q$;a,x,y a=a+da loop UNTIL a>ak+da/2 close 1,2 end Результаты расчетов 2.00 0.693 0.861 2.20 0.788 0.892 2.40 0.875 0.916 2.60 0.956 0.935 2.80 1.030 0.950 3.00 1.099 0.962 "Ivanov1.dat" - файл данных "Ivanov2.dat" - файл для записи результатов расчета

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

 

К наиболее простым вариантам организации цикла относится повтор тела, при котором по правилу арифметической прогрессии осуществляется изменение значения управляющей переменной (счетчика цикла) V:
V = Vн, V = Vн + dV, V = Vн + 2*dV,...
Имя управляющей переменной (V), ее начальное (Vн) и конечное(Vк) значения, а также величина приращения (dV) задаются в заголовке цикла с помощью оператора FOR:
FOR V = Vн TO Vк STEP dV
В качестве управляющей переменной может выступать простая переменная любого из числовых типов. Элемент массива в роли счетчика циклов не допустим. Параметры цикла (Vн,Vк,dV) могут задаваться любыми арифметическими выражениями. Если шаг приращения управляющей переменной равен единице, то конструкцию "STEP 1" в заголовке цикла можно опустить.
Для организации цикла с параметров в TurboBASIC предназначены операторы FOR и NEXT
Назначение Операторы FOR и NEXT определяют автоматически приращающийся цикл (или отрицательно приращающийся)
Синтаксис FOR variable = x TO y [step z]
.
. statements
.
NEXT [variable]...]
Комментарий variable есть численная переменная, служащая счетчиком цикла, а x, y и z являются численными выражениями, определяющими начальные и конечные условия цикла, x - начальное значение, а y - конечное значение счетчика, z - необязательное значение шага приращения.
Выполнение операторов между FOR и NEXT повторяется. С каждым прохождением через цикл значение переменной увеличивается на величину шага приращения z. Если z опускается, пошаговое приращение по умолчанию становится равным 1. Цикл завершается, когда переменная счетчика будет больше или равна y (или, для отрицательного x, меньше или равна y).
Циклы FOR/NEXT выполняются быстрее всего с целочисленными переменными в качестве переменной счетчика и константами x,y и z.
Тело цикла полностью пропускается, если начальное значение x больше y или, если z - отрицательное значение, а x меньше y.
В операторе NEXT переменная счетчика может опускаться, но если вы включите ее, то это должна быть единственно верная переменная. Например:
FOR n = 1 TO 10
.
.
.
NEXT 'NEXT n будет тоже работать, но не NEXT m
Несмотря на то, что компилятору все это безразлично, расположите операторы между FOR и NEXT двумя или тремя пространствами для структурирования цикла.
Для выхода из цикла FOR/NEXT до его завершения используйте оператор EXIT FOR.
Если NEXT появился без предшевствовавшего ему FOR, происходит ошибка выполнения 1, NEXT Without FOR (NEXT без FOR).

Таблица 9.7. Пример организации цикла с параметром с помощью оператора
FOR - NEXT - STEP: блок схема, листинг программы и результаты расчетов

Блок-схема Листинг программы и результаты расчетов
  Текст программы cls:rem Student Ivanov Gruppa BGB-06 open "Ivanov1.dat" for input as#1 open "Ivanov2.dat" for output as#2 input #1, an,da,ak Q$="##.## ##.#### ##.####"? " a x y" n=ceil((ak-an)/da)+1 a=an for i=1 to n x=log(a) y=(abs(sin(x)))^(1/3)? using Q$;a,x,y? #2, using Q$;a,x,y a=a+da next i close 1,2 end Результаты расчетов 2.00 0.6931 0.8613 2.20 0.7885 0.8918 2.40 0.8755 0.9157 2.60 0.9555 0.9347 2.80 1.0296 0.9499 3.00 1.0986 0.9621 "Ivanov1.dat" - файл данных "Ivanov2.dat" - файл для записи результатов расчета

Внутренние циклы

Тело цикла может включать другие циклы, которые принято называть внутренними или вложенными по отношению к внешнему циклу. Это могут быть как однотипные циклы, организуемые парами FOR - NEXT, WHILE - WEND, DO - LOOP, так и смешанные конструкции с любым сочетанием типов циклов и количеством их вложений. Если вложенные циклы имеют одинаковую структуру FOR - NEXT, то допускается завершать два или более циклов одним оператором NEXT:
FOR K = 1 TO 10
FOR J = 1 TO 20
S(K,J) = A(K,J) + B(K,J)
NEXT J,K
Последовательность управляющих переменных при этом задается в порядке вложения циклов.
Циклы FOR/NEXT могут быть помещены в пределах других циклов FOR/NEXT (вложение циклов). При вло- жениях циклов необходимо следить, чтобы у каждого цикла была своя переменная счетчика и чтобы внутрен- ний цикл завершался оператрором NEXT до появления NEXT, завершающего внешний цикл.
Пример неправильной организации вложенного цикла:
FOR n = 1 TO 10 'внешний цикл по n
FOR m = 1 TO 20 ' внутренний цикл по m
.
.
.
NEXT n 'ОШИБКА внешний цикл завершен раньше внутреннего
NEXT m
Поскольку коды циклов пересекаются, данный цикл не будет компилироваться.
Если множественные циклы заканчиваются в одной точке, единственный оператор NEXT, содержащий каждую переменную счетчика, будет достаточным:

FOR n = 1 TO 10
FOR m = 1 TO 20
.
.
.
NEXT m,n
Условие повторения цикла может находиться как в заголовке цикла, так и в его конечном операторе. Досрочный выход из тела цикла на строку, следующую за конечным оператором цикла, осуществляется с помощью оператора EXIT. В ранних версиях Бейсика такого оператора не было и для досрочного завершения цикла использовались обычные переходы -условные или безусловные. Они могли передать управление не только на оператор, следующий за концом цикла, но и в любую точку программы. Такие возвраты не проходят бесследно, т.к. организация повтора цикла обычно связана со стеком, где хранятся параметры цикла - указатель на начало тела цикла, имя управляющей переменной, ее конечное значение и величина приращения при очередном повторе. Если цикл не завершается нормальным образом, то такого рода информация из стека не удаляется. Это может привести как к исчерпанию выделенного под стек участка памяти, так и к неправильному выполнению последующих циклов. Поэтому мы рекомендуем любой досрочный выход из цикла производить только с помощью оператора EXIT (EXIT FOR, EXIT DO, EXIT LOOP).



Поделиться:


Познавательные статьи:




Последнее изменение этой страницы: 2021-04-13; просмотров: 97; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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