Файл: Основы программирования на языке QBasic (Алфавит языка QBasic).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.04.2023

Просмотров: 622

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рассмотрим пример условного оператора полной альтернативы:

Пример 1 [7, 43].

IF С=2 THEN PRINT "Yes" ELSE PRINT "No"

PRINT "End"

Здесь все происходит следующим образом:

если условие С=2 «ИСТИННО», то выполняются операторы PRINT " Yes " и PRINT " End ";

если условие С=2 «ЛОЖНО», то выполняются операторы PRINT" No " и PRINT " End ".

Условный оператор неполной альтернативы соответственно будет выглядеть следующим образом

IF условие THEN блок операторов

Пример 2. Определить наибольшее из двух чисел Х и У, введенных клавиатуры [11, 95].

INPUT "Введите числа, которые нужно сравнить "; X, Y

IF X > Y THEN

PRINT "БОЛЬШЕЕ ЧИСЛО X="; X

ELSE

PRINT " БОЛЬШЕЕ ЧИСЛОY="; Y

END IF

END

В примере 2 используется условный оператор полной альтернативы.

Пример 3.

Решить квадратное уравнение ax2+bx+c=0

10 INPUT "Введите значения A, B, C"; A, B, C

20 D=B^2-4*A*C

30 IF D>0 THEN X1= (-B-SQR (D))/(2*A): X2=(-B+SQR(D))/(2*A): PRINT"X1="; X1; "X2="; X2 ELSE PRINT "Действительных корней нет"

40 END

Полная блочная форма в общем виде выглядит следующим образом (Рисунок 4): [9, 11].

Рисунок 4. Блочная форма записи оператора условного перехода.

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

Операторы циклов существуют во всех языках программирования и являются мощным инструментом для создания красивых и эффективных программ.

1) Операторы FOR и NEXT (ДЛЯ... СЛЕДУЮЩИЙ) [3, 72].

Имеется очень много задач, в которых заранее известно или легко вычислить число повторений цикла. Для решения таких задач и предназначен оператор цикла FOR...NEXT — управляющий оператор, повторяющий блок операторов указанное число раз. Наглядно работу операторов FOR и NEXT можно представить следующим образом (Рисунок 5).

Рисунок 5. Операторы FOR и NEXT

В общем виде оператор цикла выглядит следующим образом:

FOR I = P TO N STEP T (тело цикла) NEXT I

где I — счетчик цикла; P — начальное значение счетчика; N — конечное значение счетчика; T — шаг. Эти значения указываются в первой строке цикла FOR I = 7 TO 12 STEP 3 [3, 73].

Операторы FOR и NEXT используются всегда только вместе, каждому оператору FOR должен соответствовать свой оператор NEXT в программе. Начало цикла определяется FOR, а NEXT - конец цикла. Можно опускать конструкцию STEP T, если шаг изменения T равен 1.

Такие операции выполняются при работе оператора цикла:

1. Вычисляются значения P, N, T, если они являются арифметическими выражениями [8, 151].


2. Переменной I присваивается в качестве начального значения значение P.

3. Полученное значение I сравнивается со значением выражения N. При этом, если T> 0, то проверяется условие I ≤P, если P <0, то проверяется условие I ≥ N.

4. Если проверяемое условие истинно, то выполняется группа операторов, расположенных между FOR и NEXT.

5. Оператор NEXT изменяет текущее значение переменной I на шаг T (I=I+T) и передает управление в начало цикла. Для нового значения I опять проверяется одно из условий пункта 3. При истинности условия еще раз выполняется группа операторов между FOR и NEXT. Весь процесс выполняется до тех пор, пока проверяемое условие не примет значение "ложно". В этом случае выполнение цикла заканчивается и управление передается оператору, следующему в программе непосредственно после оператора NEXT [8, 150].

Пример 4. Найти среднее арифметическое значение натурального ряда чисел от 1 до N.

10 INPUT N

20 S=0

30 FOR I=1 TO N

40 S=S+I

50 NEXT I

60 С= S/N

60 PRINT " Cреднее арифметическое равно S="; S

70 END

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

1. Проверка истинности условия I ≤ P (I ≥ T) осуществляется перед очередным выполнением цикла. Следовательно, если это условие не выполняется перед первым выполнением цикла, то цикл не будет выполняться ни разу [8, 150].

Например, FOR I=23 TO 3

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

Например,

30 FOR I=1 TO 11

40 A=I^2

50 I=I+A

60 NEXT I

  1. Передача управления внутрь цикла, минуя его заголовок, не допускается.

2) WHILE... WEND (ПОКА... КОНЕЦ)

При разработке программ довольно часто возникает ситуация, когда заранее невозможно установить, сколько раз потребуется повторить цикл. Условие выхода из цикла в этих случаях определяется ходом решения самой поставленной задачи [8, 157]. Для решения этого вида задач цикл FOR...NEXT не годится. Во всех языках программирования подобные ситуации разрешаются с помощью специальных циклов, каковым и является рассматриваемый оператор цикла WHILE...WEND. Этот оператор цикла способен не только выполнять задачи, для решения которых он и был разработан, но и повторять все задачи цикла FOR...NEXT.

В общем виде рассматриваемый оператор цикла WHILE...WEND выглядит следующим образом:

WHILE (условие входа в цикл) (тело цикла) WEND

Работу операторов можно наглядно отобразить следующей схемой как на Рисунке 6.


Рисунок 6. Операторы WHILE... WEND

С помощью WHILE... WEND можно организовать вложенные циклы - каждый со своими WHILE... WEND. После завершения цикла управление передается команде, следующей за WEND [7, 55]. Если при проверке условия окажется, что значение логического выражения - "Ложь", блок команд не будет выполнен ни разу. Ограничение: из этой конструкции нельзя выйти "досрочно", т.е. до завершения работы оператора [7, 57].

Пример 5.

10 I=1

20 WHILE I < 5

30 PRINT "I="; I;

40 I=I+1

50 WEND

На экране увидим такой результат работы программы: I=1 I=2 I=3 I=4.

2.4 Обработка символьных переменных

Напомним, строка символов, заключенная в кавычки, является символьной константой. Её значением является последовательность символов без кавычек. Если нужно задать пустую строку, используют два идущих подряд знака кавычек. Имя символьной переменной заканчивается обязательно знаком $, и значение в виде строки символов [11, 199].

Для строк можно использовать операцию сравнения:

  • строки считаются равными, если их длины равны и коды всех символов попарно совпадают.
  • если одна из строк совпадает с началом другой (но короче ее), то она меньше.

Перечислим операции, которые можно проводить над строковыми переменными:

  1. ввод значений строковых переменных с клавиатуры:

INPUT М$, Е$

  1. склейка(конкатенация) двух строк: A$=T$+P$, C$="СЛОВО: "+A$, C$="ИЗОБРАЗИТЕЛЬНОЕ"+" "+"ИСКУССТВО"
  2. присвоение переменной текстовой константы:

A$="ГОРОД НОВГОРОД", L$="" - очистка строки (пустая строка)

  1. печать значений строковых переменных:

PRINT M$, A$

Рассмотрим основные функции работы с символьными переменными:

1) LEN(F$) – определяет длину символьного выражения [11, 202].

Пример 6. Для строки A$="ГОРОД НОВГОРОД» функция LEN(A$) =14 определяет её длину, в данном случае она равна 14.

2) LEFT$ (F$, N) - вырезает заданное количество символов слева;

Пример 7. Для строки A$="ГОРОД НОВГОРОД» функция LEFT$(А$, 6) = "ГОРОД" слева вырезает 6 символов и возвращает оставшуюся строку на экран или можно сказать выбирает слева указанное количество символов из данной строки.

3) RIGHT$ (F$, N) - вырезает заданное количество символов справа;

Данная функция аналогична LEFT$(F$, N) [11, 207].

  1. MID$(F$, N1, N2) – возвращает указанную часть строки

A$="String равен Null", MID$(А$, 8, 5) = "равен"


  1. VAL(A$) – возвращает число, которое содержится в строке

A$="12 String равен Null" [11, 206].

VAL (A$) =12

7) CHR$(L) - выдает символ по коду данного числа;

8) ASC(S$) - выдает код первого символа строки

9) SRT$(K) - преобразует число в символьную строку, которая является записью в виде последовательности десятичных цифр [11, 203].

3. РАБОТА С МАССИВАМИ

Массив — это однородная совокупность данных. Различают массивы одномерные и многомерные.

Пример одномерного массива А(i), i изменяется от 1 до 7. Одномерные массивы ещё называют рядом. Каждый элемент массива имеет свой индекс в массиве. Это наглядно можно увидеть на Рисунке 7. Размер данного массива равен количеству символов в массиве – 7.

Рисунок 7. Массив А(7)

Помимо одномерных массивов могут использовать и двумерные, которые называются матрицами. Обозначаются A (I, J). [11, 140].

Массивы могут быть статические и динамические. Статическими называются массивы, память для размещения которых выделяется интерпретатором еще до начала работы программы, в ходе ее трансляции. Число элементов и размерность таких массивов не могут изменяться в ходе выполнения программы и задаются только при его описании с помощью оператора DIM. Память для динамических массивов отводится лишь тогда, когда в этом возникает необходимость. Убираются они из памяти по ходу выполнения программы по желанию программиста. Очистив память от первого обработанного динамического массива, его место можно последовательно занять любым количеством других динамических массивов [11, 139].

Для объявления массивов в программе используется оператор DIM. Он указывает общее количество переменных в массиве. Это необходимо для рационального распределения памяти компьютера.

Пример 8. DIM А (7). Эта запись указывает, что объявлен одномерный массив размерностью 7 с общим именем А. Исполнение оператора DIM заключается в том, что в памяти компьютера образуется массив переменных.

Рассмотрим существующие способы ввода элементов массива [3, 86].

  1. при помощи оператора присваивания.

В этом случае фрагмент программы можно представить так:

DIM A (6)

A(0)=4: A(1)=-2.5: А(4)=5: A(3)=6: A(5)=7: A(2)=3

Понятно, что использовать данный способ ввода удобно, когда массив небольшой.

  1. элементы массива можно вводить с клавиатуры. В таком случае фрагмент программы будет таким:

DIM А (6)

FOR I=0 TO 6

INPUT A(I)

NEXT I

3) можно использовать оператор ввода блока

DIM B (6)

DATA 0, -2, 1, 5, 8, 5, 6. 26

FOR N=0 TO 6

READ B (N)

NEXT N

Рассмотрим примеры, которые описывают вывод элементов массива [3, 94].

1) используя перечисление элементов (вывод построчно). Этот способ вывода удобен, когда массив небольшой.

DIM A (3)

PRINT A (0), A (I), A(2), A(3)

2) используя оператор цикла.

DIM A (9)

FOR I=0 TO 9

PRINT A (I)

NEXT I

Пример 9. Даны одномерные массивы A и B, содержащие по N элементов. Сформировать новый массив D, каждый элемент которого определяется по формуле D(i)=A(i)+B(i)+C(i). Здесь i изменяется от 1 до N [3, 67].

10 INPUT "Укажите размерность для массивов"; N

20 DIM A (N), B (N), C (N), D (N)

30 FOR I=1 TO N

40 INPUT A (I), B (I), C (I)

50 NEXT I

60 FOR I=1 TO N

70 D (I) =A (I) + B (I) +C (I)

80 PRINT "D ("; I; ") ="; D (I);

90 NEXT I

100 END

4. ПОДПРОГРАММЫ ЯЗЫКА QBASIC

В различных местах программы очень часто возникает необходимость в выполнении одних и тех же действий, причем действия должны производиться с различными исходными данными. Повторяющийся участок вычислений записывают один раз, затем обращаться к нему из различных мест программы. Этот повторяющийся участок программы называется подпрограмма [10, 124].

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

Операторы GOSUB и RETURN

Оператор GOSUB используется в языке QBasic для обращения к подпрограмме.

Формат оператора: GOSUB N, где GOSUB - ключевое слово, а N - номер первой строки, с которой должно начаться выполнение подпрограммы (точка входа в подпрограмму). Подпрограмма завершается оператором RETURN, который возвращает управление в основную программу.

Работа этих операторов выполняется таким образом. Интерпретатор языка BASIC формирует стек возврата. Если в программе встречается оператор GOSUB, в стек возврата заносится адрес (номер строки) оператора, который следует непосредственно за GOSUB и управление передается на точку входа, которая задается номером строки в операторе GOSUB, затем начинают выполняться операторы подпрограммы [10, 126].

Если в подпрограмме встречается оператор RETURN, то из вершины стека извлекается текущий адрес возврата, и интерпретатор передает управление в вызывающую программу на оператора, непосредственно следующий за оператором GO SUB.