Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Операторы цикла DO WHILE/UNTIL LOOP и WHILE WEND.Эти циклы называются циклами с предусловием, т. к. проверка проводится до начала очередной операции: О [{WHILE UNTIL}condition] <тело цикла> LOOP или WHILE <условие> <тело цикла> WEND Цикл WHILE выполняется, пока условие истинно. Как только условие нарушается, выполнение цикла завершается. Если используется UNTIL, то выполнение происходит до тех пор, пока условие не станет истинным. Например, та же проверка вводимой длины последовательности может быть задана как INPUT N% WHILE N% <=0 PRINT "ВВЕДИТЕ ДЛИНУ ПОСЛЕДОВАТЕЛЬНОСТИ N = " INPUT N% WEND Обратите внимание, что до первого входа цикл переменной N% уже должно быть присвоено какое-либо значение! Процедурные блоки SUB и FUNCTION. В QBASIC можно объявлять и использовать подпрограммы. При вызове подпрограммы (функции или процедуры) выполнение основной программы приостанавливается, и управление передается в подпрограмму. По окончании работы подпрограммы управление возвращается основной программе. Основное, не формальное, различие между процедурой и функцией состоит в том, что процедура только выполняет какую-либо законченную последовательность действий, не возвращая результата работы в основную программу, а функция и выполняет действия, и возвращает результат. Например, вызов функции М = MIN (X, Y) вернет в основную программу значение наименьшего из двух чисел, и это значение будет присвоено переменной М. Функция может быть объявлена следующим образом: FUNCTION имя функции [(список параметров)] [STATIC] <операторы> имя функции = выражение <операторы> END FUNCTION где имя функции - имя функции и тип данных, которые она возвращает (%, &, !, # or $); список параметров - список переменных, с помощью которых функция вызывается с указанием типов в этих переменных: переменная [()] [AS тип ] [, переменная[0] [AS тип]]... тип (INTEGER, LONG, SINGLE, DOUBLE, STRING и т. д.). STATIC - объявляет, что локальные переменные данной функции сохраняются между вызовами самой функции. Можно объявлять функции и по-другому. Главное, чтобы вызовы функции в программе следовали после ее объявления. DEF FN имя функции [(список параметров)] <операторы> FNимя функции = выражение <операторы> [EXIT DEF] <операторы> END DEF Считается, что второй способ объявления функций более традиционен. Процедура объявляется следующим образом: SUB имя подпрограммы [(список параметров)] [STATIC] <операторы> END SUB. Операторы ввода-вывода Для ввода в QBASIC используются операторы INPUT, READ, DATA. Оператор INPUTпроизводит ввод данных, присваивая значения соответствующим переменным во время ввода. Например, при отработке оператора по вводу трех целых чисел INPUT А, В, С с клавиатуры вводятся числа через запятую, а затем нажимается клавиша <Enter>: 123, 2345, -56 <Enter> Для вывода данных на экран дисплея применяется оператор PRINT. При использовании этого оператора можно употреблять в качестве разделителей запятую или точку с запятой: PRINT А, В; С; Точка с запятой в конце списка выражений отменяет символы "возврат каретки" и "перевод строки". Использование запятой приводит к так называемому "зонному" выводу данных, где под "зоной" понимается расстояние в 14 символов (колонок). При использовании точки с запятой в качестве разделителя данные выводятся последовательно, друг за другом. Например, для того чтобы вывести на экран 3 символа, нужно написать так: PRINT "A","B","С" тогда на экране появится надпись в виде А В С. Если вы вводите, PRINT "A";"B";"C" то на экране появится надпись в виде ABC Примеры работы с символьными переменными. Пример 1 Дана строка символов до точки. Определить, является ли она записью десятичного числа, кратного трем.
REM PRG44_14 F= 1: К = 0 DO INPUT "ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ : ";S$ L = INSTR(1, S$, ".") -1 IF L = О THEN L = LEN(S$) FOR I = 1 TO L R = ASC(MID$(S$, I, 1)) - ASC("0") IF R < 0 OR R >= 10 THEN F = 0: I = L ELSE К = К + R NEXT I LOOP UNTIL F = 1 IF F = 1 AND К = 3 * (К \ 3) THEN PRINT "YES" ELSE PRINT "NO"
Для решения задачи: • вводим строку S$ и определяем ее длину; • организуем в строке поиск цифр до тех пор, пока не закончится просмотр или не обнаружим ошибки в числовом выражении; • в зависимости от значения флага и суммы цифр выводим результат на экран. Переменные: I - переменная цикла; К - сумма цифр; F - вспомогательный флаг, обозначающий ошибку в выражении; R - цифра соответствующего разряда; L - длина строки; S$ - строка текста. Пример 2 Дана строка символов до точки. Вывести ее на экран задом наперед.
REM PRG44_15 INPUT "ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ : ";S$ L = INSTR(1,S$, ".")-1 IF L = O THEN L = LEN(S$) S2$ = "" FOR I = L TO 1 STEP -1 S2$ = S2$ + MID$(S$, I, 1) NEXT I PRINT S2$
Для решения задачи: • вводим строку S$ и определяем ее длину; • организуем цикл по формированию строки S2$; • выводим результат на экран. Переменные: I - переменная цикла; L - длина строки; S$ - исходная строка текста; S2$ - строка-результат.
ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ :? 1234567890 ААААААА. ААААААА 0987654321. ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ:? +++++++++++ +++++++++++.
Работа с файлами Информация, вводимая с клавиатуры или обрабатываемая с помощью программных средств Бейсика размещается в оперативной памяти компьютера. Алгоритм, набранный в Бейсике, может быть сохранен на диске в виде файла. Файл — это поименованная область на магнитном или лазерном диске. В файлах могут содержаться тексты, графические и видеоизображения, звуки и музыка, таблицы и базы данных программы написанные на Бейсике и данные для этих программ. Требования к имени файла · имя не должно быть больше чем 8 символов; · имя может состоять из букв латинского алфавита, цифр и символов, например, _, -, (,), $ и некоторых других. Впрочем, злоупотреблять специальными символами не стоит — букв и цифр вполне хватает; · в имени файла запрещены символы <Пробел>, *, точка, запятая, кавычки, двоеточие. Файл имеет расширение. Оно имеет длину не более трех символов, указывается через точку после имени и характеризует тип файла. В файлах вы можете хранить как исходные данные для обработки, так и результаты работы программы. Для работы в Бейсике необходимы файлы, хранящие однородные по типу или структуре сведения ,о каких-либо объектах. Набор данных о каком-либо одном объекте называется записью. Файл может быть пустым, т. е. содержать 0 байт информации, но имя файла и символ конца файла будут присутствовать. Записи могут содержать данные разных типов, но должны быть обязательно одинаковы по структуре, например:
"Запорожец", "4067 ЛДЕ", "1972", "100$" "ГАЗ-34", "6666 ЛАА", 1989, "3500$"
В соответствии со способом доступа к файлам они делятся на два вида. · Файл с последовательным доступом; · Файл с прямым доступом. Файлы последовательного доступа наиболее просты как в организации, так и в работе с ними. Записи обрабатываются последовательно одна за другой. Информация в таких файлах хранится в виде текста в кодах ASCII. Такие файлы легко про- смотреть на экране, используя любой простейший редактор, или в самом Бейсике. Простота — хорошо, а последовательность в данном случае — плохо. Если информация об интересующем объекте упорядочена в файле по алфавиту, то придется перебирать практически весь файл, чтобы добраться до нужной записи. Отсюда, при большом информационном объеме файла обработка его замедляется.
Файлы прямого доступа хранят информацию в специальном формате, в котором каждая запись занимает строго фиксированную одинаковую с остальными длину. Такие файлы занимают на диске больше места, чем файлы последовательного доступа, но скорость работы с ними значительно выше. Операции над файлами Независимо от того, какие действия происходят с информацией, хранящейся в файле, производятся следующие обязательные операции: · открытие файла; · чтение и запись обрабатываемых данных; · закрытие файла. Открытие файла Для открытия файла предназначен оператор open, имеющий следующий формат: OPEN имя_ файла FOR режим AS # номер файла Режим определяет доступ к данным файла. Возможны следующие режимы: input. Это режим чтения информации из файла. В случае, если указывается несуществующее имя файла, возникнет сообщение об ошибке "Файл не найден". output. Режим записи информации в файл. Обычно при этом создается новый файл. Если же открывается для записи уже существующий файл, то ранее хранимая в нем информация будет утеряна. append. Режим добавления информации в файл. Новая информация будет размещена в конце файла, за последней записью. Номер файла предваряется знаком #, после которого следует целое число от 1 до 255. Запись в файл Рассмотрим пример записи в файл. OPEN "capitals.dat" FOR OUTPUT AS #1 FOR X=l TO 5 INPUT "ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ"; F$ PRINT #1, F$ NEXT X CLOSE #1 END В результате работы программы мы получим (полужирным шрифтом выделены введенные с клавиатуры данные): ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? МОСКВА ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? САНКТ-ПЕТЕРБУРГ ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? ТАЛЛИН ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? РИГА ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? ВИЛЬНЮС При этом на диске в текущем каталоге образуется файл, содержащий пять строковых значений. Имя файла будет capitals.dat. Удобнее всего при работе с файлами сделать текущим каталог, где эти файлы содержатся или будут содержаться, а при обращении к ним указывать только их имена. В качестве параметра имя_файла можно использовать переменную текстового типа. Это позволяет вводить имя файла с клавиатуры и является универсальным способом работы с файлами. Например:
INPUT " Введите имя файла "; FileName$ OPEN FileName$ FOR OUTPUT AS #1
После ключевого слова as указывается номер файла. Больше открыть файл с таким номером в данной программе нельзя. Для каждого последующего файла должен быть указан свой собственный неповторимый номер в пределах от 1 до 255. Сколько всего может быть открыто файлов, зависит от файла конфигурации вашего компьютера config.sys, в котором число одновременно открытых файлов определяется командой files. Представленный далее пример демонстрирует программу создания небольшой базы данных автомобилей, предназначенных для продажи. О каждом автомобиле заносится информация о его марке, номере, цвете, годе производства и продажной цене. Программа создания файла данных об автомобилях CLS INPUT " Введите имя файла"; F$ Открытие файла OPEN F$ FOR OUTPUT AS #1 DO INPUT "Марка автомобиля? (Для окончания работы введите QWE.); М$ IF UCASE$(M$)="QWE" OR OCASE$(М$)="ЙЦУ" THEN 1 INPUT "Номер автомобиля?"; N$ INPUT "Цвет автомобиля?"; С$ INPUT "Год производства автомобиля?"; G$ INPUT "Продажная цена автомобиля?"; S$ WRITE #1, М$, N$, C$, G$, S$ LOOP ' Закрытие файла 1 : CLOSE #1 PRINT "Файл сформирован"
Программа действует следующим образом. Запрашивает имя файла, открывает его для записи, запрашивает информацию, записывает ее в файл до введения пользователем сочетания букв "QWE" или "ЙЦУ" (эти символы расположены на одних клавишах, вследствие чего пользователь может случайно набрать как одну комбинацию, так и другую). Запись в файл может производиться операторами
PRINT # номер_файла, выражение ИЛИ WRITE # номер_файла, вьражение
Результат работы этих операторов одинаков. Для закрытия файлов применяется оператор
CLOSE # номер_файла Если номер файла в операторе close указан, то будет закрыт именно этот, вполне определенный файл. Если же номер не указан, будут закрыты все открытые файлы. Чтение из файла Чтение из файла производится аналогично записи, но — вместо режима output используется режим input. Прочитаем занесенные нами данные из файла avto.dat.
' Программа чтения файла данных об автомобилях CLS INPUT " Введите имя файла"; F$ ' Открытие файла OPEN F$ FOR INPUT AS #1 PRINT "База данных автомобилей на 17 декабря 2000 года" I=1 DO PRINT "Вывести данные об"; I; "автомобиле?" INPUT "Для окончания введите QWE, для продолжения -<Enter>"; M$ IF UCASE$(M$)="QWE" OR UCASE$(М$)="ЙЦУ" THEN 1 INPUT #1, M$, N$, C$, G$, S$ PRINT M$, N$, C$, G$, S$ I=I+1 LOOP UNTIL EOF(l) ' Закрытие файла 1 :close #1 PRINT "Файл закрыт"
Оператор loop until eof(1) . Означает, что считывание ведется до тех пор, пока не будет обнаружен символ конца файла (end of file), а в скобках указан номер открытого файла. Изменения данных в файле Для изменения какой-либо записи, удаления старых или добавления новых данных в последовательном файле необходимо открыть два файла: подлежащий изменению и новый, в котором создается обновленная версия исходного файла. Старый файл в дальнейшем можно удалить. Приведенная ниже программа в файле avto.dat изменяет "МОСКВИЧ" на "МЕРСЕДЕС". В первых строках открываются исходный файл avto.dat и новый файл avto2.dat, сначала пустой. Очередная запись считывается из файла avto.dat и, при условии, что это не "МОСКВИЧ", переписывается без изменения в новый файл. Если же встречается значение "МОСКВИЧ", то оно заменяется на "МЕРСЕДЕС" путем присваивания нового значения переменной м$. В следующей .строке данное значение попадает в выходной файл. После того как весь входной файл просмотрен, оба файла закрываются.
OPEN "avto.dat" FOR INPUT AS #1 OPEN "avto2.dat" FOR OUTPUT AS #2 FOR 1-1 TO 5 INPUT #1, M$, N$, C$, G$, S$ IF UCASE$(M$)-"МОСКВИЧ" THEN М$-"МЕРСЕДЕС" PRINT 12, M$, N$, C$, G$, S$ NEXT I CLOSE 1, 2 KILL "avto.dat" NAME "avto2.dat" AS "avto.dat" END
Заключительный этап — удаление исходного и переименование нового файла, которому придается прежнее имя, что обеспечивает и в дальнейшем наличие на дискете файла avto.dat. Добавление данных в файл Указание for append в операторе open подготавливает файл для вывода данных и смещает указатель на конец файла. Последующие операторы приписывают новую информацию к уже имеющейся. В предложенной далее программе в файл данных об автомобилях добавляются сведения о двух новых поступлениях.
' Программа создания файла данных об автомобилях CLS INPUT " Введите имя файла"; F$ ' Открытие файла OPEN F$ FOR APPEND AS II INPUT "Марка автомобиля? (Для окончания работы введите QWE.); М$ IF UCASE$(M$)="QWE" OR UCASE$(М$)="ЙЦУ" THEN 1 INPUT "Номер автомобиля?"; N$ INPUT "Цвет автомобиля?"; С$ INPUT "Год производства автомобиля?"; G$ INPUT "Продажная цена автомобиля?"; S$ WRITE #1, М$, N$, C$, G$, S$ LOOP ' Закрытие файла 1 : CLOSE #1 PRINT "Файл дополнен"' Оператор графики |
||||||
Последнее изменение этой страницы: 2016-07-22 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |