- •Программирование на qbasic.
- •Алгоритм
- •Введение в язык программирования Qbasic
- •Среда программирования qBasic.
- •Алфавит языка
- •Выражения и операции
- •Оператор присваивания
- •Операторы ввода-вывода
- •1. Какие из следующих последовательностей символов являются идентификаторами, а какие нет.
- •2. Записать по правилам Бейсика следующие выражения:
- •3. Переписать следующие выражения, записанные по правилам Бейсика, в традиционной математической форме:
- •Операторы перехода
- •Ветвление в алгоритмах и программах. Операторы условного перехода
- •If условие then блок операторов 1 else блок операторов 2
- •Условный оператор неполной альтернативы:
- •If условие then блок операторов
- •Циклы в алгоритмах и программах
- •Строковые переменные
- •Массивы
- •Сортировка массива по возрастанию
- •Подпрограммы
- •Работа с файлами
- •Комбинированные типы.
- •Операторы графики
Подпрограммы
Иногда бывает удобно некоторые фрагменты программы представить в виде отдельных частей, по несколько раз используемых в разных частях программы. Такие части оформляются как подпрограммы. Подпрограмма записывается следующим образом :
GOSUB N - переход на строку N
RETURN - конец подпрограммы.
При использовании оператора GOSUB N компьютер запоминает следующий после GOSUB номер строки и после завершения подпрограммы начинает дальнейшее исполнение с этого номера.
Число подпрограмм не ограничено.
Функция пользователя.
В тех случаях, когда функция не является элементарной, или у функции несколько аргументов, удобно использовать функцию пользователя: DEF FN. Имя функции всегда должно начинаться с букв FN.
DEF FN не может быть рекурсивной (не может вызывать сама себя), и должна быть определена перед пользователем.
Пример:
Пусть X и Y - натуральные числа. R - остаток от деления X на Y. Выразить R(X,Y) - R функция от X и Y.
R=X- INT(X/Y)*Y - остаток от деления X на Y
DEF FN R(X,Y)=X-Y*INT(X/Y)
В этом примере R(X,Y) - функция двух аргументов.
PRINT (SIN(47*PI/180)-COS(78*PI/180)^2)/(EXP(1.5)-SIN(13*PI/180))
Работа с файлами
Базы данных
В некоторые программы надо многократно вводить одни и те же данные, что очень утомительно. Можно сэкономить много времени используя базы данных.
DATA список констант через запятую
READ список имен переменных
RESTORE номер строки с DATA- ой для восстановления
10 DATA 1,4,-5,10,56
30 FOR I=1 TO 5
40 READ X
50 PRINT X
60 NEXT I
70 END
В результате исполнения программы мы получим на экране :
1
4
-5
10
56
10 DATA 15,4,-5,80,56,105,8,9,4,6
20 CLS
30 FOR I=1 TO 5
40 READ A, B
50 PRINT A+B
60 NEXT I
70 END
А сейчас более подробно разберем эту программу. В строке 10 мы задали список констант, а затем стали их считывать. Сначала А, затем В, затем их сумму выводим на экран. И так 5 раз.
A | 15|-5|56|8|4|
B | 4|80|105|9|6|
После выполнения программы мы получим :
19
75
161
17
10
Константы могут быть и символьными, как работать с символами я расскажу чуть позже .
Запись в файл и вывод из файла
Иногда необходимо чтобы программа записала результаты вычислений в какой-то файл на диске, пусть это будет файл proba.txt .
Для начала этот файл надо открыть, и указать зачем, к примеру, открыть файл proba.txt для ввода. Сделать это можно так:
OPEN "proba.txt" FOR OUTPUT AS# 1
AS #1 - логический номер файла, это номер произволен, т.е. Вы сами можете его выбрать.
Ввод в файл осуществляется так: PRINT #N, A,B
Где N - логический номер файла (в нашем случае это 1), А и В- имена переменных записываемых в файл.
INPUT #N,A,B- вывод из файла с логическим номером N, значений переменных А и В.
CLOSE #N- закрытие файла с логическим номером N.
После того как Вы закончите работать с файлом его следует закрыть.
Комбинированные типы.
Под переменной в языках программирования понимают программный объект (число, слово, часть слова, несколько слов, символы), имеющий имя и значение, которое может быть получено и изменено программой. При объявлении переменных можно указать тип данных. Это делается с помощью оператора DIM. В бейсике имеется несколько встроенных типов: числовые (integer, long, single, double) и стоковые (string, string *).
При работе с большим числом данных одного типа очень удобно использовать массивы. Массив, это разновидность переменной. Он дает возможность хранить сколько угодно значений одного типа под одним и тем же именем. К каждому конкретному значению массива, необходимо обращаться через числовой индекс.
При написании программы, возникает необходимость описать характеристики (свойства) некоторого объекта, представляемого и обрабатываемого в программе. Таким объектом может быть человек, некоторый вычислительный комплекс, письмо, посылаемое по почте и т.д. Во всех подобных случаях свойства объекта представляются значениями различных типов и поэтому для их описания не могут быть использованы массивы.
Для описания объекта «ученик» могут понадобиться, например, следующие характеристики:
фамилия, имя и отчество (строки);
возраст (integer);
пол (строка);
класс (integer);
буква класса (символ); и т.д.
Для представления такой разнородной, но логически связанной информации удобно использовать комбинированный тип. Необходимо отметить, что в данном случае определенные компоненты комбинированного типа, ввиду их различной природы, не могут идентифицироваться порядковыми номерами (индексами), как в массивах, поэтому для обозначения компонентов используются идентификаторы (имена). Таким образом, описание комбинированного типа представляет собой список описаний его элементов; каждое описание похоже на описание простой переменной. Для примера, приведенного выше, описание комбинированного типа PUPIL (ученик) может выглядеть следующим образом:
TYPE Pupil
fio AS STRING * 20
age AS INTEGER
sex AS STRING * 6
class AS INTEGER
classname AS STRING * 1
END TYPE
Определив собственный тип данных, вы можете использовать его для объявления переменных этого типа.
DIM Schoolchildrens AS Pupil
DIM Group(1 TO 25) AS Pupil
Доступ к компонентам (свойствам) переменной пользовательского типа осуществляется путем указания точки после имени переменной.
Schoolchildrens.fio = "Иванов Иван"
Schoolchildrens.age = 15
Schoolchildrens.sex = "male"
Schoolchildrens.class = 10
Schoolchildrens.classname = "А"
PRINT Schoolchildrens.fio, Schoolchildrens.age, Schoolchildrens.sex, Schoolchildrens.class, Schoolchildrens.classname
Пример простой программы:
REM использование комбинированных типов
REM описание типа ученик
TYPE Pupil
fio AS STRING * 20
age AS INTEGER
sex AS STRING * 6
class AS INTEGER
classname AS STRING * 1
END TYPE
REM объявление массива из 3 элементов типа ученик
DIM Group(1 TO 3) AS Pupil
Group(1).fio = "Иванов Иван"
Group(1).age = 15
Group(1).sex = "male"
Group(1).class = 10
Group(1).classname = "А"
Group(2).fio = "Петрова Маша"
Group(2).age = 14
Group(2).sex = "female"
Group(2).class = 10
Group(2).classname = "Б"
Group(3).fio = "Сидоров Вася"
Group(3).age = 16
Group(3).sex = "male"
Group(3).class = 11
Group(3).classname = "В"
REM выводим на экран учеников 10 класса
FOR i=1 TO 3
IF Group(i).class = 10 THEN PRINT Group(i).fio
NEXT i
END
