Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Тема 13. Работа с файлами в языке Pascal ⇐ ПредыдущаяСтр 5 из 5
Примеры решаемых задач Пример 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; просмотров: 51; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.26.176 (0.017 с.) |