Файл: Основы программирования на языке QBasic (Теоретические основы программирования в среде QBASIC).pdf
Добавлен: 25.04.2023
Просмотров: 116
Скачиваний: 4
СОДЕРЖАНИЕ
Глава 1. Теоретические основы программирования в среде QBASIC
1.2 Системы и технологии программирования
Глава 2. Особенности программирования в среде QBASIC
2.1 Выполнение арифметических операций
2.1.1 Найти значение выражения
2.1.2 Найти значение выражения
2.3.1 Из элементов двух массивов составить один массив
2.3 Основы векторного исчисления
2.3.1 Программа нахождения скалярного и векторного произведения векторов, угла между ними
2.4 Графический режим Qbasic. Построение графика функций
2.4.1 Программа построения графика функции
2.4.2 Программа создания рисунка
Первые алгоритмические языки были в основном ориентированы на решение математических, инженерно-технических задач, поскольку именно в этих областях компьютерная техника нашла поначалу самое серьёзное применение. Впоследствии появились аналогичные языки для решения экономических задач, задач управления технологическими процессами, проектирование, т.е. они, были ориентированы на решение проблем в конкретных областях. Именно это и обусловило их общее название-проблемно-ориентированные.
По мере сужения их специализация соответственно росло число языков программирования, сначала оно измерялось десятками, потом - сотнями. Это породило новые проблемы совместимости программ на разных языках программирования при разработке больших систем, и возникла идея создания универсальных языков программирования.
Универсальные языки наиболее удобны в использовании, поскольку максимально приближены к естественному человеческому языку, и, конечно, процесс компиляции для них достаточно сложен. Языки этого класса(Basic, Си, Pascal, Ada и др.) объединяет одно - они шаг за шагом последовательно реализуют алгоритм, поэтому их называют алгоритмическими, что представляется не совсем корректным, поскольку любое программирование связанно с реализацией того или иного алгоритма. Более правильным представляется называть эти языки процедурно-ориентированными и также связанную с ними технологию технологией программирования.
Весь процесс реализации конкретной задачи на компьютере, с определённой степенью условности, можно разделить на 10 этапов:
- Содержательная постановка задачи.
- Математическая постановка задачи.
- Формализация математической постановки - выбор метода решения.
- Разработка алгоритма решения задачи.
- Разработка ПО, реализующего алгоритм.
- Отладка ПО (выявление и устранение ошибок).
- Тестирование ПО и анализ результатов.
- Проведение доработок по итогам тестирования.
- Разработка технической документации(инструкций) для пользователей.
- Сдача в эксплуатацию.
Алгоритм, записанный на языке программирования, называется программой. Каждый шаг алгоритма представлен некоторой командой. Команды в программе оформляются по правилам языка программирования и называются операторами языка программирования. Заметим, что для любой программы характерен естественный порядок исполнения команд, т.е. которые не выполняют непосредственно обработку информации, а управляет работой программы.
Любая программа выполняется в результате её трансляции-перевода записи операторов на язык компьютера. Каждый оператор в программе после трансляции будет представлен набором кодов команд. Эти команды выполняются в оперативной памяти компьютера.
Для записи любого алгоритма в принципе достаточно использовать операторы трёх видов: присваивания, безусловной передачи управления и условной передачи управления. Но программа, состоящая из таких операторов, будет содержать много меток (вероятный источник ошибок) и её будет довольно трудно читать и понимать. Аналогично, любое число может быть записано только единицами и нулями, то есть в двоичной системе. Но человеку удобнее пользоваться десятичной системой счисления.
После трансляции или в процессе интерпретации составные операторы на самом деле будут сводиться к командам машинного языка, часть из которых включает в себя адреса других команд. Но использование без меточных операторов облегчает жизнь программисту, избавляя его от необходимости забивать свою голову излишними подробностями. Конечно, количество операторов в языке Qbasic существенно превышает упомянутый минимум из трёх операторов. Но их и не так уж много по сравнению с количеством вышеприведённых операций, встроенных функций и процедур.
Для удобства чтения и понимания программ очень полезно понятие о блоке операторов как части текста программы, имеющей с точки зрения передачи управления только один вход и только один выход.
При этом на способы передачи управления внутри блока операторов не накладывается никаких ограничений кроме вышеизложенного условия.
Операторы языка программирования позволяют преступить к написанию простейших программ с использованием типовых алгоритмических конструкций.
Основные операторы, реализующие типовые алгоритмические конструкции. Оператор присваивания. Допустим, есть математическое выражение Y=.
Оператор присваивания на языке Basic будет иметь следующий вид:
Y=SQR(6.25*x^2+2.12*x+0.123) |
(1) |
Этот оператор работает так: результат вычисления выражения в правой части требуется присвоить в качестве значения переменной Y. Именно потому, что данный оператор выполняет функции не только вычисления, но и присваивания, в левой его части не может быть выражения, а только имя одной переменной-ячейки памяти компьютера, в которую производятся запись результата вычисления.
Оператор ввода данных. Этот оператор размещает данные в оперативной памяти компьютера. Имена переменных, записанных в операторе INPUTв произвольном порядке, получают значения, вводимые с клавиатуры в этом же порядке, т.е. первой переменной соответствует первое введённое значение, второй-второе и т.д. Оператор ввода в языке Basicимеет следующий формат:
INPUT<сообщение>;x1,x2,x3,….,xn. |
(2) |
Здесьx1,x2,x3,….,xn–имена переменных, которые получают значения, вводимые с клавиатуры в порядке их следования. Иначе их называют списком ввода; сообщение-это текстовая константа, уточняющая, напоминающая человеку о его действиях.
Оператор вывода. Этот оператор предназначен для вывода результатов или на экран монитора или на принтер. Общий вид(формат) оператора вывода в языке Basic таков:
PRINTx1,x2,x3,….,xn |
(3) |
где x1,x2,x3,….,xn– имена переменных, содержимое которых выводится на экран монитора в порядке их следования. Иначе их называют списком вывода.
Существуют два вида операторов (команд) перехода. Оператор безусловного перехода передаёт управление к другой команде всегда, вне зависимости от каких бы то ни было условий.
Оператор условного перехода передает управление только в случае истинности некоторого условия, а в противном случае-просто игнорируется.
Общий вид (формат) оператора условного перехода в языке Basic таков: IF<условие>THEN<оператор или группа операторов>
[ELSE<оператор или группа операторов>]
В качестве условия могут быть использованы либо операции сравнения (=,<>,>,>=,<,<=), либо логические выражения. Смысл этого оператора состоит в том, что если условие истинно, то выполняется оператор или группа операторов, следующих за словом THEN, а если условие ложно, то выполняется оператор или группа операторов, следующих за словом ELSE(иначе). Для реализации циклических алгоритмических конструкций используется оператор цикла, в языке Basic это «связка» операторов FOR
и NEXT. Первый из них является начальным и главным оператором. Он открывает собой тела цикла, т. е. группу операторов, которые будут выполняться фиксированное число раз.
Формат оператора FOR таков:
FORI=IначTOIкон[STEP] |
(4) |
где I– счётчик цикла;Iнач - начальное значение счётчика цикла; Iкон – конечное значение счётчика цикла; – шаг изменения счётчика цикла.
1.3 Массивы
Многие задачи, решаемые на ПЭВМ, связаны с обработкой больших объёмов информации. В таких случаях данные удобно некоторым образом упорядочивать, т.е. создавать массивы.
Массив-это упорядоченная последовательность величин, обозначаемая одним именем, доступ к элементу массива осуществляется по его номеру. Элементы массива располагаются в последовательных ячейках памяти ЭВМ.
Существуют одномерные и двумерные массивы.
Одномерный массив- соответствует линейной таблице, его элементы обозначаются переменной с индексом А(1), К3(1).
Двумерный массив-описывает в программе прямоугольную таблицу .
Его элементы обозначаются переменной с двумя индексами, например:
С9 (4,5), где первый индекс обозначает № строки, а второй № столбца.
Прежде чем использовать массив, нужно указать компьютеру размер этого массива. Для объявления размера массива, используется оператор DIM. Слово DIM является сокращением слова dimension (размер).
Общая форма записи оператора:
DIM имя массива (I1[,J1]),
имя массива (I2[,J2]),…
Здесь I1,J1;I2,J2- верхние границы, представляющие собой положительно целые константы, квадратные скобки указывают на то, что элемент не обязателен. В Бейсике индекс массива всегда начинается с нуля.
Глава 2. Особенности программирования в среде QBASIC
Программа, включающая в себя следующие операторы: ввод первого операнда; ввод второго операнда; условный оператор; вывод результата
INPUT “a=”; a
INPUT “b=”; b
IF a>b THEN c=a+b ELSE c=a*b
PRINT “c=”;c
END
Программа запрашивает и вводит с клавиатуры семь целых чисел и выводит на экран сами числа и значения их кубов
FOR i=1 TO 7 STEP 1
INPUT a
PRINT a, a^3
NEXT i
END
Пример обработки массива в цикле
DIM mass(6)
RANDOMIZE TIMER
FOR k=1 TO 6
mass(k)=INT(RND*100)
s=s+mass(k)
PRINT “mass(“;k;”)=”;mass(k)
NEXT k
PRINT “symma=”;s
END
2.1 Выполнение арифметических операций
2.1.1 Найти значение выражения
Программа, работающая в диалоговом режиме
10 INPUT a, b, c
20 d = a
30 IF d = 0 GOTO 60
40 PRINT (c * (a ^ 3 * b) - c ^ 2) * (c ^ 3 / a)
50 END
60 PRINT “no a net 0”
Вывод результата
Да
Нет
Ввод
Конец
Начало
Рисунок 5. Блок-схема
2.1.2 Найти значение выражения
Программа, работающая в диалоговом режиме
10 INPUT a, b, c
20 d = 9 – a^2
30 IF d = 0 GOTO 60
40 PRINT (a^2 + 3 * b ^ 3 * c) – (5 * c / (9 – a^2))
50 END
60PRINT “a not 3”; “a not -3”
70GOTO 10
Вывод результата
Да
Нет
Ввод
Конец
Начало
Рисунок 6. Блок-схема
2.2.1 Вывод элементов матрицы с помощью табуляции
10 CLS
20 DATA 1, 2, 3, 4, 5, 6, 7, 8, 9
30 PRINT “MATRICA A”
40 FOR I =1 TO 3
50 FOR J=1 TO 3
60 READ M (I,J)
70 PRINT TAB (3*J); M (I,J)
80 NEXT J
90 PRINT
100 NEXT I
110 END
Рисунок 7. Вывод матрицы
2.3 Массив
2.3.1 Из элементов двух массивов составить один массив
INPUT "Сколько элементов в массивах"; n, m
DIM x(n), y(m), z(n + m)
a = -9: b = 10
FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND)
PRINT x(i);
NEXT i: PRINT
FOR i = 1 TO m: y(i) = INT(a + (b - a) * RND)
PRINT y(i);
NEXT: PRINT
FOR i = 1 TO n: z(i) = x(i): NEXT
k = 1
FOR i = n + k TO n + m: z(n + k) = y(k): k = k + 1: NEXT
FOR i = 1 TO n + m: PRINT z(i); : NEXT i
Рисунок 8. Массив
2.3 Основы векторного исчисления
2.3.1 Программа нахождения скалярного и векторного произведения векторов, угла между ними
INPUT "BBЕДИТЕ КООРДИНАТЫ ПЕРВОГО ВЕКТОРА"; x1, y1, z1
INPUT "BBЕДИТЕ КООРДИНАТЫ ВТОРОГО ВЕКТОРА "; x2, y2, z2
ska = x1 * x2 + y1 * y2 + z1 * z2
PRINT "СКАЛЯРНОЕ ПРОИЗВЕДЕНИЕ = "; ska
x3 = y1 * z2 - z1 * y2
y3 = x1 * z2 - z1 * x2
z3 = x1 * y2 - y1 * x2
PRINT "BEKTOPHOE ПPOUЗBEДEHИE a*b= "; x3, y3, z3
a = (x1 ^ 2 + y1 ^ 2 + z1 ^ 2) ^ (1 / 2)
b = (x2 ^ 2 + y2 ^ 2 + z2 ^ 2) ^ (1 / 2)
ugl = ska / (a * b)
PRINT "КОСИНУСУГЛАМЕЖДУВЕКТОРАМИРАВЕН"; ugl
Начало