merged document (820599), страница 4

Файл №820599 merged document (Методички Терентьев Ю.И.) 4 страницаmerged document (820599) страница 42020-12-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В текстовом файле задан набор строк , содержащих фамилию студента и несколькооценок вида отл, хор, удов и неуд. Количество оценок у студентов различное. Записать вдругой текстовый файл фамилии отличников. Учесть, что количество оценок у отличникадолжно быть равно наибольшему числу оценок в данном списке, т.е. если у какого-тостудента или студентов 6 оценок и в списке имеется студент, имеющий всего две оценки иони отл, то он не считается отличником.

Набор данных в текстовом файле рекомендуетсяосуществлять в кодировке CP866 или пользоваться латиницей. Вместе с программнымифайлами высылайте и исходный текстовый файл.Файловый тип.Типизированные файлы.Во всех ранее созданных программах исходная информация вводилась с клавиатуры, арезультаты выводились на экран. Такая ситуация допустима, если вводить и выводитьнеобходимо небольшое количество данных и программа выполняется достаточно быстро.В противном случае возникают проблемы. При большом объеме вводимой информациинабор данных на клавиатуре занимает много времени и требует особой внимательности, абольшой объем выводимых результатов потребует немедленного и полного анализа, чтоне всегда возможно. Поэтому любой язык программирования должен содержать средствадля организации хранения информации на ВЗУ и доступа к ней.

Как известно всяинформация на ВЗУ хранится в файлах. Под файлом понимают либо область памяти наВЗУ, способную хранить некоторую совокупность информации, либо логическоеустройство – потенциальный приемник или источник информации. В файл можнопоместить определенные данные или извлечь их из него. Эти действия называются вводом– выводом.Любой файл имеет три характерные особенности:1. у него имеется имя, что дает возможность программе работать одновременно снесколькими файлами;2. файл содержит компоненты одного типа. Типом может быть любой, кромефайлового;3. размер вновь создаваемого файла никак не оговариваются при его объявлении.Для организации работы с файлами в программе должны быть определены специальныепеременные файловых типов, которые считаются представителями файлов в программе.Использование таких переменных и отражает особенности файлов, т.е. предполагается,что файл представляет собой потенциально бесконечный список значений одного типа.Файловый тип можно задать таким образом:Type<имя>=File of <базовый тип>;TypFile=File of integer;Соответственно файловая переменная задается:Var f:TypFile;Это описание означает, что в программе под именем f понимается неопределенноеколичество целых чисел на внешнем носителе.С каждой файловой переменной связано понятие текущего указателя файла.

Его условноможно представить неявно описанную переменную (вместе с файловой), котораяуказывает на некоторый элемент файла.целоецелоецелоецелоеТекущийуказательВсе действия с файлом (чтение, запись) производится поэлементно, причем в этихдействиях участвует тот элемент, который обозначен текущим указателем. В результатесовершения операции текущий указатель перемещается, настраиваясь на тот или инойэлемент. Все положения текущего указателя считаются пронумерованными, начальноеположения имеет нулевой номер. В конце файла проставляется признак окончания файла.Примеры описания файловых переменных:TypePerson = RecordName:string[20];Year:word;End;TArr = Array [1..20] of real;VarF1:File of real;F2:File of Person;F3:File of TArr;Файлы становятся доступными программе только после выполнения особой операцииоткрытия файла.

Эта операция выполняется в два этапа. На первом осуществляетсясвязывание ранее описанной файловой переменной с именем существующего или вновьсоздаваемого файла. На втором - указывается: существует файл или должен создаваться.Первый этап реализуется вызовом процедуры AssignFile(<ф.п.>,<имя файла>);НапримерAssignFile(f1,’dan.dat’);илиConstName=’A:\dan.dat’; AssignFile(f1,name);илиVar name:string[12];BeginReadln(name);AssignFile(f1,name);На втором этапе, который часто называется открытием файла, осуществляется поискфайла на диске, образование специальных системных буферов для обмена с ним иустановление текущего указателя на его начало (в нулевую позицию).

Используется однаиз двух процедур: Reset(<ф.п.>); или Rewrite(<ф.п.>); В первом случаепредполагается, что файл уже существует. Если он по каким-то причинам отсутствует, товозникает исключительная ситуация и задание снимается с выполнения. Прииспользовании процедуры Rewrite() файл может отсутствовать на диске, в этом случаеона создает его. Если же файл уже существует, то она очищает его, т.е.

все егосодержимое будет уничтожено.По окончании работы файлы закрываются с использование процедурыCloseFile(<ф.п.>);Для выполнения операций ввода – вывода используются известные процедурыRead(<ф.п.>,<список ввода>),Write(<ф.п.>,<список ввода>). На первомместе обязательно стоит имя файловой переменной. Процедуры Readln() и Writeln()при работе с типизированными файлами не используются.Для работы с файлами часто используется логическая функция EOF(<ф.п.>),тестирующая признак конца файла. Возвращает True, если файловый указательнаходится в конце файла, т.е. достиг признака конца файла. При считывании информациииз файла это означает, что вся информация считана, т.е.

файл исчерпан.Пример: Создать файл, записав в него 20 вещественных чисел. Переписать из негоположительные числа в один в файл, а отрицательные числа – в другой.Program Exam;Procedure Createfile(fname:string);Var f: file of Real;X:real;i:integer;BeginAssignFile(f,fname);Rewrite(f);For i:=1 to 20 doBeginX:=random(50);Write(f,x);End;CloseFile(f);End;Procedure Viewfile(fname:string);Var f: file of Real;X:real;i:integer;BeginAssignFile(f,fname);Reset(f);While Not EOF(f) DoBeginRead(f,x);Writeln(x:4:0)End;End;Procedure Resultfile(fname,fplus,fminus:string);Var f,p,m: file of Real;X:real;i:integer;BeginAssignFile(f,fname);Reset(f);AssignFile(p,fplus);Rewrite(p);AssignFile(m,fminus);Rewrite(m);While Not EOF(f) DoBeginRead(f,x);If x<0 Then Write(m,x)Else Write(p,x);End;CloseFile(f); CloseFile(p); CloseFile(m);End;Var fsour,fresp,fresm:string[12];BeginWrite(’имя исх.файла’); Readln(fsour);Createfile(fsour);Viewfile(fsour);Write(’имя полож.файла’); Readln(fresp);Write(’имя отриц.файла’); Readln(fresm);Resultfile(fsour,fresp,fresm:string);Viewfile(fresp);Viewfile(fresmе);End.При создании файла его открытие осуществлялось процедурой Rewrite(f);, если послезаписи данных необходимо в той же процедуре считать данные, то файл должен бытьзакрыт и открыт уже как существующий процедурой Reset(f);, при этом связь междуфайловой переменной и файлом сохраняется.

При считывании данных из файла длязавершения цикла использовался признак конца файла. В данном примере во всехпроцедурах через параметры передавались имена файлов. Нередко через параметрыпередаются файловые переменные. В этих случаях такие параметры должныспецифицироваться как параметры – переменные, т.е. перед их именами должноприсутствовать служебное слово Var. Следует также отметить, что созданиетипизированных файлов и просмотр их содержимого осуществляется толькопрограммным путем.Закрывать файлы надо обязательно, особенно, если они создаются. Дело в том, чтоинформация записывается в файл не напрямую, а через специальные системные буферы,которые полностью очищаются только при закрытии файла, т.е.

если не закрыть файл, точасть информации останется в буфере и в файл не попадет.realrealrealНач.положениеуказателя=0realКонечное положение ук-ляFileSize(f)В рассмотренном примере запись и считывание данных выполнялась последовательночерез одну буферную переменную x. При открытии файла файловый указательавтоматически устанавливается в начальное положение (0). При считывании или записион автоматически передвигается на одну позицию, всегда находясь перед темкомпонентом, который будет участвовать в последующей операции ввода – вывода.Поскольку тип компонентов файла определен при его описании, размер файла на дискетоже известен, то и количество элементов файла может быть определено.

Это можносделать с помощью функции FileSize(<ф.п.>)целого типа. При необходимостипомимо последовательного способа доступа к данным (который был реализован врассмотренном примере) в типизированных файлах можно осуществлять и прямой доступк нужному компоненту файла. Для этого предусмотрена процедураSeek(<ф.п.>,<номер положения ф.ук-ля>). На втором месте указываетсяномер положения файлового указателя, который может меняться в диапазоне от 0 дозначения FileSize(), т.е. Seek(f,0) устанавливает файловый указатель в началофайла, Seek(f,FileSize(f)) – в конец файла.Функция FilePos(<ф.п.>) возвращает номер текущего положения файловогоуказателя.

Например, Seek(f,FilePos(f)+1)позволяет пропустить один элемент.Кроме перечисленных подпрограмм, используется еще процедура Truncate(<ф.п.>),которая удаляет хвостовую часть файла, начиная с текущего положения файловогоуказателя. Применяя эти процедуры и функции, можно организовать достаточно сложныеалгоритмы обработки информации в файле без полного ее считывания в оперативнуюпамять.Пример: В файле вещественных чисел поменять местами первый элемент с последним.Procedure Editfile(fname:string);Var f: file of Real;X,y:real;BeginAssignFile(f,fname);Reset(f);Read(f,x);Seek(f,FileSize(f)-1);Read(f,y);Seek(f,0);Write(f,y);Seek(f,FileSize(f)-1);Write(f,x);CloseFile(f);End.Рассмотрим некоторые типовые задачи на обработку данных в типизированных файлах сиспользованием прямого доступа к элементам файла.1.Записать в типизированный файл произвольное количество вещественных чисел.Поставить после компонента с максимальным значением новый компонент с заданнымзначением .program project1;procedure Createfile(namefile:string);Varf : File of Real;x:real; i,n:integer;beginn:=random(10)+5;Assignfile (f,namefile);ReWrite (f);For i := 1 To n Dobeginx := Random(20) + Random;Write (f,x);end;Closefile (f);end;procedure Viewfile(namefile:string);Varf : File of Real;x:real;beginAssignfile (f,namefile);Reset (f);While not Eof(f) DobeginRead(f,x);Writeln (x:5:2);end;Closefile (f);end;procedure InsInfile(namefile:string;xins:real);Varf : File of Real;x,xmax:real;i,imax,n,j : integer;beginAssignfile (f,namefile);Reset (f);n:= filesize(f);Read (f,xmax); imax := 1;For i := 2 To n DobeginRead (f,x);If x > xmax Thenbeginxmax := x;imax := i;end;end;For i := n DownTo imax+1 DobeginSeek (f,i-1);Read (f,x); Write (f,x);end;Seek (f,imax);Write (f,xins);Closefile (f);end;Varnf:string;xins:real;Beginnf:= 'ff.dat';Createfile(nf);Writeln ('Содержимое файла');Viewfile(nf);Write ('Введите вставляемое значение'); Readln(xins);InsInfile(nf,xins);Writeln ('Содержимое файла');Viewfile(nf);readln;end.2.

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

Тип файла
PDF-файл
Размер
229,34 Kb
Тип материала
Высшее учебное заведение

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

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