
- •Сборник задач для лабораторных работ и указаний к их выполнению
- •Общие требования к защите лабораторных работ
- •Лабораторная работа № 1
- •Условие задачи
- •Примерные задачи для защиты лр1:
- •Лабораторная работа №2.
- •Условие задачи
- •Ввод новых данных
- •Примерные задачи для защиты лр2:
- •Лабораторная работа №3.
- •Лабораторная работа №4.
- •Условие задачи
- •Решение
- •Ввод данных
- •Примерные задачи для защиты лр4:
- •Лабораторная работа №5.
- •Ввод данных
- •Примерные задачи для защиты лр5:
- •Лабораторная работа №6.
- •Ввод данных
- •Примерные задачи для защиты лр6:
- •Лабораторная работа №7.
- •Ввод данных
- •Сортировка списка
- •Выберите поле для сортировки
- •Примерные задачи для защиты лр7:
- •Лабораторная работа №8.
- •Примерные задачи для защиты лр8: (обязательно при решении использовать подпрограммы)
- •Индивидуальные задания
- •Общие требования к курсовому проекту.
- •Рекомендуемая литература
- •Содержание
Примерные задачи для защиты лр7:
Решить одну из задач ЛР5 или ЛР6, используя при решении процедуры и функции.
Приложение к ЛР7 (Примеры оформления процедур и функций):
‘ Подсчет суммы элементов в массиве:
Function Summa(Mas(), k As Integer) As Currency
Dim i As Integer, s As Variant
s = 0
For i = 1 To k
s = s + Mas(i)
Next i
Summa = s
End Function
‘ Нахождение номера первого максимального элемента в массиве:
Function IndMax(Mas(), k As Integer) As Integer
Dim i As Integer, s As Integer
s = 1
For i = 2 To k
If Mas(i) > Mas(s) Then s = i
Next i
IndMax = s
End Function
‘ Удаление j – ого элемента из массива:
Sub SdvigElem(Mas(), j As Integer)
Dim i As Integer
For i = j To N - 1
Mas(i) = Mas(i + 1)
Next i
End Sub
‘ Выделение из строки к – ого слова:
Function Slovo(st As String, k As Integer) As String
Dim s As String, c As String
Dim i As Integer, nom As Integer
Dim L As Integer
st = st + " "
L = Len(st) ‘ кол-во символов в строке
s = "": nom = 0
For i = 1 To L
c = Mid(st, i, 1) ‘ i – й символ строки
If c <> " " Then s = s + c
If c = " " And s <> "" Then
nom = nom + 1 ‘ номер текущего слова в строке
If nom = k Then Exit For
s = ""
End If
Next i
Slovo = s
End Function
‘ Создание массивов из полей первых к - элементов списка:
Sub SozdMas(k As Integer)
Dim i As Integer
N = k
ReDim Firma(N), Kol(N), Cena(N), VR(N)
For i = 1 To N
s = List1.List(i - 1)
Firma(i) = Slovo(s, 1)
Cena(i) = Val(Slovo(s, 2))
Kol(i) = Val(Slovo(s, 3))
VR(i) = Cena(i) * Kol(i)
Next i
End Sub
‘ Создание строки из i – х элементов массивов:
Function StrElem(i As Integer) As String
Dim s As String, L As Integer
L = Len(Firma(i))
s = " " + Firma(i) + Space(14 - L)
L = Len(Str(Kol(i)))
s = s + Str(Kol(i)) + Space(10 - L)
L = Len(Str(Cena(i)))
s = s + Str(Cena(i)) + Space(10 - L) + Str(VR(i))
StrElem = s
End Function
‘ Создание списка из первых к - элементов массивов:
Sub SozdList(k As Integer)
Dim i As Integer
For i = 1 To k
List1.List(i - 1) = StrElem(i)
Next i
End Sub
‘ Сортировка первых к - элементов массива:
Sub SortMas(Mas(), k As Integer)
Dim i As Integer, j As Integer, F As Integer
For i = 1 To k - 1
For j = i + 1 To k
F = 0
Select Case optUb
Case True: If Mas(i) < Mas(j) Then F = 1
Case False: If Mas(i) > Mas(j) Then F = 1
End Select
If F = 1 Then
Firma(0) = Firma(i): Firma(i) = Firma(j): Firma(j) = Firma(0)
Kol(0) = Kol(i): Kol(i) = Kol(j): Kol(j) = Kol(0)
Cena(0) = Cena(i): Cena(i) = Cena(j): Cena(j) = Cena(0)
VR(0) = VR(i): VR(i) = VR(j): VR(j) = VR(0)
End If
Next j, i
End Sub
‘ Создание списка из элементов массива после его сортировки:
Sub SortList(Mas(), k As Integer)
Dim i As Integer
SortMas Mas, k
If optUb Then
lblSort.Caption = " Сортировка списка по убыванию"
Else
lblSort.Caption = " Сортировка списка по возрастанию"
End If
SozdList k
End Sub
Лабораторная работа №8.
Тема: «Работа с файлами»
Теоретические вопросы :
-
Понятие файла.
-
Процедуры открытия и закрытия файла.
-
Запись данных в файл.
-
Чтение данных из файла.
-
Выбор имени файла для чтения с использованием элементов управления DriveListBox, DirListBox и FileListBox.
Задание на ЛР8 является логическим продолжением задания на ЛР7:
1). Первая форма проекта остается прежней (как в ЛР4 – ЛР7).
2). Во вторую форму проекта следует добавить две новые кнопки: «Чтение данных из файла» и «Запись в файл», предназначенных, соответственно, для ввода данных из файла и для записи их на диск. При этом кнопка «Чтение данных из файла» должна быть всегда доступна, а доступ к кнопке «Запись в файл» должен открываться после обработки данных.
3). Выбор имени файла для ввода данных следует оформить через группу элементов: DriveListBox, DirListBox и FileList Box, поместив их в элемент контейнер Frame (дать ему имя (свойство Name), например, frmFile). Работа этой группы должна быть синхронизирована:
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
и контейнер должен становиться видимым лишь при выборе кнопки «Чтение данных из файла»:
Private Sub cmdReadFL_Click()
frmFile.Visible = True
End Sub
4). Данные из выбранного файла должны загружаться в список (см. ниже процедуру ReadFile) по двойному щелчку мыши на его имени (событие DblClick). При этом загрузка должна сопровождаться проверкой: является ли файл табличным. Если нет, то следует дать предупреждение, поместив его в MsgBox, и предложить выбрать другой файл. После этого контейнер frmFile должен стать вновь невидимым (frmFile.Visible = False):
Sub ReadFile(Name As String)
Dim i As Integer
nomFL = FreeFile
Open Name For Input As nomFL
i = 0
Do Until EOF(nomFL)
Line Input #nomFL, s
If Val(Slovo(s, 2)) * Val(Slovo(s, 3)) > 0 Then
If i = 0 Then List1.Clear
List1.List(i) = s
i = i + 1
End If
Loop
Close #nomFL
If i = 0 Then Name = ""
End Sub
Private Sub File1_DblClick()
NameFL = File1.Path + "\" + File1.FileName
ReadFile NameFL
If NameFL <> "" Then
SozdMas List1.ListCount
TextClear True
TextClear False
lblSred.Caption = " Средние значения :"
lblSum.Caption = " Кол-во данных = "
SortOptions False
cmdObrabotka.Enabled = True
cmdVvod.Caption = "&Ввод новых данных"
lblFile.Visible = True
lblFile.Caption = "Исходные данные из файла " + NameFL
Else
MsgBox "Нужен другой файл", vbOKOnly + vbCritical, "Файл не для этой таблицы !"
End If
cmdReadFL.Caption = "Чтение другого файла"
frmFile.Visible = False
End Sub
5). Вся обработка данных должна быть, как в ЛР7. Кроме этого должна быть предусмотрена возможность записи на диск результата обработки через выбор кнопки «Запись в файл» (см. ниже процедуру WriteFile). Выбор имени файла в этом случае должен быть оформлен через InputBox.
Sub WriteFile(Name As String)
Dim nomFL As Integer, i As Integer
Dim sk As Currency, sc As Currency, sv As Currency
nomFL = FreeFile
Open Name For Output As nomFL
Print #nomFL, " Firma Kol-vo Cena Viruchka "
Print #nomFL, "---------------------------------------------"
For i = 1 To N
Print #nomFL, List1.List(i - 1)
Next i
Print #nomFL, "---------------------------------------------"
If N > 0 Then sk = Summa(Kol, N) / N: sc = Summa(Cena, N) / N: sv = Summa(VR, N) / N
Print #nomFL, "Sred. znach. : "; sk; " "; sc; " "; sv
Print #nomFL, "Summa viruchki = "; Summa(VR, N)
Close #nomFL
End Sub
Private Sub cmdWriteFL_Click()
Dim NF As String
s = "или Cancel - отказ от записи"
If lblFile.Visible Then s = s + Endln + "(" + lblFile.Caption + ")"
NF = InputBox("Введите имя файла:" + Endln + s, " Запись в файл", NameFL)
If NF = "" Then Exit Sub
WriteFile NF
cmdWriteFL.Enabled = False
End Sub
6). Командные коды всех кнопок, как и в ЛР7, должны быть записаны через вызовы процедур и функций.
Остальные требования к кнопкам как в ЛР7.