|
Работающих с потоковыми файламиПример 4.10.3-1. Дан текстовый файл, каждая строка которого содержит только слова из русских букв, разделенных одним или несколькими пробелами. Разработать программный код трех процедур: · процедуры-функции с необходимыми формальными параметрами, которая получает строку и переставляет ее символы в обратном порядке; · процедуры-подпрограммы с необходимыми формальными параметрами, которая построчно считывает текст из исходного файла с помощью потокового доступа и построчно записывает в новый файл преобразованные строки исходного файла; · событийной процедуры, в которой осуществляется ввод имен файлов и вызов разработанных ранее процедур и функций.
Форма разрабатываемого приложения представлена на рис. 4.10.3-1. На первом этапе необходимо создать процедуру-функцию Perevorot(), которая, получив через параметр строку s, с помощью регулярного цикла с отрицательным шагом записывает в новую строку temp все символы исходной строки s и возвращает созданную строку temp в качестве результата. На втором этапе необходимо создать процедуру-подпрограмму Resh(), которой через параметры передаются две строки, с именами исходного и нового файлов. В Resh() необходимо создать два потоковых объекта: Rf – типа StreamReader, служащий для чтения исходного файла, и wf – типа StreamWriter, необходимый для записи в новый файл.
Рис. 4.10.3-1. Форма проекта Пример 10.3-1
Так как запись в новый файл должна производиться построчно, то второй параметр потока wf должен быть равным True, который означает, что при каждом использовании метода WriteLine() будет производиться добавление строки в существующий файл. Далее в цикле считывается очередная строка исходного файла, и из нее с помощью процедуры DelProb() удаляются лишние пробелы и создается массив слов Mas(). Затем во внутреннем цикле каждое слово из массива Mas() переворачивается наоборот с использованием функции Perevorot(). После завершения внутреннего цикла полученный массив перевернутых слов рассматриваемой строки с помощью метода Join() склеивается через один пробел в одну новую строку line2, которая и записывается в новый файл. Программный код приложения представлен на рис. 4.10.3-2.
Рис. 4.10.3-2. Программный код проекта Пример 10
Пример 4.10.3-2. Задан текстовый файл, каждая строка которого содержит только слова из русских букв, разделенных одним или несколькими пробелами. Написать программный код четырех процедур: · процедуры-функции Perevorot() с необходимыми параметрами, которая получает строку и переставляет ее символы в обратном порядке; · процедуры-подпрограммы Reshenie(), с необходимыми параметрами, которая считывает текст из файла с помощью объекта My.Computer.FileSystem, и для каждой строки исходного файла переворачивает каждое слово наоборот с использованием процедуры-функции и записывает в новую строку через один пробел по отдельности перевернутые слова исходной строки; · процедуры vivodFile() с необходимыми параметрами, которая полученный в п.2, результат с помощью предыдущей процедуры записывает в новый файл; · событийную процедуру, в которой будет осуществляться ввод имен файлов, вызов составленных процедур и вывод результатов.
Программный код проекта представлен на рис. 4.10.3-3 Первое задание реализует процедура-функция Perevorot(), которая, получив через формальный параметр по значению строку s, с помощью регулярного цикла с отрицательным шагом записывает в новую строку temp все символы исходной строки s и возвращает созданную строку temp в качестве результата. Второе задание реализует процедура Reshenie(), которой через формальные параметры передается строка filename, содержащая имя исходного файла, и по ссылке возвращаются строка s1 с исходным файлом и строка s2 с перевернутыми словами, которую надо будет записать в новый файл. В ней сначала с помощью объекта My.Computer.FileSystem весь исходный файл считывается целиком в одну строку s1, затем полученная строка с помощью метода Split() разбивается на массив строк Stroki() по признаку конца строки (vbNewLine). Далее во внешнем цикле из каждой строки исходного файла с помощью процедуры DelProb() удаляются лишние пробелы, и строка разбивается на массив слов slova() по признаку одного пробела. Во внутреннем цикле каждое слово переворачивается наоборот с использованием процедуры-функции Perevorot() и записывается в новую строку s2 через один пробел. После завершения внутреннего цикла в новую строку s2 добавляется признак конца строки (vbNewLine) для разделения строк в новом файле, и далее повторение внешнего цикла для обработки очередной строки исходного файла. Третье задание реализует процедура vivodFile(), которой через параметры передается строка filename, содержащая имя нового файла, и строка S с перевернутыми словами для записи в новый файл.
Рис. 4.10.3-3. Программный код проекта Пример 10
4.10.6. Тестовые задания
1. Файл – это 1) поименованная совокупность данных, размещенных на ВЗУ и хранимая, пересылаемая и обрабатываемая как единое целое 2) поименованная совокупность данных, размещенных в памяти компьютера и хранимая, пересылаемая и обрабатываемая как единое целое 3) совокупность данных, размещенных на ВЗУ и хранимая, пересылаемая и обрабатываемая как единое целое 4) поименованная совокупность данных, размещенных на ВЗУ 2. Каталог файла – это 1) оглавление файла 2) директория файла 3) папка файла 4) нет правильного ответа 3. Текстовые файлы – это 1) последовательные файлы, состоящие из записей переменной длины и расположенные на внешнем носителе 2) файлы произвольного доступа, состоящие из записей переменной длины и расположенные на внешнем носителе 3) последовательные файлы, состоящие из записей постоянной длины и расположенные на внешнем носителе 4) последовательные файлы, состоящие из записей переменной длины и расположенные в памяти компьютера 4. Работа с файлом состоит из этапов 1) открытия, чтения или записи информации, закрытия 2) открытия, записи информации, закрытия 3) открытия, чтения, закрытия 4) открытия,, закрытия 5) нет правильного ответа 5. В Vb возможны следующие способа доступа к текстовым файлам 1) с использованием методов класса System.IO 2) с использованием объекта My.Comhuter.System 3) с использованием потоков 4) нет правильного ответа 6. Метод ReadLine() 1) требует предварительного создания потока 2) не требует предварительного создания потока 3) требует предварительного открытия файла с помощью дескриптора 4) требует указания пути к текстовому файлу
7. Метод ReadToEndLine() 1) требует предварительного создания потока 2) не требует предварительного создания потока 3) требует предварительного открытия файла с помощью дескриптора 8. Чтобы добавить строку в существующий файл, можно использовать оператор 1) Dim t As New StreamWriter("f[le1.txt", True) 2) Dim t As New StreamWriter("f[le1.txt", False) 3) Dim t As StreamWriter("f[le1.txt") 4) все ответы верны 9. Метод ReadAllText() применяется 1) только при работе с объектом My.Computer.FileSystem 2) при работе с потоковым вводом-выводом 3) при работе с дескриптором 10. Метод WriteAllText() 1) может добавить данные в конец существующего файла или полностью перезаписать весь файл 2) можно только добавить данные в конец существующего файла 3) можно вывести все данные из файла на экран монитора 11. Ошибочной записью оператора является 1) StreamWriter.WriteAllText("Hello") 2) My.Computer.FileSystem.WriteAllText("file1.txt","Hello", False) 3) My.Computer.FileSystem.WriteAllText("file1.txt", "Hello", True) 4) нет верного ответа 12. Метод WriteAllText() 1) имеет 3 аргумента 2) имеет 2 аргумента 3) имеет 1 аргумента 4) может иметь 1, 2 или 3 аргумента 5) нет верного ответа 13. Метод ReadAllText() 1) имеет 3 аргумента 2) имеет 2 аргумента 3) имеет 1 аргумента 4) может иметь 1, 2 или 3 аргумента 5) нет верного ответа 14. Метод ReadToEnd()считывает из файла 1) всю информацию (все строки символов файла) * 2) очередной символ или null, если больше символов нет 3) только одну строку 4) код символа или 0, если больше символов нет
15. Метод ReadLine()считывает из файла 1) всю информацию (все строки символов файла) 2) очередной символ или null, если больше символов нет 3) только одну строку символов* 4) код символа или 0, если больше символов нет 16. При достижении конца символьного потока метод ReadLine() вернет значение 1) -1 2) 0 3) null 4) EndOfStream 17. Метод Length при обращении к потоку FileStream определит количество: 1) бит в потоке 2) +: байт в потоке 3) значений некоторого типа в потоке. 18. Если файл с именем filename.txt не существует, то при попытке выполнить следующую процедуру
1) открывается файл с именем filename.txt и читаются все данные 2) появляется окно каталогов, в котором пользователь должен найти данный файл 3) генерируется исключение FileNotFoundException 4) генерируется исключение IOException
19. В результате выполнения процедуры
1) создается, открывается файл с именем filename.txt и происходит запись всей строки* 2) появляется окно каталогов, в котором пользователь должен найти данный файл 3) генерируется исключение FileNotFoundException 4) генерируется исключение IOException 5) открывается файл filename.txt и происходит запись всей cтроки 20. В результате выполнения процедуры записи строки, при условии что файл уже существует
1) создается, открывается файл filename.txt и происходит запись всей строки 2) появляется окно каталогов, в котором пользователь должен найти данный файл 3) генерируется исключение FileNotFoundException 4) генерируется исключение IOException 5) выводится сообщение, что файл уже существует* 21. ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|