- •Реализация алгоритмов в системе программирования turbo pascal 7.0 Учебное пособие
- •Тема 1 Алгоритмы и способы их описания
- •Тема 2 Этапы подготовки и решения задач на эвм
- •Тема 3 Начало работы в системе Turbo Pascal 7.0
- •Начало работы с новой программой
- •Задание 1
- •Сохранение текстового файла программы на диске
- •Задание 2
- •Задание 3
- •Задание 4
- •Тема 4 Ввод исходных данных и вывод результатов вычислений
- •Упражнение 1.
- •Тема 5 Реализация линейных алгоритмов
- •Сложные выражения
- •Задание
- •Тема 6 Программирование разветвляющихся алгоритмов
- •Задание 1
- •Задание 2
- •Тема 7 Циклические алгоритмы с известным числом повторений
- •Задание
- •Тема 8 Циклические алгоритмы с неизвестным числом повторений
- •Задания
- •Задание
- •Тема 10 Работа с массивами
- •Задание
- •Задание
- •Тема 12 Записи
- •Задания
- •Тема 13 Работа с файлами
- •Задания
- •Задания
- •Тема 15 Алгоритмы построения графика аналитически заданной функции
- •Задание
- •Тема 16 Анимация изображений
- •Задание 1
- •Задание 2
- •Тема 17 Численные методы вычисления определённого интеграла
- •1. Метод прямоугольников
- •2. Метод трапеций
- •3. Метод Симпсона
- •Задания
- •Тема 18 Численные методы решения нелинейных уравнений
- •Задания
- •Тема 19 Численные методы решения обыкновенных дифференциальных уравнений
- •Задание
- •Оглавление
- •Литература
Задания
Организовать ввод, хранение в массиве, вывод на экран следующих данных:
Информация о движении поездов, включающая номер поезда, пункт отправления, пункт назначения, дата и время отправления, время в пути.
Информация о продаже билетов в кинотеатре, включающая дату, время сеанса, ряд, место, признак проданного билета.
Информация о знакоместах экрана монитора, работающего в текстовом режиме: строка, позиция в строке, символ, цвет символа, цвет фона.
Информация об адресе человека: почтовый индекс, страна, город, улица, номер дома, номер квартиры.
Информация о владельцах животных: фамилия владельца, вид животного, порода, окрас, пол, возраст животного.
Экзаменационная ведомость: предмет, номер группы, дата экзамена, 10 строчек с фамилиями студентов, номером их зачётной книжки, оценкой.
Информация о движении самолетов: номер рейса, пункт назначения, периодичность, тип самолета, время вылёта, время прилёта.
Информация о командах, участвующих в турнире по хоккею: название команды, город, количество побед, ничьих, поражений, количество забитых и пропущенных шайб.
Информация о лекарствах, имеющихся в аптеке: название, фирма-производитель, вид (таблетки, мазь, микстура и т.д.), цена, дата изготовления, срок годности, признак разрешения свободной продажи.
Информация о квартиросъёмщиках в многоквартирном доме: номер квартиры, фамилия квартиросъёмщика, подъезд, этаж, общая площадь, жилая площадь, количество проживающих.
Информация о выдаче книг в библиотеке: шифр книги, тематика, автор, название, издательство, год издания, количество страниц.
Тема 13 Работа с файлами
Файлом называется последовательность данных, размещаемая на внешнем запоминающем устройстве и рассматриваемая в процессе чтения-записи как единое целое.
Порядок работы с файлами:
1. Описать тип файловой переменной, например, f :
var |
var |
var |
f : file of type; |
f : text; |
f : file; |
Тип fileописывает линейную последовательность компонент, указанного типа. Тип файлаTextозначает файл, состоящий из строк символов.
2. Осуществить связь файловой переменной с именем файла - команда Assign(f). Одновременно в программе может быть открыто несколько десятков файлов, каждый из которых должен иметь свою файловую переменную.
3. Открыть файл командой Rewrite(f)для записи во вновь создаваемый файл илиReset(f) для чтения/записи уже имеющегося файла. Если открывается существующий текстовый файл, то используем командуAppend(f).
4. Осуществить чтение/запись в файл - команды Read/Write соответственно (для построчной работы с текстовыми файлами можно использоватьReadLn/WriteLn). Например, команда записи выглядит следующим образом:Write(f, а), гдеf- файловая переменная;а- переменная любого типа (byte, real, stringи т. д., соответствующая типу файла). При обращении к командамRead/Write позиция чтения/записи в файле автоматически увеличивается на единицу.
5. Закрыть файла - команда Close(f).
Пример:
Var
f: text;
Begin
Assign(f, 'TEST.TXT'); { связываем файловую переменную f} {c именем файла 'TEST.TXT' }
Rewrite(f); { Создаем новый файл }
WriteLn(f,'Исходный текст'); { Записываем строку в файл }
Close(f); { Закрываем файл }
Append(f); { Открыть файл для добавления}
{ в его конец строки }
WriteLn(f,'Добавляемый текст'); { Добавляем строку }
Close(f); { Закрываем файл}
End.
Ниже приведено описание процедур и функций, работающих с файлами:
Procedure Append(var f : Text);
Открывает существующий текстовый файл f для дополнения.
Procedure Assign(var f; name : String);
Связывает внешний файл с именем name и переменную файлового типа f. Все дальнейшие операции с переменной f будут выполняться с указанным внешним файлом.
Procedure Close(var f);
Закрывает открытый файл, связанный с переменной f.
Function Eof(var f) : Boolean;
Показывает значение Истина (True) при наличии признака конца файла для типизированных или нетипизированных файлов, указываемых файловой переменной f.
Function FilePos(var f) : Longint;
Показывает текущую позицию в файле, указываемом переменной f. Если эта позиция в конце файла, то функция возвращает значение, равное длине файла, а если в начале файла, значение 0.
Function FileSize(var f) : Longint;
Показывает текущий размер файла fв байтах. Если файл пуст, то 0.
Procedure Reset(var f [ : file; RecSize : Word ] );
Открытие существующего файла. Имя внешнего файла, связанного с f, должно быть ранее определено. Необязательный параметрRecSize: размер записи нетипизированного файла.
Procedure Rewrite(var f : file [;RecSize : Word ] );
Создает и открывает новый файл. Если такой файл уже есть, то он удаляется и создается новый с тем же именем.
Procedure Seek(var f; n : Longint);
Перемещает текущую позицию файла к элементу с номером n (не может быть использована для текстовых файлов, первая позиция равна 0).
Procedure Truncate(var f);
Усекает размер файла fдо текущей позиции в файле.
Ниже приведен пример программы, которая открывает сразу два файла (один для чтения, а второй создает вновь для записи). Командой Readln(f1,s); из первого файла считывается строкаs. В циклеForорганизуется доступ к ее отдельным символам и производится замена буквыkнаK. Затем преобразованная строка сохраняется во втором файле. Считывание строк проводится в циклеrepeat-untilи завершается при нахождении конца первого файла Eof(f1).
Var
f1,f2:text;
s:string;
i:byte;
Begin
Assign(f1, 'text.txt');
Assign(f2, 'text_new.txt');
Reset(f1);
Rewrite(f2);
Repeat
Readln(f1, s);
for i:=1 to Length(s) do
if s[i]='k' then s[i]:='K';
WriteLn(f2, s);
until Eof(f1);
Close(f1);
Close(f2);
End.
Следующая программа выполняет ту же функцию, однако, доступ к элементам файла значительно упрощен. Это достигается за счет иного описания структуры файла. В данном случае тип того же файла задан как символьный, что позволяет использовать только один цикл.
Var
f1,f2:file of char;
ch:char;
Begin
Assign(f1, 'text.txt');
Assign(f2, 'text_new.txt');
Reset(f1);
Rewrite(f2);
Repeat
Read(f1, ch);
if ch='k' then ch:='K';
Write(f2, ch);
Until Eof(f1);
Close(f1);
Close(f2);
End.