close

Вход

Забыли?

вход по аккаунту

?

38.Яковлев М. Н. Информатика (языки программирования Quick Visual Basic)

код для вставкиСкачать
Министерство образования Российской Федерации
Воронежская государственная лесотехническая академия
И Н Ф О Р МА Т И К А
Учебное пособие
по языкам программирования Quick, Visual Basic
Воронеж 2002
УДК 519.682
Я 47
Яковлев М.Н. Информатика. Учеб. пособие по языкам программирования
Quick, Visual Basic. / М.Н. Яковлев, Е.В. Зоненко,- Воронеж: Воронеж. гос. лесотехн. акад., 2002. - 56 с.
2
Учебное пособие содержит основные сведения теории трансляторов языков
высокого уровня, по командам окон пользователя языков Quick, Visual Basic и
теории использования операторов и кодов. В пособии приведено достаточное
количество примеров программ по применению операторов, дан сквозной
пример программирования задачи севооборота на языке Visual Basic. Разделы
пособия содержат рекомендации к практической работе на ПК.
Издание рассчитано на студентов дневной и заочной форм обучения специальностей и может быть использовано студентами других специальностей при
работе на ПК типа IBM PC.
Печатается по решению редакционно-издательского совета ВГЛТА
Рецензенты:
Кафедра ПМиЭММ Воронеж. гос. технологич. академии.
Проф. каф. АХТП ВГТА, В.Ф. Лебедев
УДК 519.682
 Яковлев М.Н.
Зоненко Е.В., 2002
 Воронежская
государственная
лесотехническая
академия, 2002
Оглавление
Введение ......................................................................................................3
Раздел 1. Понятие о программировании ....................................................4
Трансляторы: компиляторы + интерпретаторы…………………….…….4
Программирование в Qbasic…………………………………...……….….5
Запись информации в программе……………………..………….……….6
Ввод информации в ПК …………………………………..……...………..8
Задание значений переменным …………………………..……….…....…9
Арифметические операторы ……………………………..……….………11
Операторы изменения порядка выполнения программы …………...….12
Вывод информации на экран …………………………………………..…16
Графический режим программирования в яз. Qbasic……………………20
Пример программы на использование операторов Qbasic……………....23
Редактор Qbasic………………………………………………….……..…..25
Вопросы для повторения материала………………………………………27
Раздел 2. Рабочая среда Vbasic ...................................................................29
3
Основы программирования в Vbasic ..........................................................32
Объявление переменных..............................................................................32
Использование констант .............................................................................33
Создание процедур и функций ...................................................................34
Операторы управления ходом программы ................................................40
Управление работой принтера ....................................................................46
Вопросы для повторения материала ..........................................................48
Примеры программ ..............................................…………........................50
Заключение ………………………………………………………………..55
Библиографический список ……………………………………………...56
Введение
Бейсик можно считать долгожителем: появившись на свет одним из первых
среди языков высокого уровня, он пережил как своих «ровесников», так и многих из тех, кто пришел значительно позже. Число версий Бейсика, созданных за
прошедшие годы очень много. И сегодня такая версия Бейсика, как Microsoft
Quick Basic for Windows продолжает развиваться и не испытывает видимых
признаков устаревания. Это объясняется удачной комбинацией легкости изучения Бейсика и полезности знаний, так что последующий переход к использованию других «профессиональных» языков программирования становится
простым и естественным.
Важное место в среде версий языков Basic занимает Quick (быстрый) Basic,
реализованный в операционных системах MS_DOS, Windows и других. В этой
версии Бейсика используются ставшие стандартными принципы построения
языков программирования, как реализация основных управляющих структур,
возможность работы со сложными структурами данных, универсальные возможности работы с файлами. При использовании этого языка основной акцент
делается на коренные алгоритмические принципы программирования, необходимые каждому, кто пишет программы. Использование Quick Basic позволяет
применять современные принципы событийно-ориентированного программирования, которые реализованы в языке Visual Basic.
Изучение и использование QBasic и VBasic позволяет создавать достаточно
сложные приложения. Освоение системы QBasic дает возможность использовать средства языка Visual Basic, используемого во многих программных приложениях. Материал учебного пособия предназначен для использования студентами в подготовке к лабораторным занятиям, углубленного изучения программирования в дополнение к лекционному курсу, подготовке к зачету и экзамену по дисциплине “Информатика”. В разработке и отладке программ использованных в пособии принимал участие студент ЛХ факультета Луговской
А.Н..
Раздел 1. Понятие о программировании
Высокоуровневые языки программирования являются развитием и совершенствованием инструкций машинного кода и предназначены для написания
программ с помощью привычных человеку терминов. Они манипулируют не
4
конкретными ячейками памяти и элементарными инструкциями, а командами
напоминающими естественный язык. В дальнейшем, эти команды с помощью
специальных программ автоматически переводятся в машинный код.
Бейсик (Basic, Beginner's All-purpose Symbolic Instmction Code), многоцелевой
символический код для начинающих), был разработан в начале 60 годов в Дартмутском колледже для учебных целей. Благодаря своей простоте он быстро завоевал. Этот язык реализован для множества операционных систем. В частности, для операционной системы MS-DOS имеется версия QBasic и Visual Basic
for MS-DOS, для Windows почти каждый год выходит новая версия Visual
Basic. Во все офисные приложения компания Microsoft встроила язык Visual
Basic for Applications (VBA), используемый в них в качестве своеобразного
макроязыка. Хорошо зная одну, базовую версию Бейсика — QBasic, в дальнейшем можно свободно переходить к работе с другими версиями этого простого и
очень популярного языка. Кроме того, знание Бейсика очень желательно, если
вы хотите в будущем писать программы для Windows.
Трансляторы: компиляторы + интерпретаторы
Для того чтобы набранный на каком-то языке программирования исходный
текст приложения заработал, стал полноценной программой и смог выполнять
заложенные в него команды, применяются так называемые трансляторы.
Транслятор - это специальная программа, которая автоматически превращает
исходные тексты в работающее приложение. Возможны два подхода. Исходный
текст, например, набор инструкций Бейсика, переводится непосредственно в
машинный код — при этом сразу формируется файл программы, отвечающий
всем требованиям операционной системы. Такой процесс перевода исходного
текста в инструкции процессора и прерывания системы называется компиляцией, а программы, выполняющие этот процесс, — компиляторами. Компиляторы созданы сегодня абсолютно для всех более-менее популярных языков
программирования, в том числе и для Бейсика.
Есть и другой подход. Каждая команда исходного текста не переводится в машинный код, а сразу исполняется специальной программой-интерпретатор,
которая интерпретирует исходный текст в команды языка , и покомандно его
выполняет.
Результат запуска исполняемого файла, созданного компилятором и интерпретатором полностью совпадают. Для обучения программированию лучше всего
подходит интерпретатор, позволяющий исследовать изучаемый язык с самых
разных сторон и создавать различные варианты программ. Практически для
всех языков, для которых разработаны интерпретаторы, выпущены и компиляторы.
Компиляция в промежуточный код получила сегодня очень широкое распространение, во многом потому, что такой промежуточный код, если его структуру хорошо продумать, можно интерпретировать очень быстро (за исключением
чисто счетных задач), и при этом подобный код не будет зависеть от операционной системы: главное, чтобы для конкретного компьютера был реализован
интерпретатор этого кода. То есть даже скомпилированную в промежуточный
5
код программу удастся без изменений запускать на самых разных аппаратных
платформах: и на персональных компьютерах, и на суперЭВМ.
Программирование в Qbasic
Для вызова интерпретатора языка в системе MS DOS (NC) используется командная строка QBAS\qbasic.exe , в системе Windows значок
QuickBASIC.pif
Программа на Бейсике представляет собой набор операторов, которые последовательно выполняются и решают определенную задачу. С помощью операторов
QBasic можно производить вычисления, хранить промежуточные результаты,
осуществлять те или иные действия в зависимости от состояния созданных в
программе объектов, выводить информацию на принтер или экран в текстовом
или графическом виде, обрабатывать действия пользователя, работать с файлами, управлять памятью и реагировать на всевозможные исключительные ситуации и ошибки, которые могут возникнуть в ходе выполнения программы.
Бейсик обеспечивает два режима работы экрана монитора: текстовый и графический. Текстовый режим создает на экране 25 строк по 80 позиций (колонок) в строке. Каждая позиция экрана может содержать любой знак из кодовой
таблицы ПК. Графический режим формирует изображения (текст, числа, рисунки и т. д.) соответствующим набором точек (пикселов) по экрану.
Нумерация (метка) строк (операторов)
Метка представляет собой либо алфавитно-цифровую метку, либо
номер строки, идентифицирующие программную строку. Номера строк и
метки взаимозаменяемы, за исключением того, что метки не должны появляться в строке сами по себе, как таковые (пустые строки). Каждый оператор
Бейсика может иметь свой номер. Номер ставится слева от оператора и отделяется от него одним или несколькими пробелами. Номер должен быть неотрицательным числом (возможно, с точкой). Разрешается использовать числа, следующие друг за другом в произвольной последовательности. На порядке выполнения операторов нумерация не сказывается. В частности, программу из
трех строк можно переписать так:
0 DIM Str$
2.0 Str$ = "ВГЛТА"
300 PRINT Str$
или так:
12 DIM Str$
30.0 Str$ = "ВГЛТА"
0 PRINT Str$
Если операторов больше, чем может вместить одна строка, можно использовать знак продолжения строки (низкая черта) и распространить единую логическую строку на несколько физических строк.
Например, нижеследующая запись верна:
6
IF a < b THEN t = 15 : u = 16 : v = 17_
ELSE t = 17 : u = 16 : v = 15
Комментарии в программе
Программу очень полезно сопровождать комментариями, чтобы в дальнейшем сразу понимать, что происходит в различных ее частях. Комментировать
нужно не оператор Бейсика, а выполняемое им действие. Например, оператор
Н# = 6 правильно снабдить не очевидными словами “в переменную Н#
записывается число 60”, а осмысленным текстом: `Высота сосны 6 м .
Комментарии к строкам программ могут содержать любой текст, который
должен начинается с символа ' (одиночная кавычка). Все символы, следующие
за такой кавычкой до конца текущей строки, интерпретатором просто пропускаются.
Н# = 6 `Высота сосны 6 м.
Комментарий можно начинать и с первой позиции: '— вся эта строка - комментарий .
Вместо символа ' в первой позиции может использоваться оператор REM.
REM Высота сосны 6 м
Перед ним в строке могут идти только пробелы. Кроме того, при записи операторов Бейсика в тех местах, где допускаются пробелы, их можно использовать
в неограниченном количестве для повышения удобочитаемости исходного текста программы. Например: 10 Н# = 6 ' пробелы хороши в меру
Запись информации в программе
Числовые константы
Чтобы программа понимала, какие данные соответствуют той или иной переменной, они делятся на типы: числовые, текстовые и т. д. Переменные конкретного типа могут содержать только соответствующую этому типу информацию
или константы.
В переменных могут храниться числа или строковые сообщения (текстовые
константы). Числа в Бейсике бывают целые или дробные, с десятичной частью.
Дробные числа (их называют числами с плавающей точкой) в свою очередь
записываются как в обычной форме (в качестве десятичного разделителя используется символ точки “.”), так и в показательной форме . Например, записать число 1 230 000 000 в Бейсике можно так: 1.23E+9 (1,23,умноженное на 10
в 9 степени).
А число 0,00000123 будет выглядеть следующим образом: 1.23E-6 (1,23, деленное на 10 в 6 степени).
Символ экспоненты Е используется вместо основания 10, если число необходимо представить с одинарной точностью (Single,!). Если необходима двойная
точность (Double,#), то вместо символа Е применяется символ D: 5.5D+123.
Перед отрицательными числами спереди указывается знак “—”. Пробелы в записи чисел не допускаются. Например: -25, 3.1415 , 2E22, -0, 7.34D-243 .
7
В Бейсике допустимо записывать числа с плавающей точкой с нулевой
целой частью (например, 0,333) без нуля перед точкой: запись .333 соответствует числу 0,333; запись -.15 соответствует числу -0,15.
Текстовые константы (строки)
Текстовые константы (строки) в Бейсике берутся в двойные кавычки ("). Максимальная длина строки 32 767 символов, минимальная — 0 (пустая строка).
Внутри строки допускается использование различных символов, в том числе и
русских букв, например:
"Это строка" , "123,45 output \\".
Фиксированные константы
Для ввода часто повторяющейся информации (чисел, текста) используемой в
программе, с целью удобства и уменьшения ошибок при вводе ее, в Qbasic
можно всем числовым или строковым константам, которые встречаются в программе более одного раза, дать имена, как переменным. Для этого предназначен
оператор
CONST {имя константы} = {выражение}
Например, вместо числа 0,001 можно использовать константу POROG (имена
констант для удобства отличия их от переменных записывают, как правило,
большими буквами): CONST POROG = 0.001
Размещаются операторы описания констант обычно в самом начале программы.
В дальнейшем, если потребуется изменить значение константы, достаточно
поменять число 0,001 в одном месте.
Переменные
Чтобы интерпретатор знал, какие переменные будут использоваться в программе, и зарезервировал для них место в оперативной памяти, эти переменные
надо явно описать (объявить или декларировать). Для этого применяется оператор DIM. Он записывается в следующем виде:
DIM {имя - переменной} AS {тип}
В качестве имени переменной может использоваться любая комбинация английских букв и цифр (без пробелов), начинающаяся с буквы. Длина этой последовательности должна быть не менее одного символа и не более 40.
Ниже приведены типы переменных в Qbasic.
Название ТИПА переменных
Диапазон значений констант
INTEGER - целочисленные
от -32 768 до 32 767
LONG - целочисленные с расширением от -2 147 483 648 до 2 147 484 647
SINGLE - вещественные
от -3.402823Е+38 до 3.402823Е+38
STRING - строковая с переменной длиной от 0 до 32 767 символов
STRING * n - строковая с зад. количеством символов n от 0 до 32 767.
Например: DIM x AS INTEGER, DIM s AS STRING, DIM str AS STRING*500,
Где: x, s, str - имена переменных. В одном операторе DIM можно указывать несколько переменных. Их описания отделяются друг от друга запятыми: DIM I
AS DOUBLE, s1 AS STRING * 500, sgl AS SINGLE.
Оператор DIM можно использовать в любом месте программы, но лучше всего
это делать в самом ее начале. Если описывать переменные в середине текста, то
8
использовать эти переменные в операторах, предшествующих оператору DIM
нельзя.Бейсик не требует обязательного описания всех используемых в программе переменных. Если интерпретатор встречает переменную, которая не
была до этого описана в операторе DIM, то он автоматически отводит ей место
в памяти в зависимости от ее названия. Оператор DIM позволяет использовать
переменные с индексами и в зависимости от значений индексов отводит необходимое место в памяти ПК. Например. DIM К(100) AS INTEGER – автоматически будет выделена память для 100 значений К. По умолчанию считается, что
не описанная ранее переменная имеет тип SINGLE. Без указания оператора
DIM после переменных можно указывать их тип символами. Символы, характеризующие типы переменных.
Тип переменной
Символ
INTEGER (целочисленные )
- %
LONG (целочисленные с расширением)
- &
SINGLE (вещественные)
- !
STRING (строка с переменной длиной)
- $
Например: i%, Long Var&, sg!, str$
Символы, характеризующие тип переменной, нельзя использовать в операторе DIM: DIM S$ AS STRING ' НЕВЕРНО!
Если же переменная была произвольно введена в программу, а ее тип указан с
помощью соответствующего символа, то обращаться к такой переменной можно, только обязательно записывая в конце символ, ее типа (Х$). Обращение к
переменной Х (без $) будет расценено интерпретатором как обращение к другой переменной типа SINGLE.
Ввод информации в ПК
Ввод информации с клавиатуры при выполнении программы
Для ввода информации (численной и текстовой) в ПК в Бейсике предназначен
оператор INPUT. Общий вид :INPUT {подсказка}; {список переменных}.
При выполнении оператора ввода, сначала на экран выводится строкаподсказка , а потом список переменных, в которые будут вводиться набираемые
оператором значения (после ввода числа или строки надо нажать клавишу
ENTER). Например, чтобы ввести значение 5 для переменной Х%, надо указать
в программе оператор ввода: INPUT "Введите значение X: "; Х%
Когда этот оператор будет выполняться, на экране покажется подсказка:
Введите значение X: ?
За знаком ? надо ввести 5 и нажать клавишу ENTER. Выполнение программы
продолжится. Если при отделении подсказки от списка переменных использовать не точку с запятой, а запятую, то знак вопроса печататься не будет. В операторе INPUT можно указывать несколько переменных, например:
INPUT
X%, S$.
9
При вводе с клавиатуры нескольких значений в одном операторе эти значения
надо разделять запятыми, то есть при выполнении данного оператора на подсказку QBasica надо ввести, например: ? 5, строка
Если вводится неправильная информация (несоответствующая типу переменных, слишком мало или слишком много значений и т. д.), то выполнение останавливается, исправляется ошибка и программа перезапускает- ся с самого начала.
Наличие ;(точки с запятой) после оператора INPUT; обеспечивает расположение ввода или вывода данных на экране для последующих операторов (INPUT,
PRINT) последовательно на одной строке, отсутствие - с новой строки.
Ввод информации при составлении программы
Оператор INPUT удобно применять, если необходимо ввести относительно
небольшое число констант. Когда требуется ввести например тысячу значений
констант, заранее подготовленных (перечисленных через запятую) и набранных
в редакторе, то их можно включить в программу с помощью оператора DATA.
Этот оператор данные для автоматического присваивания их переменным.
DATA {список констант}
DATA 10, 100, 3, 99
Ввод констант заключается в присвоении их значений переменным в операторе
READ {список переменных}.
READ х1, х2
Интерпретатор поймет, что надо взять очередные два значения (так как указаны
две переменные) из оператора DATA (сначала будут взяты числа 10 и 100), и
присвоить их переменным х1 и х2. При следующем обращении к оператору
READ будут использованы следующие значения. Например, оператор READ хЗ
считает в переменную хЗ значение 3 и т. д.
В любой момент можно перейти к присваиванию значений из оператора DATA
с самою начала, использовав оператор RESTORE. To есть, если в дальнейшем
выполнить операторы:
RESTORE
READ x2
то переменная x2 получит первое значение 10.
Задание значений переменным
Чтобы указать значение, которое должна иметь переменная, можно использовать оператор Бейсика, который называется оператором присваивания. Для
использования этого оператора достаточно в строке программы (кода) указать
знак равенства «=». В левой части оператора указывается имя переменной, в
которую будет заноситься значение, расположенное в правой части (справа от
символа =). Значение в правой части или указывается константой или вычисляется (автоматически) по выражению. Например, чтобы значением переменной
Y% (имеющей тип INTEGER) стало число 10, надо написать: Y% = 10.
При этом переменная Y% уже должна быть описана в программе ранее: DIM
Y%.
10
Если присвоить переменой целого типа (INTEGER или LONG) значение с плавающей точкой, например:
Y% = 5.5
то эта переменная Y% получит округленное значение числа 5,5 (а именно, 6).
Это значение можно вывести на экран с помощью оператора PRINT. Целиком
такая программа будет выглядеть так:
DIM Y AS INTEGER
Y% = 5.5
PRINT Y%
После выполнения этой программы, на экране вывода будет напечатано число 6.
Округление чисел выполняется в зависимости от значения дробной части
числа. Если она больше или равна 0,5, то округление происходит в большую
сторону, если меньше — то в меньшую (в вышеприведенном примере число
5.4999 будет округлено до 5).
Все операции и математические действия над числами с плавающей точкой выполняются в Бейсике приближенно. Ошибка может возникать в 5-7 знаке после
запятой.
Если попытаться дать переменной Y% слишком большое для тина INTEGER
значение 100000, то при выполнении программы QBasic выделит оператор присваивания другим цветом и сообщит, что произошло переполнение (Overflow)
значения переменной Y%.
Аналогично происходит и присваивание переменным строковых (текстовых)
констант: DIM Str$
Str$ = "ВГЛТА"
PRINT Str$
На экран будет выведена строка “ВГЛТА ” (без кавычек).
В первых версиях Бейсика оператор присваивания начинался с ключевого слова
LET. Такую форму записи можно применять и в QBasic, но это не рекомендуется. LET Str$ = "ВГЛТА"
Выражения
В правой части оператора присваивания LET можно записывать не только
число, но и произвольное выражение, при этом могут использоваться:
• знаки арифметических действий, определяющие действия над числами и переменными;
• круглые скобки, задающие последовательность выполнения действий;
• числа, над которыми выполняются действия;
• переменные, над значениями которых выполняются арифметические действия;
• стандартные функции Бейсика (вроде SQR()).
Примеры арифметических выражений: 1+1; 2*3 - 5 ; 2 * ( 3 - 5 ) ; Y% ^ 2 - 10.5 ;
(X# * 2 + Y# * 3.14) / 52 ; (SQR(Y&) - Dist%) * 1.1E+2.
11
Порядок вычисления значения выражения определяется приоритетом арифметических операций. В первую очередь выполняется возведение в степень, потом умножение и деление, в заключение — сложение и вычитание. Если в выражении имеются скобки, то сначала вычисляется значение подвыражений в
этих скобках. Например, значение выражения 4 ^ 2 * 3 равно 48 (4 в степени 2
равно 16, а 16, умноженное на 3, даст 48), а значение выражения 4 ^ (2 * 3) равно 4096 (сначала вычисляется выражение в скобках — 2*3 будет 6, а затем 4
возводится в степень 6).
Действия могут выполняться не только над числами и переменными числового
типа, но и над константами и переменными строкового типа. Для них определен только один оператор сложения или сцепления. Например:
"текст" + S$
"Ошибка в файле" + FileName$ + ".doc"
"2 + 2 будет " + STR$(2+2)
В последнем случае STR$() - стандартная функция Бейсика, которая преобразовывает значение выражения 2+2 (равное 4) в строку (“4”).
Теперь можно составить программу, которая будет вычислять сумму трех идущих подряд чисел, начиная с произвольного числа:
DIM X AS INTEGER, SUM AS INTEGER
X% = 9 ' произвольное начальное число
SUM% = X% + (X% + 1) + (X% + 2)
PRINT SUM%
Такая программа удобна тем, что число, начиная с которою надо произвести
вычисления, достаточно указать только один раз.
Математические операторы
Для выполнения арифметических вычислений в операторах Бейсика используются символы: + (сложить), - (вычесть), * (умножить), / (делить) и ^ (возвести
в степень). Кроме того, символ \ (обратная косая черта) применяется для целого
деления, в результате которого получается целое число. Например, значением
выражения 1000 / 3 будет число 333.3333333333333, а значением выражения
1000 \ 3 число 333. При таком делении для чисел типов INTEGER и LONG
дробная часть частного просто отбрасывается, в то время как при обычном делении происходит округление дробного результата. В результате выполнения
оператора Y% = 5/3 переменная Y% получит значение 2 (округление в большую сторону), а при использовании оператора Y% = 5 \ 3 это значение окажется равным 1. При вычислении выражений Visual Basic выполняет операторы в
следующем порядке.
1. Возведение в степень. 2.Отрицание (-) 3.Умножение и деление.
4.Вычисление остатка от деления (mod). 5.Сложение и вычитание.
Сцепление (соединение) строк
Оператор сложения + определен не только для чисел, но и для строк (текста). С его помощью можно сцепить (сложить) вместе несколько строк. Напри-
12
мер, значением выражения "Это" + " строка!" станет строка: "Это строка!".
Можно сцепить несколько строк: "123" + "456" + "7890" Результирующим значением станет строка "1234567890".
Стандартные функции
В Бейсике существует ряд заранее р
азработанных и встроенных программ для определения основных (стандартных) математических функций. Эти функции необходимо п о м н и т ь!
SIN(X), COS(X), ТАN(X),-tg x, ATN(X) - arc tg x. Надо помнить, что аргументы функций указываются в скобках! Перевод градусов в радианы осуществляется по формуле: х(рад)= Pi*х(град) /180.
LOG(X) - lnx(натуральный логарифм), LOG10(X) (дестичный логарифм),
x
SQR(X)-√x, EXP(X)-e (экспонента), ABS(X)-|x| (абсолют- ное значение), pi =
3,14159 , INT(X) - функция взятия целого от аргумента, выдает наибольшее целое, не превосходящее х ( дробная часть отбрасывается).
RND(X) - при выполнении дает случайные числа от 0 до 1.
SGN(X) - (синг), функция знака числа х, при выполнении дает: -1, при х< 0; 0
при х=0; 1 при х>0.
Операторы изменения порядка выполнения программы
Использование операторов GOTO позволяет создавать быстрые и эффективные программы анализирующие ситуацию, обеспечивающие многовариантность при вычислениях. Оператор GOTO выполняет переход в программе к
оператору с указанной меткой. Синтаксис:
GOTO (Метка, номер строки) Комментарий.
Пример:
X=1
INPUT “Ввести приращение Х1”; X1
X = X + X1 'приращение X1
GOTO PrintOut 'перейти к PrintOut
100 END
PrintOut: 'показать значение X
PRINT "Значение X = "X
GOTO 100 ' (конец)
Оператор ON/GOTO - множественного перехода.
Назначение ON/GOTO - направление выполнения программы по одному из
следующих путей в зависимости от значения численного выражения.
Синтаксис ON n GOTO метка [,метка]...
Комментарий. n- численное выражение, имеющее значение в диапазоне
от 0 до 255, метка идентифицирует оператор, на который выполняется переход.
n определяет на какую метку осуществляется скачок (например, если n=4, то
управление получает четвертая метка в списке). Если n равно 0 или больше
числа меток в списке, БЕЙСИК продолжает выполнение следующего оператора. Пример. INPUT “Номер перехода”; I%
ON I% GOTO Переход1, Переход2, Переход3
13
Переход1:
PRINT "номер участка", I%
Переход2:
PRINT "номер участка", I%
Переход3:
PRINT "номер участка", I%
END
'конец программы
Оператор GOSUB N
Оператор GOSUB N (гоусаб) передает управление подпрограмме,
начинающейся с номера N. Оператор RETURN возвращает управление в основную программу на следующую строку после оператора GOSUB N. Каждая
подпрограмма должна заканчиваться оператором RETURN, чтобы возобновить выполнение программы с оператора, следующего за оператором GOSUB.
Оператор END должен быть с наибольшим номером (последней меткой) в программе.
Пример.
10
20
30
40
50
60
70
80
REM Подпрограммы
INPUT ; N,M
FOR I=N TO M
GOSUB 100
GOSUB 120
PRINT TAB(15);A;TAB(30);B;TAB(45);C
NEXT I
GOTO 150
100 PRINT"----------------------------------------------"
110 RETURN
120 PRINT " ВВОД констант"
130 INPUT ; A,B,S
101 140 RETURN
150 END
В приведенной программе использованы две подпрограммы начинающиеся
со строк 100 и 130. Первая подпрограмма вычерчивает на экране горизонтальную разделительную линию, вторая осуществляет присвоение переменным
A,B,S числовых констант, которые выводятся на экран 60 строкой основной
программы.
Многовариантное ветвление может осуществляться также, и с большей
гибкостью, с помощью оператора IF.
Оператор IF тестирует условия и меняет ход выполнения программы в зависимости от выполнения заданных условий.
Общий вид:IF условие THEN оператор(ы) [ELSE оператор(ы)]
Если результат проверки условия TRUE (не равен нулю), т.е. соблюдено заданное условие, то выполняется оператор(ы), следующий за THEN и перед
необязательным ELSE. Если результат проверки FALSE (нулевой результат),
14
т.е. заданное условие не соблюдено, тогда выполняется оператор, следующий
за ELSE.
Если необязательный ELSE опускается, продолжается выполнение следующей
строки программы.
Оператор IF и родственные операторы, включая те, что идут после ELSE,
должны появляться на одной и той же логической строке. Поэтому следующая
запись ошибочна: IF a < b THEN t = 15 : u = 16 : v = 17
ELSE t = 17 : u = 16 : v = 15,
потому что компилятор рассматривает вторую строку, как новый вид оператора, не связанный с предыдущим.
Пример 'одна строка IF
INPUT "Выбери породу саженцев(1,2)", X
IF X =1 THEN PRINT "Хвойные" ELSE_
PRINT "Лиственные"
END
Примечание. Знак _ (низкая черта) означает продолжение строки программы.
Блочный оператор IF можно использовать для формирования многострочных серий операторов IF.
Синтаксис: IF целочис. выражение THEN
оператор(ы)
ELSEIF целочис. выражение THEN
. оператор(ы)
ELSE
. оператор(ы)
END IF
Комментарий. Блок IF представляет собой расширение возможностей интерпретатора БЕЙСИК. При выполнении блока операторов IF, сперва проверяется истинность выполнения условия в операторе IF. Если результат
FALSE (нулевой ), то каждый из последующих операторов ELSEIF проверяется
по порядку (операторов ELSE может быть сколько угодно). Как только подтверждается истинность одного из условий, то выполняется оператор, следующий за ним THEN и осуществляется переход на оператор конца блока
END IF. Последний оператор после необязательного ELSE выполняется, если
ни одно из условий в блоке не соблюдено. После ключевого слова THEN в первой строке блока IF не может быть больше ничего; по этому признаку компилятор может отличить блок IF от обычного оператора IF. После ELSE разделители не ставятся. Операторы блока IF допускают вложения, т.е. любой
оператор после любого THEN может содержать блоки IF.
Операторы блока IF должны заканчиваться END IF. Обратите внимание, что
END IF не имеет списка, а ELSEIF могут иметь.
Примеры. REM Строчный IF
CLS `Очистка экрана
INPUT” Ввод коэффициентов”; A,B,C
D=ABS(B*B) –4*A*C
15
PRINT D
IF D < 0 THEN PRINT “Действительных корней нет ”
IF D > 0 THEN PRINT “Значение корней разные ”
IF D = 0 THEN PRINT “ Корни равные”
END
REM Блочный IF
CLS
INPUT” Ввод коэффициентов”; A,B,C
D=ABS( B*B) –4*A*C
PRINT D
IF D < 0 THEN
PRINT “ Действительных корней нет ”
IF D = 0 THEN PRINT “ Корни равные ”
ELSE PRINT “ Значение корней разные ”
ENDIF
END
Операторы цикла
Конечный оператор цикла
Вместо оператора перехода в ряде случаев удобно использовать так называемый оператор цикла, который позволяет многократно (заданное или произвольное число раз) выполнять определенную группу операторов. Форма оператора цикла такова:
FOR {переменная-счетчик}={выражение1) ТО
{выражение2} STEP {выражение3}
блок операторов
NEXT {переменная-счетчик}
Работает этот оператор так: сначала переменная-счетчик получает значение,
равное значению выражения1. Если ее значение меньше значения выражения2,
то выполняется блок операторов до ключевого слова NEXT, а затем значение
переменной меняется на величину приращения, равного значению выражения3
(шаг цикла), вновь производится проверка счетчика и т. д.
Шаг приращения может быть и отрицательным — тогда значение начального
выражения1 должно быть больше значения конечного выражения2 (то есть,
значение счетчика не увеличивается, а уменьшается). Если ключевое слово
STEP опущено, то величина приращения считается равной 1. В программе операторы циклов могут быть многократно использованы. Они могут располагаться последовательно, в этом случае общее количество выполнений будет равно
сумме выполнений отдельных циклов К=Ц1+Ц2+…Цк. Расположение может
иметь включение (вложение) одного цикла (внутреннего) в другой (внешний).
В этом случае на одно выполнение внешнего цикла приходится полное количество выполнений внутреннего. Общее количество выполнений (итераций) будет: К=Ц1*Ц2.
16
Примеры:
FOR X% = 10 ТО 100 STEP 10
PRINT X%
NEXT X%
Будет напечатано 10 значений переменной X%: 10, 20, 30,... 100.
FOR X% = 5 ТО -5
PRINT X%
NEXT X%
Значения Х% будут: 5, 4, ... -4, -5 (шаг считается равным -1).
Программа с вложенными циклами: внешний – возрастающий по переменной
P и внутренний (вложенный) по убывающей переменной.
U ( m1<0 ).
10 CLS
40 PRINT “ Вложенные циклы "
50 for P = 0 to 12 step 4
60 for U= 8 to 0 step -4
70 print " U=" U," P =" P
80 next U
90 next P
100 END
Будет напечатано 12 значений U и P.
U=8 P= 0
U=4 P= 0
U=0 P= 0
U=8 P= 4
U=4 P= 4
U=0 P= 4
U=8 P= 8
U=4 P= 8
U=0 P= 8
U = 8 P = 12
U = 4 P = 12
U = 0 P = 12
Оператор прерывания цикла
Используется для выполнения расчетов с заданной точностью, когда надо
повторять один и тот же цикл вычислений, чтобы добиться требуемого результата и затем прекратить выполнение оператора цикла. Для такого прерывания
служит оператор EXIT. Он записывается:
EXIT FOR.
Как только он встречается, управление передается на первый оператор, следующий за завершающим цикл ключевым словом NEXT ( прерывается оператор FOR).
Например:
X% = 10
FOR I% = 1 ТО 100
17
IF I% = X% THEN EXIT FOR
NEXT I%
PRINT I%
Как только значение переменной I% станет равно значению переменной X%
(10), выполнение цикла прервется и будет напечатано 10.
Оператор FOR позволяет выполнить блок операторов заданное число раз. Но
чаще всего заранее не известно число повторений — оно определяется внутри
блока многократно выполняемых операторов. Для этого лучше использовать
условный оператор цикла.
Условный оператор цикла WHILE
В этом цикле условие задается в первой строке, значение переменной цикла
увеличивается программно, оператор wend – конец цикла.
Условный оператор цикла обычно используется для поиска значений в больших
наборах данных (массивов).
WHILE {логическое-выражение}
блок операторов
WEND
Например: CLS
X=1
WHILE X <= 100
X = X + 10
PRINT "X="Х
WEND
Будут напечатаны числа X=11 …. X= 101
Вывод информации на экран
Для очистки экрана от предыдущей (ненужной) информации, в начале программы или в любом месте пред выводом сообщений или результатов полезно
использовать оператор CLS.
Чтобы вывести информацию на экран, используется оператор PRINT.
PRINT список
Оператор PRINT может содержать в своем списке одно или несколько значений: чисел, строк, переменных и выражений. Любые символы в строке оператора выделенные с двух сторон кавычками “ ” воспринимаются интерпретатором как строковая (текстовая) константа и выводится без изменения и без кавычек. Если элементы списка оператора разделяются точкой с занятой, то данные печатаются подряд друг за другом (если это числа, то через один пробел).
Если они разделяются запятыми, то данные выводятся в следующей области
вывода (эти области (зоны) следуют в строке последовательно друг за другом и
имеют стандартную ширину 14 символов).
Например, при выполнении операторов
Y% = 5
PRINT "y="; Y%
на экран вы ведется
18
y= 5
а при выполнении операторов
Y% = 5
PRINT "y=", Y%
Выведется y =
5
-----первая зона ------ ------- вторая зона -----Помимо строк, выражений и символов “,” и “;” в операторе PRINT можно также точно указывать, с какой позиции в строке начать вывод очередной порции
информации. Для этого надо воспользоваться конструкцией TAB (позиция)например: PRINT TAB(5); "Эта строка выводится с пятой позиции".
Эта функция используется для построения при выводе на экран или принтер
таблиц, графиков, гистограмм и других оформлений.
Кроме того, между частями выводимого текста можно вставлять нужное число
пробелов с помощью команды SPC({число пробелов}):
PRINT "Здесь вставлено 10"; SPC(10); "пробелов"
Примеры
Программа формирования заголовка таблицы вывода результатов.
10 LPRINT ″---------------------------------------------”
20 LPRINT “! X <= 1
!
X => 3
!”
30 LPRINT “--------------------------------------------“
40 LPRINT “! Y
! X ! Y !
X !”
50 LPRINT “--------------------------------------------“
Пояснение: оператор LPRINT выводит печать на принтер.
Программа вычислений разветвленных выражений
10 DIM Y(15),Y1(15),X(15),X1(15) - резервирование памяти ПК.
15 I=0 : J=0 –задание нулевых значений сумм по переменным.
20 FOR X=0 TO 4 STEP 0.2 - цикл ввода значений аргумента функции.
30 IF X<=1 THEN I=I+1:Y(i)=COS(X+SQR(X)): X(i)=X - вычисления при Х< 1.
40 IF X=>3 THEN J=J+1:Y1(j)=ABS(LOG(X)-(X-2):X1(j)=X - - / Х=>3.
50 NEXT X
Значения вычисляемых переменных I=I+1 и J=J+1 необходимы для адресации
ячеек запоминающих значения Х , Х1, Y, Υ1.
Программа вывода результатов в формате заголовка таблицы
10 FOR I=1 TO 6 : J=I
20 LPRINT TAB(1)”!” TAB(3);Y(i);TAB(10)! TAB (12)X(i);
30 LPRINT TAB(20)”!” TAB (22)Y1(j);TAB(30)”!”TAB(32)X1(j);
40 LPRINT TAB(40)”!”
50 LPRINT”--------------------------------------------“
60 NEXT I
70 END
19
Выводимые значения X, Y берутся из I и J ячеек памяти по номерам.
Программирование вывода графика
При составлении и программы необходимо учитывать, что получаемые
численные значения вычисляемой функции определяют порядковый номер позиции (место) в строке печати. Эти значения могут быть вне поля построения
графика, т.е. меньше 0( правой границы) или больше 70 (или левой границы).
Чтобы график был в заданных границах, вводятся коэффициенты масштабирования (строка 40), которые рассчитываются по формулам М = Ymax-Ymin / N2N1, S = N1- M*Ymin. Для их расчета необходимо знание минимального и максимального значений функций Y, которые выбираются на экране после первого выполнения программы и с ними рассчитываются коэффициенты М и S.
Значения N1и N2 выбираются произвольно исходя из ширины поля построения
графика на экране. N1- по программе-15, N2 ≤ 70. Дальнейшее выполнение
программы осуществляет построение графика на экране (строка 70), график печатается символом * (звездочка).
20 FOR X=0 TO 4 STEP 0.4
30 PRINT SIN(1.5*X): NEXT X
40 INPUT M,S
50 FOR X=1 TO 2 STEP 0.2
60 Y= SIN (X)
70 PRINT X;Y;TAB(15)”!”;TAB(M*Y+S)”*”
80 NEXT X
90 FOR I=1 TO 65 : PRINT TAB(I)”-“;: NEXT I : PRINT
100 PRINT “М =”М,”S=”S
110 END
Графический режим программирования в яз. Qbasic
Ниже будут рассмотрены операторы выполнение которых осуществляется в
графическом режиме работы монитора. Задание (смена режимов) графики осуществляется оператором SCREEN (экран).
В графическом режиме изображения (текст, числа, рисунки и т. д.) формируются из соответствующего набора точек по экрану. Общее количество формирующих точек (пикселов)зависит от типа и режима работы монитора. Стандартные мониторы типа VGA имеют от 640Х480 до 1600Х1200 точек по горизонтали и вертикали экрана. Использование этого режима позволяет выполнять
построения шрифтов любого размера и вида, графиков, рисунков и т.д..
SCREEN [реж ] – режимы: 0 – текстовый, 1- графический,
LINE (Х1,Y1) – (X2,Y2),2, BF – вывод прямоугольника (линии) по заданным вершинам (точкам) с координатами Х и Y, 2 - цвет заливки прямоугольника (0…3),
В – признак прямоугольника (при отсутствии линия), F – признак заливки прямоугольника;
Оператор LOCATE устанавливает курсор и/или определяет форму указателя.
Синтаксис LOCATE [строка][,колонка][,курсор][,начало][,конец]
20
Где: строка - целочисленное выражение, указывающее строку экрана (1-25),
на которую должен быть установлен курсор,
колонка задает номер позиции от начала строки (1-80),
курсор - числовое значение, которое управляет тем, видим указатель или
невидим (0 - невидим, 1 - видим);
начало и конец - целочисленные выражения, управляющие размерами
указателя и определяющие, какое количество последовательных строк будет
отмечено указателем. Верхняя сканируемая строка - 0, нижняя: для цветных
графических адаптеров - 7; для монохромных адаптеров - 13.
Наиболее часто оператор LOCATE используется для задания места на экране,
где будут размещены выводимые данные.
СIRCLE (Х,Y), R, цвет, нач., кон.(дуги) – вывод окружности с центром Х, Y ,
радиусом R, цветом (0-7), или дуги от окружности, начало и конец дуги в радианах;
PSET (Х,Y), цвет – установка точки в координатах Х,Y, цветом 1...3, если цвет
не указан то точка устанавливается цветом фона.
Пример программы
10 SCREEN 1,0
20 LINE (0,0)-(310,119)
30 LINE (10,100)-(319,100)
40 LINE (10,20)-(60,70),2,BF
50 READ X,Y
60 PSET (X,Y)
70 FOR I=1 TO 11
80 READ X,Y
90 LINE -(X,Y)
100 NEXT I
110 LOCATE 3,9:PRINT "Grafira"
120 DATA 10,20,50,20,55,25,55,40,50,45,10,45
130 DATA 50,45,55,50,55,65,50,70,10,70,10,20
140 CIRCLE (150,150),26,1
150 PSET (150,150):PRINT Tab(30)"Ivanov"
160 END
На экране появится следующее изображение.
21
Пояснения к программе. 10 строка устанавливает цветной режим экрана,20
строка выводит наклонную линию из верхней нулевой точки экрана, 30 - выводит горизонтальную линию по 100 вертикальной точке экрана, 40 строка формирует вывод прямоугольника розового цвета. Строки 50-130 организуют построение прямыми линиями (строка 90) буквы В. Построение буквы осуществляется в цикле, строки 70…100. Значения X и Y берутся попарно из строк
120,130. !40 строка выводит на экран окружность светло-зеленого цвета с радиусом 26 точек и координатой центра X=150 и Y=150.
Оператор COLOR
Назначение. Оператор COLOR устанавливает цвет выводимых элементов на
экране.
Синтаксис COLOR [N1] [,[N2] [,[N3]],
т.е. ЦВЕТ [основной] [фоновый] [граница]
Где: N1 это целочисленное выражение от 0 до 31, определяющее цвет символов;
N2 это целочисленное выражение от 0 до 7, определяющее цвет фона;
N3 это целочисленное выражение от 0 до 15, определяющее цвет на границе основного и фонового цветов.
Если какой-либо из названных параметров выйдет за пределы указанных
диапазонов произойдет ошибка выполнения 5 "Ill egal Function Call" ("Неправильный вызов функции"). Для стандартных мониторов типа C/G
(Цвет/Графика) выбор основных цветов должен быть следующим:
0 - черный
8 - серый
1 - синий
9 - голубой
2 - зеленый
10 - светло-зеленый
3 - зелено-голубой
11 - светло-зелено-голубой
4 - красный
12 - светло-красный
22
5 - пурпурно-красный 13 - светло-пурпурно-красный
6 - коричневый
14 - желтый
7 - белый
15 - интенсивно белый.
Символы могут мигать на экране, для этого необходимо установить параметр основного цвета увеличенным на 16. Например, если установим N1=22,
то получим мигающие коричневые символы (22 = 6 + 16).
В случае монохромных адаптеров, которые не дают цветного изображения,
соответствующие значения для установки основного цвета интерпретируются
следующим образом: 0 - черный, 1- подчеркивание, 2-7 - белый, 8 - черный,
9 - интенсивное подчеркивание, 10-15 - интенсивный, 16 - черный, 17- подчеркивание черным цветом, 18-23 - мигание, 24 - черный, 25- высокая интенсивность подчеркивания, мигание, 26-31 - высокая интенсивность, мигание.
Значения фонового цвета от 0 до 6 при монохромном адаптере дают черный
фон, 7 - белый. Усовершенствованные графические адаптеры (EGA) и
Видео-графические адаптеры (VGA) с усовершенствованными мониторами позволяют использовать 16 цветов из набора в 64 цвета (см. PALETTE).
Пример. Данная программа демонстрирует оператор COLOR как в
текстовом, так и в графическом режиме на экране таблицу атрибутов.
FOR xN1% = 0 to 7
FOR yN2% = 0 to 15
COLOR N2%, N2%
PRINT USING " ### ";N1%*16+N2%;
NEXT N2%
PRINT
NEXT N1%
PRINT
FOR N1% = 0 to 7 'показать таблицу всех атрибутов c миганием
FOR N2% = 16 TO 31
COLOR N2%, N1% 'установить цвет экрана
PRINT USING " ### ";N1%*16+N2%-16;
NEXT N2%
PRINT
NEXT N1%
END
Примеры программ с использованием операторов Qbasic
Пример1. Использование операторов ветвления
20 Input ;x,y
30 If x<y then f=x*y : goto 50
40 If x>y then f=x+y : goto 60
50 F=x-y : goto 70
60 Print "x="x,"y="y,"f=x*y f="f : Goto 90
70 Print "x="x,"y="y,"f=x+y f="f : Goto 90
80 Print "x="x,"y="y,"f=x-y f="f
23
90 End
В строке 20 вводятся значения переменных X и Y. В строках 30…50
они сравниваются между собой и вычисляются соответствующие
функции F. В строках 60…80 выводятся ответы с исходным выражением функции.
Пример 2. Создание и частичный вывод элементов списка.
Вывод диагональных элементов
10 DIM B(6,6)
20 PRINT "Ввести элементы массива"
30 FOR I=1 TO 6 : FOR J=1 TO 6
40 PRINT "Ввод" I;J "Элемента"
50 INPUT S(I,J) : NEXT J : NEXT I
60 PRINT "Вывод диагональных элементов"
70 FOR I=1 TO 6
80 LPRINT TAB(I)B(1,I): NEXT I
90 END
В строках 20…50 вводятся последовательно элементы матрицы размер которой задан в строке10. Строка 80 выводит элементы главной диагонали матрицы, смещение которых на экране задается функцией TAB(I).
Пример 3. Вывод 1 строки и 5 столбца
10 DIM B(5,5)
20 FOR I=1 TO 5
30 FOR J=1 TO 5
40 PRINT "Ввод (“ I; J : INPUT; B(I,J)
50 NEXT J
100 PRINT
60 NEXT I
110 FOR J=2 TO 5
70 FOR I=1 TO 5
120 LPRINT TAB(13)B(J,5)
80 PRINT TAB(I)B(1,I);
130 END
90 NEXT I
Строка 80 выводит на экран элементы первой строки. Горизонтальный вывод
обеспечивается наличием точки с запятой в конце этой строки. Строка 120 выводит вертикально пятый столбец матрицы. Элементы столбца соответственно
смещены как в матрице на 13 позицией функцией TAB.
Пример 4. Программа решения квадратных уравнений
REM Выяснение значений a, b и c.
COLOR 14, 4
CLS
PRINT
PRINT " Решение квадратных уравнений вида ax²+ bx + c = 0"
PRINT " Введите числа a, b и c."
begin:
INPUT " a="; a$
IF a$ = "" THEN a$ = "1"
IF a$ = "0" THEN
PRINT "Число 'a' не может быть равным нулю."
GOTO begin
24
END IF
INPUT " b="; b$
IF b$ = "" THEN b$ = "1"
INPUT " c="; c$
IF c$ = "" THEN c$ = "1"
REM Составление уравнения.
a = LEFT$(a$, 5)
b = LEFT$(b$, 5)
c = LEFT$(c$, 5)
CLS
LOCATE 8, 20
IF b > 0 AND c > 0 THEN PRINT a$; "x²+ "; b$; "x + "; c$; " = 0"
IF b > 0 AND c < 0 THEN PRINT a$; "x²+ "; b$; "x -"; ABS(c); "= 0"
IF b > 0 AND c = 0 THEN PRINT a$; "x²+ "; b$; "x = 0"
IF b < 0 AND c > 0 THEN PRINT a$; "x²"; b$; "x + "; c$; " = 0"
IF b < 0 AND c < 0 THEN PRINT a$; "x²"; b$; "x -"; ABS(c); "= 0"
IF b < 0 AND c = 0 THEN PRINT a$; "x²"; b$; "x = 0"
IF b = 0 AND c > 0 THEN PRINT a$; "x²"; "+"; ABS(c); "= 0 "
IF b = 0 AND c < 0 THEN PRINT a$; "x²"; "-"; ABS(c); "= 0 "
IF b = 0 AND c = 0 THEN
PRINT a$; "x²= 0 "
LOCATE 9, 20
PRINT "x = 0"
LOCATE 10, 20
PRINT "Ответ: x = 0. "
GOTO quit
END IF
LOCATE 9, 20
REM Вычисление дискриминанта.
d = ABS(b * b) - 4 * a * c
IF d < 0 THEN
PRINT "D = "; b$; "²"; " - 4x"; a$; "x"; c$; " ="; ABS(b * b); "-"; 4 * a * c; "= "; d; "
< 0. Hет коpней. "
GOTO quit
END IF
IF d = 0 THEN
PRINT "D = "; b$; "²"; " - 4x"; a$; "x"; c$; " ="; ABS(b * b); "-"; 4 * a * c; "= 0.
Один коpень."
X = -b / (2 * a)
IF b < 0 THEN
LOCATE 10, 20
PRINT "x ="; ABS(b); "/ 2 x "; a$; " = "; X
GOTO otvet
END IF
25
LOCATE 10, 20
PRINT "x = -"; b$; " / 2 x "; a$; " = "; X
otvet:
LOCATE 11, 20
PRINT "Ответ: x = "; X;
GOTO quit
END IF
IF d > 0 THEN
IF 4 * a * c < 0 THEN
LOCATE 9, 20
PRINT "D = "; b$; "²"; " - 4x"; a$; "x"; c$; " ="; ABS(b * b); "+"; ABS(4 * a * c);
"="; d; "> 0. Два коpня."
GOTO korni
END IF
PRINT "D = "; b$; "²"; " - 4x"; a$; "x"; c$; " ="; ABS(b * b); "-"; 4 * a * c; "="; d;
"> 0. Два коpня."
END IF
LOCATE 10, 20
korni:
REM Hахождение коpней.
q = SQR(d)
x1 = (-b + q) / (2 * a)
x2 = (-b - q) / (2 * a)
IF b < 0 THEN
LOCATE 10, 20
PRINT "x1 = ("; ABS(b); "+"; SQR(d); ") / 2 x "; a$; " ="; x1; GOTO x2
END IF
LOCATE 10, 20
PRINT "x1 = ( -"; b$; " +"; SQR(d); ") / 2 x "; a$; " ="; x1;x2:
LOCATE 11, 20
IF b < 0 THEN
LOCATE 11, 20
PRINT "x2 = ("; ABS(b); "-"; SQR(d); ") / 2 x "; a$; " ="; x2
GOTO otbet
END IF
PRINT "x2 = ( -"; b$; " -"; SQR(d); ") / 2 x "; a$; " ="; x2
otbet:
LOCATE 13, 20
PRINT "Ответ: x1 = "; x1;
LOCATE 14, 20
PRINT "
x2 = "; x2;
quit:
COLOR 2, 4
a$ = "Нажмите любую клавишу...": yk = 17: xn = 1: pr = 0: pause = 80
26
xk = xn + LEN(a$)
FOR XX = 1 TO LEN(a$)
FOR XXX = xn TO (xk + XX AND pr <> 1) + (xk - XX AND pr = 1)
scr = SCREEN(yk, XXX)
LOCATE yk, XXX: PRINT MID$(a$, XX, 1): LOCATE yk, (XXX - 1 AND XXX >
1) + (XXX AND XXX = 1): PRINT scr1$: FOR paus = 1 TO pause: NEXT paus
FOR TTT = 1 TO pause: NEXT TTT
scr1$ = CHR$(scr)
NEXT XXX: NEXT XX
pause$ = INPUT$(1)
COLOR 7, 0
Пример 5. Решение системы линейных уравнений с двумя неизвестными.
ax + by = e
сх + dy = f
Коэффициенты а, b, с, d, e и f известны, требуется определить значения переменных х и у. Эти значения рассчитываются по правилу Крамера:
х = (e * d - b * f) / (а * d - b * с)
у = (а * f - е * с) / (а * d - b * с)
Программа решения.
DIM a AS DOUBLE, b AS DOUBLE, e AS DOUBLE
DIM c AS DOUBLE, d AS DOUBLE, f AS DOUBLE
DIM x AS DOUBLE, y AS DOUBLE
CLS
PRINT ' пустая строка
PRINT "aX + bY = e"
PRINT "cX + dY = f"
PRINT ' пустая строка
INPUT " введите коэффициенты a, b и e (через запятую): ", a, b, e
INPUT " введите коэффициенты с, d и f (через запятую): " , c, d, f
x = (e * d - b * f) / (a * d - b * c)
y = (a * f - е * c) / (a * d - b * c)
PRINT ' пустая строка
PPINT "X = ": x
PRINT "Y = "; y
PRINT ' пустая строка
PRINT "Проверка. аХ + bY = "; a*x + b*y
PRINT "Проверка. сХ + dY = "; c*x + d*y
END
В качестве контрольного примера попробуйте решить систему
100x + 10у = -5
-20x - 3у = 0
Запуститe программу, введите значения 100, 10, -5 и -20, -3, 0. Программа напечатает:
Х= -.15
27
Y= 1
Проверка. аХ + bY = -4.999999999999999
Проверка. cX + dY = -1.110223024625157D-16
Погрешность возникает из-за слишком большой разрядности чисел типа
DOUBLE.
Редактор QBasic
Работа с редактором
После запуска интерпретатора появится стартовый экран программы QBasic,.
Если нажать клавишу ESC, то откроется меню и курсор окажется в первой позиции первой с троки встроенного редактора Qbasic, рисунок 1.
Рис. 1. Меню (верхняя строка) программы QBasic
В любой из разделов меню можно попасть, нажав комбинацию клавиш ALT
и первой буквы раздела (например, ALT+E приводит к выделению раздела
Edit). Рассмотрим последовательно команды этих разделов.
Команды раздела File (работа с файлами)
New - создание нового файла
Save As - сохранить текущий текст в новом файле
Open - загрузить другой файл в редактор
Print - печать текущего текста программы
Exit - выход из Qbasic
Команды раздела Edit (редактор)
Cut - вырезать текст в буфер.
Copy - копирования текста
Paste - вставки
Clear - удаления
Клавиши быстрого вызова команд Edit
SHIFT+F1 - вызов справочной системы редактора QBasic
ENTER - новая строка
INSERT - переход от режима вставки текста к его замене (когда редактор работает в режиме замены, курсор принимает вид большого прямоугольника)
HOME - в начало текущей строки
END перемещения к концу текущей строки
DELETE - удалить.
SHIFT - выделение частей текста
28
SHIFT+DELETE - скопировать в буфер, а из редактора удалить
SHIFT+INSERT - вставка текста из буфера
CTRL+HOME перейти в начало текста
CTRL+END - перейти в конец текста
CTRL+INSERT - выделенный текст скопировать в буфер
CTRL+ENTER - переход в начало следующей строки., используется клавиша
CTRL+Y - удалить текущую строку.
Ctrl+K + — цифры (0, 1,2 или 3) – установить закладки в тексте
Ctrl+Q + цифру - перейти к ранее установленной закладке
ALT и первая буква раздела – переход в любой из разделов меню
Ctrl+Q + F - поиск нужной информации в тексте программы
Ctrl+Q + А, - замена текста
Help > Index. – вызов оглавления справочной системы Qbasic
Команды раздела Search (поиск и замена текста)
Find - ввод образца для поиска
Repeat Last Find (F3) - повторный пуск для продолжения поиска
Change - подтверждение замены текста
Команды раздела View (Работа с несколькими окнами)
Sub (F2) - вызов, взятие программы для второго окна
F6 - переключение между окнами, переход в окно Immediate (Немедленное выполнение отдельных операторов Бейсика)
Split - вызов (закрытие) второго окна
Команды раздела Run (F5) - (пуск программы на выполнение)
Команды раздела Debug
Step (F8) - выполнение на шаг
Procedure Step (F10)- пошаговое автоматическое выполнение
Trace ON - включение трассировки
Toggle Breakpoint - переход на контрольную точку
Set Next Statement - установка возврата по метке
Команды раздела Options (настройка)
Display - задание цветового оформления редактора. Переключатели:
1. Normal Text
2. Current Statement
3. Breakpoint Lines
задают цвета соответственно для обычного текста, строки, содержащий текущий выполняемый оператор, и строки, для которой установлена точка прерывания работы программы. Выделив с помощью переключателя нужный раздел в
29
списках Foreground (цвет символов) и Background (цвет фона) можно подобрать
нужную комбинацию цветов.
Доступные цвета
Black
Черный
Brown
Коричневый
Blue
Синий
White
Белый
Green
Зеленый
Gray
Серый
Cyan
Голубой
Pink
Розовый
Red
Красный
Yellow
Желтый
Magenta
Фиолетовый
Ecли к началу названия цвета приписано Вг (например, BrGreen), то это означает цвет с повышенной яркостью.
Можно также отключить вывод полос прокрутки (флажок Scroll Bars) и указать,
сколько пробелов будет вставляться в редакторе при использовании клавиши
табуляции TAB (поле ввода Tab Stops:). После выполнения всех настроек для
их сохранения надо нажать <Ok> (для отказа — <Саnсеl>).
Help Path позволяет задать путь к файлу справочной системы qbasic.hlp, если
он находится не в одном каталоге с интерпретатором qbasic.exe.
Syntax Checking (Проверка синтаксиса) работает наподобие флажка. Если он
включен (в левой части этого пункта меню загорается точка), то после ввода
очередного оператора Бейсика и нажатия клавиши ENTER (или CTRL+ENTER)
редактор проверяет его корректность и в случае ошибки выдает предупреждение.
Вопросы для повторения материала
1. Характеристика компилятора и интерпретатора языка Qbasic.
2. Нумерация и комментарии в строках программ.
3. Запись констант и переменных в программах.
4. Ввод информации в ПК.
5. Математические операторы и вычисления выражений в языке.
6. Характеристика операторов изменения порядка выполнения программ.
7. Отличия в использовании операторов GOTO и GOSUB.
8. Что дает применение блочных операторов IF.
9. Назначение и типы операторов циклов.
10. Характеристика оператора вывода информации PRINT.
11. Разделители списка используемые в операторе вывода.
12.Построение на экране графиков и таблиц.
13. Перечислить отличия символьного и графического режимов выполнения
программ.
14.Написать варианты программирования вывода горизонтальной линии на экране (минимум 3 варианта).
30
15. Программирование цветных изображений на экране.
16. Объяснить назначение оператора DIM при выводе элементов массива.
17. Написать по памяти команды трех разделов меню редактора Qbasic.
Раздел 2
Рабочая среда Visual basic
Visual Basic является системой визуального, событийно-ориентированного
программирования, синтаксис и операторы которого опираются на язык высокого уровня Basic. . Создаваемые программы называются проектными приложениями или проектами и их создание имеет существенные отличия от программирования в Qbasic. Проект содержит три крупных узла: проект(как объединяющее понятие), форму и средства управления.
При загрузке программ Vbasic (С:\Programs\Microsoft Visual Studio\VB98\VB6
или пиктограмма VB6) на экране появляются несколько окон, позволяющие
создавать необходимые части проектов:
Заголовок окна
Панель главного меню Панель инструментов Окно свойств
Окно формы
Окно проекта
Окно инструментов
Рис.1
Рассмотрим состав и назначение этих окон.
Панель главноого меню состоит из заголовка окна (title bar), строки меню
(menu bar), и инструментальной панели (tool bar). Заголовок окна указывает имя
проекта и текущий режим работы: проектирование [design], прерывание [break],
выполнение [run]. Строка(пункты) меню состоит из названий, каждое из которых имеет свое раскрывающееся (drop-down) меню, из которого можно управлять операциями в среде Визуал Бейсик. панель инструментов имеет кнопки,
которые обеспечивают быстрый доступ к некоторым командам меню.
31
Окно формы является местом расположения инструментальных средств
(т.е.управлений), в нем создается проектное приложение, которое включает
форму с инструментами и в свою очередь является средством управления более
сложного вида.
Правило для наименования средств (форм и инструментов) управления.
Первые три символа имени управления называются префиксом (Prefix) и определяют тип (Type) управления. Примеры префиксов:
Управление (Control)
Префикс (Prefix)
Форма (Form)
frm
Командная Кнопка (Command Button)
cmd
Метка (Label)
lbl
Текстовое поле (Text Box)
txt
Переключатель (Check Box)
chk
Кнопка Выбора (Option Button)
opt
Изображение (Image)
img
После префикса имени управления, ставится имя управления (как правило,
начинается с большой буквы, для того чтобы показать, что префикс закончился), которое указывает на то, что делает управление. Полное имя средства
управления может иметь до 40 символов. Имя должно начаться с буквы и может содержать следующие символы: буквы, числа и опущенную черту ( _ ) .
Примеры.
FrmSample - Форма для проекта Образец (sample).
CmdBeep - Кнопка, которая вызывает гудок (beep).
LblPick - Метка, которая показывает выбранный (pick) номер.
OptBlue - Кнопка выбора, которая изменяет цвет фона на синий (blue).
ChkTop - Переключатель, который прячет или показывает игрушки.
ImgTrike- Картинка с изображением велосипеда (trike).
Ввод имен осуществляется через окно свойств при этом форма или инструмент
делается активным двойным щелком левой кнопки мышки на них.
Если окно формы не представлено на экране, то нажав View на главном меню
и строчку Form Layout Window, на экран вызовется окно Form Layout.
Окно инструментов - это список средств управления, которые могут использоваться в приложениях. Часто, средства управления упоминаются как инструментальные средства..
Управления находятся в окне Инструментов (Toolbox). Есть два способа разместить управления на форме:
1. Двойной щелчок (Double-Click) на выбранном Вами управлении в окне
32
инструментов: управление будет создано с заданными по умолчанию
размерами и включается в середину формы.
2. Одиночный щелчок (Single-Click) на выбранном Вами управлении в окне
инструментов: переместите курсор мыши на форму. Обратите внимание, что
курсор изменился на крестик (+). Поместите крестик, там, где Вы хотите расположить верхний левый угол Вашего управления. Нажмите левую кнопку
мыши и удерживая ее перетаскивайте курсор к более низкому правому углу
управления. Появится прямоугольный контур, когда его размеры станут для
Вас подходящими, отпустите мышку и управление появится на форме.
Три слова могут использоваться, чтобы указать средства управления: объекты (objects), инструменты (tools), и, наиболее часто, управления
(controls). Каждое управление имеет свое назначение, т.е. представлено инструментом имеющим свое свойство.
Большинство свойств назначено по умолчанию (default), это значит, что значение этому средству управления присвоено самой программой Визуал Бейсик.
После установки средств управления на форму, Вам необходимо назначить для
каждого управления его Свойства.
Окно свойств появляется на экране если на нем есть форма и средства управления (инструменты). В этом окне устанавливаются первоначальные значения свойств для средств управления. Раскрывающееся поле наверху Окна
Свойств перечисляет все средства управления, которые присутствуют на Форме. Под этим полем находятся свойства доступные для выбранного Вами объекта.
Выбранное управление с его свойствами выполняет действия по программе
создаваемой оператором в окне кодирования.
Окно Кодирования (Code Window)- является местом формирования кодов
(операторов) языка в создаваемом приложении. Совокупность составленных
кодов (программа) образует процедуру события для упавления формой(например нажатия кнопки в проекте).
Есть несколько способов увидеть Окно Кодирования. Один способ состоит в
том, чтобы использовать соответствующую кнопку в окне проекта. Другой способ - нажать View на главном меню, затем Код (Code).
Рис. 2
Наверху Окна Кодирования (Code Window) - два поля. Список объектов/управлений (object/controls list) и список процедур (procedure list). Список
объектов похож на список управлений в окне свойств (properties window). Этот
список содержит имена всех объектов (управлений), которые находятся на
Форме. Объект или управление, имя которого выделено в Списке объектов
(управлений), показывает все возможные процедуры события для этого объ-
33
екта (управления) в списке процедур. Под полями списка объектов и списка
процедур находятся коды БЕЙСИКА для той процедуры события, которая выделена в списке объектов (управлений).
Окно проекта показывает, какая Форма создает Ваш проект. Возможно наличие нескольких Форм в проекте и они будут перечислены в этом окне. Вызванной форме будут представлены окно объектов (управлений) формы и окно
Кодирования , нажимая на одно из слов (Object или Code) в меню View.
Окно проекта указывает, что мы имеем файл проекта, сохраненный как
Sample.vbp, который включает одну Форму, сохраненную как Sample.frm. Есть
три главных шага в формировании Проекта Визуал Бейсик:
1. Размещение (или ввод) средств управления на форме.
2. Назначение свойств к средствам управления.
3. Запись процедуры события для средств управления.
Каждый из этих шагов может выполняется в Визуал Бейсик в режиме проектирования - [designe] и режиме выполнения [run].
Основы программирования в Vbasic
После загрузки, выбора и размещения средств управления, назначения
свойств необходимо составление кодов (программирование) процедуры (действия) события. Программирование в Vbasic аналогично программированию в
Qbasic(см. раздел 1), но имеет некоторые отличия, которые будут рассмотрены
ниже.
Нумерация строк, ввод и отделение комментариев в кодах (программах) осуществляется аналогично как в языке Qbasic. Ввод информации в Vbasic осуществляется путем указания переменных и констант аналогично Qbasic, но имеет
более разветвленную структуру.
Объявление переменных.
Объявлять (вводить) переменные в программу можно явным и неявным образом. Явное объявление – это предварительное присвоение переменной определенного типа с помощью оператора. Это можно сделать с помощью оператора
Option Explicit, который помещается в начале модуля, либо выбрать команду
Tools => Options, затем в появившемся диалоговом окне выбрать вкладку Editor
(редактор ) и установить флажок Require Variable Declaration (требуется объявление переменных ).
Переменная создается следующим образом:
Dim Имя Пер As Тип Данных
Dim - ключевое слово, которое сообщает Visual Basic, что нужно объявить
переменную. Для явного объявления можно использовать любой из следующих вариантов.
Dim Имя_перем [ As Тип Данных] [,Имя_перем 2 [[As Тип Данных]]
Private Имя_перем [ As Тип Данных] [,Имя_перем 2 [[As Тип Данных]]
Static Имя_перем [ As Тип Данных ] [,Имя_перем 2 [[As Тип Данных]]
Public Имя_перем [ As Тип Данных] [,Имя_перем 2 [[As Тип Данных]]
34
Public определяет глобальную переменную. Глобальной является переменная,
которая одинаково определена и имеет одно и то же значение во всех модулях и
процедурах проекта. Это объявление возможно только в модуле.
Static определяет статическую переменную. Статическая переменная не уничтожается при выходе из процедуры, а сохраняет свое последнее значение. Примеры.
Для неявного определения переменной можно использовать только имя переменной. Например А=7 или переменная типа Variant с именем А2. Variant –
переменная любого типа. Переменную также можно объявить с помощью
специального символа. Распространённые типы переменных даны в таблице.
Пр
ефи
кс
s
n
Си
мв
ол
Тип пе- Описание
ременной
$
%
String
Integer
l
&
f
!
Long
Integer
Single
d
#
c
@
b
v
Значения
Текстовый
10 32 символов
Целое,одинарной точно- От –32768 до 32767
сти
Целое, двойной точности +/- 2.1Е9
Вещественное, одинар- От -3.4Е38
ной точности
До 3.4Е38
Double
Вещественное, двойной От -3.4Е38
точности
До 3.4Е38
Currency Денежный тип
От -922337203685477.5808
До 922337203685477.5807
Boolean Логический тип
Variant
Вариантный тип
Любое значение
Использование констант(данных)
Константы – это способ хранения информации в памяти компьютера. Константы бывают численные и текстовые. Текстовые константы часто применяют
чтобы упростить восприятие программы, т.к. запомнить какое-нибудь осмысленное выражение проще чем набор цифр. В Visual Basic предусмотрено
большое количество внутренних констант. Их можно посмотреть вызвав окно
Object Browser, кнопка которого находится на стандартной панели инструментов.
Несмотря на большое количество предопределённых констант очень часто
бывает необходимо создать свои. Для этого используется ключевое слово
Const. Необязательные ключевые слова Public или Private определяют глобальные или локальные константы соответственно. Общий вид.
[Public | Private] Const имя константы [As тип константы] = Значение
Например. Const Pi = 3.1415; Public Const X1=”Академия”
35
При указании типа констант используют теже обозначения что и в переменных (см. раздел переменных). Например.
Const P1 As String =”Петров” – переменной P1 присваивается значение Петров.
Dim strFileName As String
strFileName = "Log.sev"
Создание подпрограмм (процедур) и функций
Подпрограмма (процедура) – это последовательность действий объединенных в программе для выполнения. Она выполняет строки кода в пределах своего блока. Процедуры бывают общего назначения и для обработки событий.
Процедуры обработки событий предназначены для обработки некоторых событий связанных с элементами управления или действиями над выбранным
объектом.
Синтаксис : Private|Public Sub Имя_события(аргументы)
…текст подпрограммы
End Sub
Private|Public – необязательные ключевые слова, определяещие область видимости процедуры.
Sub – ключевое слово, определяющее процедуру.
Имя_события(объекта) – название процедуры, мжет состоять из двух частей:
имени объекта и имени события, например – Команда1_Click. В скобках за
Имя_события указываются аргументы процедуры.
End Sub – ключевые слова, определяющие конец процедуры.
Пример создания процедуры:
Private Sub Form_Load()
Текст кода процедуры
End Sub
Пример процедуры выхода из программы при нажатии кнопки End
Private Sub Команда1_Click()
End
End Sub
Пример процедуры вывда индекса
Private Sub Count()
Dim A As Integer
Dim B As Integer
B=1
For A = 1 to 100
B = B*A
Next A
Debug.Print B
End Sub
36
Общие или собственные (программиста) процедуры используются программистом для выполнения каких-то общих задач, например расчетов в определенных местах программы. В таких процедурах вместо имени объекта указывается поле кода General , а затем в поле кода ключевое имя процедуры Sub, имя
процедуры, текст и конец процедуры.
Sub Расчет()
Текст кода процедуры
End Sub
Функции предназначены для выполнения служебных (расчетных, пересылочных и др.)действий и по своему назначению близки к процедурам. Вызов функции может происходить из любого места проекта только в том случае, если она
определена как процедура общего назначения. Синтаксис:
[Public|Private] Function <FuncName> ([arguments])[As <Type>]
код функции
End Function
Аргументы:
• FuncName – содержит имя функции, которое может начинаться только с буквы, состоять из букв, цифр и знака подчёркивания (_), иметь длину до 255
символов и не являться зарезервированным словом.
• Arguments – параметр,который представляет собой список переменных, передающих определённое значение в функцию для дальнейшего использования.
• Type – тип данных, возвращаемых функцией.
• Коды функции - представляют собой тело процедуры, которое содержит
описание локальных переменных и необходимые операторы.
Добавить процедуру или функцию в проект можно выбрав команду Tools =>
Add Procedure. В окне диалога ввести имя процедуры и выбрать её тип.
Пример функции, ввода константы строкового типа.
Public Function Ввод_имени() As String
Ввод_имени=InputBox(“Введите своё имя “)
End Function
Функции работы с текстовыми константам (строками).
Для непосредственной работы со строками в Visual Basic используется всего
один оператор – оператор объединения строк. Наиболее часто используется
символ объединении (конкатенации) строк - &. При объединении нескольких
строк, вторая строка помещается в конец первой, третья в конец второй и т.д..
синтаксис оператора конкатенации строк выглядит следующим образом.
Str_Result = Str1 & Str2 & Str3 & …
Где Str_Result – результирующая строка, Str1, Str2, Str3 – любые допустимые в
Visual Basic строковые переменные, а также функции, возвращающие стро-
37
ковое значение. Вместо знака амперсанта (&) можно использовать (+).
Пример использования объединения строк.
Private Function GetFullName()
Dim sName As String
Dim sSurName As String
sName = txtName.Text
sSurName = txtSurName.Text
GetFullName = sName + “ “ + sSurName
End Function
Все остальные действия со строками выполняются с помощью набора
встроенных функций, которые приведены ниже.
Функция
UCase, LCase
Описание
Изменяет регистр букв заданной строки на верхний
или нижний регистр соответственно.
InStr, InStrRev
Выполняет поиск одной строки в другой.
Left, Right
Возвращает указанное количество символов с начала или конца строки соответственно.
Mid
Возвращает указанное количество символов, находящихся в произвольном месте строки. Используется для замещения части строки другой строки.
LTrim,
RTrim, Убирает пробелы с начала, конца или с обеих конTrim
цов соответственно.
Len
Определяет длину строки.
Str, CStr, Val
Используются для преобразования числового значения в строковое и наоборот.
StrReverse
Изменяет порядок следования символов в строке на
обратный.
StrConv
Изменяет регистр букв текстовой строки.
Chr, Asc
Преобразует ASCII – код символа в строку и возвращает ASCII – код символа соответственно.
Если необходимо определить длину строки, можно воспользоваться функцией
Len(). Например, нужно определить количество символов в записях базы данных. Синтаксис функции Len() следующий.
Result = Len( Str )
Где Result –количество устанавливаемых символов в строке Str.
С помощью функции InStr() можно выполнять поиск в строке как отдельного
символа, так и целой группы символов. У этой функции есть два обязательных
и два необязательных параметра. К обязательным параметрам относится строка, в которой выполняется поиск, и строка, содержащая искомые символы. Если последовательность символов найдена, то функция возвращает номер первого совпадающего символа в исходной строке, начиная с единицы.если последовательность символов не найдена, то функция возвращает нулевое значение. С
помощью первого необязательного аргумента функции InStr() задаётся началь-
38
ная позиция в исходной строке, с которой нужно начинать поиск. Этот параметр должен быть положительным целым числом. Если начальная позиция
больше длины строки, то функция InStr() возвращает нулевое значение. Второй
необязательный параметр определяет, будет ли выполняться поик без учёта или
с учётом регистра букв. Чтобы выполнить поиск поиск без учёта регистра букв,
надо присвоить данному параметру значение 1. Синтаксис функции InStr() следующий.
Номер_Первого_Символа = InStr ( Начальная_ Позиция, Исходная_Строка,
Искомая_Строка, Регистр_Букв)
Пример функции InStr().
Private Sub cmdRun_Click()
Dim sMy As String
Dim sDest As String
Dim Result As Integer
sMy = “Hello, world!”
sDest = “wo”
Result = InStr(sDest,sMy)
End Sub
Чтобы выбрать часть символов из строки можно воспользоваться функциями
Left, Right, Mid. При вызове первых двух функций нужно указать исходную
строку и количество выбираемых символов. Синтаксис этих операторов приведён ниже.
Результат = Left$(Исходная_Строка, Число_Символов)
Результат = Right$(Исходная_Строка, Число_Символов)
При вызове данных функций параметр Число_Символов должно быть больше
нуля. Функция Mid похожа на приведённые выше функции, но её отличает дополнительный параметр, с помощью которого можно определить номер символа в исходной строке, с которого будет начинаться новая строка. Синтаксис
функции Mid.
Результирующая_Строка = Mid(Исходная _Строка, Начальная_Позиция,
[Число_Символов])
Например:
Print Mid(“Offspring”,4) ‘ Возвращается “spring”
Функции форматирования чисел.
Существуют различные форматы чисел и чтобы преобразовать число в нужный
формат в Visual Basic существует функция Format(). Для управления функцией
Format() используется одна строка - так называемый шаблон. Гибкость данной
функции заключается в том, что кроме стандартных, заранее определённых
шаблонов, пользователь может определить свой собственный шаблон форматирования.
39
Чаще всего функция Format() используется для изменения формата представленния чисел, чтобы облегчить их восприятие пользователем. При вызове
функции необходимо указать форматируемое число и шаблон.
Для работы с числами можно использовать несколько стандартных шаблонов
форматирования. Имя шаблона обязательно должно быть заключено в кавычки.
Стандартные шаблоны форматирования.
Имя шаблона
Описание
General Number
Выводит число без специального форматирования.
Currency
Выводит число с разделителем тысяч и
двумя цифрами после запятой.
Fixed
Выводит минимум одну цифру перед
запятой и две – после.
Standart
Тоже, что и Fixed, плюс добавляется
разделитель тысяч.
Percent
Исходное число умножается на 100 и
добавляется знак процента.
Scientific
Исходное число приводится к экспоненциальному виду.
Yes/No
Для ненулевых значений возвращается
Yes, а для нулевых No.
True/Fasle
Для ненулевых значений возвращается
возвращается True, для нулевых – False
On/Off
Для ненулевых значений возвращается
On, а для нулевых – Off.
Если ни один из перечисленных форматов не подходит, можно создать свой
собственный. Нужно указать в нём положение знакомест цифр, разделителей
тысяч и десятичной запятой. В шаблон можно добавить любой символ, который
будет выведен на печать. Следующий шаблон выводит число с пятью цифрами
после запятой и разделителем тысяч.
Print Format (nRange, “##,##0.00000”)
Служебные символы шаблона форматирования.
СимНазначение
Описание
вол
0
Цифровое знакоместо
Отображается цифра или 0, если для
данного знакоместа нет подходящей
цифры.
#
Цифровое знакоместо
Отображается цифра или пробел, если
для данного знакоместа нет подходящей цифры. Использование данного
символа шаблона позволяет исключить из числа незначащие нули.
40
.
Десятичная точка
Определяет положение десятичной
точки.
,
Разделитель тысяч
Определяет положение разделителя
тысяч.
%
Знак процента
определяет положение знака процентов. При отображении число будет
умножено на 100.
E-, eФормат с плавающей При отрицательномпоказателе степеточкой
ни перед ним будет отображаться
знак минус. При положительном показателе степени никакие знаки отображаться не будут.
Функции работы с файлами.
Одна из наиболее полезных функций для работы с файлами - функция Dir$. С
помощью этой функции можно получить список файлов, находящихся в одном
из каталогов. Имя может быть задано в виде полного или относительного пути,
а также в виде шаблона, состоящего из символов подстановки. Синтаксис
функции Dir$.
Строковая _переменная = Dir$(Шаблон,[Атрибуты])
Константы, управляющие функцией Dir$.
Константа
Значение
Описание
vbNormal
0
Значение, установленное по
умолчанию.
vbHidden
2
Поиск скрытых файлов.
vbSystem
4
Поиск системных файлов.
vbVolume
8
Возвратить метку тома.
vbDirectory
16
Поиск каталога.
vbReadOnly
1
Поиск файлов, предназначенных только для чтения.
файловые функции.
Действие
Синтаксис
Копирование файла.
FileCopy source, dest
Удаление одного или не- Kill path
скольких файлов.
Переименование файла.
Name oldname as newname
Создание новой папки.
Mkdir pathname
Удаление пустой папки.
Rmdir pathname
Замена текущего каталога.
Chdir pathname
Замена текущего диска.
Chdrive drive
Где Source – исходное имя, Dest – конечное имя; path – путь к файлу; oldname и
newname – старое и новое имя соответственно; pathname – путь к каталогу;
41
drive – имя диска.
Управление ходом программы.
Оператор If.
Во многих случаях требуется, чтобы некоторый оператор ( или группа операторов ) в программе выполнялись только когда значение некоторого условия
равно True. Именно для этого и предназначен оператор If. Существуют две его
разновидности – однострочный и многострочный. При выполнении любого
оператора If, вначале проверяется условие и если оно истинно, то будет выполнен соответствующий оператор. Ниже представлены оба типа операторов If.
Однострочный оператор
If x>8 Then k=k+1
Многострочный оператор
If x>8 Then
k = k+1
End I
Существует возможность проанализировать несколько условий, добавив в
оператор If дополнительные инструкции. Дополнительное условие указывается
с помощью оператора ElseIf. Оно будет анализироваться в том случае, если
предыдущее условие ложно. С помощью ключевого слова ElseIf в оператор If
можно добавить произвольное количество условий. Ниже приведён пример использования оператора If и ElseIf.
If l>0 Then
MsgBox “Ответ положительный”
ElseIf l=0 Then
MsgBox “ Ответ нулевой “
Else
MsgBox “Ответ отрицательный”
End If
В приведённом фрагменте вначале анализируется условие в операторе If. Если
оно истинно, выполняется группа операторов, расположенных сразу за оператором If. Если первое условие ложно, анализируется условие в ключевом слове
ElseIf. Если и оно ложно, то анализируется условие в ключевом слове Else.
Использование оператора Select Case.
Использование оператора Select Case очень часто бывает более удобным, чем
использование оператора If, особенно когда приходится обрабатывать множество условий. Ниже приведена конструкция оператора Select Case.
Select Case Тестируемое_Значение
Case Значение1
Группа операторов1
Case Значение2
Группа операторов2
И т.д.
42
Case Is
Группа операторовN
End Select
Первым в данной конструкции всегда указывается оператор Select Case. Он
говорит компилятору о том, что параметр Тестируемое_Значение будет проверяться на несколько значений сразу. В качестве данного параметра можно указать любое числовое или строчное выражение, включая литералы, переменные
и функции.
Каждая условная группа команд начинается с ключевого слова Case. Оно определяет значение, с которым будет сравниваться параметр Тестируемое_Значение. Если параметр Тестируемое_Значение будет равен указанному в
операторе Case значению, программа выполнит блок операторов, расположенных между текущим и следующим ключевым словом Case или оператором
End Select. Если параметр Тестируемое_Значение не равен указанному в текущем операторе Case значению, программа приступает к обработке следующего оператора Case и т. д. Блок Select Case заканчивается оператором End
Select.
Циклы.
Цикл Do..Loop.
Цикл Do..Loop позволяет выполнять группу операторов до тех пор, пока не
будет нарушено условие. Циклы Do..Loop делятся на две категории : проверяющие выполнение условия в начале и проверяющие выполнение условия в
конце( в этом случае цикл будет пройден хотя бы раз ).
Цикл с предусловием.
Do [{While|Until} <option>]
[<statements>]
[Exit Do]
[<statements>]
Loop
Цикл с постусловием.
Do
[<statements>]
[Exit Do]
[<statements>]
Loop [{While|Until} <option>]
Аргументы
While|Until - ключевое слово, определяющее проверку условия выполнения
цикла.
While <Условие> = True соответствует выражению 'пока условие правда'
Until <Условие> = False - 'до тех пор пока условие - ложь'
Option - опция, проверяющая выполнение условия цикла.
Statements - исполняемые операторы
Exit Do - оператор безусловного прерывания цикла, обязательно вводимый при
отсутствии проверки выполнения <Условия>
43
Пример
j=1
Do Until j=25 ' Цикл выполняется, пока j<25
Beep
' Звуковой сигнал
j=j+1
Loop
Циклы For .. Next.
Данные циклы являются безусловными циклами и позволяют выполнить группу операторов заданное кол-во раз. В начале данного цикла определяется переменная – счётчик, а также начальное и конечное значение для переменной. В
самом начале работы цикла значение переменной-счётчика устанавливается в
начальное значение для цикла. Когда программа, пройдя через цикл, возвращается в начало цикла, значение переменной-счётчика увеличивается (или
уменьшается, в зависимости от задания шага в ключевом слове Step).
Синтаксис
For <counter>=<start> to <end> [step <step>]
[<statements>]
[Exit For]
[<statements>]
Next [<counter>]
Аргументы
counter - переменная цикла
start - число, которое присваивается переменной цикла в начале выполнения
end - число, присваемое переменной циклапри его последнем выполнении
step - параметр, задающий приращение переменной цикла после каждого его
выполнения
statements - исполняемые операторы
Exit For - оператор, позволяющий прервать выполнение цикла, который может
использоваться, например, вместе с условным оператором. Пример
На форме разместить CommandButton ( Имя - cmdRun, Caption - Нажми меня ) и
Label (Caption - "").
Код :
Private Sub cmdRun_Click()
Dim A As Byte
For A = 1 To 100
lblChislo.Caption = CStr(A) 'присвоение метке значения целого числа
lblChislo.Refresh
' принудительная прорисовка метки, иначе будет на
писано только 100
Next A
End Sub
Пример цикла с уменьшением:
Dim A As Integer
44
For A=100 To 10 Step –10
Next A
Данный цикл выполнится 10 раз от 100 до 10. Если бы ключевое слово Step отсутствовало то выполнение этого цикла привело бы к ошибке.
Из цикла For.. Next можно выйти досрочно. Для этого используется оператор
Exit For. Его помещают в том месте цикла, где он должен прерваться.
Например
Dim nJob As Integer
Dim nCount As Integer
For nJob = 1 To 20
nCount = nJob+1
if nCount=5 Then Exit For ‘ Выход из цикла, когда nCount = 5
Next nJob
Управление работой принтера
Visual Basic использует принтер, установленный по умолчанию в операционной
системе. Он помогает легко установить его разрешение, свойства шрифтов и
т.п.
команда PrintForm выводит на принтер графический образ окна формы. Если в
приложении используется несколько форм, то необходимо указать требуемое
имя в качестве параметра:
Имя Формы. PrintForm
Поскольку данная команда выполняет побитовый перенос формы вместе с заголовком и рамкой на принтер, она не обладает достаточной гибкостью. Более
того, большинство принтеров обладают большей разрешающей способностью,
чем экран компьютера.
Большинство команд принтера в Visual Basic зависят от ориентации страницы.
Это означает, что Visual Basic пересчитывает все выводимые символы (фактически точки) перед передачей информации на принтер. Это позволяет полностью управлять внешним видом печатающейся страницы.
.
Синтаксис команды для вывода текста на печать очень прост:
Printer.Print текст
В данном контексте можно использовать символы ";" и "," таким же образом,
как в формах. Точка с запятой подавляет автоматический переход на следующую строку, а запятая осуществляет переход к новой печатной зоне (те же 14
колонок). Функции Tab и Spc работают аналогичным образом.
Управлять свойствами шрифта тоже можно обычным образом. Например:
Printer.Font.Name = "Script" 'Используется индексный шрифт размером 18 пунктов
Printer.Font.Size = 18
Как и в формах, изменения шрифта принтера не влияют на предыдущий текст.
Все изменения отражаются только на вновь выводимом тексте.
Полезные свойства и методы для объекта Printer
45
Ниже следует краткое описание некоторых наиболее часто используемых
свойств и методов объекта Printer. ColorMode - Позволяет определить тип
принтера - цветной он или монохромный. Возможны два значения данного
свойства, они приведены в таблице ниже.
Символическая константа
Значение
vbPRSMMonochrome
1
vbPRSMColor
2
Copies. Устанавливает количество печатающихся копии.
Height, Width. Возвращают горизонтальный и вертикальный размеры бумаги в
принтере, установленном в Windows. Они измеряются в твипах, если только не
установлена другая единица измерения. Данные значения нельзя изменить в
период работы программы; они предназначены только для чтения. Они используются, например, для проверки того, переключился ли пользователь на
другой размер бумаги, если выводимая информация не умещается на стандартном листе 8,5х11 дюймов. (Для такой страницы Visual Basic выдает значение ширины 12 288 твипов и высоты - 15 744 Твипов. Твип – экранно – независимая единица измерения расстояний на экране, приблизительно равная 1/1440
дюйма.)
EndDoc. Этот метод сообщает Windows об окончании работы с документом.
Его синтаксис следующий:
Printer.EndDoc
Данная строка освобождает память от последних страниц текста и посылает их
в Диспетчер Печати Windows на печать.
NewPage. Данный метод завершает текущую страницу и посылает принтеру
команду перехода на следующую страницу. Синтаксис:
Printer.NewPage
Page. Это свойство сохраняет количество напечатанных страниц текущего документа. Счетчик начинается с 1 и заканчивается после выполнения операции
EndDoc. Он увеличивается на 1 всякий раз при использовании метода NewPage,
а также в случаях, когда выводимая информация не вмещается на одну страницу. Обычно его
используют при выводе верхнего колонтитула.
PrintQuality. Используется для установки качества печати, если это поддерживает драйвер принтера. Синтаксис:
Printer. PrintQuality = значение где можно использовать четыре встроенные константы, перечисленные в таблице ниже
Константа
vbPRPQDraft
vbPRPQLow
vbPRPQMedium
Значение
1
2
3
Описание
Черновая печать
Низкое разрешение
Среднее разрешение
46
vbPRPQHigh
4
Высокое разрешение
Примечание: Дополнительно можно устанавливать разрешение в точках на
дюйм, если принтер (и его драйвер) поддерживают это.
Набор Printers
По определению объект Printer представляет собой текущий принтер Windows.
Набор Printers, с другой стороны, позволяет получить доступ ко всем установленным драйверам принтеров в системе (например, это может быть и драйвер
факса). Число установленных принтеров можно получить так:
Printers.Count
Доступ к элементу набора осуществляется следующим образом:
Printers {индекс},
где индекс означает число от 0 до Printers.Count - 1.
Примечание: Фактически принтер по умолчанию можно изменить, используя
Visual Basic. Это делается при помощи команды Set.
3. Примеры программ
3.1. Программа контроля вводимых сообщений
На форме разместить элементы с настройками:
Текст1 TextBox (Поле свойства text должно быть пустым)
Текст2 TextBox. В поле свойства text должна быть надпись: «Наберите породу
дерева»)
Command1 (в поле свойства Caption введите - Вход )
Command2 (В поле свойства Caption введите - Выход)
Программирование в коде.
На форме нажать два раза на кнопку - Выход - в коде этой кнопки ввести End.
Вернутся к форме (в глав. меню – «Просмотр» выбрать «Объект») нажать два
раза на кнопку Вход и ввести:
If Текст1.Text = "Зад. порода" then msgbox "Правильно" else msgbox "Неправильно"
Вместо фразы «Зад. порода» набрать породу заданную преподавателем. Окончательно код программы будет выглядеть так:
Private Sub Комманда1_Click()
If Текст1.Text = "Сосна" Then MsgBox "Правильно" Else MsgBox "Неправильно"
End Sub
Private Sub Комманда2_Click()
End
End Sub
Пустите программу на выполнение(значок 8), введите с клавиатуры заданную
породу, нажмите «Ввод», при сообщении ЭВМ «Правильно», нажмите «Выход».Для возвращения в исходное положение (к форме) нажмите кнопку с символом g.
47
3.2. Программа выбора цвета.
Программа будет изменять цвет формы в зависимости от того, который выбран
в выпадающем меню.
Приступаем к визуальному проектированию. На форме должны быть такие
элементы:
Кнопка (Button): Caption - Поменять цвет, Name - Command1
Кнопка (Button): Caption - Выход, Name - Command2
Для включения в программу Выпадающего меню выбрать значок Combo1. Text
и перенести его на форму. В окне свойств автоматически выберется пункт Text
и в столбец значений ввести название “Цвет”. Далее в свойстве List под значением «Список» ввести названия цветов в которые будет окрашиваться форма:Белый, Черный, Серый. Для этого активизируется окно «Цвет», рядом с
надписью «Список» вскрывается значокτ и вносятся названия цветов. В форме
кодов должны быть следующие надписи:
Option Explicit - объявление переменных.
Dim Col As String - объявление текстовой переменной Col -как значение цвета в
программе ( например белый).
Dim FCol As Long - объявляем числовую переменную FCol - она будет означать
числовое значение цвета формы в программе.
В Коде кнопки Выход и написать
End
В коде кнопки Поменять и написать:
Col = Combo1.Text - присвоение переменной Col значение параметра Text элемента Combo1. Если выбран Белый, то Col будет равен белый.
В коде кнопки Поменять:
If Col = "Белый" Then FCol = Qbcolor(15) - Если текстовая переменная Col равна тексту "Белый" то числовая переменная FCol равна числовому эквиваленту
цвета номер 15 (то есть белому)
If Col = "Черный" Then FCol = Qbcolor(0) - Если текстовая переменная Col равна тексту "Черный" то числовая переменная FCol равна числовому эквиваленту
цвета номер 0 (черному)
If Col = "Серый" Then FCol = Qbcolor(7) - Если текстовая переменная Col равна
тексту "Серый" то числовая переменная FCol равна числовому эквиваленту
цвета номер 7 ( серому)
If Col = "Цвет" Then Msgbox "Сначала выберите цвет",vbCritical - Если текстовая переменная Col равна тексту "Цвет" т.е. изначальному тексту элемента
TextBox то выдать сообщение об этом со значком ошибки.
Form1.BackColor = FCol - числовое значение заднего цвета элемента Form1
равно числовому значению переменной FCol.
Окончательный вид программы:
Option Explicit
Dim Col as String
Dim FCol as Long
48
Private Sub Command1_Click( )
Col=Combo1.Text
If Col = "Белый" Then FCol = Qbcolor(15)
If Col = "Черный" Then FCol = Qbcolor(0)
If Col = "Серый" Then FCol = Qbcolor(7)
If Col = "Цвет" Then Msgbox "Сначала выберите цвет",vbCritical
Form1.BackColor = FCol
End Sub
Private Sub Command2_Click( )
End
End Sub
3.3. Программа расчёта количества растений на поле
Программа формирует расчет высаживаемых растений по введенным размерам
поля и площади под одно растение. Создание проекта состоит из нескольких
этапов.
1. Общие объявления. Размещение на форме следующих элементов:
TextBox1 Его свойства: Name – txtSizeField - поле текста размера поля саженцев
Text - ""
Enabled - True
TabStop - False
TextBox2 Его свойства: Name – txtSizeTree - поле текста площади одного
растения
Text - ""
Enabled - False
TabStop - True
Label1 Name - lblSizeField
Caption - "Введите размер поля ( в кв. метрах )" ' ввод кнопки размера поля
Label2 Name - lblSizeTree
Caption - "Введите площадь под каждое растение" – ввод кнопки
CommandButton1
Name - cmdRun
Caption - "Расчёт"
' ввод кнопки расчета количества растен.
Enabled - False
CommandButton2
Name - cmdExit
Caption - "Выход"
' ввод кнопки выхода из расчета
Enable - True
2. Програмные коды содержащие описания переменных
Public SizeField As Long 'Размер поля в кв. метрах
Public SizeTree As Long 'Площадь под каждое растение
Public Result As Long 'Количество растений на поле
Private Sub cmdExit_Click()
49
End ' Завершение программы
End Sub
3. Обработка нажатия кнопки Расчёт
Private Sub cmdRun_Click()
If SizeField < SizeTree Or SizeField <= 0 Or SizeTree <= 0 Then ' Площадь поля
не может быть меньше площади под растение
MsgBox "Неверный ввод!", vbExclamation, "Ошибка!"
txtSizeField.SetFocus ' Перевод фокуса на ввод площади поля
txtSizeField.Text = ""
txtSizeTree.Text = ""
txtSizeTree.Enabled = False
cmdRun.Enabled = False
Else: Result = Fix(SizeField / SizeTree): MsgBox "Количество растений " & _
CStr(Result), vbInformation, "Результат"
End If
txtSizeField.SetFocus
txtSizeField.Text = ""
txtSizeTree.Text = ""
txtSizeTree.Enabled = False
cmdRun.Enabled = False
End Sub
4.При вводе площади поля следует нажать Enter, при этом если всё введено
верно, маркер ввода переместится в это поле.
Private Sub txtSizeField_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
'vbKeyReturn - код клавиши Enter
If IsNumeric(txtSizeField) Then ' Если введено число, то
SizeField = CLng(txtSizeField) ' Преобразование String->Long
txtSizeTree.Enabled = True ' Разблокирование TextBox
txtSizeTree.SetFocus
' Перевод туда фокуса ввода
Debug.Print SizeField
Else: MsgBox "Неверный ввод!", vbExclamation, "Ошибка!"
End If
End If
End Sub
При вводе площади под растение следует нажать Enter, при этом если всё
введено верно, кнопка Расчёт будет разблокирована
'Private Sub txtSizeTree_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
If IsNumeric(txtSizeTree) Then
SizeTree = CLng(txtSizeTree)
cmdRun.Enabled = True
cmdRun.SetFocus
Debug.Print SizeTree
Else: MsgBox "Неверный ввод!", vbExclamation, "Ошибка!"
50
End If
End If
End Sub
4. Вопросы для повторения материала
4.1. Перечислить и объяснить назначение окон рабочей среды Vbasic.
4.2. Дать характеристику трансляторам языка Vbasic.
4.3. Оформление программ в Q,Vbasic.
4.4. Объявление констант и переменных, их типы и символы.
4.5. Вычисления, стандартные функции и округления в Q,Vbasic.
4.6. Дать характеристики процедурам и функциям языка.
4.7. Объяснить использование функций текстовых констант.
4.8. Объяснить использование функций форматирования чисел.
4.9. Объяснить использование функций работы с файлами.
4.10.Операторы управления ходом программы.
4.11. Свойства управления работой принтера.
4.12. Объяснить ход выполнения программ раздела 3.
Заключение
Рассмотренные теоретические и практические вопросы программирования на языке Бейсик представленные в методическом пособии ориентированы на курс «Информатики» для студентов лесохозяйственных специальностей и могут быть расширены самостоятельным изучением отдельных дополнительных вопросов по предлагаемому библиографическому списку.
Библиографический список
1. М.Райтингер, Г.Муч, Visual Basic 6.0:пер. с нем. – К.: BHV,2000.-288 с.
2. Кетков Ю. Л. GM, Тurbo и QuickBASIC для IBM PC.- М.: Радио и
связь, 1992.
3. В.Н. Харин, В.Е. Межов, Ю.А. Чевычелов, Информатика.
Часть 1. Основы программирования на языках высокого уровня: Учебное пособие. Воронеж,1997. 84 с.
4. Савельев А.Я. /Кн. 3. Алгоритмизация и основы программирования.
Кн.7. Практикум программирования. М.: Высшая школа. 1996.
5.Яковлев М.Н. и др. Информатика: Методические указания к лабораторным
работам по курсу "Вычислительная техника и программирование" для студентов специальности 260400"Лесное и лесопарковое хозяйство". Воронеж, 1999.
58 с.
Литература к изучению дополнительных вопросов
6.Моррил Г. Бейсик для ПК IBM . - M.: Финансы и статистика, 1993.
Программирование микроЭВМ на языке Бейсик: Справочник/ Е.С.Башмакова и
др.; Под ред. И.М. Витенберга. -М.: Радио и связь, 1991.- 240с.: ил.
51
7. Фигурнов В.Э. IBM PC для пользователя 6-е изд. , перераб. и
доп. М.: Инфра-М, 1996.-432с.: ил.
Яковлев Михаил Николаевич
Зоненко Евгений Владиславович
ИНФОРМАТИКА
Учебное пособие по языкам программирования Quick, Visual
Basic
Редактор
Подписано в печать
Заказ №
Уч-изд. л.
Формат 297 х 420 1/16
Объем
п.лю Усл. п.л.
Тираж 75 экз.
РИО ВГЛТА ОП ВГЛТА. Воронеж, ул. Тимирязева,8
Документ
Категория
Без категории
Просмотров
22
Размер файла
471 Кб
Теги
visual, информатика, язык, basic, программирование, яковлева, quick
1/--страниц
Пожаловаться на содержимое документа