Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Оператор множественного выбора SELECT CASE
Использование оператора SELECT CASE более предпочтительно, нежели использование GOTO и IF... THEN по причине больших его возможностей и лучшей наглядности программы. Общая форма записи оператора: SELECT CASE выражение 1. CASE условие 1 2. блок операторов 1 CASE условие 2 3. блок операторов 1 ……………. 4. CASE ELSE END SELECT Здесь: выражение – арифметическое или текстовое выражение; условие - логическое выражение. Блок SELECT CASE... END SELECT -логически законченная и практически независимая часть программы. Оператор CASE ELSE получает управление, если ни одно из условий не выполняется. Если одно из условий CASE -”истина”, то выполняется соответствующий блок операторов. В случае, когда CASE ELSE нет, то управление передается оператору, стоящему за END SELECT. Возможные способы записи выражения: 1). CASE выражение TO выражение; 2). CASE IS операция отношения выражение; 3). CASE константа 1, константа 2. Пример. REM Использование оператора SELECT CASE INPUT V SELECT CASE V CASE PRINT “ НУЛЬ”; V CASE 1, 3, 5, 7, 9 PRINT “ НЕЧЕТНОЕ ЧИСЛО”; V CASE 2, 4, 6, 8 PRINT “ ЧЕТНОЕ ЧИСЛО”; V CASE IS < 0 PRINT “ ОТРИЦАТЕЛЬНОЕ ЧИСЛО”; V CASE IS > 9 PRINT “ СЛИШКОМ БОЛЬШОЕ ЧИСЛО”; V CASE ELSE PRINT “ НЕЦЕЛОЕ ЧИСЛО”; V END SELECT 'КОНЕЦ ПРОГРАММЫ END Операторы циклических алгоритмов Циклическим называется алгоритм, в котором получение результата обеспечивается многократным выполнением одних и тех же операций. Возможны три способа организации алгоритма циклической структуры: - цикл «повторять…до» (цикл с постусловием, рис. 7.4); - цикл «пока» (цикл с предусловием, рис. 7.5); - счетный цикл (с управляющей переменной, рис. 7.6). Различают циклы с заданным и неизвестным заранее числом повторений. В QBASIC существуют несколько операторов, которые позволяют реализовать в программе алгоритм циклической структуры.
Рис. 7.4. Цикл с постусловием Рис. 7.5. Цикл с предусловием Рис. 7.6. Цикл с известным числом повторов Операторы GOTO и IF Совместное использование этих операторов позволяет организовать выполнение циклического процесса. Пример. Найти сумму и произведение 5 чисел. REM Объявление начальных значений переменных SUM=0: P=1: N=1 NEXT.STEP: PRINT “Введите “; N; “число” INPUT NUM REM Вычисление суммы SUM=SUM+NUM REM Вычисление произведения P=P*NUM N=N+1 IF N< =5 GOTO NEXT.STEP ‘ Переход на строку с меткой NEXT.STEP PRINT “Сумма этих чисел = “; SUM; “Произведение = “; P END
Оператор цикла с известным числом повторений FOR …TO … NEXT Этот оператор позволяет организовать выполнение блока операторов определенное число раз (организуют цикл по счетчику). Поэтому он может заменить операторы GOTO и IF. Общий вид оператора: FOR U = A1 TO A2 [STEP A3] тело цикла NEXT U где: U – управляющая переменная цикла; A1, A2 – начальное и конечное значение управляющей переменной; A3- шаг изменения управляющей переменной; тело цикла – набор операторов повторяющегося вычислительного процесса. Если А3=1, то конструкцию STEP A3 можно опустить. Программа в предыдущем примере эквивалентна следующей: Пример 1. Найти сумму и произведение 5 чисел. REM Объявление начальных значений переменных SUM=0: P=1 REM Начало цикла FOR U=1 TO 5 PRINT “Введите “; U; “ число” INPUT NUM REM Вычисление суммы SUM=SUM+NUM REM Вычисление произведения P=P*NUM NEXT U PRINT “Сумма этих чисел = “; SUM; “Произведение = “; P END
Пример 2. FOR X=1 to 10 STEP 1 Y=X^2+ B*X- C PRINT “ X=“; X, “ Y=“; Y NEXT X Пример 3. Ввод массива REM ВВОД МАССИВА INPUT “ВВЕСТИ L”; L DIM P(L) PRINT “ВВЕСТИ МАССИВ P” FOR I= 1 to L INPUT P(I) NEXT I END Условные циклы Для организации циклов с неизвестным числом повторений (итерационных) используются операторы условных циклов. Оператор цикла с предусловием WHILE … WEND Общий вид этого оператора: WHILE условие тело цикла WEND где: условие – логическое выражение; тело цикла – последовательность операторов. Пока условие истинно, выполняются все операции тела цикла. Еcли условие - “ложь” - то управление передается на оператор, следующий за WEND. Особенности работы оператора: - можно использовать при неизвестном заранее количестве повторений; - можно использовать, если закон изменения параметров выражается формулой; - в теле цикла должен быть оператор, изменяющий условие. Пример 1. Найти количество первых n натуральных чисел, сумма которых не больше 20. SUM=0: N=0 WHILE SUM< =20 N=N+1 SUM=SUM+N WEND PRINT N; SUM END Пример 2. Условный цикл X= 4 WHILE X< = 12 Y=X^2 + B*X - C PRINT “X=“; X, “Y=“; Y X=X+2 WEND Оператор условного цикла DO... LOOP Данный оператор аналогичен оператору WHILE... WEND, однако отличается от него большей гибкостью. Управляющее условие может быть размещено как в начале цикла, так и в конце. Проверка вверху: DO WHILE условие DOUNTIL условие тело цикла тело цикла LOOPLOOP Проверка внизу: DODO тело цикла тело цикла LOOP WHILE условиеLOOP UNTIL условие где: условие – логическое выражение; тело цикла – последовательность операторов. Использование слова WHILE означает, что цикл будет выполняться до тех пор, пока условие будет иметь значение “истина“. При использовании слова UNTIL цикл выполняется только тогда, когда условие имеет значение “ложь”. При проверке вверху цикл может не выполниться ни разу. При проверке снизу цикл выполнится хотя бы один раз. Пример 1. Найти сумму и произведение 5 чисел. REM Использование формы «проверка-вверху» с условием WHILE REM Объявление начальных значений переменных SUM=0: P=1: N=1 DO WHILE N< =5 PRINT “Введите “; N; “ число” INPUT NUM REM Вычисление суммы SUM=SUM+NUM REM Вычисление произведения P=P*NUM N=N+1 LOOP PRINT “Сумма этих чисел = “; SUM; “Произведение = “; P END Пример 2. Найти сумму и произведение 5 чисел. REM Использование формы «проверка-внизу» с условием UNTIL REM Объявление начальных значений переменных SUM=0: P=1: N=1 DO PRINT “Введите “; N; “ число” INPUT NUM REM Вычисление суммы SUM=SUM+NUM REM Вычисление произведения P=P*NUM N=N+1 LOOP UNTIL N> 5 PRINT “Сумма этих чисел = “; SUM; “Произведение = “; P END Вложенные циклы Циклы могут быть вложенными друг в друга. Внутренние циклы должны целиком помещаться во внешних. Если вложены друг в друга два цикла FOR … NEXT, то они должны иметь различные управляющие переменные. Пример. Рассчитать и вывести на экран таблицу Пифагора. PRINT “Таблица Пифагора” FOR x=1 TO 10 FOR y=1 TO 10 A=x*y PRINT USING “###”; A NEXT y NEXT x Результат выполнения программы: Таблица Пифагора 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Операторы описания массивов Массив — группа переменных, которые имеют одно и то же имя, но различные индексы. Каждая переменная называется элементом массива и характеризуется двумя атрибутами: своим положением внутри массива и значением. При этом все элементы массива имеют один и тот же тип. В качестве индекса элемента массива могут использоваться числа, переменные целого типа или арифметические выражения. Имя массива может содержать до 40 символов (букв латинского алфавита, цифр, специальных знаков). Присваивать значения элементам массива можно различными способами: - с помощью оператора присваивания; - с помощью цикла при заполнении большого массива; - путем ввода значений с клавиатуры; - использованием операторов DATA и READ: - использованием стандартных функций. QBASIC не всегда требует объявления массива при использовании его в программе. Если массив содержит менее 11 элементов, достаточно одного упоминания имени переменной, чтобы QBASIC автоматически выделил ячейки в памяти для массива с 11 элементами и присвоил им нулевые значения. Первый элемент массива по умолчанию имеет номер ноль, а не 1, поэтому последний элемент будет иметь порядковый номер 10. Для того, чтобы первый элемент массива имел номер 1, нужно воспользоваться специальным оператором: OPTION BASEзначение, где: значение - номер начального элемента массива. Этот параметр может принимать значения 0 или 1; по умолчанию 0. Пример. OPTION BASE 1 DIM NUM% (100) Оператор OPTION BASE может использоваться в программе только один раз до описания всех массивов. Для описания больших массивов используется оператор DIM. Общий вид оператора: DIM имя1 (размер 1) [, имя2 (размер 2), ...] где: имя1, имя2 - имена массивов переменных; размер 1, размер 2 - размерность массива, выражаемая следующим образом: [нижний TO] верхний, [нижний TO] верхний, например: DIM A (100 TO 200) - одномерный массив; DIM D%(10 TO 50, 20 TO 30) - двухмерный массив. Функции оператора описания массивов DIM: - позволяет резервировать место в памяти сразу для нескольких массивов; - определяется имя массива; - задает тип элементов массива; - резервирует ячейки памяти для элементов массива; - присваивает нулевые значения ячейкам массива числового типа или пустые строки текстового массива; - предоставляет возможность использовать в программах массивы с числом измерений до 60. Пример. Заполнение двухмерного массива А(5, 3) по строкам. DIM A(5, 3) FOR I=1 TO 5 FOR J=1 TO 3 INPUT A(I, J) NEXT J NEXT I Правила записи оператора DIM: - в одном операторе можно объявлять любое число массивов; - оператор DIM желательно помещать в начале программы; - не использовать в программе простую переменную и массив с одним именем; - границы массива могут быть переменными. Размер одного массива не может превышать 64 Кбайт. Для получения объема памяти, занимаемой массивом, нужно умножить число элементов массива на размер одного элемента. Таблица 7.3 Распределение памяти для переменных
Две стандартные функции LBOUND и UBOUND возвращают верхнее (UBOUND) и нижнее (LBOUND) значения границ определенного измерения массива. Общий вид функций: LBOUND (массив[, размерность]) UBOUND (массив[, размерность]) где: массив - имя массива, размерность - номер измерения массива, для которого эти функции возвращают значения нижней и верхней границы. Для определения индекса первого измерения используется 1, для второго - 2 и т.д. Пример. Объявление двухмерного массива. CLS ‘объявление двухмерного массива DIM M (-10 TO 5, 20 TO 30) ‘ вывод границ массива PRINT LBOUND (M, 1); PRINT UBOULD (M, 1) PRINT LBOUND (M, 2); PRINT UBOULD (M, 2) END Результат на экране: -10 5 20 30 Подпрограммы и функции В QBASIC повторяющиеся вычислительные алгоритмы могут быть организованы в основном модуле в виде многострочных функций, задаваемых оператором DEF FN, оператором-функцией типа FUNCTION, подпрограммами GOSUB и SUB. Такой подход позволяет разбить программу на логические части, каждая из которых может быть отлажена отдельно. Подпрограмма (оператор-функция)- участок программы, оформленный определенным образом, к которому можно обращаться из разных точек программы любое число раз. При выполнении операторов-функций возвращается единственный результат, который присваивается имени функции. При использовании подпрограмм возможно получение нескольких результатов, значения которых могут быть возвращены через список переменных. Основные отличия используемых в QBASIC функций и подпрограмм представлены в таблицах 7.4 и 7.5. Функция FUNCTION и подпрограмма SUB являются более мощными альтернативами, их использование лучше соответствует принципам структурного программирования и поэтому наиболее предпочтительно. Таблица 7.4 Отличия между FUNCTION и DEF FN
Таблица 7.5 Отличия между подпрограммами SUB и GOSUB
Популярное:
|
Последнее изменение этой страницы: 2016-04-09; Просмотров: 1216; Нарушение авторского права страницы