Трансляция и отладка программы.

Эти действия осуществляются в среде программирования QBASIC. Для входа в главное меню необходимо нажать клавишу ALT. Затем нажать подсвеченную букву выбранного пункта меня и выбрать нужный пункт подменю. Если пункт подменю оканчивается троеточием "…", то это значит, что при выборе этого пункта возникнет диалоговое окно.

Главное меню включает пункты ФАЙЛ, РЕДАКТИРОВАНИЕ, ПРОСМОТР, ПОИСК, ЗАПУСК, ОТЛАДКА, ПАРАМЕТРЫ, СПРАВКА.

Рассмотрим содержание пунктов меню:

           
    трансляция и отладка программы. - student2.ru
 
    трансляция и отладка программы. - student2.ru
 
  трансляция и отладка программы. - student2.ru
 
    трансляция и отладка программы. - student2.ru

 
  трансляция и отладка программы. - student2.ru

Среда программирования QBASIC представляет собой интеллектуальный редактор, осуществляющий синтаксический контроль вводимого текста. Если строка программы, набранная строчными буквами, написана правильно, то после перевода курсора на следующую строку все ключевые слова QBASIC будут написаны заглавными буквами, операторы отделены друг от друга. Это позволяет сразу понять, есть ли в строке ошибки.

При редактировании удаление текста слева от курсора производится клавишей Backspace (), а справа - клавишей Del. Чтобы копировать, вырезать, удалить текст, его предварительно необходимо выделить. Выделяется текст с помощью комбинации клавиши Shift + клавиши со стрелками или с нажатой левой клавишей мыши. Приемы ввода текста мало отличаются от работы в других редакторах. Наиболее применяемые команды меню дублируются комбинациями клавиш (см. таблицу 0.0.5).

Среда программирования QBASIC позволяет запустить программу на выполнение. Если появилось сообщение об ошибке, и она понятна, то следует щелкнуть по кнопке OK, при необходимости уточнений выберите Справку или обратитесь к таблице 0.0.6.

Вот некоторые приемы, применяемые при отладке программ. Например, если программа по 2-й лабораторной работе дает неправильные значения, то в этом случае может быть две причины: либо неправильно реализованы формулы, либо не реализовано ветвление и программа считает не по той формуле. Чтобы проверить вторую причину, рекомендуется воспользоваться клавишей F8, высвечивающей траекторию движения по программе. При этом строки с оператором IF…THEN следует сделать многооператорными, поставив в конце, например, пустой PRINT. Если какой-либо оператор мешает разобраться в причинах появления ошибки, то его можно вывести из рассмотрения, не стирая, поставив перед ним оператор REM. А чтобы вывести из рассмотрения большой фрагмент программы, то рекомендуется использовать GOTO с указанием номера строки, куда следует перепрыгнуть. Чтобы разобраться с циклом, например, правильно ли считается сумма, можно в него вставить оператор PRINT, поставив за ним SLEEP, организующий паузу до нажатия любой клавиши. Впрочем, с целью создания паузы можно применять и просто SLEEP. Проверить, работает ли цикл или иной фрагмент программы, можно, использовав PRINT "Я здесь".



Назначение функциональных клавиш в среде QBASIC
Клавиши Назначение
F1 Справка по ключевому слову, функции или оператору, отмеченному курсором
Shift+F1 Вывод на дисплей оглавления справочной информации
F2 Вывод на экран списка имен всех задействованных в программе процедур и функций, а также самой программы
Sfift+F2 Вывод на экран следующей процедуры или функции
Ctrl+F2 Вывод на экран предыдущей процедуры или функции
F3 Повтор поиска по ключевому слову
F4 Переход к экрану вывода и обратно
F5 Продолжение работы по программе
Shift+F5 Запуск программы
F6 Переброс курсора из окна ввода программы в окно непосредственного счета и обратно
Shift+F6 Переброс курсора из одной створки окна редактирования в другую и обратно
F7 Выполнение программы до курсора
F8 Пошаговое выполнение программы с заходом в процедуры и функции
F9 Установка или снятие контрольной точки в программе
F10 Пошаговое выполнение программы без захода в процедуры и функции
Shift+ кла-виши со стрелками Выделение фрагмента программы
Shift +Del Вырезание фрагмента программы
Ctrl +Y Вырезание строки программы
Shift +Ins Вставка в программу ранее вырезанного фрагмента
Ctrl +Ins Копирование выделенного фрагмента программы
Ctrl + Shift Русский шрифт (правые), английский (левые)
Ctrl +Break Приостановка выполнения программы
Примечание: Комбинация клавиш, например, сначала нажать Ctrl, затем, не отпуская Ctrl, нажать Shift


Таблица 0.0.6
Код

Сообщение об ошибке и возможная причина
NEXT без FOR(NEXT without FOR) Для окончания цикла NEXT нет соответствующего заголовка FOR. Количество FOR и NEXT должны совпадать
Синтаксическая ошибка (Syntax error) Оператор содержит грамматическую ошибку в написании ключевого слова или ошибку в пунктуации, либо есть непарные скобки или другие нарушения правил синтаксиса языка Бейсик
RETURN без GOSUB(RETURN without GOSUB) Для оператора возврата из подпрограммы RETURN нет соответствующего обращения к подпрограмме GOSUB
Нет данных (Out of DATA) В операторе DATA нет данных. Посчитайте количество данных в операторе DATA и количество считываний из него оператором READ. Посмотрите внимательно, не поставили ли вы при перечислении данных в каком-нибудь месте точку вместо запятой
Неверный вызов функции (Illegal function call) Возникает чаще всего при попытке извлечения квадратного корня из отрицательного числа или появления отрицательного числа или 0 под знаком логарифма, а также применения графических операторов без включения графического режим SCREEN. Вообще же подобное сообщение возникает при попытке вызова функции с недопустимым параметром
Переполнение (Overflow) Числовая переменная или строковая константа выходят за пределы допустимого диапазона (например, в знаменателе получается очень малая величина или при работе с возведением в степень). Проверьте и измените значение при необходимости
Не хватает памяти (Out of memory)
Метка не определена (Label not defined) Для операторов GOTO или GOSUB задается переход на несуществующую метку
Индекс вне диапазона (Subscript out of range) Сообщение возникает при работе с массивами, когда индекс какого- либо элемента массива превышает его объявленный в операторе DIM размер, а также в том случае, когда массив занимает в памяти объем более 64 Кбайт. Появляется также, если в формуле, оперирующей с элементами массива, они заменены другими переменными (x(i) заменен на просто x).

 
 
Продолжение таблицы 0.0.6


Повторяющееся определение (Duplicate definition) Может возникнуть, если элемент массива, объявленного в операторе DIM, фигурирует далее (в формуле или выражении) в несвязанном или неправильно связанном виде
Деление на ноль (Division of zero) Выражение в знаменателе после подстановки значений переменных и вычислений, видимо, обращается в ноль
Ошибка в режиме управления
Ошибка ввода
В строке нет места (Out of string space)
Слишком сложная строковая формула (String formula too complex)
Невозможно продолжить
Функция не определена (Function not defined) Возможно, используемая функция не определена опера-тором DEF FN, или допущена ошибка при определении или вызове функции
Нет RESUME(No RESUME)
RESUME без ошибки(RESUME without error)
Устройство в тайм-ауте (Device timeout)
Ошибка устройства (Device fault)
FOR без NEXT (FOR without NEXT) Для заголовка цикла FOR нет соответствующего окончания цикла NEXT. Количество FOR и NEXT должны совпадать
Нет бумаги (Out of paper)
WHILE без WEND (WHILE without WHILE) Для ключевого слова WHILE нет соответствующего слова WEND
WEND без WHILE (WEND without WHILE) Для ключевого слова WEND нет соответствующего слова WHILE
Повторяющаяся метка (Duplicate label) При расстановке меток допущен повтор одной и той же метки в разных местах программы. Обычно возникает при редактировании текста программы копированием
Подпрограмма не определена Сообщение возникает при попытке обращения к несуществующей подпрограмме
Ошибка счетчика аргументов
 
Продолжение таблицы 0.0.6

Массив не определен Попытка работать с элементами массива, который не был объявлен оператором DIM
Требуется CASE ELSE (CASE ELSE expected)
Необходима переменная (Variable required) Возникает при попытке записи иных элементов программы в том месте, где должна быть переменная (попытка заменить x русской буквой x)
Переполнение FIELD (FIELD overflow)
Внутренняя ошибка (Internal error) Чаще всего неверная работа компьютера, реже – смысловые ошибки программы, не сразу различимые на первый взгляд. Часто требуется ручная прокрутка программы
Плохое имя файла / плохой номер (Bad file name or number) Имя файла не соответствует требованиям DOS (например, не указан путь для файла не из текущего каталога)
Файл не найден (File not found) При попытке обращения к файлу неправильно указано его имя или путь к нему
Плохой режим файла (Bad file mod) Возникает, если файл создан в редакторе не совместном с редактором, используемым в настоящем случае
Файл уже открыт (File already open) Попытка повторного открытия файла или удаления открытого файла
Оператор FIELD активен (FIELD statement activ)
Ошибка в/вв устройства (Device I/O error) Ошибка устройства ввода/вывода, с которой не справляется DOS. Попробуйте посмотреть, все ли в порядке с аппаратной частью, т.е. внешними устройства компьютера
Файл уже существует (File already exists) Попытка сохранить файл под именем уже существующего на диске файла
Неверная длина записи (Bad record length)

Продолжение таблицы 0.0.6
61

Диск заполнен (Disk full) Диск, на который производится запись файла, не имеет достаточно места для этого. Надо освободить дисковое пространство, удалив что-нибудь менее важное
Ошибка: введен конец файла(Input past end of file) Возникает, когда для чтения из файла организуется цикл, число шагов которого больше числа содержащихся в файле записей. Чтобы избежать появление ошибки, используйте функция EOF для досрочного выхода из цикла.
Неверный номер записи (Bad record number)
Плохое имя файла (Bad file name) Имя файла не соответствует требованиям DOS
Слишком много файлов (Too many files)
Устройство недоступно (Device unavailable) В дисководе нет диска или он испорчен
Переполнение буфера коммуникации (Communication-buffer overflow) Попытка копирования в буфер слишком большого объема информации
Нет разрешения (Permission denied)
Ошибка формата диска (Disk not ready) Открыта защелка дисковода, в дисководе нет диска или он испорчен.
Ошибка диска (Disk-media error) В дисководе нет диска или он испорчен
Недоступная возможность(Advanced feature unavailable)
Переименование через диски(Rename across disks)
Ошибка доступа к пути / файлу(Path / File access error)
Путь не найден(Path not found) При попытке обращения к файлу неправильно указано его имя или путь к нему

К лабораторной работе № 1

Цель работы: приобретение практических навыков в разработке и отладке линейных программ и в работе со средой программирования.

Структура создаваемой программы: ввод исходных данных, вычисление заданного объема или площади и вывод результата на экран с помощью оператора PRINT.

Ввод исходных данных в данной работе осуществляется посредством операторов READ, DATA. Оператор DATA хранит числовые или символьные данные для их последующего чтения оператором READ. Оператор READ вводит переменные, для которых считывает и присваивает конкретные значения из оператора DATA. Тип данных из DATA должен соответствовать типу переменных из READ. Например: 10 READ x1, x2%, x3$, x4$ 10 READ x1, x2, x3

20 DATA 3.5, -6, "режим", 20 20 DATA 1, , 2

В результате оператор READ в первом случае присвоит значения своим переменным в следующем порядке: x1 = 3.5, x2% = -6, x3$ = режим, x4$ = 20. Во втором случае дан пример пустого элемента списка, и результат присваивания будет: x1 = 1, x2 = 0, x3 = 2.

Оператор READ допускается помещать в любом месте многооператорной строки, оператор DATA должен быть либо единственным либо последним оператором строки. Бейсик допускает чтение числовой константы в строковую переменную (как для x4$ в предыдущем примере).

Один оператор READ может читать несколько операторов DATA, и наоборот, несколько операторов READ могут читать один оператор DATA. Если список переменных короче, чем список данных, то следующий оператор READ начинает читать первый непрочитанный элемент. Если данные не прочитаны никаким READ, то они игнорируются.

10 READ x1, x2, x3, x4 10 READ x1, x2

20 DATA 1, 2, 3 20 READ x3, x4

30 DATA 4, 5 30 DATA 1, 2, 3, 4, 5

В приведенных примерах результат чтения и присваивания будет одинаковым: x1 = 1, x2 = 2, x3 = 3, x4 = 4, а 5 игнорируется.

Оператор RESTORE позволяет повторно считать данные из списка DATA. 10 READ x1, x2, x3 10 READ x1, x2, x3, x4, x5, x6

20 RESTORE 20 RESTORE 50

30 READ x4, x5, x6 30 READ x7, x8

40 DATA 1, 2, 3 40 DATA 1, 2

50 DATA 3, 4

60 DATA 5, 6

В первом случае результат присваивания будет: x1 = 1, x2 = 2, x3 =3, x4 = 1, x5 = 2, x3 =3, поскольку RESTORE задает для READ из строки 30 возврат на считывание с начала данных из оператора DATA в строке 40. Во втором случае значения переменных будут следующими: x1 = 1, x2 =2, x3 = 3, x4 = 4, x5 = 5, x6 = 6, x7 = 3, x8 = 4, поскольку метка 50 при RESTORE задает для READ из строке 30 переход на считывание с начала данных из оператора DATA в строке 50.

Сообщение "Ошибка в типе данных" вызывает попытка считать оператором READ из DATA строковую константу в числовую переменную. Числовое значение, слишком большое для переменной, приведет к ошибке "Переполнение". Если список переменных в операторах READ больше списка данных в операторах DATA, то это вызовет сообщение об ошибке "Нет данных".

 
 
Таблица 0.1.1


Оператор и его описание
READ x, y, z Вводит числовые переменные x, y, z, для которых считывает из оператора DATA и присваивает числовые значения
READ x, y$ Вводит числовую переменную x и строковую y$, для которых считывает из оператора DATA и присваивает x числовое значение и y$ строковую константу
DATA 1.2, -2.546, 3 Хранит числовые значения для последующего их считывания оператором READ
DATA 7.2, "режим" Хранит числовое значение и строковую константу для последующего их считывания оператором READ
DATA 1.2, , 5, -4.8 Оператор с пустым элементом списка, присваивающим числовой переменной значение 0, а строковой – отсутствие значения
RESTORE Задает по умолчанию соответствующему оператору READ возврат на считывание с начала данных из первого оператора DATA
RESTORE 50 Задает соответствующему оператору READ переход на считывание с начала данных из оператора DATA в строке 50 (50 - метка)
Примечание: переменные в операторе READ, как и данные в операторе DATA, разделяются запятыми

Таблица 0.1.2


Операции, функции Вид в Бейсике
Сложение +
Вычитание -
Умножение *
Деление /
Возведение в степень ^
Целочисленное деление \
ex EXP(x)
|x| ABS(x)
sinx SIN(x)
cosx COS(x)
tgx TAN(x)
lnx LOG(x)
lgx LOG(x) / LOG(10)
трансляция и отладка программы. - student2.ru Öx SQR(x)
arctgx ATN(x)
Остаток от деления i MOD j
Генератор случайных чисел RND(n)
Равно =
Больше >
Меньше <
Не равно <>
Меньше или равно <=
Больше или равно >=
Примечание: 1. Согласно приоритету операций в Бейсике сначала выполняется возведение в степень, затем умножение и деление, после сложение, вычитание. Операции, размещенные в одной строке и имею-щие равный приоритет, выполняются последовательно слева направо. 2. Бейсик вычисляет выражение в скобках в первую очередь, даже если операции в скобках более низкого приоритета, чем вне скобок. Сначала вычисляются внутренние скобки, затем наружные. 3. Обратные функции вычисляются через имеющиеся встроенные: секанс SEC(x) = 1 / COS(x), косеканс COSEC(x) = 1 / SIN(x), арксинус ARCSIN(x) = ATN(x / SQR(1 – x * x)), арккотангенс ARCCTN(x) = 1.570796 – ATN(x), арккосинус ARCCOS(x) = 1.570796 – ATN(x / SQR(1 – x * x))

К лабораторной работе № 2

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

Структура создаваемой программы: ввод исходных данных, осуществление заданного ветвления и вычисление значений y при x из заданного диапазона, вывод результата на экран с помощью оператора PRINT.

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

INPUT "Введите значение x, y ", x, y$

В приведенном примере символьная строка, заключенная в кавычки, называется подсказкой или приглашением к вводу и выводится один к одному на экран. Если после приглашения поставить точку с запятой, а не запятую как в примере, то Бейсик будет выводить знак вопроса. В данном примере оператор требует ввести численное значение x, завершив его ввод запятой, а затем ввести символьное значение для символьной переменной y$, завершив ввод значений обеих переменных нажатием клавиши Enter.

Предпочтительнее для каждой переменной использовать свой оператор INPUT: 10 PRINT "Введите значения x, y"

10 INPUT "Введите x = ", x 20 INPUT "x = ", x

20 INPUT "Введите y = ", y$ 30 INPUT "y = ", y$

Если введены значения не тех типов или их количество не совпадает с числом переменных в списке при INPUT, то появится сообщение об ошибке "Ввод с начала".

Ветвление осуществляется с помощью условного оператора

IF…THEN…ELSE (ЕСЛИ…ТОГДА…ИНАЧЕ)

Предпочтительнее в данном случае неполная линейная форма

IF 0 < x THEN y = a * x + b

Если выполняется условие 0 < x, то выполняется стоящее после THEN, в противном случае выполняется следующая строка программы. Можно использовать и блочную форму.

Таблица 0.2.1


Оператор и его описание
IF 0 < x THEN y = a * x + b ELSE y = c * x ^ 2 Линейная форма условного оператора. Удобна, если требуется реализовать два альтернативных условия. Если справедливо условие 0 < x, то y определяется по формуле, стоящей после THEN, в противном случае – по формуле после ELSE.
IF 0 < x THEN y = a * x + b ELSE 50 Линейная форма условного оператора. Если справедливо условие 0 < x, то вычисляется y после THEN, в противном случае – переход на строку 50. После THEN или ELSE может стоять и многоо-ператорная строка, например, a = 2: b = 3: y = a * x + b: PRINT y
IF 0 < x THEN y = a * x + b Неполная форма условного оператора. Если справедливо условие 0 < x , то определяется y по формуле после THEN. В противном случае выполняется следующий оператор программы.
IF 0 < x AND x < 5 THEN y = a * x + b Неполная форма условного оператора. Пример реализации сложного условия 0 < x < 5 с помощью логического оператора AND
IF 0 < x THEN IF x < 5 THEN y = a * x + b Неполная форма условного оператора. Пример реализации сложного условия 0 < x < 5
IF x =< 0 THEN y = a * x + b ELSEIF 5 =< x THEN y = a * x ELSEIF 0 < x AND x < 5 THEN y = c ^ x ELSE PRINT "Такого варианта нет" END IF Блочная форма условного оператора. Блоки ELSE и ELSEIF могут быть опущены. ELSEIF может быть любое количество. Каждый из блоков может также содержать вложенные блочные структуры IF
SELECT CASE n CASE -1: PRINT "n может быть и отрицательным" CASE 0: PRINT "n может быть числовым или строковым" CASE 1, 2, 3: PRINT "Несколько одинаковых вариантов" CASE 4 TO 8: PRINT "Использование ключевого слова TO" CASE IS > 8: PRINT "Использование операций отношения" CASE ELSE: PRINT " CASE ELSE может быть опущено" END SELECT Управляющий оператор, выполняющий один или несколько блоков оператора в зависимости от значения n (числового или строкового).

Сложные условия реализуются с помощью операций отношения из таблицы 0.1.2 и логических операторов из таблицы 0.2.2. Например, условие 0 £ x £ 5 можно записать следующим образом: 0 =< x AND x =< 5 или x < 0 EQV 5 < x .

В таблице 0.2.3 приведены значения контрольных примеров для всех вариантов таблицы 2.1.

Таблица 0.2.2


Логические операторы QBasic
Оператор Название Объяснение
NOT Отрицание NOT A истинно тогда и только тогда, когда A ложно
AND Логическое умножение A AND B истинно тогда и только тогда, когда истинно А и истинно В
OR Логическое сложение A OR B истинно тогда и только тогда, когда хотя бы одно из A и B истинно
XOR Исключаю-щее ИЛИ A XOR B истинно тогда и только тогда, когда значения А и В не совпадают
EQV Эквивален-тность A EQV B истинно тогда и только тогда, когда A и B одновременно истинны или ложны
IMP Импликация A IMP B ложно, если A истинно, а B ложно, в других случаях A IMP B истинно

Таблица 0.2.3

Значения y
Вар-иант x1 = -5 x2 = 1 x3 = 9
a = 2 -5 a = 5,2   198,925
35,09 0,816 2178,9
4,85 6,02 85,6
-121,47 4,39 7,63 * 1012
  53,2   0,62 a = 324 3,4
  -3,72 * 10-3 a= 0 4,60   7,70
-210,79 9,24 290,84
47,75 -1,45 320,31
0,94 269,02
  -0,30   8,2 a = 1 50,11

К лабораторной работе № 3

Цель работы: приобретение практических навыков в разработке и отладке циклических программ.

Структура создаваемой программы представляет собой 4 цикла: 1-й и 2-й циклы предназначены для ввода последовательностей значений x(i) и y(j), соответственно, а 3-й и 4-й – для вычисления сумм S1 и S2.

В начале программы следует оператором DIM объявить массивы с целью подготовки места в памяти для записи последовательностей x(i) и y(j). Например: 10 INPUT "Задайте размер массива n =", n

10 DIM x(20) 20 DIM x(n)

Ввод значений x(i) и y(j) осуществляется с помощью операторов INPUT, поставленных в цикл.

Цикл реализуется посредством FOR…NEXT – управляющего оператора, повторяющего блок операторов указанное число раз. Например:

10 FOR k = 2 TO 6 STEP 2 10 FOR k = 2 TO 6 STEP 2

20 x(k/2) = k 20 x(k/2) = k

30 S = S + 2 * x(k/2) 30 S = 2 * x(k/2)

40 NEXT k 40 NEXT k

Представленные варианты различаются строкой 30. В первом происходит суммирование, а во втором - нет. Действительно:

1-й вариант 2-й вариант

1-й шаг: x(1) = 2 S = 0 + 2 * 2 = 4 S = 2 * 2 = 4

2-й шаг: x(2) = 4 S = 4 + 2 * 4 = 12 S = 2 * 4 = 8

3-й шаг: x(3) = 6 S =12 + 2 * 6 = 24 S = 2 * 6 = 12

По умолчанию шаг равен 1. При таком шаге строка 10 будет выглядеть: 10 FOR k = 2 TO 6

Отметим, что строки 20 и 30 являются телом цикла или блоком операторов повторяющемся указанное число раз, то есть 3 раза

Цикл FOR…NEXT выполняется только в том случае, если начало плюс шаг меньше или равно конечному значению счетчика. Если конец меньше начала, то для выполнения цикла шаг должен быть отрицательным. Допускается вкладывать циклы FOR…NEXT.

10 FOR i =1 TO 5 'это внешний цикл

20 FOR j = 1 TO 5 'это вложенный цикл

30 S1 = S1 + a(i , j)

40 NEXT j 'сначала закрывается вложенный цикл

50 NEXT i 'последним закрывается внешний цикл

В отличие от FOR…NEXT, выполняющего цикл заданное число раз, управляющий оператор цикла WHILE…WEND выполняет блок операторов, пока указанное условие истинно. Покажем, как с его помощью можно реализовать вычисление сумм.

20 WHILE i < 7

30 i = i + 1

40 IF i <= 3 THEN 50 ELSE 70

50 PRINT "Введите х"; i: INPUT "х =", x

60 S1 = S1 + (x + 1) ^ 2

70 PRINT "Введите y"; i: INPUT "y =", y

80 S2 = S2 + (3 * y ^ 3 + 2 * y ^ 2 + y)

90 WEND

Границы суммирования для S2 (от 1 до 7) реализуют строка 30 и условие при WHILE (в строке 20), а для S1 (от 1 до 3) – строка 30 и условие при операторе IF…THEN (в строке 40).

В таблицах 0.3.1 и 0.3.2 приведены контрольные примеры для заданий из таблиц 3.1 и 3.2, соответственно.

Таблица 0.3.1


Вар-иант x1 x2 x3 x4 x5 S1 S1
    -2 -2
  4,86
      2,96
-1     -9,96 -10
1,5   30,06
1,5 20,1
16,81
6,84
1,5     4,88
  9,086

 
 
Таблица 0.3.2


Вар-иант y1 y2 y3 y4 y5 y6 y7 y8 S2 S2
    0,2 0,2
    14,17
-1 -1   2,82
-2     9,57
-1,5   1,99
  14,72
9,01
    28,65
-2 -2 -2     -28,82 -29
122,16

трансляция и отладка программы. - student2.ru


Таблица 0.3.3
Оператор и его описание

DIM m1(10), m2(1 TO 10, 5) Оператор объявляет одномерный (m1) и двумерный (m2) массивы
DIM m(10, 5) DIM m(0 TO 10, 5) DIM m(10, 0 TO 5) DIM m(0 TO 10, 0 TO 5) Операторы объявляют двумерный массив. При OPTION BASE 0 операторы эквивалентны. Ключевое слово TO позволяет указать и нижнюю и верхнюю границы массива.
REDIM m(5, 3) REDIM m(0 TO 5, 3) REDIM m(5, 0 TO 3) REDIM m(0 TO 5, 0 TO 3) Оператор объявления массивов, изменяет объем памяти, выделенной динамическим массивам.
OPTION BASE n Оператор объявления нижней границы массивов. n = 0 или 1, по умолчанию равен 0. Не обязателен, может использоваться только раз в модуле для описания всех массивов.
ERASE m Оператор управления памятью, обнуляет элементы статического массива m или уничтожает динамический массив m.
FOR i = 2 TO 100 STEP 2 S = S + a( i ): IF S > 100 THEN EXIT FOR NEXT i Оператор цикла, реализующий суммирование элементов массива а, при сумме больше 100 предусмотрен досрочный выход из цикла
FOR i = 1 TO 1000: NEXT i Пустой цикл, реализующий временную задержку
WHILE S <= 100 i = i +1: S = S + a( i ) WEND Оператор цикла, реализующий суммирование элементов массива а, цикл выполняется пока указанное условие истинно (в данном случае при S £ 100)
Примечание: 1. Возможные границы массивов находятся в приделах от – 32768 до 32767 2. Допускается вкладывать как циклы FOR…NEXT, так и WHILE…WEND. 3. Обычно при использовании циклов FOR…NEXT первому счетчику цикла дается имя i, вложенному в него – j, затем k, l и далее по алфавиту

 
  трансляция и отладка программы. - student2.ru

К лабораторной работе № 4

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

Варианты 1-4.В вариантах 1-2 задания необходимо найти среди заданного множества чисел (контрольный пример: –3; -9; 11; 12; -4; 10; -1; 7 –11; 14) максимальное или минимальное число, соответственно. А в вариантах 3-4 отсортировать заданную последовательность чисел по возрастанию или убыванию, соответственно. Разберем вариант 3. Структура создаваемой программы: а) ввод исходной последовательности, б) сортировка ее по возрастанию, в) вывод на экран исходной и отсортированной последовательности чисел. Для ввода исходной последовательности организуется цикл, причем следует предусмотреть 2 режима ввода: с клавиатуры (посредством оператора INPUT) и для контрольного примера – автоматический (с помощью операторов READ и DATA). В основе сортировки по возрастанию лежит процесс выбора минимального числа и помещение его на место первого элемента последовательности. Причем на 1-м шаге минимальное число выбирается из всей исходной последовательности, на 2-м – из всей исходной последовательности за исключением 1-го элемента (уже отсортированного), на 3-м шаге – за исключением 1-го и 2-го элементов, на 4-м – за исключением первых трех элементов последовательности и т.д. Минимальное число в последовательности определяется путем последовательного сравнения стоящего на 1-м месте элемента с остальными элементами рассматриваемой последовательности. Если какой-нибудь элемент оказывается меньше 1-го, то он переставляется на 1-е место (посредством оператора SWAP). И оставшиеся элементы сравниваются уже с новым 1-м. Вывод на экран осуществляется следующим образом:

Исходная последовательность

–3 -9 11 12 -4 10 -1 7 –11 14

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