Шпоры к экз. по КП 1-й курс 2-й семестр
.doc
Вопрос 13. Управление базами данных. Параллельно с развитием ЭВМ и их широким внедрением во все сферы деят-ти увелич. объемы и усложнялась структура обрабатываемой инф-ции. Для решения проблемы структуризации, хранения и обработки больших объемов инф-ции разработаны сис-мы управ. базами данных (СУБД). Примерами таких систем для ПК явл. Microsoft Access, MSFoxPro и др. VB исп. механизм БД Jet фирмы MS для подключения БД и доступа к инф-ции, хранящейся в ней. Доступ к данным из VB вып. посред. эл. упр. Data. Data служ. для установления связи между БД и др. эл-ми упр. для отображ. данных из базы. Один эл. упр. Data всегда обеспеч. доступ только к одной записи в текущий момент, позволяя отображать ее содержание на форме. Управление БД рассматривается на примере созд. однотаблич. базы и обработки ее в режиме VB с прим. динамич. массивов. Для созд. структуры БД необх.: 1) активизир. Access; 2) в раскрывш. окне в поле "Создание БД" щел. лев. кн. мыши по окну "Новая база"; 3) щелк. по кн. Ок; 4) в раск. окне вв. с клавы и запомнить имя БД и щелк. по кн. Создать; 5) в раск. окне снова щелк. по кн. Создать; 6) вв. режим Конструктор и щел. по кн. Ок; 7) в раск. окне в столбце Имя поля вв. имя NP (номер п/п), нажать Кл. Enter, в столбце Тип данных выбрать Имя типа "Счетчик" и щел. по кн. Ключевое поле в горизонт. меню; 8) вв. Имя второго поля NAZ (название), в столбце Тип данных оставить тип "Текстовой", поменяв размер поля (ввести, напр., 15); 9) повторить действия для всех полей в соответ. с заданием. При необх. внесения изменений в структуру БД вып. след. действия: 1) активиз. Access; 2) открыть БД по имени; 3) в раск. окне щел. по кн. Конструктор и внести необх. изменения; 4) закрыть окно. Для созд. БД необх. щел. мыш. по кн. Открыть, в раск. окне вв. необх. кол-во строк БД, сохранить и закрыть прил. Access. Считывание БД в среду VB производ. в след. порядке: 1) активиз. VB; 2) на раб. поле сформир. эл. упр. Data и задать соответ. значение след. св-вам: - знач. св-ва Connect – оставить Access (по умолч.); - DatabaseName – ввести путь и имя БД (А:\Предприятие1.mdb). Для исключ. ошибки ввода имя БД можно выбрать, найдя по имени БД в папке Мои док-ты; - Record Source – вв. в соответ. с запомненным именем табл.; 3) для того, чт. вывести на форму VB БД по строкам в соот. с зад. структурой, необх. сформир. соответ. кол-во эл. упр. Label для вывода заголовков полей и задать им соот. св-ва; 4) создать мас. эл упр. TextBox и для каждого из них задать соот. св-ва: Data Source – Data1 и Data Field – ввод из контекстного меню (NP и т.д.). Теперь при старте проекта (после наж. F5) первая строчка записей будет выведена в окна мас. эл. упр. TextBox. Для просмотра всех ост. строк БД необх. исп. эл. упр. Data щелчком мыши по стрелочкам влево-вправо; 5) сформир. мас. эл-тов упр. ListBox для вывода на форму всей БД в соответ. с программой; 6) сформ. команд. кнопки для упр-ния (Command Button). |
Вопрос 2. Основные элементы управления. Для созд. эл. упр. необх. щел. по нему лев. кн. мыши и перетащить указатель на форму: появл. перекрестие, кот. устанав. в том месте формы, где будет расп. лев. верх. угол формир. прямоуг. Далее необх. растягивать прямоуг. до нуж. размеров. Если кн. отпустить, то э.у. появ. на форме. Размеры уст. в завис. от конкрет. задачи. При необх. наж. кл. F4 выз. появл. окна св-тв. 1-й э.у.– метка Label служит для отображ. текста подсказок, подзаголовков, кот. польз. не может изменять. Содерж. текста подсказок вводится в окне св-тв, кот. расп. справа. Чтобы метка автоматич. изменяла свои размеры, полностью отображая текст, в св-ве Caption необх. устан. знач. св-ва AutoSize=True. Чтобы текст метки переносился на след. строку, а сама метка расширялась в вертик. направ., необх. испр. св-ва WordWrap=True. Для вырав. текста необх. испр. св-ва Alignment–по центру Center, по лев. краю Left Justify, по пр.- Right Justify. Для того, чтобы графич. интерфейс польз. соответ. эргономич. треб., след. пользоваться след. св-вами: BackColor и Font. 2-й э.у.– поле TextBox сл. для отображ. результатов работы программы: вывод вводимых данных, выв. найденных значений и т.д. Формир. анал. метке. В окне св-тв, исп. св-ва Text, удаляем надпись. 3-й э.у. – ListBox отображ. список эл., располож. вертик. В окне св-тв выделяем св-во List и двойным щел. мыши справа удал. надпись в окне. Часто для удобства напис. программ необх. сформир. массив эл-тов упр. ListBox (также как и TextBox). Для этого необх. копир. окно после его активации и вставлять необх. кол-во раз. 4-й э.у. – кн. упр. CommonButton сл. для запуска программ, и для этого э.у. пишется код. В окне св-тв выделяем св-во Caption, удал. надпись и набираем свою. 5-й э.у. MsFlexGrid сл. для отображ. инф-ции в таблич. формате (двумер. массивы, БД). Этот э.у. отсут. на экране ПК, т.к. он явл. нестандартным. Для вывода его на панель необх. вып след. действия: активиз. меню Project, акт. подменю Component, акт. Microsoft Flex Grid 6.0, слева щелк. мышью – появл. галочка. Э.у. данными Data обеспеч. доступ к данным с пом. процессора БД Jet, кот. поддерж. MSAccess. |
Вопрос 7. Основные операторы 1. Оп. присваивания (куда запис.) = (что запис.). Пример: MAX=0 2. О. безусловного перехода GоTo с указ. метки перехода (номер строки). Пример: For I-1 To N 1 A(I) = InputBox ("Вв. числа") If A(I)<=0 Then GoTo 1 Next I 3. Управляющие конструкции If <условие> Then <операторы> - неполная развилка If <усл.> Then <опер.> Else <опер.> - полная развилка Пример If A<0 Then C=1:B=0 - неполная развилка If A<0 Then C=1:B=0 Else C=0:B=1 - полная развилка или If A<0 Then C=1 B=0 Else C=0 B=1 End if 4. Конструкция For <имя цикла переменной> = <нач. цик.> To <кон. цик.> Пример For I = 1 To N Next I Шаг изменения цик. переем. м. б. любой. Он указ., если он не равен 1. For I = 1 To N Step -1 Next I 5. Конструкция DoWhile Loop Цикл с неизвест. числом повторений. Если условие выполняется, происх. переход к след. строчке программы, иначе выход из цикла. Ввод последовательности данных: PC=1 DoWhile PC=1 A=InputBox ("A=") ………………………. PC=InputBox ("Вв. 1 для продолжения, иначе – 0") Loop 6. Конструкция Select Case Делает более читаемой программу по срав. с блоком If при наличии большого числа вариантов выбора. Формат применения: Select Case <проверяемое выражение> Case <список выражений> <операторы> ………………………… Case Else <операторы> End Select Кон. работает с единст. проверяемым выражением, кот. вычисляется один раз при входе в эту кон. Затем VB сравнивает получ. результат со значен., задаваемыми опер. Case. Если найдено совпадение, вып. соответ. блок операторов. Каж. список выражений явл. спис. одного или более значений, кот. раздел. запятой. Если окаж., что вычисляемому значению проверяемого выражения соответ. неск. опер. Case, то вып. первый из них. Пример: X=InputBox ("x=") Select Case x Case 1, 5 A=10 Case 2, 6 A=100 Case else A=0 End Select |
|||||||||
Вопрос 4. Типы данных VB, являясь алгоритмич. яз. программир., им. свой алфавит, использ. для напис. идентификаторов и операторов. VB вкл. 26 лат. букв, 10 араб. цифр и 26 символов. Данные характериз. типом и организацией. Тип данных обобщает след. понятия: 1) размещ. в ПК, 2) способ представления, 3) прикладной смысл. 1) Данные и программа в момент вып. размещ. в ОП, состоящей из пронумеров. ячеек, включ. 1 байт инф-ции. Номер определенной ячейки наз. адресом. 1-го байта хватает крайне редко, и данные заним. непрерывную последоват. байтов 2, 4, 8 и т.д. 2) Последоват. битов в байтах данного, кот. кодируют всю необх. инф-цию, определяющую данные. Правила кодирования и их реализация в разных ЭВМ опред. способ представления данного. Напр., для числовых данных сущ. способ представ. с фиксир. точкой и с плавающей точ. 3) Определяет возможность использования данных для тех или иных целей. Напр., числовые данные могут подвергаться различ. арифм. операциям, а с симв. данными можно произв. операции сцепления, выделения и т.д. Под организацией понимается их независимость (одиночные данные) или связанность (массивы). Если переменная объявлена оператором Dim, то значение переменных сущ. только во время ее выполнения. Такая переменная наз. локальной. Для того, чтобы одна и та же переменная могла использ. в разных процедурах одной формы, оператор описания переменной д. б. размещен в разделе общих объявлений General. Для того, чтобы одна и та же переем. могла использ. в разных формах проекта, она д. б. объявлена как глобальная с исп. оператора Global и размещена в модуле проекта. (1 байт – 8 ячеек).
|
Вопрос 10. Процедуры Function. VB содержит встроенные стандарт. ф., напр., Sqr, Abs и др. Кр. того, с пом. оператора Function можно писать собственные ф. Формат применения процедуры Function: Private Function <имя процедуры> (параметры) [As Type] <операторы> End Function Как и проц. Sub, проц. Function явл. самостоят. и может принимать параметры, выполнять ряд операторов и изменять значения своих параметров. В отличие от проц. Sub проц. Function может возвращать значение в вызывающую процедуру. Пример. В одну и ту же переменную вводятся натур. числа, кол-во кот. заранее неизвестно. Треб. вывести на экран вводимые числа, простые числа (PR), а также факториал (MPR) тех простых чисел, кот. не больше 19. Private Sub Command1_Click Dim A As Integer, F As Integer, I As Integer Dim ST As String, FL As String, PR As String, MPR As String Dim PC As Byte' параметры цикла PC=1' начальное знач., необх. для входа в цикл ST="": MPR="": PR="": FL="" 'обнуление симв. переем. Do while PC=1 1 A=InputBox ("Вв. натур. число") If A<1 Or A<>Fix(A) Then GoTo1 Text1.Text=Str(A) ST=ST+Str(A) +" " ' сцепление натур. чисел F=0 For I=2 To A\2 If A Mod I=0 Then F=1 Next I If F=0 And A<=19 Then FL=FL+Str(FAC(Val(Text1.Text)))' при вызове ф. указ. имя ф. и текст. поле, в кот. запомнено симв. представление вводимого числа MPR=MPR+Str(A)+" " End If If F=0 Then PR=PR+Text1.Text PC=InputBox("Введите 1 или 0 для выхода") Loop Text1.Text=SP Text2.Text=PR Text3.Text=FL Text4.Text=MPR End Sub Function FAC(X As Integer) As Double Dim Y As Integer FAC=1 For Y=2 To X FAC=FAC*Y Next Y End Function
|
Вопрос 3. Структура программы. Прогр. сост. из 4-х осн. блоков: 1) описание данных; 2) ввод дан.; 3) обработка дан. по усл. задания; 4) вывод результата. 1. Описание данных. Формат описания:
Мож. не объявлять переменную заранее: с одной стор. это удобно, но с др. прив. к трудно уловимым ошибкам. Если Вы случ. написали имя одной и той же переем., то воизбеж. таких проблем мож. дать указание VB-у, чтобы он предуп. программиста, когда встретится имя необъяв. перем. Для этого необх. поместить опер. Option Explicit в секции Declaration кажд. формы. Для объяв. массивов (пронумер. совокупностей однотипных данных) после указ. имени массива в круглых скобках указ. знач. ниж. и верх. границ индексов элементов (напр., Dim A (1 To 8) As Integer). Если размер массива заранее неизвестен, то прим. объявление динамич. массива, кот. предшест. опред. его размера напр.: Dim A () As Integer N = InputBox ("N=") ReDim A (1 To N) As Integer При этом исп. модальное (закрываемое для продолж. работы) встроенное окно диалога, для вызова кот. исп. ф. InputBox, отображ. подсказку команды в окне диалога и возвращ. данные, введенные польз-лем. 2. Ввод данных. Формат вв. дан. с клавы след.: <имя переменной = InputBox ("подсказка") FAM = InputBox ("Вв. фамилию") Ввод элементов одномерного массива: For I = 1 To N A(I) = InputBox ("A("+Str(I)+")=") Next I Ввод данных мож. также произв. с пом. опер. присвоения (=). В этом случ. инф-ция запис. автоматич. при запуске программы FAM = "Иванов"; В = 10; For I = 1 To N A(I) = Int (Rnd*100) Next I 3. Об. дан. по усл. зад. Для обр. дан. след. прим. ТА, кот. по сути явл. теоретич. основой программир., и только в крайнем случае необх. разраб. свои. ТА более 100. Пример ТА сортировки: For I = 1 To N-1 For J = I + 1 To N If A(I) > A(J) Then B=A(I):A(I)=A(J):A(J)=B Next J, I Нужно хор. понять работу ТА, т.к. их прим. треб. творч. подхода. 4. Выв. рез. Для выв. инф-ции исп. след. эл. упр.: 1) TextBox – выв. в строку, 2) ListBox – выв. в столбик, 3) MsFlexGrid – выв. табл. 1) Пример:
|
Вопрос 5. Создание собственного типа данных. Мож. комбинир. переменные неск. разных типов и созд. определяемые польз-лем типы, так наз. структуры. Этот тип полезен, когда необх. создать единст. перемен., в кот. запис. связанные фрагменты инф-ции. 1) Типы данных, опред. польз., созд. с пом. опер. Type. Доп., треб. создать тип, в кот. запис-ся инф-ция о сотруд. предприятия.
Содержание типа данных можно хранить в одной ячейке. Private Type ZAP (придумать имя переменной) (Public) NOM As Integer' порядковый номер NO As Integer' номер отдела FAM As String' фамилия DL As String' должность OKL As Currency' оклад GR As Integer' год рождения End Type Command1.Click Dim MAS () As ZAP' массив записи N = InputBox ("Вв. кол-во записей") ReDim MAS (1 To N) As ZAP 2) Ввод полей массива записей производится след. образом: For I = 1 To N With MAS (I)' подключаем оператор присоединения .NOM = InputBox ("Вв. поряд. номер"+Str(I)+"-го сотруд.") .NO = InputBox ("Вв. номер отдела"+Str(I)+") .FAM = InputBox ("Вв. фамилию …") .DL = ….. .OKL = ….. .GR = ….. End With Next I 3) Вывод массива записей производ. с исп.: а) массива эл. уп. ListBox; б) нестандартного эл. уп. MSFlexGrid а) For I = 1 To N With MAS (I) List1(0).List (I-1) = .NOM List1(1).List (I-1) = .NO List1(2).List(I-1) = .FAM ……………………………. End With Next I б) With MSFlexGrid1 .Rows = N+1' задаем кол-во строк с учетом заголовка .Cols = 6' зад. кол-во столбцов в соответ. с заданием .TextMatrix(0,0) = "N п/п'' 'формируем заголовок .TextMatrix (0,1) = "Номер отдела" .TextMatrix(0,2) = "Фамилия" ……………………………………. .Rows Height (0) = 300' высота строки (по умолч. 200) .ColWidth(0) = 500' ширина столбца .ColWidht(1) = 500 .ColWidth(2) = 1000 ……………………………………. For I = 1 To N .TextMatrix(I,0) = MAS(I).NOM .TextMatrix(I,1) = MAS(I).NO .TextMatrix(I,2) = MAS(I).FAM …………………………………… Next I End With |
Вопрос 8. Массивы данных Массив – это пронумер. совокуп. однотип. данных. Мас. быв. одномер., двум. и т.д., а также статические, в т.ч. массивы-константы, а также динамич., размер кот. опред. польз. программы. 1) Объявление статич. масс. (одномер.): Dim NAZ (1 To 12) As String' объяв. мас. с нумерацией яч. 1 до 12 2) Объявление двумер. масс.: Dim A(1 To 5, 1 To 6) As Integer' в масс. 5 стр. и 6 столб. 3) Объявление динамич. масс.: Dim FAM () As String Dim N As Integer N=InputBox ("N=") ReDim FAM (1 To N) As String 4) Объявление динамич. двумер. масс.: Dim A() As Integer Dim N As Integer Dim M As Integer N=InputBox ("Вв. кол-во строк N=") M=InputBox ("Вв. кол-во столбцов M=") ReDim A (1 To N, 1 To M) As Integer 5) Ввод элементов одномер. мас.: For I=1 To N A(I)=InputBox ("A("+Str(I)+")=") Next I 6) Ввод элементов двумер. мас.: For I=1 To N For J=1 To M A(I)=InputBox ("A("+Str(I)+","+Str(J)+")=") Next J,I 7) Вывод элементов одномер. масс. в строчку: SP="" For I=1 To N SP=SP+Str(A(I))+" " Next I Text1.Text=SP Если мас. символьный, то ф. Str отменяется. 8) Вывод элементов одномер. масс. в столбик: For I=1 To N List1.List(I-1)=A(I) Next I 9. Вывод элементов двумер. мас.: а) с исп. эл. уп. TextBox: SP="" For I=1 To N For J=1 To M SP=SP+vbCrlf – опер. перевода курсора на новую строчку Next I Text1.Text=SP При этом свойство Multiline эл. уп. Text1.Text д. б. = True б) с исп. эл. уп. ListBox В том случае, если кол-во столбцов известное число: For I=1 To N For J=1 To 6 List1(J-1).List(I-1)=A(I,J) Next J, I В этом случае созд. мас. эл. упр. List1, сост. из 6 ячеек. в) с исп. эл. уп. MSFlexGrid With MSFlexGrid .Rows=N .Cols=M For I=1 To N For J=1 To M .TextMatrix(I-1, J-1)=A(I,J) Next J, I End With
|
Вопрос 6. Осн. операции и стандартные функции 1. Арифметич.: + слож.; - вычит; * умнож.; / дел.; ^ возвед. в степень; \ целочисленное дел. с получ. частного; Mod получ. остатка от дел.: N Mod P = N-(N\P)*P; 15 Mod 7=1; 7 Mod 15=7; 129 Mod 10=9; N Mod 2=0. 2. Логич.: And; Or; Not. 3) Отношение: > больше; < мень-ше; <> не равно; >= больше или равно; <= меньше или равно; = равно (ставится после опер. If). 4) Математич.: Abs(x)=|x|; Rnd случ. число; Sin(x); Cos(x); Tan(x); Atn(x) arctgx; Exp(x) ex; Log(x); Fix(x) Fix (-3,9)=-3; Int(x) Int(-3,9)=-4; Sqr(x)=. 5. Символьные: + сцепление; Str(x) преобразование числа в симв. данные Str(x)="27,625"; Val(x) преоб. симв. данного в число, если символ не число Val=0; Len(x) кол-во символов в переменной х (х переем. типа String); Mid(x,I, ﺎ) ф. выделения х, нач. с позиции I l символов х-откуда, I-с какой позиции, l-сколько. х="Студент" Mid(x,4,3)="ден"; Mid(x,I) выд. с позиции I до конца слова; Instr (I,х.A) ф. поиска, опред. позицию первого вхождения подстроки А в строке х I-c какой позиции ищем, х-где ищем, А-что ищем. х="Студент" А="ден" P=Instr(4,x,A)=4 Instr(5,x,A)=0; Instr(x,A) поиск ведется с первого символа. |
Вопрос 1. Основы VB – этапы построения приложения. VB эффективен при обуч. технологии виз. проектир. различ. прил. Чтобы построить прил. VB, необх. сделать три шага: 1) создать графич. интерфейс (набор эл. упр.); 2) установить св-ва эл. упр.; 3) написать программу (код). После запуска устан. на ПК VB на экране появл. раб. среда, кот. наз. интегрированной ср. обработки, т.к. она совмещает в себе разнообр. функции: проектир., редактир., компиляцию и отладку приложений. ИСО сост. из след. эл.: 1) горизонт. строка меню и панель инструментов, кот. предоставляет быстрый доступ к наиб. часто использ. командам. 2) левая вертик. панель эл. упр.: Label, TextBox, Commund Button, ListBox. 3) правое окно св-тв. В центре раб. поле, на кот. размещены эл. упр. После формир. эл. упр. и задания их св-тв необх. дважды щелк. мышкой по командной кнопке, и произойдет выход на поле написания прогр. кода: Private Sub Command1_Click () End Sub |
Вопрос 9. Процедуры Sub. Мож. упростить программирование, разбивая задачи на небольшие логич. компоненты. Эти комп., наз. процедурами, могут впослед. стать строительными блоками, кот. позволяют сравнительно легко созд. сложные программы. Пр. Sub или подпрограмма – это блок кода, кот., выполняя опред. действия, не возвращает значения. Формат применения пр. Sub: [Private/Public/Statistic] Sub <имя> (параметры) операторы End Sub При вызове пр. выполняются операторы между ключевыми словами Sub и End Sub. Пр. Sub мож. помещать в стандартные модули, модули классов и форм. По умолч. пр. Sub во всех модулях имеет атрибуты Public, кот. означ., что их мож. вызывать из любого места приложения. Задания параметров пр. подобны объявлению переменных, за исключ. того, что слово Dim опускается. В VB следует четко отличать два типа пр. Sub: 1) общие процедуры; 2) пр. обработки события. 1) Об. пр. указ. приложению, как вып. конкрет. задачу. Однажды опред., она должна каждый раз вызываться спец. приложением. При этом указ. имя пр. и ее параметры в строгом соответ. с порядком описания параметров (формальных) в описании самой пр. 2) В противополож. ей пр. об. соб. после старта проекта остается в сост. ожидания события, вызванного польз-лем или инициированного системой. В программах, состоящих из пр. об. соб. и об. пр., мож. появиться необх. в применении глобальных переменных, определенных и сохраняющих значения во всех подпрограммах. Такие переем. объявляются в блоке общих объявлений General. Для создания новой об. пр. след. в окне кода после пр. об. соб. набрать на клаве заголовок пр., кот. состоит из слова Sub, за ним следует имя пр. с указ. в скобках формальных параметров пр. End Sub Sub P1 (N1 As Integer, A1 () As Integer) текст программы End Sub Формат вызова пр.в программе обработки события P1 N, A(),…. Демонстрация программы с исп. пр.: Доп., необх. разраб. программу, в кот. вывод заданной матрицы необх. сделать дважды: сразу после ввода и после преобразований. В так. случ. целесооб. разраб. общую пр. вывода. Блок General (общих объявлений) Option Explicit (страховка от необъявления переменных) Dim I As Integer, J As Integer Dim SP As String Private Sub Command1_Click Dim N As Integer, C As Integer Dim A() As Integer N=InputBox ("N=") ReDim A(1 To N, 1 To N) As Integer For I=1 To N For J=1 To N A(I,J)=Fix(Rnd*100) Next J, I P1 N, A()' вызов процедуры Text1.Text = SP ' поменять местами верх. и ниж. треугольники For I=1 To N For J=1 To N If I>J And I+J<N+1 Then C=A(I,J) A(I,J)=A(I,N+1-J):A(I,N+1-J)=C End If Next J, I P1 N, A() Text2.Text=SP End Sub Sub P1 (N1 As Integer, A1() As Integer) SP="" For I=1 To N1 For J=1 To N1 SP=SP+Str(A1(I,J))+" ") Next J SP=SP+vbCrLf Next I End Sub |
Вопрос 11. Файлы последовательного доступа. Тип данных, содержащ. в файле, опред. тип доступа к файлу. VB поддерж. три типа доступа к файлу: 1) последоват. – для чтения и записей непрерывных блоков в текст. файл; 2) произвольный – для чт. и зап. в файлы, структурир. как записи данных фиксир. длины; 3) двоичный – для чт. и зап. в файлы произвольной структуры. Схема обмена данными ОП и ВП выглядит след. обр.:
Создание файла. Для того, чтобы создать файл послед. дост., его надо открыть для вывода по след. формату: Open <путь_имя файла> For Output As # <номер файла> Сначала данные запис. в переменную с исп. ф. InputBox, затем, применяя опер. Write, данные переменной запис. в файл с указ. его номера. После созд. файла файл д. б. закрыт с исп. опер. Close. Создание(Command1): Open "A:\file1.txt" For Output As # 1 PC=1 Do while PC=1 FAM = InputBox ("Вв. фамилии") Write # 1, FAM PC=InputBox (Вв. 1 для продолж. или 0 для выхода") Loop Close #1 Чтение (Command2): Для того, чтобы прочитать созд. файл, его надо открыть для ввода. Open "A:\file1.txt" For Input As # 1 Снач. данные файла запис. в переем. с исп. опер. Input, затем значения переем. выводятся на экран с исп. эл. упр. ListBox. Open "A:\file1.txt" For Input As # 1 K=0' номер строки в эл. уп. ListBox Do while Not EOF(1)' вып., пока нет конца файла # 1 Input #1, FAM' передача инф-ции с диска в ОП List1.List(K) = FAM' передача инф-ции из ОП на экран в форму K=K+1' переход к новой строчке Loop Close #1 Добавление (Command3): Для того, чт. дополнить файл, его надо открыть для дополнения. Формат дополнения файла: Open "A:\file1.txt" For Append As # 1 Снач. добавляемые данные вв. в переменную, а затем запис. в конец файла. Open "A:\file1.txt" For Append As # 1 PC=1 Do while PC=1 FAM=InputBox ("Добавьте фамилии") Write #1, FAM PC=InputBox ("Вв. 1 или 0") Loop Close #1 Обработка (Command4): Для обраб. файла в соот. с усл. задания его надо снач. считать в мас. в процедуре чтения, а затем в процедуре решения обраб. мас. и запис. его в файл. Open "A:\file1.txt" For Input As # 1 K=0 Do while Not EOF(1) Input #1, FAM List1.List(1) = FAM K=K+1 Loop ReDim F(1 To K) As String For I = 1 To K F(I) = List1.List (I-1) Next I Close #1 Процедура обработки файла: Private Sub Command4_Click (Обработка мас. F(1 To K) в соответ. с заданием) Open "A:\file1.txt" For Output As # 1 For I = 1 To K Write #1, F(I) Next I Close #1 |
Вопрос 12. Файлы произвольного доступа. Файлы произ. дос. в осн. прим. для записей (в типе данных, опред. польз-лем). Прежде чем открыть файл произ. дос., след. объявить в блоке General последоват. и стандартный типы глобальных переменных. Напр., необх. создать файл след. структуры: Поряд. номер, Фам., Оклад Option Explicit Private Type ZAP PN As Byte FAM As String OKL As Currency End Type Dim I As Integer, PC As Byte Dim K As Byte Dim MAS As ZAP Dim MS() As ZAP Схема обмена файлами ОП и ВП выглядит след. образом:
Создание (Command1), Чтение (Command2), Дополнение (Command3), Обработка (Command4). PC=1' параметр цикла (кол-во записей) K=0' номер записи Do While PC=1 K=K+1 MAS.PN=InputBox ("Вв. поряд. номер") MAS.FAM=InputBox ("Вв. фамилию") MAS.OKL=InputBox ("Вв. оклад") Put #1, K, MAS PC=InputBox ("Вв. 1 или 0") Loop Close #1 Open "A:\File1.txt" For Random As #1 K=0 Do While Not EOF (1) ' Программа чтения файла K=K+1 Get #1, K, MAS List1(0).List(K-1) = MAS.PN List1(1).List(K-1) = MAS.FAM List1(2).List(K-1) = MAS.OKL Loop ReDim MS (1 To K) As ZAP For I = 1 To K MS(I).PN=List1(0).List(I-1) MS(I).FAM=List1(1).List(I-1) MS(I).OKL=List1(2).List(I-1) Next I Close #1 Программа дополнения файлов: Open "A:\File1.txt" For Random As #1 PC=1 Do While PC=1 Далее тоже самое (без К=0) Программа обраб. файла. Для того, чт. обраб. файл, необх.: 1) написать процедуру чтения; 2) переобъявить и создать мас.; 3) обраб. мас. в соответ. с усл.; 4) списать мас. в файл, исп. опер. Put: For I = 1 To K Put #1, I, MS(I) Next I 5) закрыть файл |