Онлайн Учебник по програмированию на языке QBasic, FreeBasic |
|
Глава ПЯТАЯ. Привет! В этой главе, мы изучим операторы: WHILE...WEND, Random Access Files, APPEND, GET (file I/O), SUB...END, SUB, PUT(file I/O), FUNCTION...END FUNCTION, LEN, GOSUB...RETURN, TYPE...END, TYPE, DIM SHARED, COMMON SHARED, RTRIM$ Чтож, приступим! Мы изучим другой метод выполнения цикла, путь прибавления к концу последовательного файла, структурного программирования. Сначала вспомним прошлые способы выполнения цикла. Как вы помните DO...LOOP и FOR...NEXT, а сейчас мы изучим операторы WHILE...WEND. Этот оператор очень похож на цикл DO...UNTIL. Вот как выглядит синтаксис этого цикла: WHILE<условие> ... WEND Скажем, Вы хотите сделать простую игру в предположения. Всё, что требуется - простой цикл, как в этом примере: RANDOMIZE TIMER PRINT "Игра - угадай!" number = INT(RND * 10) + 1'случайное число от 1 до 10 PRINT "Секретный номер находится в промежутке от 1 до 10" WHILE guess <> 10' цикл до предположения = 10 INPUT "Попыток "; guess tries = tries + 1'счётчик попыток WEND PRINT "Хорошая работа! Вы угадали секретный номер с "; tries; " попыт(ок),(ки)" END Эта программа составлена только в 10 строк! Вот задание - объясните, что делает каждая строча(как вы видите на некоторых строчках есть комментарии). Теперь вы поняли, как действует цикл WHILE...WEND, он простой, и все же полезный! Мы говорили относительно файлов в Главе 4. Вы помните команды INPUT и OUTPUT для последовательного входа в файл. Есть еще один способ добавления к файлу информации, используя команду APPEND. Команда используется точно так же как и OUTPUT и INPUT: OPEN "file.txt" FOR APPEND AS #1 APPEND действует точно также как и OUTPUT и кроме этого не стирает то, что уже записано в файле, прежде чем добавлять к этому другой текст. Это полезно для продолжающихся высоких списков счета и связки других вещей. Сейчас мы должны изучить структурное программирование. Очень не удобно в большой программе с тысячами строк и множеством операторов найти проблему! Поэтому, умные люди в 1960-ых разработали кое-что называемое "структурным программированием - Ming. " При использовании этой методики, мы можем использовать "подпрограммы" и "функции" в создании наших программ, чтобы упорядочить программный текст. Чтобы создавать и редактировать подпрограмму в QBASIC, нажимают кнопку на инструментальной панели меню [E]dit(редактировать) > New [S]UB...(Новая подпрограмма...). QBASIC спросит у вас относительно имени подпрограммы. Можно давать любое имя. QBASIC тогда позволит вам редактировать текст подпрограммы. В тексте подпрограммы используются те же операторы что и в обычной программе, после того как вы написали подпрограмму, вы можете её посмотреть, идите к [V]iew на инструментальной панели, выберите [S]UBS. И затем выберите имя файла вашей подпрограммы в меню. Если Вы хотите вернуться к главному тексту программу, то, выберете в этом же меню название вашей программы. Знайте, что переменные, которые Вы создаете в подпрограмме доступный только в этой же подпрограмме, а переменные в теле программы доступны только в нём, сделать их общедоступными можно с использование следующая команда в начале подпрограммы: COMMON SHARED variable$, variable2, variable3! Команда "DECLARE SUB...", объявляет имя подпрограммы и её существование.(QBASIC размещает эти инструкции в начале вашей программы, как только вы сохраняете её). Сделать переменную доступной везде можно так (используя в задании переменной оператора SHARED): DIM SHARED array$(100) Удостоверитесь, что любые переменные(называемые "глобальной переменной") находятся в вашей команде COMMON SHARED, иначе ваша программа будет работать с ошибками. Передают переменные к подпрограмме подобно этому: SUB DoBox (x1, y1, x2, y2) Чтобы вызвать подпрограмму нужно написать имя подпрограммы и задать численное значение переменных(если они есть) подобно этому: DoBox 30, 20, 50, 20 Если же нет переменных вы просто можете только напечатать название подпрограммы в основном тексте программы(теле), подобно этому(здесь вызывается сразу 5 попрограмм): Mainloop: CLS DoGraphics DoLevel WaitForKey Как дополнение к подпрограммам есть ещё и функции. Они подобны подпрограммам, о в основном они используются для вычисления. Создаёте их можно тем же самым путём, каким вы создали бы подпрограмму, [E]dit > [F]UNCTION(но не SUB). Редактировать функции можно так же как и подпрограммы. Вот простой пример: FUNCTION Cube(num) Cube = num * num * num END FUNCTION '[главная программа:] CLS INPUT "Номер "; number num3 = Cube(number) PRINT number; "в кубе = "; num3 END Последний раздел, который мы будем изучать в этой главе - файл прямого доступа. Они очень полезны для прикладных программ базы данных. Чтобы сделать программу вы должны определить название вашей TYPE(название) программы и конец TYPE...END. Имеется короткий пример этого: TYPE people nm AS STRING * 40 ' название программы - 40 символов age AS INTEGER ' устанавливает возраст как целое число address AS STRING * 60 ' устанавливает адрес в 60 символов END TYPE Следующая вещь, которую мы должны изучить прежде, перед тем как вы откроете файл - использование команды DIM, для установления типа прямого доступа к файлу. Это делается так: DIM person AS people Теперь, мы должны научится открывать файл. Снова используется команда OPEN(как вы помните из предыдущей главы), но теперь мы должны добавиться использования двух команд LEN и DIM. Вот пример: OPEN "address.dat" FOR RANDOM AS #1 LEN = LEN(person) Это открывает файл прямого доступа "address.dat" с книгой записей для присоединения информации. Теперь вы должны научится использовать свои переменные для ввода в файл информации. Пример описан ниже: INPUT "Дайте название записи "; record INPUT "Имя"; person.nm INPUT "Возраст"; person.age INPUT "Адрес"; person.address PUT 1, record, person Как вы видите, вы должны задавать переменной имя массива, a точка, в вашей пременной ТИП. Тогда, Командой PUT, вы помещаете переменные в файл. Синтаксис для команды PUT: PUT [имя файла], [номер записи], [имя переменной] Это очень просто. Получать массив из файла, используется в основном тот же самый метод, за исключением команды GET . Команда GET точно имеет тот же самый синтаксис, как команда PUT, за исключением, того, что из файла читается в массив, который вы определяете. Есть пример: INPUT " Представление, которые записи "; record GET 1, record, person PRINT "Название"; person.nm PRINT "Возраст"; person.age PRINT "Адрес"; person.address Так используют файл прямого доступа. Назовём, для примера файл RANDOM.BAS. Файлы прямого доступа являются очень полезным для большого количества прикладных программ, но они очень комплексны. Personname$ = RTRIM$ (person.nm) Такая команда бы подстроила к концу переменной несколько пробелов. Задание: 1. Создать простую программу базы данных для адресов и названий(имен) Использование структурного программирования. Сохраняйте ваши программы !!!!! Они могут стать шедевром!!!) Желаю удачи!! :))) |