Язык программирования QBasic.pptx
- Количество слайдов: 111
ЯЗЫК ПРОГРАММИРОВАНИЯ QBASIC
Beginners Allpurpose Symbolic Instruction Code • Разработан в 1965 г. В Дортмундском колледже • Авторы – Джордж Кеннеди и Томас Курц • Алфавит языка – набор символов: • A. . Z • a. . z • 0. . 9 • Знаки арифметических операций, а также целочисленного деления и возведения в степень • Знаки операций отношения (равно =, меньше <, больше >, меньше или равно <=, больше или равно >=, не равно <>) • Разделители (точка с запятой, запятая, тире , нижнее подчеркивание, кавычки, двоеточие) • Символы обозначения типов данных
Константы и переменные • С помощью символов можно записать более сложные конструкции языка – константы, переменные, функции, выражения, операторы • Константа – область памяти, имеющая неизменное значение в процессе выполнения программы • Различают константы числовые, символьные и логические. • 10 – числовая константа • False – логическая • “Abci” – символьная • Символьные константы должны заключаться в кавычки
Константы и переменные • Числовые константы бывают длинные целые, обычные и двойной точности. • 4. 01 D-10 – число двойной точности (4, 01 умноженное на 10 в минус десятой степени) • Помимо неименованных констант есть именованные – как символьные, так и числовые. Они объявляются ключевым словом CONST • T$ = “слово” • Здесь объявлена целочисленная константа NMAX (значение 200) • В дальнейшем к ней можно обращаться по имени.
Константы и переменные • Использование именованных констант имеет несколько преимуществ: • 1) Basic выполняет операции с константами быстрее, чем с переменными • 2) Определив константу, нельзя изменить её значение случайно (иначе ошибка: Error: dublicate definition) • Переменная – область памяти, значение которой можно изменить в процессе выполнения программы.
Константы и переменные • В Qbasic используются следующие переменные: • 1) Числовые • 2) Символьные (до 40 символов) • 3) Логические • 4) Массивы • Имя переменной начинается с латинской буквы или знака подчеркивания и не должно быть зарезервированным словом (NEXT, FOR и т. д. )
Типы данных Тип переменной Занимаемый Описание с Описание объем(в помощью DEF-типа AS-типа байтах) суффикса Диапазон значений Целая 2 DEFINT % Длинная целая 4 DEFLNG & Обычной точности 4 DEFSNG ! Двойной точности 8 DEFDBL # Строка фиксированной длины Kol DEFSTR $ STRING* Kol $ STRING 4 под описатель + 1 Строка переменной длины на каждый символ от -32 768 до +32 767 от -2 147 483 648 до LONG +2 147 483 647 от -3. 402823 Е+38 до 1. 40012985 Е-45 SINGLE и от +1. 40012985 Е-45 до +3. 402823 Е+38 от -1. 797693134862331 D+308 до DOUBLE -4. 940656458412465 D-324 и от +4. 940656458412465 D 324 до +1. 797693134862331 D+308 INTEGER
Числовые переменные • В QBasic тип числовой переменной можно задать • 1) Оператором • 2) Специальным символом • 3) Оператором описания типа • 4) По умолчанию; если тип не задан, то переменная становится вещественной обычной точности (Single); если значение переменной не задано, она по умолчанию равна нулю
Примеры задания переменных • Задать переменную – означает выделить в программе область памяти, в которой будет храниться значение определенного типа данных. • Присвоение переменной определенного значения проводится через знак равенства. Допустим, изначально а равно нулю. a = 10 Переменной а слева указывается значение справа (то есть 10). Теперь переменная а равна десяти. Увеличим значение а на единицу: а=а+1 Теперь а равно числу одиннадцать.
Примеры задания переменных • Задать строковую переменную а разными способами: DIM a AS STRING DEFSTR a a$ = "abcd" • Задать вещественную переменную обычной точности i разными способами: DIM i AS SINGLE DEFSNG i i! = 1. 05
Встроенные функции • ex – EXP(x) • Корень из x – SQR(x) • |x| - ABS(x) • Целая часть x – INT(x) • Округление x – FIX(x) • Случайное число от 0 до n включительно - INT(RND(1)*(n+1)) • Sign(x) – SGN(x) • Sin(x) – SIN(x) • Cos(x) – COS(x) • Arctg(x) – ATN(x) • Ln(x) – LOG(x) • Тригонометрические функции обрабатывают данные в радианах.
Функции, выражаемые через встроенные • Tg(x) = SIN(x) / COS(x) • Ctg(x) = COS(x) / SIN(x) • Arcsin(x) = ATN(x / SQR(1 – x*x)) • Arccos(x) = 2*ATN(1)-ATN(x/SQR(1 -x*x)) • Arcctg(x) = 2*ATN(1)-ATN(x) • Sec(x) = 1/COS(x) • Cosec(x) = 1/SIN(x)
Функции, выражаемые через встроенные • Гиперболич. Синус х ; Sh(x): SH(X)=(EXP(X)-EXP(-X))/2 • Гиперболич. Косинус х; Ch(x): CH(X)=( EXP(X)+EXP(-X))/2 • Гиперболич тангенс х; Th(x): TH(X)= (EXP(X)-EXP(-X))/(EXP(X)+EXP(-X)) • Гиперболич котангенс х; Cth(x): CTH(X)= (EXP(X)+EXP(-X))/ (EXP(X)-EXP(-X)) • Ареасинус х; Arsh(x): ARSH(X)=LOG(X+SQRT(X*X+1)) • Ареакосинус х; Arch(x): ARCH(X)=LOG(X+SQRT(X*X-1)) • Ареатангенс х; Arth(x): ARTH(X)= 0. 5*LOG((1+X)/(1 -X))
Массивы • Массив – объединение переменных одного типа в единую структуру. Обращение к отдельным элементам в массиве осуществляется по индексу. • Массив Cnt: • Cnt%(0) = 21 • Cnt%(1) = 34 • Cnt%(2) = 57 • Cnt%(3) = 20
Массивы • Примеры массивов: • 1) Список учеников в классе • 2) Квартиры в доме • 3) Школы в городе • Допустим, в программе необходимо 20 переменных для запоминания стоимостей каких-то товаров artpr 1, . . artpr 20. Переменные можно объявить следующим образом: • DIM artpr 1!, artpr 2!, . . . artpr 20! • Ввод данных выглядит так: INPUT “artpr 1 ", artpr 1! INPUT “artpr 20 ", artpr 20!
Массивы • В отличие от объявления простых переменных появляется новая спецификация — размерность. В ней указывается максимальное значение индекса массива. • Пример: DIM artlkel$(1 T 0 20) - 20 строковых элементов 1. . . 20 DIM prels%(5 TO 10) - 6 Integer-элементов 5. . . 10 DIM alter%(18 T 0 65) - 48 Integer-элементов 18. . . 65 • Если размерность массива не указать или обратиться к еще не объявленному массиву, то его размерность по умолчанию равна 10.
Массивы Пример ввода линейного (одномерного) массива: INPUT “введите n”; n DIM A(n) FOR i=1 TO n INPUT A(i) NEXT i
Массивы • Заполнить двумерный массив случайными числами и вывести на экран все элементы массива в формате A(n, m) = значение CLS INPUT "n=? ", n INPUT "m=? ", m DIM A(n, m) FOR i = 1 TO n FOR j = 1 TO m A(i, j) = INT(RND(1) * 50) PRINT "A("; : PRINT i; : PRINT ", "; : PRINT j; : PRINT ")="; PRINT A(i, j) NEXT j NEXT i END
Массивы Нахождение суммы элементов массива INPUT ”введите количество элементов массива”; n DIM A(n) FOR i=1 TO n INPUT “введите элементы массива”; A(i) s=s+A(i) NEXT i PRINT ”сумма элементов массива равна ”; s
Массивы Сформировать массив случайных элементов A(N), значения которых находятся в интервале (-10, 10). Подсчитать количество отрицательных элементов массива. INPUT “n=”; n DEFINT o DIM A(n) FOR i=1 TO n A(i) = INT(RND(1)*20 -10) PRINT A(i) NEXT i FOR i=1 TO n IF A(i)<0 THEN o=o+1 NEXT i PRINT “ отрицательных элементов”; o
Массивы • В QBasic массив может иметь несколько индексов. • Например, использование второго индекса позволяет обрабатывать двумерные таблицы. • Трехмерный массив можно представить как куб. • Можно описать массивы с четырьмя, пятью и более индексами. • Максимально допустимое число индексов для одного массива — 255.
Массивы Пример ввода двумерного массива • INPUT “введите n, m="; n, m • DIM A(n, m) • FOR i = 1 TO n • FOR j = 1 TO m • A(i, j) = INT((RND(1) * 20) + 10) • PRINT A(i, j) • NEXT j • NEXT i
Массивы • Нахождение максимального элемента в каждой строке массива • • • • M(n, m) INPUT “введите n и m"; n, m DIM A(n, m) FOR i = 1 TO n FOR j = 1 TO m A(i, j) = INT(RND(1) * 20) + 1 NEXT j NEXT i FOR i = 1 TO n max = 0 FOR j = 1 TO m IF A(i, j) > max THEN max = A(i, j) NEXT j PRINT max NEXT i
Алгоритмы линейной структуры • Линейные алгоритмы используют для решения относительно простых задач, не требующих разветвляющихся или циклических вычислений – расчеты математических формул, ввод и вывод информации, действия с файлами. • Вычисления проходят последовательно, от начала к концу.
Ввод данных • Для того чтобы машина выдала результат вычислений, как правило, требуется ввести исходные данные. Если мы хотим рассчитать Y, равный сумме A и B, то сначала нужно объяснить машине, чему равны A и B, и только после этого давать команду на выполнение расчета. • В программе число присваивается определенной переменной, и далее компьютер работает непосредственно с ней. • Такой подход позволяет удовлетворить требование массовости алгоритма.
Оператор INPUT Используется для ввода исходных данных в программу и имеет следующий формат: INPUT [: ] ["запрос" {; |, }] перем 1, перем 2. . . Где [: ] – необязательный параметр, дающий команду оставлять курсор в той же строке после ввода значения и нажатия Enter; ["запрос"{; |, }] – необязательный параметр, который выводит на экран текст, поясняющий, какую информацию нужно вводить пользователю. Текст всегда заключается в кавычки. После него обязательно ставится точка с запятой или запятая. Точка с запятой дает команду на вывод знака ? и пробела за ним на экран.
Оператор INPUT перем 1, перем 2… - обязательный параметр. Список переменных, которым присваиваются вводимые значения. Ввести информацию с помощью INPUT – значит после вывода на экран запроса набрать нужное значение с клавиатуры и нажать Enter. Если в INPUT несколько переменных, то следует ввести указанное количество значений в одну строку, разделяя их запятыми, и за последним нажать Enter.
Оператор INPUT Примеры. В них машина выводит запрос на ввод значения переменной A. В строке 4 вводятся значения двух переменных – A и B. № 1 2 3 4 В программе INPUT A INPUT "Введите A ", A INPUT "Введите A "; A INPUT "Введите A, B"; A, B На мониторе ? _ Введите A? _ Введите A, B? _
Оператор LINE INPUT • У оператора INPUT есть недостаток – при вводе текстовых выражений он воспринимает запятые в них как разделители отдельных значений, что приводит к ошибкам ввода. • Оператор LINE INPUT считывает всю фразу целиком и присваивает её одной текстовой переменной. • Формат оператора LINE INPUT: LINE INPUT [: ] ["Текст запроса" ; ] Текст. перем. [; ] – необязательный параметр, дающий команду оставить курсор в строке ввода после нажатия Enter. ["Текст запроса" ; ] – необязательный параметр, содержащий комментарий к запрашиваемой информации
Оператор LINE INPUT Пример использования оператора LINE INPUT. (Символ "$" означает, что переменная А имеет текстовый тип STRING. ) LINE INPUT "Введите ключевую фразу. "; A$ PRINT "Вы ввели - "; A$ Результат: Введите ключевую фразу. Казнить нельзя, помиловать. (Enter) Вы ввели – Казнить нельзя, помиловать.
Операторы READ, DATA • Если же данные не меняются с каждым новым запуском программы, но их объем велик для оператора присваивания, то ввод исходных данных осуществляется посредством операторов READ и DATA. • Оператор DATA хранит числовые или символьные данные для их последующего чтения оператором READ. • Оператор READ вводит переменные, для которых считывает и присваивает конкретные значения из оператора DATA.
Операторы READ, DATA • Тип данных в DATA должен соответствовать типу переменных в READ. • Например: READ x 1, x 2%, x 3$, x 4$ DATA 3. 5, -6, "режим", "20" • В результате оператор READ присвоит значения своим переменным в следующем порядке: x 1 = 3. 5, x 2% = -6, x 3$ = "режим", x 4$ = "20". • Оператор READ допускается помещать в любом месте многооператорной строки. • Оператор DATA должен быть либо единственным, либо последним оператором строки.
Операторы READ, DATA • Один оператор READ может читать несколько операторов DATA, и, наоборот, несколько операторов READ могут читать один оператор DATA. • Если список переменных короче, чем список данных, то следующий оператор READ начинает читать первый непрочитанный элемент
Операторы READ, DATA • Если данные не прочитаны никаким READ, то они игнорируются. Например: READ x 1, x 2, x 3, x 4 DATA 1, 2, 3 DATA 4, 5 или READ x 1, x 2 READ x 3, x 4 DATA 1, 2, 3, 4, 5 • Результат чтения и присваивания будет одинаковым: x 1 = 1, x 2 = 2, x 3 = 3, x 4 = 4, а 5 игнорируется.
Операторы READ, DATA • Программа для вывода элементов числовой последовательности и её проверочного вывода. PRINT "Числовая последовательность" DATA 3, -8, -4, 3, 7, 5, -2, 1, 9 , 2 FOR j = 1 TO 10 READ c(j) PRINT c(j); NEXT j END
Операторы READ, DATA • Оператор READ, поставленный в цикл FOR…NEXT, считывает переменную c(j) числа, содержащиеся в операторе DATA. • Знак точка с запятой в операторе PRINT позволяет вывести числовую последовательность в одной строке.
Оператор RESTORE • Оператор RESTORE позволяет повторно считать данные из списка DATA. Например READ x 1, x 2, x 3 RESTORE READ x 4, x 5, x 6 DATA 1, 2, 3 • Значения переменных будут следующими: x 1 = 1, x 2 = 2, x 3 = 3, x 4 = 1, x 5 = 2, x 6 = 3. RESTORE задает для READ возврат на считывание с начала данных из оператора DATA.
Вывод данных Если есть операторы ввода данных в программу, то должны быть и операторы, предназначенные для вывода результатов. Вывод осуществляется в подавляющем большинстве случаев на экран. Кроме того, можно выводить информацию в файл или на принтер.
Оператор PRINT • С помощью этого оператора на экран выводится текстовая и цифровая информация. • Формат оператора PRINT: PRINT [Выражение][{, |; }] Оба параметра стоят в квадратных скобках и оба необязательны. Если PRINT используется без параметров, то он выводит одну пустую строку. Это удобно для разделения логических блоков данных на экране. В качестве Выражения может быть текст в кавычках, число, переменная или математическое выражение без знака равенства (машина автоматически проведет расчет)
Оператор PRINT • {, |; } – знаки между выражениями. Эти знаки можно ставить • • и за последним выражением. Если указана запятая, то строка вывода разбивается на зоны по 14 символов и каждый элемент выводится в начало очередной зоны. Если указана точка с запятой, то следующий элемент будет выведен через один пробел за предыдущим. В том случае, когда точка с запятой или запятая стоят за последним выражением общего списка, информация, выводимая следующим по программе оператором PRINT, будет записана в эту же строку. Если же за последним выражением нет каких-либо знаков, то следующий PRINT будет выводить свои данные в следующую строку.
Оператор PRINT • Некоторые примеры. A=10, B=15, S=150. • После апострофа (') расположена информация, выводимая на монитор и комментарий к ней PRINT S PRINT "Длины сторон "; A, B PRINT "Площадь - "; A * B PRINT "A="; A; "B = "; B PRINT A; PRINT B PRINT SQR(9) PRINT "Quick" + "BASIC" '150 'Длины сторон 10 'Площадь - 150 'A=10 B = 15 'Пустая строка 15 '10 15 (работа [; ]) '3 (квадратный корень из 9) 'Quick. BASIC
Оператор PRINT • При выводе чисел перед каждым из них ставится пробел. • Если число отрицательное, то пробел заменяется знаком минус. • Текстовые данные выводятся вплотную друг к другу
Оператор LOCATE • Используется для указания строки и столбца, в которых нужно расположить курсор. • Если за ним расположить PRINT, то информация будет выведена именно в эту строку, начиная с указанного столбца.
Оператор LOCATE • Формат оператора LOCATE: LOCATE [строка][, столбец][, курсор][, нл] [, кл] Все параметры этого оператора являются необязательными. Если они не указаны, то курсор будет расположен в текущей строке. Если пропущен какой-либо из них, то Basic заменяет его текущим значением или параметром по умолчанию. строка – номер строки экрана, в которую ставится курсор. Целое число от 1 до числа строк, помещающихся на мониторе. В обычном режиме на экране помещается 25 строк.
Оператор LOCATE столбец – позиция в строке, в которую ставится курсор. Целое число от 1 до 80. курсор – параметр, включающий (1) или отключающий (0) вывод курсора на экран. нл – начальная скан-линия кл – конечная скан-линия
Оператор LOCATE • Например, вывести слово "Тест" в пятую строку и десятый столбец: • LOCATE 5, 10: PRINT "Тест" • Последние три параметра используются крайне редко.
Символы псевдографики • Отдельную область применения LOCATE составляют задачи вывода символов псевдографики. • Эти символы имеют такие же свойства, как и обычные буквы или цифры, но используются для составления графических изображений. • Такими наиболее понятными и простыми изображениями являются таблицы. • Таблицы складываются из определенных знаков, как мозаика. У каждого знака – угла, перекрестия, линии – есть свой номер, с помощью которого программа его идентифицирует.
Символы псевдографики ─ ┌ 196 │ 179 ═ 205 ║ 186 ┬ ┐ 218 194 191 ├ ┼ ┤ 195 197 180 └ ┴ ┘ 192 193 217 ╒ ╤ ╕ 213 209 184 ╞ ╪ ╡ 198 216 181 ╘ ╧ ╛ 212 207 190 ╓ ╥ ╖ 214 210 183 ╟ ╫ ╢ 199 215 182 ╙ ╨ ╜ 211 208 189 ╔ ╦ ╗ 201 203 187 ╠ ╬ ╣ 204 206 185 ╚ ╩ ╝ 200 202 188 Для вывода символов псевдографики служит функция CHR$ (произносится чар доллар). Формат функции для построения таблиц: LOCATE x, y: PRINT CHR$(n) где n – номер выводимого символа; x – номер строки; y – номер столбца
Символы псевдографики • Программы работы с псевдографикой, как правило, довольно длинные. • Если выводимое изображение не содержит элементов, которые можно решить в цикле (например, длинных линий), то каждый знак на экране – это строка в программе. • Например, построить одну ячейку таблицы с помощью символов псевдографики. В центр ячейки вывести текущее время.
Символы псевдографики LOCATE 5, 5: PRINT CHR$(218) LOCATE 5, 6: PRINT CHR$(196) LOCATE 5, 7: PRINT CHR$(196). . . LOCATE 5, 13: PRINT CHR$(196) LOCATE 5, 14: PRINT CHR$(191) LOCATE 6, 5: PRINT CHR$(179) LOCATE 6, 14: PRINT CHR$(179) LOCATE 7, 5: PRINT CHR$(192) LOCATE 7, 6: PRINT CHR$(196) LOCATE 7, 7: PRINT CHR$(196). . . LOCATE 7, 13: PRINT CHR$(196) LOCATE 7, 14: PRINT CHR$(217) DO LOCATE 6, 6: PRINT TIME$ LOOP WHILE INKEY$ = "" 'Левый верхний угол 'Верхняя линия 'Правый верхний угол 'Вертикали 'Левый нижний угол 'Нижняя линия 'Правый нижний угол 'Текущее время
Символы псевдографики • В результате на экране появится такая ячейка. Цифры по периметру обозначают координаты её углов и вертикальных линий. • Начало координат расположено в верхнем левом углу экрана – там, где находится первая строка и первый столбец. • Программа знак за знаком строит ячейку. Первым выводится в позицию 5, 5 левый верхний угол. Затем 8 строк выводят 8 знаков 196, образующих верхнюю горизонтальную линию.
Алгоритмы ветвления • В программах с ветвлением в зависимости от значений исходных данных может работать только одна из двух или нескольких ветвей (фрагментов программы). • Такая возможность реализуется посредством условных операторов. • В QBASIC такими операторами являются IF…THEN и SELECT CASE.
Оператор IF…THEN • IF…THEN…ELSE (ЕСЛИ…ТОГДА…ИНАЧЕ) – этот оператор осуществляет условное ветвление операций, основанное на оценке логического выражения которое может быть истинным или ложным. • Полная линейная форма в общем виде: IF (условие) THEN (операторы 1) ELSE (операторы 2)
Оператор IF…THEN • Если выполняется условие (условие истинно), то выполняются операторы, стоящие после THEN (операторы 1). • Если же условие не выполняется (условие ложно), то выполняются операторы, стоящие после ELSE (операторы 2). • После выполнения операторов 1 или операторов 2 программа переходит на следующую после оператора IF…THEN строку. • В операторах IF…THEN могут быть и сложные условия, задаваемые с помощью логических операторов.
Оператор IF…THEN Оператор Название Объяснение NOT Отрицание NOT A истинно тогда и только тогда, когда А ложно AND Логическое умножение A AND B истинно тогда и только тогда, когда истинно А и истинно D Логическое сложение A OR B истинно тогда и только тогда, когда хотябы одно из A и B истинно OR XOR Исключающее ИЛИ A XOR B истинно тогда и только тогда, когда значения A и B не совпадают EQV Эквивалентность A EQV B истинно тогда и только тогда, когда A и B одновременно истинны или ложны IMP Импликация A IMP B ложно, если A истинно, а B ложно, в других случаях A IMP B истинно
Оператор SELECT CASE • Оператор выполняет один или несколько блоков операторов в зависимости от значения выражения выбора. • Общий вид: SELECT CASE (выражение выбора) CASE (список выражений 1) (операторы блока 1) CASE (список выражений 2) (операторы блока 2) CASE (список выражений 3) (операторы блока 3) … CASE ELSE (операторы блока N) END SELECT
Оператор SELECT CASE • Здесь выражение выбора – любое числовое или символьное выражение (например, k – числовое или p$ - символьное) • Список выражений – одно или более выражений того же типа, что и выражение выбора. Списку выражений предшествует ключевое слово CASE • Операторы блока содержат любое количество операторов
Оператор FOR…NEXT • Оператор повторяет блок операторов указанное число раз. • Общий вид FOR i = n TO k STEP p (тело цикла) NEXT i • Где i – счетчик цикла, n – начальное значение счетчика, k – его конечное значение, p – шаг.
Оператор FOR…NEXT • В качестве параметров начала, конца и счетчика по умолчанию поддерживаются значения двойной точности, но предпочтительнее использовать целые переменные. • Шаг может быть положительным или отрицательным. Как правило, он выражается целым числом, но может быть и дробным. • Когда шаг положительный, то цикл будет выполняться, если начальное значение счетчика не превышает конечное. • При отрицательном шаге для выполнения цикла конечное значение должно быть меньше или равно начальному.
Оператор FOR…NEXT • По умолчанию шаг равен 1, в этом случае первая строка цикла обычно записывается без служебного слова STEP FOR i = n TO k • Между ключевыми словами цикла располагается повторяющийся указанное число раз блок операторов, называемый телом цикла.
Работа со строковыми переменными • Каждый символ, представленный на клавиатуре для компьютера, переводится в числовой код. Эти коды объединены в стандартную международную таблицу кодов ASCII (American Standard Code for Information Interchange). • Коды с 0 по 32 не имеют изображения на экране и служат для функций управления (клавиши управления курсором, пробел и пр. )
Работа со строковыми переменными • Далее – знаки препинания, цифры, строчные и прописные буквы латинского алфавита и другие символы на клавиатуре. Всего их 128. • Последующие 128 кодов в диапазоне от 129 до 255 служат для расширения возможностей клавиатуры, например для генерации национальных символов (пр. кириллицы).
Сложение текстовых переменных • Текстовые переменные можно складывать и сравнивать между собой. Сложение текстовых переменных называется конкатенацией. • Для сложения используют знак + • Сложение является сцеплением текстовых строк – вторая записывается вплотную за первой.
Сложение текстовых переменных • Сложить слова "Мой" и "компьютер", поставив между ними пробел: A$ = "Мой" B$ = "компьютер" C$ = A + " " + B PRINT C Результат: Мой компьютер
Сложение текстовых переменных • Другие математические действия с текстовыми переменными проводить нельзя. • Если указан знак, отличный от +, то будет выдано сообщение об ошибке Type mismatch.
Сравнение текстовых переменных • Сравнение текстовых переменных проводится с помощью стандартных операторов сравнения: =, >, <, >=, <>. • В ходе сравнения компьютер анализирует три основных параметра: количество символов, последовательность ASCII-кодов и номера ASCIIкодов. • Программа анализирует только соответствующие знаки: первый знак первой переменной сравнивается с первым знаком второй переменной, второй знак со вторым и так далее.
Сравнение текстовых переменных • Переменные равны, если они содержат равное количество одинаковых знаков, расположенных в одинаковой последовательности. Равны Не равны "aa" = "aa" <> " aa" "10" = "10" "Аврора" = "Аврора" "QB" = "Q" + "B" Причина Разное число знаков Нарушена последовательность "10" <> "01" "Аврора" <> "аврора" "А" и "а" имеют разный код "norma" <> "почта> На разных языках • Сравнивать переменные на равенство и выводить сообщение о результате можно в алгоритмах на основе оператора IF: INPUT A$: INPUT B$ IF A$ = B$ THEN PRINT "Равны" ELSE PRINT "Не равны"
Сравнение текстовых переменных • Одна текстовая переменная больше другой, если в ходе попарного сравнения соответствующих знаков очередной её символ имеет ASCII-код больше, чем соответствующий знак сравниваемой переменной. • Как только обнаруживается знак, ASCII-код которого больше или меньше, чем у соответствующего знака второй переменной, процесс сравнивания заканчивается и программа выводит результат.
Сравнение текстовых переменных Больше "ww 2" > "ww" Причина Три знака больше двух (если первые два знака равны) "ww 2" > "ww 0" ASCII-код цифры 2 (50) больше ASCIIкода цифры 0 (48) "f" > "F" ASCII-код буквы f (102) больше F (70) "A" > "A" ASCII-код русской буквы A (128) больше ASCII-кода латинской A (65) "file. dat" > "file. bas" ASCII-код d больше, чем ASCII-код b "21 " > "2" + "00" ASCII-код цифры 1 больше, чем ASCIIкод цифры 0
Функция LEN • Предназначена для определения количества символов в текстовой переменной. LEN(символьное_выражение) • символьное_выражение – выражение, результат которого представлен величиной текстового типа. • Это может быть отдельная текстовая переменная, текст в кавычках, сумма переменных, символьная функция с соответствующим аргументом и пр.
Функция LEN • Определить количество знаков в текстовой переменной и в сумме с текстовой переменной и строки текста в кавычках: A$ = "Информатика" X = LEN(A$): PRINT X PRINT LEN(A$ + "BASIC") • Результат: 11 16
Функция LEFT$ • Применяется для выделения заданного количества левых (первых) символов текстового выражения. • Выделенные символы можно присвоить другой переменной или использовать как часть общего выражения. • Содержание исходной строки не изменяется. LEFT$(символьное_выражение, N) • символьное выражение – текстовая переменная, символы в кавычках или выражение, результатом вычисления которого является строковое значение. • N – количество левых знаков символьного выражения, это может быть число, переменная или математическое выражение с целым положительным результатом.
Функция LEFT$ • Пример работы функции LEFT$ A$ = "Microsoft" B$ = "LEFT$(A$, 5): PRINT B$ PRINT LEFT$(A$, LEN(A$) - 4) PRINT LEFT$("Computer", 4) + "IBM" • Результат: Micro Comp. IBM
Функция RIGHT$ • Аналогична функции LEFT$, только предназначена для выделения указанного количества правых (последних) символов переменной. RIGHT$(символьное_выражение, N) • Описание аргументов функции соответствует описанию аргументов функции LEFT$, приведенных ранее.
Функция MID$ • Предназначена для выделения n символов из символьного выражения, начиная с k-го. MID$(символьное_выражение, k, [, n]) • символьное_выражение – строка, из которой выделяется указанное кол-во символов • k – номер символа, с которого начинается выделение. • Если значение k больше, чем количество символов в анализируемом тексте, то MID$ возвращает строку нулевой длины (""). Если k равно нулю или отрицательно, то появляется сообщение illegal function call (неверный вызов функции).
Функция MID$ • n – кол-во последовательных символов, которые нужно выделить. • Если n не указано или n < k, то выделяются все символы, с k-го и до конца строки. • При n = 0 функция возвращает пустую строку.
Функция MID$ • Пример работы функции MID$: A$ = "ИНФОРМАТИКА" M$ = MID$(A$, 3, 6) PRINT M$ PRINT MID$(A$, 3) • Результат ФОРМАТИКА
Оператор MID$ • Предназначен для замены n символов текстовой переменной, начиная с k-го, на знаки другого символьного выражения. • Оператор изменяет значение текстовой переменной. • Согласно формату он замещает n знаков текстовой переменной, начиная с k-го, на первые n знаков текстового выражения, стоящего справа от знака равенства. • Например: A$ = "123456" MID$(A$, 3, 2) = "abc" PRINT A$ • Результат: 12 ab 56
Оператор MID$ • Формат оператора таков: MID$(текст. _перем. , k[, n]) = символьное_вырежение • k – номер знака в текстовой переменной, с которого начинается замещение. • Если k больше длины текстовой переменной, равен нулю или имеет отрицательное значение, то выводится сообщение об ошибке illegal function call.
Оператор MID$ • n – количество замещаемых символов. Если оно не указано или k + n больше длины текстовой переменной, то замещаются все символы переменной, начиная с k-го, но длина полученной строки не может превышать исходной длины текстовой_переменной. • символьное_выражение – строка, первые n символов которой внедряются в текстовую_переменную. • Если символов в выражении меньше n, то используется столько знаков, сколько есть.
Оператор MID$ • Примеры работы оператора MID$: A$ = "123456": MID$(A$, 1, 3) = "abc" PRINT A$ A$ = "123456": MID$(A$, 5, 3) = "abc" PRINT A$ A$ = "123456": MID$(A$, 2) = "abcdefghijk" PRINT A$ A$ = "123456": MID(A$, 4, 2) = MID$("abc", 2, 1) PRINT A$ • Результат: abc 456 1234 ab 1 abcde 123 b 56
Функция INSTR • Определяет, входит ли одна текстовая переменная в другую. • Если результат положительный, то функция возвращает номер символа, с которого начинается вхождение, иначе возвращает нуль. INSRT([k], текст_выраж_1, текст_выраж_2) • Функция проверяет наличие текстового_выражения_2 в текстовом_выражении_1. • Число k задает номер символа, с которого начинается поиск вхождения. • Если k не указано, то поиск начинается с первого знака.
Функция INSTR • Пример использования: A$ = "Кавказ" B$ = "a" PRINT INSTR(A$, B$) PRINT INSTR(3, A$, B$) • Результат: 2 5 • Первая функция INSTR начинает поиск вхождения "а" в слово "Кавказ" с первого символа и возвращает номер первого вхождения (2) • Вторая функция начинает поиск с третьей позиции и возвращает число 5.
Функции LTRIM$ и RTRIM$ • Эти функции используются для удаления первых (левых) и последних (правых) пробелов текстового выражения, если начальные и концевые пробелы есть. LTRIM$(текстовое_выражение) RTRIM$(текстовое_выражение)
Функция ASC • Возвращает код ASCII, соответствующий указанному знаку. ASC(символьное_выражение) • В качестве символьного_выражения можно использовать текст в кавычках, строковую переменную или выражение с текстовым результатом. • Функция возвращает ASCII-код только первого знака строки.
Функция ASC • Пример использования: PRINT ASC("A"); ASC("AB") • Результат: 65 65
Функция CHR$ • Выводит на экран символ, соответствующий определенному номеру в таблице ASCII. CHR$(n) • n – код из таблицы ASCII. • n должно попасть в диапазон от 0 до 255, иначе будет выведено сообщение об ошибке illegal function call.
Графические операторы • Начинать программы, строящие графические изображения, следует с оператора CLS – оператора, очищающего дисплей. • Оператор CLS может иметь следующие аргументы: 1) CLS 0 – очищает и текстовый, и графический экраны 2) CLS 1 – очищает только графический экран, если он активен 3) CLS 2 – очищает только текстовый экран, исключая нижнюю строку • Если все аргументы этого оператора опущены, то очищаются и графический, и текстовый экраны, установленные оператором VIEW или взятые по умолчанию.
Оператор SCREEN • Это графический оператор, устанавливающий спецификацию экрана. • Целое число после оператора, например SCREEN 9, указывает на режим экрана. • По умолчанию QBASIC устанавливает SCREEN 0 (текстовый режим)
Оператор SCREEN Номер режима Разрешение Количество цветов 0 1 2 7 8 9 10 11 12 13 Текстовый режим 320 x 200 640 x 350 640 x 480 320 x 200 16 4 2 16 16 16 2 2 16 256 Количество страниц видеопамяти от 1 до 8 1 1 8 4 2 2 1 1 1
Оператор COLOR • Предназначен для изменения цвета символов или цвета точек и линий, если цвет в соответствующих операторах (PSET, LINE, CIRCLE) не указан в явном виде. COLOR n 1, n 2 • n 1 – основной цвет (цвет символов и графики) • n 2 – цвет экрана (фоновый) • Например, так устанавливается темно-синий основной цвет и белый фон: COLOR 1, 15
Оператор COLOR • Чтобы изменить только основной цвет, оставляя прежним цвет фона, нужно выполнить оператор: COLOR 14 • Для изменения только цвета фона: COLOR , 15 Номер 0 1 2 3 4 5 6 7 Цвет Черный Синий Зеленый Голубой Красный Фиолетовый Коричневый Светло-серый Номер 8 9 10 11 12 13 14 15 Цвет Темно-серый Светло-синий Светло-зеленый Светло-голубой Светло-красный Васильковый Желтый Ярко-белый
Оператор CIRCLE • Это оператор, рисующий эллипс или окружность с определенным центром и радиусом. CIRCLE (x, y), R, cv, nd, kd, sj • (x, y) – экранные координаты центра окружности или эллипса • R – радиус окружности или эллипса в текущей координатной системе • cv – атрибут цвета, по умолчанию – основной цвет • nd – начало дуги • kd – конец дуги
Оператор CIRCLE • sj – коэффициент сжатия – отношение радиуса по y к радиусу по x. По умолчанию этот коэффициент принимается таким, как для рисования окружности. • Отношение определяется следующим образом: 4 * (y-координата точки / x-координата точки) / 3 • y-координаты и x-координаты точки определяются разрешением экрана. • Например, если оператором SCREEN 1 установлен режим экрана 1, то разрешение экрана будет 320 x 200 • Следовательно, коэффициент сжатия будет равен 4 * (200 / 320) / 3 = 5/6
Оператор CIRCLE • Параметры nd и kd используются для рисования дуг. • Их значения находятся в пределах от -2 * Pi до 2*Pi радиан. • По умолчанию nd = 0, kd = 2 * Pi • Если nd и kd > 0, то рисуется только дуга, а если nd и kd < 0, то рисуется дуга и радиус до этой точки (начальный угол должен быть меньше конечного). • Если указан конец дуги без начала, то дуга рисуется от указанного конца до 0.
Оператор CIRCLE • Нарисовать сектор в четверть круга с координатами x = 100, y = 100 и радиусом R = 50: CIRCLE (100, 100), 50, 1, -0. 001, -1. 57 • Нарисовать радиус при nd = 0 невозможно, поэтому используется очень малое отрицательное значение.
Оператор PAINT • Закрашивает ограниченную область указанным цветом или образом. PAINT (x, y), cv. Z, cv. R • (x, y) – координаты точки, с которой начинается заливка. Точка может быть указана внутри замкнутого круга или вне его, но не на границе. Если точка вне контура, то закрашивается фон. • cv. Z – цвет заливки, числовое или символьное выражение. Если аргумент не указан, то используется цвет фона. • cv. R – цвет рамки, числовое выражение, определяющее атрибут цвета замкнутого контура. Если это не указано, то используется цвет из cv. Z.
Оператор PAINT • Контур должен быть замкнут и выполнен линиями одного цвета – цвета рамки cv. R. • Если же в контуре хоть одна точка другого цвета, то такой контур уже не считается замкнутым. • Нарисовать окружность белого цвета (15) и закрасить её ярко-красным цветом (12): CIRCLE (100, 70), 50, 15 PAINT(100, 70), 12, 15
Оператор LINE • Рисует линию или прямоугольник LINE (x. N, y. N) – (x. K, y. K), cv, • (x. N, y. N) – координаты начала линии • (x. K, y. K) – координаты конца линии • cv – номер цвета линии. Если не указан, линия рисуется основным цветом, если указан 0 – рисуется цветом фона • Нарисовать темно-синюю линию от точки с координатами x=20 y=20 до точки с координатами x=120 y=35 LINE (20, 20) - (120, 35), 1
Оператор LINE • B – дополнительная опция, задающая рисование прямоугольника с вертикальными и горизонтальными сторонами. LINE (x. N, y. N) – (x. K, y. K), cv, B • (x. N, y. N) – координаты левого верхнего угла • (x. K, y. K) – координаты нижнего правого угла LINE (20, 20) - (120, 35), B BF – опция, задающая закрашивание нарисованного прямоугольника указанным цветом cv. LINE (20, 20) - (120, 35), BF
Оператор LINE • Можно также указать стиль линии, например штриховкой: LINE (20, 20) - (120, 35), B, &HF 0 F 0
Оператор DRAW • Для расширения возможностей машинной графики в BASIC был разработан специальный макроязык GML. • Он позволяет строить довольно сложные изображения и быстро выводить их на экран. • Каждая команда языка представляет собой латинскую букву, после которой следует один или два числовых параметра. • Для приведения в действие команд GML используется оператор DRAW посл. _команд • посл. _команд – строка в кавычках или строковое выражение, содержащее последовательность команд языка GML.
Оператор DRAW • Команды для макроязыка: Un - переместиться вверх на n точек Dn - переместиться вниз на n точек Ln - переместиться влево на n точек Rn - переместиться вправо на n точек En - переместиться по диагонали вверх и вправо на n точек Fn - переместиться по диагонали вниз и вправо на n точек Gn - переместиться по диагонали вниз и влево на n точек Hn - переместиться по диагонали вверх и влево на n точек Mx, y - переместиться в точку (x, y)
Оператор DRAW M+-n, +-m - переместиться на +-n точек по оси X и на +m точек по оси Y. At - Поворот изображения вокруг точки, с которой начиналось рисование на 90 градусов*t, где t = 0, 1, 2 или 3 Действует во всех дальнейших командах до нового назначения. Cn - Задание нового цвета. Действует во всех дальнейших командах до нового назначения. Sn - Расстояние указанное в командах, умножается на n/4. (0<=n<=255) B - переместиться в новую позицию, но рисование не производить. Отменяется командой Cn.
Оператор DRAW N - выполнить следующую команду перемещения и вернуться в исходную позицию. Pc 1, c 2 – заполнить контур цветом. c 1 - цвет заполнения, c 2 - цвет контура.
Оператор DRAW • Нарисовать квадрат DRAW "R 50 D 50 L 50 U 50" • Пробелы между командами необязательны. • Возможно и использование строковой переменной ris$ = "R 50 D 50 L 50 U 50" DRAW ris$
Оператор PLAY • Оператор позволяет проигрывать мелодии средствами внутрекорпусного динамика компьютера. • В QBasic ноты кодируются с помощью определенных букв и цифр.
Оператор PLAY • Для задания октавы используется команда О с указанием номера октавы. Возможны значения от О 0 до О 6. • По умолчанию устанавливается средняя октава О 4. • Для смены октавы на следующую, более высокую, можно поставить знак >, а для перехода на более низкую — знак <. • Для обозначения длительности звучания нот служит команда L, которая ставится в начале музыкальной строки. • Если в музыкальной фразе встречается нота с другой длительностью, то рядом с обозначением этой ноты указывается ее длительность (буква L опускается).
Оператор PLAY • Рядом с буквенным обозначением ноты ставится точка, например, С 4. # — диез обозначается знаком + ♭— бемоль обозначается знаком – • Например: • • ♩# — С+
Оператор PLAY • Для указания пауз используется команда Р, после которой указывается длительность паузы. • Например: PLAY "A A P 4 В" • Темп музыки задается командой Т • Команда Т изменяется от Т 32 до Т 255 (самый быстрый темп). • По умолчанию устанавливается средний темп Т 120.
• Последовательность записи мелодии такова: ОПЕРАТОР (PLAY) ОКТАВА (О 4) ДЛИТЕЛЬНОСТЬ ЗВУЧАНИЯ НОТ (L 4) ТЕМП МУЗЫКИ (Т 120) • Темп музыки, октаву, длительность звучания нот указывают до записи мелодии.
Язык программирования QBasic.pptx