Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема 13. Работа с файлами в языке PascalСодержание книги
Поиск на нашем сайте Примеры решаемых задач Пример 1. Составить программу, которая: а) запишет в файл Message. txt текстовое сообщение; б) прочитает из файла Message. txt текстовое сообщение и выведет его на экран. Пояснение. Для решения этой и подобной задач лучше составлять две отдельные программы: первая программа формирует файл, вторая – его обрабатывает. Программы: Program A; Uses Crt; Var s: string; { переменная s для хранения текстового сообщения } f: text; { f – файловая переменная } Begin Clrscr; Assign (f, ’Message. txt’); { связывание файловой переменной f с файлом ’Message. txt’, который будет создан в текущей папке } Rewrite(f); { открыли файл для записи } Write (‘Введите текст сообщения ‘); Readln (s); { ввели в переменную s текст сообщения } Writeln (f, s);{ записали в файл содержимое переменной s } Close (f); { закрыли файл } Writeln (‘Файл создан’);{ вывели на экран поясняющее сообщение } Readln End. Program B; Uses Crt; Var m: string; { переменная m для хранения текстового сообщения } t: text; { t – файловая переменная } Begin Clrscr; Assign (t, ’Message. txt’); { связывание файловой переменной f с файлом ’Message. txt’, который существует в текущей папке } Reset (t); { открыли файл для чтения } Readln (t, m); { считали из файла t в переменную s текст сообщения} Writeln (‘Сообщение:', m); { вывели на экран текст сообщения } Close (t); { закрыли файл } Readln End. Пример 2. Составить программу, которая: а) запишет в файл Students.txt список студентов группы (фамилия и год рождения); б) обработает файл Students.txt следующим образом: - выведет на экран список студентов группы; - выведет список студентов заданного года рождения; - допишет в файл информацию о новом студенте. Программы: Program A; Uses Crt; Var fam: string; { переменная fam для хранения фамилии студента } year, n, k: integer; { переменная year для хранения года рождения} f: text; { f – файловая переменная } Begin Clrscr; Assign (f, ’Students. txt’); { связывание файловой переменной f с файлом ’Students. txt’, который будет создан в текущей папке } Rewrite(f); { открыли файл для записи } Write (‘Введите количество студентов в группе ‘); Readln (n); For k:=1 To n Do Begin Write(‘Введите фамилию ’,k,’-го студента ’); Readln (fam); { Ввели в переменную fam фамилию } Writeln (f, fam); { записали в файл фамилию студента и символ Eoln } Write(‘Введите год его рождения ’); Readln (year); { Ввели в переменную year год рождения } Writeln (f, year) { записали в файл год рождения студента и символ Eoln } End; Close (f); { закрыли файл } Writeln (‘Файл создан’); { вывели на экран поясняющее сообщение} Readln End. Program B; Uses Crt; Var fam: string; { переменная fam для хранения фамилии студента } year, n,: integer; { переменная year для хранения года рождения } f: text; { f – файловая переменная } Begin Clrscr; Assign (f, ’Students. txt’); { связываем файловую переменную f с файлом ’Students. txt’, который будет создан в текущей папке } { а) вывод на экран содержимого файла ’Students. txt’ } Reset (f); { открываем файл для чтения } Writeln (‘Список группы ‘); While Not Eof (f) Do { пока не достигнут конец файла } Begin Readln (f, fam); { читаем из файла фамилию и символ Eoln } Readln (f, year);{ читаем из файла год рождения и символ Eoln} Writeln (fam:20, year: 5) { печатаем фамилию и год рождения } End; Close (f); { закрываем файл } { б) поиск в файле студентов заданного года рождения } Write (‘Задайте нужный год рождения ’); Readln (x); { вводим год для поиска } Reset (f); { снова открываем файл для чтения} While Not Eof (f) Do { пока не достигнут конец файла } Begin Readln (f, fam); { читаем из файла фамилию и символ Eoln } Readln (f, year);{ читаем из файла год рождения и символ Eoln} If year = x then { если год рождения очередного студента равен требуемому } Writeln (fam) { выводим фамилию на экран } End; Close (f); { закрываем файл } { в) дополнение файла данными о новом студенте } Write (‘Введите фамилию нового студента ’); Readln (fam); Write (‘Введите год его рождения ’); Readln (year); Append (f); { открываем файл для дополнения } Writeln (f, fam); { дописываем в файл новую фамилию (и Eoln) } Writeln (f, year); { дописываем в файл год рождения (и Eoln) } Close (f); { закрываем файл } Readln End. Примечание. В приведенном примере программы при дополнении файла данными о новом студенте не производится проверка условия, что информация о новом студенте уже есть в файле. Пример 3. Составить программу, которая: а) запишет в файл Price список товаров (название и цена); б) обработает файл Price следующим образом: - выведет на экран прайс-лист; - изменит цену товара с заданным наименованием; - допишет в файл данные о новом товаре (предварительно проверив, что в файле информации о таком товаре нет). Программы: Program A; Uses Crt; Type tovar = Record name: String; price: Real End; Var t: tovar; { переменная t для хранения информации об очередном товаре } f: File Of tovar; { f – файловая переменная } k, n: Integer; Begin Clrscr; Assign (f, ’Price’); { связывание файловой переменной f с файлом ‘Price’, который будет создан в текущей папке } Rewrite(f); { открыли файл для записи } Write (‘Введите количество товаров в списке ‘); Readln (n); For k:=1 To n Do Begin Write (‘Введите наименование ’,k,’-го товара ’); Readln (t.name); { запросили значение первого поля записи } Write (‘Введите цену товара ’); Readln (t.price); { запросили значение второго поля записи } Writeln (f, t) { записали в файл запись t } End; Close (f); { закрыли файл } Writeln (‘Файл создан’); { вывели на экран поясняющее сообщение} Readln End. Program B; Uses Crt; Type tovar = Record name: String; price: Real End; Var t: tovar; { переменная t для хранения информации об очередном товаре } f: File Of tovar; { f – файловая переменная } k, n: Integer; nt: String; new_price: Real; new_t: tovar; Begin Clrscr; Assign (f, ’Price’); { связывание файловой переменной f с файлом ‘Price’, который будет создан в текущей папке } { вывод на экран содержимого файла } Reset (f); { открыли файл } Writeln (‘Прайс – лист: ‘); While Not Eof (f) Do { пока не достигнут конец файла } Begin Readln (f, t); { прочитали из файла очередную запись в переменную t } Writeln (t.name:20, t.price:10:2) { вывели на экран значения полей записи – наименование и цену товара } End; Close (f); { закрыли файл } { изменение цены отдельного товара } Reset (f); { открыли файл } Write (‘Введите наименование товара, у которого меняется цена ‘); Readln (name_t); Write (‘Введите новую цену ‘); Readln (new_p); While Not Eof (f) Do { пока не достигнут конец файла } Begin Readln (f, t); { прочитали из файла очередную запись в переменную t } If t.name = nt { если прочитанное из файла наименование товара совпадает с тем, у которого меняется цена, то} Then Begin t.price:= new_price; { меняем цену товара в записи t } Seek (f, FilePos (f) -1); { устанавливаем указатель обратно на ту запись в файле, у которой изменили цену} Write (f, t) { записываем переменную t с измененным значением поля price в файл } End End; Close (f); { закрыли файл } { дописывание в конец файла информации о новом товаре } Write (‘Введите наименование нового товара ‘); Readln (new_t.name); Write (‘Введите цену ‘); Readln (new_t.price); Reset (f); { открыли файл } { проверим, есть ли данные о таком товаре в файле } flag:= false; { сначала считаем, что такого товара в файле нет } While Not Eof (f) Do { пока не достигнут конец файла } Begin Readln (f, t); { прочитали из файла очередную запись в переменную t } If t.name = new_t.name { если прочитанное из файла наименование товара совпадает с тем, который хотим дописать в файл} Then Flag:= True { запоминаем, что данные о таком товаре есть в файле} End; If Not flag { если данных о новом товаре в файле не найдено (т.е. значение переменной flag осталось равным false) } Then Begin Seek (f, FileSize (f)); { устанавили указатель в конец файла } Write (f, new_t) { записали в файл данные о новом товаре} End; Close (f); { закрыли файл } Writeln (‘Новые данные дописаны в файл’); Readln End. Примечание. При проверке, есть ли в файле данные о новом товаре или нет, правильнее заголовок цикла While записать в виде: While (Not Eof (f)) And (Not Flag)Do …
т.е. «пока не конец файла и товар не найден». Это означает, что просмотр файла будет выполняться либо до конца файла, либо до тех пор, пока в файле не будет найден новый товар.
|
||
|
Последнее изменение этой страницы: 2021-04-05; просмотров: 126; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.11 (0.01 с.) |