Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 35

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 35 страницаОсновы программирования (947332) страница 352013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 35)

6.5). Компонентыфайла хранятся на диске во внутреннем (двоичном) формате и нумеруются с0. Если посмотреть такой файл любым текстовым редактором, то можно рас­познать только символьную информацию, на месте же чисел в файле будутрасполагаться пробелы или символы псевдографики.Указатель файлаКомпонентеМаркер конца файлаКомпонент 1 Компонент 2Компонент 3Компонент 4Рис. 6.5. Типизированный файл201Часть 1.

Основы алгоритмизации и процедурное программированиеДля работы с типизированными файлами используют специальные про­цедуры и функции.1. Процедура Read(Var /; с1, с2, ...,сп) - осуществляет чтение очередныхкомпонентов типизированного файла. Список переменных ввода содержитодну или несколько переменных того же типа, что и компоненты файла, раз­деленных запятыми.

Если файл исчерпан, обращение к процедуре вызываетошибку ввода-вывода.2. Процедура Write(Var f; cly с2у ...уСп) - осуществляет запись данных втипизированный файл. Список вывода содержит одно или более выраженийтого же типа, что и компоненты файла, разделенных запятыми.3. Процедура Seek(Var f; numcomp:word) ~ осуществляет установкууказателя файла на компонент файла с номером numcomp.4. Функция FileSize(Var f):longint - возвращает количество компонентфайла, указанного файловой переменной.

Может использоваться для уста­новки на конец файла совместно с Seek():Seek(f, РПе512еф);,.,5. Функция FilePos(Var fi.iongint- возвращает порядковый номер ком­понента, который будет обрабатываться следующей операцией ввода-выво­да.После открытия файла для чтения или записи указатель файла стоит вего начале и указывает на первый компонент, имеющий номер 0.

После каж­дого чтения или записи указатель сдвигается к следующему компоненту фай­ла. Поскольку длина каждой компоненты файла строго постоянна, помимопоследовательного возможно осуществление прямого доступа к компонен­там файла. По той же причине, если требуется изменить компонент файла, тоне обязательно переписывать компоненты в другой файл, а достаточно уста­новить указатель файла на изменяемый компонент и записать новый компо­нент на место старого.Добавление компонентов в конец файла выполняется в режиме чтения.Для этого указатель файла устанавливается на его конец (как показано вы­ше), после чего все выводимые компоненты дописываются в конец файла.Добавление компонентов в середину или начало файла может выпол­няться следующим образом: определяем место, в которое должны быть до­бавлены элементы, все последующие компоненты переписываем во времен­ный файл, вставляем новые компоненты и, наконец, дописываем в файл ком­поненты, переписанные во временный файл.Удаление компонент обычно требует перезаписи файла.Пример 6.3.

Разработать программу, создающую файл, компонентамикоторого являются символы, введенные с клавиатуры. Затем эта программадолжна изменять символы, записанные в файл, организовывать чтение сим­волов из файла попеременно с начала и с конца (прямой доступ), находитьуказанный символ в файле и удалять его из файла.2026. Файловая система. ФайлыProgram ex;Varfyflifile of char; { две файловые переменные}chyVchar;j:longint;name:strmg[8];BeginWriteLnCВведите имя файла: *); ReadLn(name);{создание и открытие файла}Asslgn(f, name-^\dat^); {связываем файл с файловой переменной}ReWrite(f);{открываем файл для записи (создаем)}WriteLnCВводите символы или CTRL-Z:');{занесение записей в файл}while not EOF do {пока не введено CTRL-Z с клавиатуры}beginReadLn(ch); {вводим символ с клавиатуры}Write(fyCh); {записываем символ в файл}end;WriteLn;{последовательное чтение записей из файла}ReSet(P;{открываем файл для чтения}while not EOF(/) do{пока не достигнут конец файла}beginRead(f,ch);{читаем символ из файла}Write(cK ' ');{выводим символ на экран}end;WriteLn;{изменение записей в файле}ReSet(f);{открываем файл для чтения}while not EOF(f) do{пока не достигнут конец файла}beginRead(f,i);{читаем символ из файла}Write(i,' ');{выводим символ на экран}i:=chr(ord(i)+10); {изменяем символ}WriteLn(i);{выводим на экран измененный символ}Seek(fyFUePos(f)'l); {возвращаемся на один компонент}Write(fyi);{перезаписываем символ}end;WriteLn;{попеременное чтение записей с начала и конца файла}ReSet(f);{открываем файл для чтения}/•=0;{устанавливаем номер компонента равным 0}while not EOF(f) do{пока не достигнут конец файла}begin203Часть I, Основы алгоритмизации и процедурное программированиеRead(fJ); {читаем символ из начала файла}Write(i);{выводим символ на экран}Seek(fyFileSize(f)-FilePos(f)); {устанавливаем указательдля чтения из конца файла}Read(fyi); {читаем символ из конца файла}Wnte(i);{выводим символ на экран}j:=j+l:{увеличиваем номер компонента}Seek(fJ); {устанавливаем указатель на следующий отначала компонент}end;WriteLn;WriteLnCВведите символ для удаления: *); ReadLn(ch);{подготовка к удалению записей: переименование исходногофайла и открытие нового файла с тем же именем}Close(f);{закрываем файл}ReName(fyname-^\bak^); {переименовываем файл}ReSet(f);{открываем файл для чтения}Assign(fl,name+\dat');{связываем новый файл с переменной}ReWrite(fl);{открываем новый файл для записи}{удаление записей - перепись остающихся записей в другой файл}while not EOF(f) dobeginRead(fyi);{читаем символ из файла}ifiochthen Write(fJ,i); {если символ не подлежит удалению, тозаписываем его в новый файл}end;Erase(f);{удаляем старый файл, после закрытия в нем ничего неизменилось, поэтому повторно его можно не закрывать}{последовательное чтение записей из нового файла}ReSet(fl);{открываем новый файл для чтения}while not EOF(fl) dobeginRead(flyCh); {читаем из файла}Write(ch ' ');end;WriteLn;EndПример 6.4.

Разработать программу, которая создает файл, содержащийсписок фамилий и даты рождения. Осуществить поиск в этом файле датырождения по заданной фамилии.2046. Файловая система. ФайлыProgram ex;Type fam=record{тип запись «сведения о сотрудниках»}ff:string[20]; {фамилия}year:word;{год рождения}month:L.12;{месяц рождения}day:L,31{день рождения}end;Varf:file offam; {файловая переменная «файл сотрудников»}jbifam:п J: integer;fffistring;key;boolean;BeginAssign(f,'(udat'); {связываем файловую переменную с файлом}ReWrite(J);{открываем файл для записи}WriteLnCВведите данные или CTRL-Z);while not EOF do {цикл, пока не введено CTRL-Z}beginReadLn(/b.ff, fb.year, fb.month, fb.day); {вводим данные по полям,фамилию вводим в отдельной строке, так как вводстроки завершается нажатием клавиши Enter}Write(fjb); {заносим запись в файл как один компонент}end;Close(f);{закрываем файл}WriteLnCВведите фамилию');Readln(ffJ);key;=false;{устанавливаем признак «запись не найдена»}ReSet(f);{открываем файл для чтения}while (not EOF(f)) and (not key) do {пока не обнаружен конецфайла и не найдена запись}beginRead(fjb);{читаем запись из файла}iffbjf^fffthen{если фамилии совпадают, то}begin {выводим данные}WriteLnCJlama: \fb.year,fb.

month; 3,fb. day;3);key;=true; {устанавливаем признак «запись найдена»}end;end;if not key then{если признак не установлен}WriteLn('Hem данных ) ; {то выводим «нет данных»}Close(f); {закрываем файл}end,205Часть I. Основы алгоритмизации и процедурное программированиеСледует отметить, что любой текстовый файл может быть прочитан кактипизированный файл с компонентами типа CHAR. В этом случае необходи­мо учитывать, что маркер конца строки текстового файла рассматривается всимвольном представлении как последовательность из двух символов #13 и#10.Пример 6.5.

Разработать программу, которая открывает текстовый файлкак типизированный с компонентом типа CHAR и читает его по символу.Program charjextjile;Type ff=file of char; {новый тип - символьный файл}VarЛ/Л{файловая переменная типа файл символов}a:char;n,i: integer;Jhame,st:string[30];BeginWriteLn('Beedume имя файла');ReadLn(fname);Assign(ffname);{связываем файловую переменную с файлом}ReSet(f); {открыть текстовый файл как типизированный на чтение}while not EOF(f) do {пока не достигнут конец файла}beginSt-'';Read(f^a);{читаем символ}while (ао#13) and not EOF(f) do {до маркера конца строкиили конца файла}beginst:='st+a; {добавляем считанный символ в строку}Read(f,a);{читаем очередной символ}end;if not EOF(f) then Read(f,a); {пропускаем символ #10}WriteLn(st);{выводим сформированную строку}end;Closeif);EndЗадания для самопроверкиЗадание 1.

Разработайте программу, которая создает типизированный файл, со­держащий сведения об импортируемых в Россию товарах: наименование товара,страна, поставляющая товар, и объем поставляемой партии. В сформированном фай­ле определить товары, импортируемые из страны Р (вводимой с клавиатуры в про­цессе выполнения профаммы), а также объем партий.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее