Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VB_NET

.pdf
Скачиваний:
9
Добавлен:
22.02.2016
Размер:
3.43 Mб
Скачать

8. Файли

211

 

 

Dim sw As New StreamWriter(fs) sw.WriteLine("А баба, галамага!") sw.WriteLine("Говорили, балакали!") sw.Flush()

sw.Close()

fs.Close()

fs = New FileStream(fl, FileMode.OpenOrCreate, _ FileAccess.Read)

fs.Seek(0, SeekOrigin.Begin) Dim sr As New StreamReader(fs)

Dim st As String st = sr.ReadLine()

While Not Equals(st, Nothing)

Console.WriteLine(st) st = sr.ReadLine()

End While

Console.ReadLine()

End Sub End Module

Приклад 8.18 (аналог прикладу 8.3). Дані табулювання квадратичної функції зберегти у текстовому файлі. Отриманий файл використати для виведення цих даних у вікно консолі та обчислення середнього арифметичного значень функції.

Imports Sуstem.ІО

Module Modulel

Sub Main()

On Error Resume Next Dim i, n As Byte

Dim x, y, s As Single

Dim fl As String = "d:\temp\testl.txt" Kill(fl)

Dim fs As FileStream

fs = New FileStream(fl, FileMode.OpenOrCreate, _ FileAccess.Write)

212 Програмування мовою Visual Basic.NET

Dim sw As New StreamWriter(fs) x = -2

For і = 1 To 10

y = x * x - 3 * x + 1 sw.Write(Format(x, "f")) sw.Write(Space(2)) sw.Write(Format(y, "g")) sw.WriteLine()

x = x + 0.2

Next і sw.Flush() sw.Close() fs.Clos ()

fs = New FileStream(fl, FileMode.Open, _ FileAccess.Read)

Dim sr As New StreamReader(fs) n = 0 : s = 0

Do While sr.Peek > -1

Dim st As String= sr.ReadLine()

Console.WriteLine(st) s += CSng(Mid(st, 6) ) n += 1

Loop

Console.ReadLine()

MsgBox(Str(s / n))

End Sub

End Module

Приклад8.19. Запис/читанняданихудвійковомуфайлі

Imports System.ІО

Module Modulel

Structure Person

Dim id As Byte

Dim name As String

End Structure

8. Файли

213

 

 

Sub Main()

On Error Resume Next

Dim x As Person

Dim і As Integer, st As String

Dim fl As String = "d:\temp\test.txt" Kill(fl)

Dim fs As FileStream

fs = New FileStream(fl, FileMode.OpenOrCreate, _ FileAccess.Write)

fs.Seek(0, SeekOrigin.Begin) Dim bw As New BinaryWriter(fs) For і = 1 To 5

x.id = InputBox("Введіть номер") x.name = InputBox("Введіть прізвище") bw.Write(x.id) : bw.Write(x.name)

Next і

bw. Flush () : bw.Close() : fs.CloseO fs = New FileStream(fl, FileMode.Open, _

FileAccess.Read) Dim br As New BinaryReader(fs) fs.Seek(0, SeekOrigin.Begin)

Do While fs.Position < fs.Length

x.id = br.ReadByte : x.name = br.ReadString st = Str(x.id) & " " & x.name Console.WriteLine(st)

Loop

Console.ReadLine()

End Sub

End Module

Запитання для самоперевірки

1.Щотакефайлпослідовногодоступу?

2.Щотакедвійковийфайл?

3.Щотакефайлдовільногодоступу?

4.Опишітьфункціївведення/виведенняданихдляфайлів.

5.Щотакедескрипторфайла?

214

Програмування мовою Visual Basic.NET

6.З якою метою використовують функцію FileOpen?

7.З якою метою використовують функцію Close?

8.З якою метою використовують функції Input i LineІnput?

9.З якою метою використовують функції Print і PrintLine?

10.З якою метою використовують функції EOF і LOF?

11.З якою метою використовують функції Seek і Loc?

12.З якою метою використовують клас FileSystemІnfо?

13.З якою метою використовують клас Directory?

14.З якою метою використовують клас DirectoryІnfо?

15.З якою метою використовують клас File?

16.З якою метою використовують клас FileІnfo?

17.З якою метою використовують клас FileStream?

18.З якою метою використовують клас StreamReader?

19.З якою метою використовують клас StreamWriter?

20.З якою метою використовують клас BinaryReader?

21.З якою метою використовують клас BinaryWriter?

Завдання для програмування

Завдання 8.1. Текст – довільна послідовність символів у деякому двій-

ковому файлі. Слова у тексті розділяються пропусками. Речення – послідовність слів, що завершується крапкою (знаком оклику чи запитання). Створити програми розв’язання таких задач, використовуючи традиційний підхід до роботи з файлами:

1.Читає з файла три послідовні речення (порядковий номер першого речення задається з клавіатури) і виводить їх на екран у зворотному порядку.

2.Читає текст з файла і виводить на екран тільки ті речення, що містять задане слово.

3.Читає текст з файла і виводить на екран тільки ті речення, які містять двозначні числа.

4.Читає текст з файла і виводить на екран слова, що починаються з голосної літери.

5.Читає текст з файла і виводить його на екран, міняючи місцями кожні два сусідні слова.

6.Читає текст з файла і виводить на екран тільки речення без ком.

7.Читає текст з файла і визначає, скільки у ньому слів, які мають не більше чотирьох літер.

8.Читає текст з файла і виводить на екран тільки цитати послі- довність слів у лапках.

8. Файли

215

 

 

9.Читає текст з файла і виводить на екран тільки речення з визначеною кількістю слів.

10.Читає текст з файла і виводить його на екран, замінюючи кожну першу літеру слова на цю ж літеру у верхньому регістрі (велику літеру).

11.Читає текст з файла, знаходить найкоротше слово і визначає, скільки разів його повторено у тексті.

12.Читає текст з файла і виводить на екран спочатку запитання, а потім речення зі знаком оклику.

13.Читає текст з файла і виводить на екран спочатку слова з однією літерою, а потім решту слів.

14.Читає текст з файла, знаходить найдовше слово і визначає скільки разів воно трапляється у тексті.

15.Читає текст з файла і виводить на екран тільки ті речення, які мають максимальну кількість знаків пунктуації.

Завдання 8.2. Нехай маємо деякий текстовий файл. Скласти і протестувати процедуру (підпрограму або функцію), яка виконує таку дію (використовуючи традиційний підхід до роботи з файлами):

1.Обчислює кількість порожніх рядків.

2.Визначає максимальну довжину рядка.

3.Визначає мінімальну довжину рядка.

4.Обчислює кількість рядків, що починаються з голосної літери.

5.Обчислює кількість рядків, що закінчуються голосною літерою.

6.Обчислює кількість рядків, що починаються з заданої літери.

7.Обчислює кількість рядків, що закінчуються заданою літерою.

8.Обчислює кількість рядків, що починаються і закінчуються заданою літерою.

9.У текстовому файлі записана непорожня послідовність цілих чисел, відокремлених пропусками. Записати функцію для обчислення суми усіх елементів файла.

10.У текстовому файлі записана непорожня послідовність дійсних чисел, відокремлених пропусками. Записати функцію для обчислення добутку усіх елементів файла.

11.Обчислює кількість рядків, що містять двозначні числа.

12.Обчислює кількість рядків, що містять слова з однієї літери.

13.Друкує на екрані окремими рядками вмістиме файла у зворотному порядку.

14.Переписує вмістиме файла в інший текстовий файл зі збереженням ділення на рядки, однак без порожніх рядків.

216

Програмування мовою Visual Basic.NET

15. Переписує вміст файла в інший текстовий файл зі збереженням ділення на рядки, однак у новому файлі всі рядки повинні мати фіксовану довжину (зайві символи видаляються, короткі рядки доповнюються пропусками).

Завдання 8.3. У файлі довільного доступу записати деяку непорожню послідовність дійсних чисел. Створити програми розв’язання таких задач, використовуючи традиційний підхід до роботи з файлами:

1.Знайти серед цих чисел найменше та номер його першого входження у файл.

2.Знайти серед цих чисел найбільше та номер його останнього входження у файл.

3.Обчислити суму всіх від’ємних значень.

4.Визначити кількість додатних, від’ємних і нульових значень.

5.Обчислити суму чисел, що належать проміжку [–3; 5].

6.Визначити відсоток додатних чисел.

7.Знайти середнє арифметичне чисел, розташованих за порядком за першим ненульовим. Вважати, що обов’язково є хоча б одне ненульове значення, причому не на останньому місці.

8.Знайти середнє арифметичне чисел, розташованих за порядком за першим ненульовим. Вважати, що ненульових значень може не бути взагалі.

9.Знайти різницю між найбільшим і найменшим числами.

10.Обчислити суму добутків сусідніх пар чисел (кожне число при обчисленні використовують тільки один раз).

11.Знайти позицію першого за порядком числа, що дорівнює нулю.

12.Знайти порядковий номер першого ненульового числа.

13.Знайти порядковий номер останнього ненульового числа.

14.Обчислити середнє арифметичне усіх додатних чисел.

15.Знайти суму модулів тих чисел, які передують першому нульовому, або усіх чисел групи, якщо нульових немає.

Завдання 8.4. Виконати завдання 8.1 на основі об’єктної моделі. Завдання 8.5. Виконати завдання 8.2 на основі об’єктної моделі. Завдання 8.6. Виконати завдання 8.3 на основі об’єктної моделі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]