Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_3_1_Лс_27_11_2011.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
4.63 Mб
Скачать

Контрольний опрос на практичному занятті (Лс,Вс).

Уровень 1

1. Составить программу удаления сдвоенных букв во введенной фразе.

2. Ввести строку и определить, сколько слов начинается с той же буквы, с которой начинается первое слово.

3. Из заданной строки получить новую, заменив все запятые на точки.

4. Из заданной строки получить новую, удалив все символы, не являющиеся буквами латинского алфавита.

Уровень 2

1. Среди натуральных чисел от 1 до N найти такие, запись которых совпадает с последними цифрами записи их квадpaтов:(5 и 25,6 и 36, 25 и 625 т.д.).

2. В заданной строке поменять местами первую букву "а" и первую букву "б". Выдать сообщение, если хотя бы одной из них нет.

3. Определить наименьшую длину слова в заданной строке (слова отделяются друг от друга пробелами).

4. Подсчитать, сколько слов в заданной фразе оканчиваются на букву "я", если известно, что после слова стоит пробел или точка.

Лабораторна робота № 16. Проектування додатків vb6, у яких дані організовані у вигляді файлів на магнітних носіях.

Существуют следующие типы доступа к файлам: последовательный, произвольный, двоичный (в данной работе не рассматривается). В таблице 16.1 приведены функции и операторы VB для работы с файлами.

Таблица 16.1. Функции и операторы VB для работы с файлами.

Функция,

оператор

Описание

Тип файла

Open

Открывает файл

П,Пр

Close

Закрывает все файлы

П,Пр

Close #

Закрывает файл по идентификатору (дескриптору)

П,Пр

Reset

Закрывает все открытые файлы, записывает содержимое буферов

П,Пр

Print tt

Записывает данные в файл

П

FileCopy

Копирует файл

П,Пр

EOF

Определяет метку конца файла

П,Пр

FileAttr

Возвращает режим доступа открытого файла

П,Пр

FileDateTime

Возвращает дату и время создания файла

П,Пр

FileLen

Возвращает размер файла в байтах

П,Пр

FreeFile

Возвращает номер свободного идентификатора файла (дескриптора)

П,Пр

GetAttr

Получает атрибуты файла

П,Пр

SetAttr

Устанавливает атрибуты файла

П,Пр

Loc

Возвращает номер поточной позиции в файле

Пр

LOF

Возвращает розмер открытого файла в байтах

П,Пр

Seek

Устанавливает на заданную номером позицию или запись в файле

П,Пр

Dir

Возвращает содержимое поточной папки

П,Пр

Kill

Удаляет файл

П,Пр

Lock

Блокирует файл при роботе в многопользовательской среде

П,Пр

Unlock

Снимает блокирование файла в многопользовательской среде

П,Пр

Name

Задает (переименовывает) имя файла

П,Пр

Get #

Читает данные из файла

Пр

Input

Читает данные из файла

П

Input #

Читает данные из файла

П

Line Input #

Читает строку из файла

П

Put #

Записывает данные в файл

Пр

Write #

Записывает данные в файл

П

ПОСЛЕДОВАТЕЛЬНЫЙ (SEQUENTIAL) ДОСТУП.

При последовательном доступе записи считываются последовательно одна за другой.

Информация в них сохраняется в текстовом формате (в виде цепочки кодов ASCII).

Для того, чтобы создать последовательный файл необходимо:

1) открыть файл оператором OPEN для доступа к нему и вывода или дозаписи в него данных;

2) записать данные в файл операторами PRINT или WRITE;

3) закрыть файл оператором CLOSE.

Для того, чтобы прочитать последовательный файл необходимо:

1) открыть его оператором OPEN для доступа к нему и вывода из него данных;

2) считать данные из файла в програму, используя INPUT, LINE INPUT# или INPUT#;

3) закрыть файл оператором CLOSE.

OPEN pathName FOR режим AS #номер_файла %

  • pathName – полное имя файла; включает не только непосредственно название, но и название дискового устройства и директории, где находится или будет создан файл;

  • режим – режим работы с данным файлом: Inputоткрыть файл для чтения, Outputоткрыть файл для записи, Appendоткрыть файл для добавления в него записей;

  • номер_файла % (дескриптор) — целое число от 1 до 255;

  • # — необязательный знак, который опережает номер файла.

Открытый файл после работы с ним должен быть закрыт, и тот же самый номер может быть использован снова.

WRITE # номер_файла%, [список значений]

PRINT # номер_файла%, [список значений]

  • список значений — список констант или/и переменных или/и выражений, значения которых записываются в файл

Выражения в списке разделяются запятой, пробелами или точкой с запятой. Если список значениай отсутствует, в файл будет занесена пустая строка.

Оператор WRITE. Разделителем в списке значений является запятая. Элементы списка заносятся в файл в одну текстовую строку. Символьные данные (String) записывают в кавычках. Эта команда сама заносит запятые между полями и более экономно размещает данные на носителях. Пасле записи последнего элемента строки автоматически записываются символы “возврата каретки” (13) и “переход на новую строку” (10).

Оператор PRINT. Разделителями в списке значений являются:

  • запятая — значения записываются в 14-символьные зоны вивода (после каждого данного автоматически заносится символ табуляции);

  • точка с запятой — значения записываются подряд, без промежутков между ними.

PRINT удобен для тщательного редактирования текста выходного файла, а WRITE лучше использовать в том случае, когда выходной файл будет использоваться дальше как входной для других программ.

CLOSE [#номер_файла] [,#номер_файла…]

Оператор CLOSE без параметра закрывает все файлы, открытые в этот момент в программе.

Читать данные можно различными способами:

  • с помощью операторов INPUT# и LINE INPUT#

  • с помощью функции INPUT

Каждая из функций записи работает в паре с определенной функцией чтения. Для Print # — это Input или Line input #, а для Write # — это Input#

LINE INPUT# номер_файла%, переменная

  • переменная – переменная типа String. Оператор Line Input # посимвольно считывает всю строку данных из файла (до 255 символов) и помещает ее в строковую переменную. При этом разделителем строк в файле служит стандартный разделитель строк символ возврата каретки CHR(13) или последовательность символов возврата каретки и перевода строки CHR(13) + CHR(10); при этом в переменную varName эти разделители не вставляются.

INPUT# номер_файла%, список переменных

  • список переменных – записаные через запятую переменные любого типа. Сначала считывается целая строка, а потом подстроки, разделенные разделителями-запятыми (соответствующие значения полей записи), помещаются в соответствующие переменные списка. Для корректной работы оператора строки файла должны иметь заданную структуру с разделителями.

Если текст поля заключен в кавычки, эти кавычки при чтении файла отбрасываются, отбрасывается также запятая, разделяющая поля. Переменные, используемые в операторе, могут быть как строкового,типа так и числового.

Для того чтобы прочитать все данные из файла при помощи операторов Input # или Line Input #, необходимо организовывать циклическое считывание данных из файла, поскольку данные считываются этими операторами по строкам.

INPUT (n,# номер_файла%)

  • n – число символов (байтов) для считывания

  • переменная – переменная типа String

Необходимо иметь в виду,что функция INPUT требует знания количества считываемых символов. Поэтому для чтения данных из файла необходимо предварительно вычислить его длину при помощи функции FileLen. Переход на заданную позицию в файле можно организовать при помощи оператора Seek

Seek,# номер_файла%, position

  • # номер_файла% — номер файла, аналогичный номеру файла в операторе Open;

  • position — целочисленное выражение, которое задает позицию указателя в файле.

Позиционирование при этом выполняется посимвольно. Оператор Seek устанавливает указатель на необходимую позицию. Если после этого использовать функции считывания или записи, то действие этих функций будет выполняться, начиная с позиции указателя, найденого оператором Seek.

EOF (номер_файла) — возвращает "ІСТИНА" при достижении канца файла.

LOF (номер_файла) – возвращает длину файла

ЗАДАНИЕ 16.1. Постановка задачи. СОЗДАЙТЕ ПРИЛОЖЕНИЕ, ДЕМОНСТРИРУЮЩЕЕ ЗАПИСЬ И ЧТЕНИЕ ИЗ ТЕКСТОВОГО ФАЙЛА «СВЕДЕНИЙ О СОТРУДНИКАХ» – СТРОК, КАЖДАЯ ИЗ КОТОРЫХ СОДЕРЖИТ ИДЕНТИФИКАЦИОННЫЙ НОМЕР, ФИО, ДАТУ РОЖДЕНИЯ И МЕСТО РОЖДЕНИЯ СОТРУДНИКА. СТРОКИ ОБРАЗУЮТ ТАБЛИЦУ, КОТОРУЮ НА ЭКРАННОЙ ФОРМЕ БУДУТ ИМИТИРОВАТЬ 4 ЭЛЕМЕНТА УПРАВЛЕНИЯ ComboBox (рис. 16.1), ОБРАЗУЮЩИЕ МАССИВ ОБЪЕКТОВ Combо(i), У КОТОРЫХ СВОЙСТВО Style ИМЕЕТ ЗНАЧЕНИЕ 1 – SimpleCombo.

Массив объектов — это группа объектов, имеющих одно имя(свойство Name), тип и общую процедуру обработки. В массив может входить до 332768 объектов. Порядковый номер элемента называется индексом и записывается в скобках сразу после имени массива. Объекты, входящие в массив, имеют свойство Index. Это свойство равно порядковому номеру элемента массива. Использование массивов объектов часть позволяет значительно упростить программный код.

Порядок действий

1. Расположите на форме объекты в соответствии с рис. 16.1.

Рис. 16.1. Экранная форма с 4 элементами ComboBox, имитирующими таблицу

Меню приложения Edit должно вызывать подменю, содержащее 5 команд редактирования: Добавить запись, Удалить запись, Вставить запись, Изменить запись, Очистить таблицу. Остальные команды меню (рис.16.1) не нуждаются в комментариях.

2. Наберите программный код проекта:

Dim numb As Integer, fio As String, bdate As Date, bloc As String

Синхронизация выделения записи таблицы:

Private Sub Comb_Click(Index As Integer)

i% = Combo(Index).ListIndex

For j% = 0 To 3

Combo(j).Text = Combo(j).List(i):

Combo(j).ListIndex = i

Next j

End Sub

Добавление новой записи в таблицу:

Private Sub mnuAdd_Click()

For j% = 0 To 3

XC = Combo(j).Text

Combo(j).AddItem XC

Next j

End Sub

Удаление записи из таблицы:

Private Sub mnuRemove_Click()

i% = Combo(0).ListIndex

If i < 0 Then

MsgBox "Выделите удаляемую строку", vbExclamation

Else

For j% = 0 To 3

Combo(j).RemoveItem i

Next j

End If

End Sub

Вставка новой записи в таблицу:

Private Sub mnuInsert_Click()

i% = Combo(0).ListIndex

If i < 0 Then

MsgBox "Выделите строку для вставки перед ней", vbExclamation

Else

Combo(0).AddItem InputBox("Введите номер"), i

Combo(1).AddItem InputBox("Введите фио"), i

Combo(2).AddItem InputBox("Введите дату рожд."), i

Combo(3).AddItem InputBox("Введите место рожд."), i

End If

End Sub

Изменение записи в таблице:

Private Sub mnuUpdate_Click()

i% = Combo(0).ListIndex

If i < 0 Then

MsgBox "Выделите изменяемую строку", vbExclamation

Else

Combo(0).List(i) = InputBox("Введите номер",, Combo(0).List(i))

Combo(1).List(i) = InputBox("Введите фио",, Combo(1).List(i))

Combo(2).List(i) = InputBox("Введите дату рожд.",, Combo(2).List(i))

Combo(3).List(i) = InputBox("Введите место рожд.",, Combo(3).List(i))

End If

End Sub

Очистка всей таблицы:

Private Sub mnuClear_Click()

For j% = 0 To 3

Combo(j).Clear

Next j

End Sub

Заполнение таблицы сведениями из текстового файла:

Private Sub mnuLoad_Click()

mnuClear_Click

Open "person.txt" For Input As #1

Do Until EOF(1)

Input #1, numb, fio, bdate, bloc

Combo(0).AddItem numb

Combo(1).AddItem fio

Combo(2).AddItem bdate

Combo(3).AddItem bloc

Loop

Close #1

End Sub

Запись сведений таблицы в текстовый файл:

Private Sub mnuSave_Click()

N% = Combo(0).ListCount

Open "person.txt" For Output As #1

For i = 0 To N - 1

numb = Val(Combo(0).List(i))

fio = Combo(1).List(i)

bdate = CDate(Combo(2).List(i))

bloc = Combo(3).List(i)

Write #1, numb, fio, bdate, bloc

Next i

Close #1

End Sub

Завершение работы приложения:

Private Sub mnuExit_Click()

End

End Sub

3. Проверьте работу проекта

4. Сохраните проект и форму в папке ЛАБ50 с именами Лр50_Зад1_P_Фамилия и Лр50_Зад1_F_Фамилия соответственно.