
- •Смоленский гуманитарный университет
- •Часть 1. Основы алгоритмизации
- •Тема 1 «Алгоритмы линейной структуры»
- •Ход работы
- •Тема 2 «Алгоритмы разветвляющейся структуры»
- •Ход работы
- •Тема 3 «Алгоритмы циклической структуры»
- •Ход работы
- •Тема 4 «Вложенные циклы»
- •Ход работы
- •Тема 5 «Массивы»
- •Ход работы
- •Часть 2. Программирование
- •Тема 6 «Линейная структура программы»
- •Примеры решения задач
- •Ход работы
- •Тема 7 «Разветвляющая структура программы»
- •Примеры решения задач
- •Ход работы
- •Тема 8 «Циклическая структура программы»
- •Примеры решения задач
- •1 Способ
- •2 Способ.
- •1 Способ
- •2 Способ
- •1 Способ
- •2 Способ
- •1 Способ
- •2 Способ
- •Ход работы
- •Тема 9 «Понятие подпрограммы. Организация процедур и функций»
- •Примеры решения задач
- •Ход работы
- •Тема 10 «Рекурсия»
- •Примеры решения задач
- •Ход работы
- •Тема 11 «Строковый тип данных. Методы работы со строками»
- •Ход работы
- •Тема 12 «Тип данных массив»
- •Примеры решения задач
- •1 Способ
- •2 Способ
- •1 Способ
- •2 Способ
- •1 Способ
- •2 Способ
- •Алгоритм
- •1 Способ
- •2 Способ
- •1 Способ
- •2 Способ
- •Алгоритм
- •Работа программы
- •Ход работы
- •Тема 13 «Тип данных - запись»
- •Ход работы
- •Тема 14 «Файлы. Типы файлов. Методы работы с файлами»
- •Примеры решения задач
- •1 Способ
- •2 Способ
- •Ход работы
- •Тема 15 «Множества»
- •Ход работы
- •Тема 16 «Работа с мультимедиа»
- •Ход работы
- •Максимова Наталья Адександровна Основы программирования
- •214014, Г. Смоленск, ул. Герцена, 2
Тема 14 «Файлы. Типы файлов. Методы работы с файлами»
Цель: Познакомиться с организацией файлов.
Вопросы к допуску и защите:
Что такое файл? Для каких целей используются файлы?
Какими причинами диктуется целесообразность применения файлов?
Каким образом в Паскале объявляютсяфайлы?
Назовите общие и отличительные особенности текстовых, типизированных и нетипизированных фыайлов.
Зачем используется специальная файловая переменная? Как устонавливается соответствие файловой переменной файлу во внешней памяти?
Что общего у процедуры Reset и Rewrite и чем они отличаются?
Зачем применяется процедура Close?
Какие процедур ы применяются для переименования и удаления файлов? Каковы особенности их использования?
В чем заключается специфика текстовых файлов? Назначение процедуры Append.
Чем отличаются процедуры Read и Write от Readln и Writeln .
Назначение функций Eoln, Eof, Seek .
Примеры решения задач
Задача 1. Поставим задачей, записать в один файл произвольный массив чисел, затем прочесть их из файла, отсортировать по не убыванию методом пузырьковой сортировки и записать отсортированный массив в новый файл.
Решение
1 Способ
Program Problem1; { Обработка массивов с помощью файлов }
uses WinCrt; { пузырьковая сортировка }
const
name = 'd:\Bp\prakt\p23\array1.dat';
name1 = 'd:\Bp\Prakt\p23\array1.int';
n = 100;
type
v = file of integer;
t = array[1..n] of integer;
var
f, f1 : v;
a : t;
i : integer;
{----------------------------------------------------------------------------------------}
{ Открытие файла f, соответствующего на диске файлу arra1.dat
и процедура заполнения его массивом произвольных целых чисел }
Procedure create(n : integer; var a : t; var f : v);
var
i : integer;
begin
assign(f, name); { доступ к файлу f }
{$i-}
rewrite(f); { открытие его для записи }
{$i+}
if ioresult <> 0 then writeln('Такой файл не существует');
randomize;
for i := 1 to n do
begin
a[i] := random(201) - 100;
write(f, a[i]) {запись элементов массива в файл f}
end;
close(f); {закрытие файла f}
end;
{---------------------------------------------------------------------------------------}
{Процедура, читающая элементы из файла f, сортирующая
элементы методом "пузыря" и записывающая отсортированный
массив в новый файл array1.int}
Procedure bubble(n : integer; var f1 : v);
var
i, j, p : integer;
begin
assign(f, name); {доступ к файлу f}
assign(f1, name1); {доступ к файлу f1}
create(n, a, f);
{$i-}
reset(f); {открытие файла f для чтения}
{$i+}
if ioresult <> 0 then writeln('Такой файл не существует');
rewrite(f1); {открытие файла f1 для записи}
{$i+}
if ioresult <> 0 then writeln('Такой файл не существует');
for i := 1 to n do read(f, a[i]); {чтение из файла f}
for i := 2 to n do
for j := n downto i do
if a[j] < a[j - 1] then
begin
p := a[j];
a[j] := a[j - 1];
a[j - 1] := p
end;
for i := 1 to n do write(f1, a[i]); {запись отсортированного
массива в файл f1 }
close(f); close(f1) {з закрытие файла f, закрытие файла f1 }
end;
{----------------------------------------------------------------------------------------}
{Основная программа, вызывающая отсортированные элементы
из файла f1 и выводящая их на экран}
begin
assign(f1, name1); { доступ к файлу f1 }
bubble(n, f1); { вызов процедуры сортировки }
{$i-}
reset(f1); { Открытие файла f1 для чтения }
{$i+}
if ioresult <> 0 then writeln('Такой файл не существует');
writeln('Отсортированный по не убыванию массив');
for i := 1 to n do
begin
read(f1, a[i]); { Чтение элементов массива из файла f1 }
write(a[i], ' ') { Вывод их на экран }
end;
writeln;
close(f1) {Закрытие файла f1}
end.