Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИнфТехнКомпТехн

.pdf
Скачиваний:
18
Добавлен:
02.04.2015
Размер:
35.33 Mб
Скачать

номера дня недели в пределах 1..7. После ввода номера в этом интервале с помощью оператора выбора case..of формируется текстовое сообщение о дне недели. Если пользователь вводит номер 0, работа приложения завершается. Ввод чисел, отличных от 0..7, программа рассматривает, как ошибку, и просит повторить ввод.

Листинг программы:

 

 

 

 

program Prg_4_2;

 

 

 

 

{$APPTYPE CONSOLE}

 

 

 

 

uses

 

 

 

 

 

SysUtils,RusTrans;

 

 

 

 

label

 

 

 

 

 

10;

 

 

 

 

 

type

 

 

 

 

 

WeekDay=array[1..7] of string;

 

 

 

var s:string; MyWeek:WeekDay; x:integer;

 

 

begin

MyWeek[1]:='Понедельник';

MyWeek[2]:='Вторник';

MyWeek[3]:='Среда';

 

MyWeek[4]:='Четверг';

MyWeek[5]:='Пятница';

 

MyWeek[6]:='Суббота';

MyWeek[7]:='Воскресенье';

недели

1..7, а

чтобы

writeln(Rus('Введите

номер дня

закончить

0'));

 

 

 

 

writeln;

 

 

 

 

 

10:readln(x); case x of

0:s:=Rus('Спасибо, до свидания');

1:s:=Rus(MyWeek[x])+Rus(' - день бездельник'); 2,3,4: s:=Rus(MyWeek[x])+Rus(' - рабочий день');

5:s:=Rus(MyWeek[x])+Rus('. Уф, завтра отдыхаем!');

6:s:=Rus(MyWeek[x])+Rus(' - выходной день');

7:s:=Rus(MyWeek[x])+Rus(' - выходной день, а завтра...'); else

begin

writeln(Rus('Вы ошиблись, повторите')); goto 10;

end; end; writeln(s); if x<>0 then goto 10; readln

end.

Выводы

1.Для безусловной передачи управления применяется оператор goto <Метка>.

2.Для ветвлений используется оператор If <условие> then <оператор1> else <оператор2>.

3.Возможен сокращенный оператор ветвлений if <условие> then <оператор>.

4.Для множественного ветвления можно применить оператор выбора case…of. Селектор этого оператора должен быть порядкового типа (чаще всего целочисленного, например integer).

5.Если в ветвях then или else нужно выполнить несколько операторов, то их нужно объединить в один составной оператор с помощью операторных скобок begin…end.

181

5. Циклы с неизвестным числом повторений

Подготовка к работе

1.По указанной литературе изучить:

организацию циклов с неизвестным числом повторений;

организацию таких циклов с помощью операторов while...do и repeat...until;

вычисление суммы членов бесконечного ряда.

2.Разработать алгоритм решения задачи.

3.Составить программы решения задачи.

Контрольные вопросы.

1.Циклический процесс с неизвестным числом повторений.

2.Его отличия от цикла с заданным числом повторений.

3.Операторы языка Object Pascal для организации таких циклов. Их сравнение.

4.Формат оператора while...do.

5.Как выполнить группу операторов в цикле while...do?

6.Формат оператора repeat...until.

7.Как выполнить группу операторов в цикле repeat...until?

8.Прямое вычисление значения суммы членов бесконечного ряда.

9.Вычисление значения суммы членов бесконечного ряда по рекуррентной формуле.

10.Условие выхода из цикла при вычислении значения суммы членов бесконечного ряда.

Листинг программы

 

 

 

program Prg_05_1;

 

 

 

{$APPTYPE CONSOLE}

 

 

 

uses

 

 

 

 

SysUtils, RusTrans;

 

 

 

var

 

 

 

 

a,e,q,s,x: real;

 

 

 

n: integer;

 

 

 

 

begin

 

 

// Ввод

данных

writeln(Rus('Введите точность'));

write('e=');

 

 

 

readln(e);

 

аргумент'));

 

 

writeln(Rus('Введите

 

 

write('x=');

 

 

 

readln(x);

// Инициализация цикла

 

 

n := 0;

 

 

a := x;

 

 

 

 

s := a;

 

// Начало цикла

 

 

while abs(a)>E do

 

 

begin // Тело цикла

 

 

 

q:=-x*x/(2*n+2)/(2*n+3);

 

 

a:=a*q;

 

 

 

 

s:=s+a;

 

 

 

 

n:=n+1;

 

 

 

 

end;

 

 

 

 

writeln;

 

 

результатов

writeln(Rus('Результат')); // Вывод

writeln(Rus('Сумма

s='),s:8:3);

 

 

writeln(Rus('Членов

ряда n='),n);

 

 

 

 

182

 

 

readln;

end.

Задание 2

Блоксхема алгоритма приведена на Рис. 5.3. В блоке 1 вводятся исходные данные. Инициализация данных для цикла выполняется в блоке 2. Блок 3 - цикл repeat...until. Результаты выводятся в блоке 4. Результат работа программы такой же, как для задания 1.

Листинг программы

 

 

 

program Prg_05_2;

 

 

 

{$APPTYPE CONSOLE}

 

 

 

uses

 

 

 

 

SysUtils,RusTrans;

 

 

 

var

 

 

 

 

a,e,q,s,x: real;

 

 

 

n: integer;

 

 

 

 

begin

 

 

// Ввод

данных

writeln(Rus('Введите точность'));

write('e=');

 

 

 

readln(e);

 

аргумент'));

 

 

writeln(Rus('Введите

 

 

write('x=');

 

 

 

readln(x);

// Инициализация цикла

 

 

n := 0;

 

 

a := x;

 

 

 

 

s := a;

 

 

 

 

repeat// Начало цикла

 

 

q:=-x*x/(2*n+2)/(2*n+3); // Тело цикла

 

a:=a*q;

 

 

 

 

s:=s+a;

 

 

 

 

n:=n+1;

 

 

 

 

until abs(a)<e;

 

 

 

writeln;

 

 

результатов

writeln(Rus('Результат')); // Вывод

writeln(Rus('Сумма

s='),s:8:3);

 

 

writeln(Rus('Членов

ряда n='),n);

 

 

readln;

 

 

 

 

end.

 

 

 

 

Выводы

1.Для организации циклов с неизвестным числом повторений применяются операторы:

while...do (цикл ДО),

repeat...until (цикл ПОКА).

2.Для выполнения в цикле while...do группы операторов необходимо превратить ее в один составной оператор с помощью операторных скобок begin…end.

3.При выполнении цикла repeat...until в теле цикла может находиться множество операторов. Составной оператор не требуется.

6. Циклы с заданным числом повторений Подготовка к работе

1. По указанной литературе изучить:

183

 

организацию циклов с известным числом повторений;

 

возможности

языка для

организации

таких

циклов с помощью

 

операторов с

параметром

for...to...do и for...

downto

...do.

2.Разработать алгоритм решения задач.

3.Составить программы решения задач.

Контрольные вопросы

1.Преимущества использования операторов циклов в программе.

2.Циклический процесс с заданным числом повторений.

3.Средства языка Object Pascal для организации циклов с заданным числом повторений.

4.Оператор цикла for...to...do.

5.Оператор цикла for...downto...do.

6.Разница между операторами for...to...do и for...downto...do.

7.Требования к переменной цикла в операторах for...to...do и for...downto...do.

8.Организация вычисления суммы.

9.Организация вычисления произведения.

7. Массивы

Подготовка к работе

1.По рекомендуемой литературе изучить:

способы описания размеров массивов;

способы ввода и вывода массивов;

реализацию приемов накопления суммы или произведения элементов массивов, запоминания результатов, нахождение наибольшего и наименьшего;

способы ввода и вывода матриц.

2.Разработать алгоритм решения в соответствии с заданием.

3.Составить программу решения задачи.

Контрольные вопросы

1.Что такое массив?

2.Описание типа - массив.

3.Какие операторы языка можно использовать для описания массивов?

4.Особенности организации цикла при обработке массивов?

5.Особенности программирования при обработке массивов?

6.Особенность ввода и вывода массивов?

7.Представление строковых переменных типа String, как одномерных массивов.

8.Вложенные массивы.

Задание к работе

1.Обработка одномерного массива. Варианты заданий в табл. 6.1. Проект – консольное приложение.

2.Обработка матрицы. Варианты заданий в табл. 6.2. Проект – консольное приложение

184

Таблица 6.1 - Варианты задания 1

№ Имя массива

Задание

1X(100) Вычислить сумму и количество элементов массива X, условие 0 ≤ X i ≤ 1.

2А(80)

Вычислить среднее арифметическое значение элементов массива A, условие A 0i .

3

X(70)

Переписать элементы массива X в массив Y и подсчитать их количество, если − 1 ≤ X i ≤ 1 .

 

 

 

 

 

 

4

В(50)

Определить максимальный элемент массива В и его порядковый номер при B 0i .

 

 

5

С(40)

Вычислить минимальный элемент массива С и его номер при C 0i.

 

 

 

 

 

 

 

 

6

D(80)

Найти максимальный и минимальный элементы массива D и поменять

их местами.

 

 

 

Найти сумму элементов массива. Разделить каждый элемент исходного массива на

7

Y(20)

полученное значение. Результат получить в том же массиве. Полученный массив распечатать

 

 

в одной строке.

 

 

 

 

 

 

 

8

А(4)

Найти сумму элементов массива. Разделить каждый элемент исходного массива на

полученное значение. Результат получить в том же массиве. Напечатать в одной строке.

 

 

 

 

 

 

9

N(50)

Определить сумму элементов массива N, кратных трем. Условие: INT(N(i)/3)*3=N(i).

 

 

 

 

 

 

10

X(N)

Вычислить сумму и количество элементов массива X. Условие X 0,i N ≤ 30 .

 

 

 

 

 

 

11

X(N)

Переписать в массив Y подряд положительные элементы массива X. Условие N ≤ 40 .

 

12

X(N)

Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива

X.Условие N ≤ 40 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

В(K)

Определить максимальный элемент массива B и его порядковый номер при B 0,i K ≤ 50 .

 

 

14

С(K)

Определить минимальный элемент массива С и его порядковый номер при

 

 

− 1 ≤ C i ≤ 1, K ≤ 50 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найти среднее значение элементов заданного массива. Преобразовать исходный массив,

15

А(K)

вычитая из каждого элемента среднее значение. Полученный массив распечатать в виде

 

 

строки. K<=40.

 

 

 

185

Таблица 6.2 - Варианты задания 2

Матрица

Задание

A

Вычислить и запомнить сумму и число положительных элементов каждого столбца

матрицы. Результаты отпечатать в виде двух строк

 

B

Вычислить и запомнить суммы и числа элементов каждой строки матрицы. Результаты

отпечатать в виде двух столбцов.

 

 

 

C

Вычислить сумму элементов побочной диагонали матрицы.

A

Найти след матрицы.

 

 

B

Найти сумму элементов второй строки матрицы.

 

 

C

Найти сумму элементов второго столбца матрицы.

A

Вывести на печать элементы матрицы А(i,j)<=4

A

Вывести на печать элементы матрицы 2<= А(i,j) <=5

B

Вывести на печать отрицательные элементы матрицы.

A

Вывести на печать положительные элементы матрицы.

A

Вычислить сумму элементов матрицы.

A

Найти сумму элементов побочной диагонали матрицы.

B

Вычислить сумму элементов двух первых столбцов матрицы.

C

Вычислить среднее арифметическое матрицы.

A

Определить сумму элементов третьей строки матрицы.

В блоке 1 вводятся число элементов массива n и значения элементов массива x[i]. В блоке 2 в качестве кандидатов в ответы выбирается первый элемент (Xmax = первый элемент массива, Imax = 1). Блок 3 открывает цикл с известным числом повторений. В блоке 4 текущий элемент массива x[i] сравнивается с Xmax. Если он больше Xmax, то в блоке 5 Xmax и Imax меняются на параметры текущего элемента. Результат выводится блоком 6. Блок 7 обеспечивает паузу в исполнении программы, чтобы пользователь мог увидеть результат.

Листинг программы

 

 

 

 

 

program Prg_7_1;

 

 

 

 

 

{$APPTYPE CONSOLE}

 

 

 

 

 

uses

 

 

 

 

 

 

SysUtils,RusTrans;

 

 

 

 

 

const

 

 

 

 

 

 

NN=30;

 

 

 

 

 

 

var

 

 

 

 

 

 

i,n,Xmax,Imax: integer;

 

 

 

 

x:array[1..NN] of integer;

 

 

 

begin

 

 

 

n'));

 

 

writeln (Rus('Введите размер массива

 

 

readln(n);

 

 

 

 

 

 

writeln;

 

 

 

 

 

 

randomize;

 

 

 

// Ввод

элементов

for i:=1 to n do x[i]:=random(100);

массива x

 

 

 

 

 

 

Xmax:=x[1];// Кандидат в Xmax

 

 

 

Imax:=1;

// Его

номер

 

Xmax

 

for i:=2 to n do if x[i]>Xmax then // Поиск

 

begin Xmax:=x[i]; Imax:=i

 

 

 

end; writeln; writeln(Rus('Результат'));

 

 

writeln(Rus('Максимум

Xmax='),Xmax);

 

 

 

 

 

 

186

 

 

 

writeln(Rus('Его номер Imax='),Imax); readln

end.

Задание 2

Вывести квадратную матрицу X размером N в виде таблицы. Вычислить и вывести сумму первых положительных элементов нечетных столбцов матрицы и обнулить элементы, размещенные над суммируемыми элементами.

Листинг программы: program Prg_7_2; {$APPTYPE CONSOLE} uses SysUtils,RusTrans; const NN=30;

var

i,j,k,l,n,s: integer; x:array[1..NN,1..NN] of integer;

begin

матрицы n'));

writeln (Rus('Введите размер

readln(n);

 

writeln;

 

randomize;

do//

Формирование матрицы

for i:=1 to n

for j:=1

to n

do x[i,j]:=50-random(100);

for i:=1

to n

do//

Вывод

матрицы

begin

for j:=1 to n do write(x[i,j]:4); writeln;

end;

суммы

 

s:=0; // Инициализация

 

for j:=1 to n do

 

 

begin

 

// Пропустить четные столбцы

if j mod 2=0 then continue;

for i:=1 to n do

 

 

begin

 

 

if x[i,j]>0 then begin

 

 

s:=s+x[i,j];

 

// Суммирование

break;

 

// Досрочныйвыход из цикла

end;

x[i,j]:=0; // Обнуление элемента матрицы end;

end; writeln; writeln(Rus('Сумма='),s); for k:=1 to n do begin // Вывод измененной матрицы

for l:=1 to n do write(x[k,l]:4); writeln;

end;

readln;

end.

187

Выводы

1.Массив – это набор компонент одинакового типа.

2.Размерность массива ограничена только доступной памятью.

3.Для обработки массивов применяются операторы циклов с известным числом повторений.

4.При использовании операторов циклов можно применять процедуры:

continue для перехода к следующей итерации в цикле,

break для досрочного выхода из цикла.

5.Переборный алгоритм позволяет найти элемент массива с заданным свойством (например, имеющий максимальное значение).

6.Матрицы наглядно отображаются в табличной форме. Для вывода матриц в таком виде используются операторы:

write для размещения нескольких элементов в одной строке текста,

writeln для перехода к другой строке.

8.Файлы

Подготовка к работе

1.По рекомендуемой литературе изучить:

типы файлов, определенные в Delphi;

связь с дисковыми файлами;

операции с типизированными файлами;

операции с текстовыми файлами;

операции с нетипизированными файлами.

7.Разработать алгоритмы решения в соответствии с заданием.

8.Составить программы решения задач.

9.Контрольные вопросы

10.Типы файлов, определенные в Delphi.

11.Способы связи с файлами (прямой, файловая переменная).

12.Файловая переменная.

13.Как связать файловую переменную с дисковым файлом?

14.Процедуры создания, открытия, закрытия типизированных файлов.

15.Организация прямого доступа к компонентам типизированных файлов.

16.Процедуры создания, открытия, закрытия текстовых файлов.

17.Процедуры создания, открытия, закрытия нетипизированных файлов.

18.Высокоскоростное копирование файлов.

19.Контроль ошибок работы с файлами.

Задание к работе

Выполнить 4 задания по работе с файлами. Все проекты - консольные приложения. Задания и исходные данные представлены в табл. 8.1.

Задания:

1.Создать программу создания и дополнения текстового файла. Сначала создать текстовый файл из 5 строк и посмотреть его содержимое. Затем добавить в этот файл произвольные строки и проверить содержимое итогового файла.

2.Создать программу демонстрации произвольного доступа к элементам файла. Она заносит в файл последовательно числа от N1 до N2. После записи из файла считываются на дисплей все компоненты.

3.Создать программу для высокоскоростного копирования файла-источника в файл-приемник. В качестве файлаисточника использовать результат компиляции

188

Prg_8_1.exe программы задачи 1, созданный ранее в папке 8_1. В качестве файлаприемника определить файл с именем Prg_8_1a.exe в папке 8_3.

4.Создать программу обмена данными с файлом, использующую прямое обращение к именам файлов. Она заносит в буфер N1 случайных чисел и переносит их в файл. Затем буфер обнуляется, и из файла возвращаются первые N1-2 числа.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 8.1 - Варианты задания 2, 4.

 

 

 

1

2

 

3

 

4

 

 

5

6

 

7

 

8

9

 

10

11

 

12

13

 

14

 

15

 

 

 

N1

 

4

6

 

8

 

7

 

 

9

43

 

21

 

23

14

 

12

17

 

18

25

 

33

 

28

 

 

 

N2

 

9

11

 

16

 

21

 

19

58

 

44

 

46

25

 

29

34

 

42

53

 

44

 

43

 

 

Листинг программы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

program Prg_8_1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{$APPTYPE CONSOLE}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

uses

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SysUtils, RusTrans;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

const

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FileDir='c:\users\PO_11\Ivanov\08_1\';;

 

 

 

 

 

 

 

 

 

var

 

 

 

// Файловая переменная

 

 

 

 

 

 

 

 

 

 

MyFile: text;

 

 

 

 

 

для строк

FilePath,FileName,Temp: string;// Переменные

 

i,imax: integer;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

label

 

 

 

 

выхода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Exit; // Метка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

 

 

 

имя

 

 

файла'));

 

 

 

 

 

 

 

 

 

 

writeln(Rus('Введите

 

 

 

 

 

 

 

 

 

 

 

 

 

readln(FileName);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

writeln;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

// Путь

 

к

файлу

 

 

 

 

FilePath:=FileDir+FileName;

 

 

 

 

 

 

 

диске

AssignFile(MyFile,FilePath);

 

// Связь

файлом на

{$I-} // Отключить контроль

 

 

ошибок

 

 

 

 

 

 

 

 

 

 

Rewrite(MyFile);// Создать новый

 

файл

 

 

 

 

 

 

 

 

 

{$I+};// Включить контроль

 

ошибок

 

 

открытия

файла

if IOResult = 0 // Проверить

ошибку

then writeln(Rus('Спасибо'))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

else begin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

writeln(Rus('Ошибка'));

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

readln;

// Выход

при

 

ошибке

 

 

 

 

 

 

 

 

 

 

 

 

 

goto Exit

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end; writeln; imax:=5;

'),imax,Rus(' строк'));

 

 

 

 

 

 

writeln(Rus('Введите

 

 

 

 

 

 

 

for i:=1 to imax do

 

 

// Повторять

 

5раз

 

 

 

 

 

 

 

 

 

begin

 

 

 

 

 

'),i,' = ');

 

 

 

 

 

 

 

 

 

 

 

 

 

write(Rus('Строка

 

 

клавиатуры

 

 

 

 

 

 

readln(Temp);

 

// Чтение строки с

 

 

 

 

 

 

 

writeln(MyFile,Temp);// Запись этой строки в файл

 

end;

 

 

 

 

 

 

 

// Закрыть

файл

 

 

 

 

 

 

 

 

 

 

CloseFile(MyFile);

 

 

 

 

 

 

 

 

 

 

 

 

Reset(MyFile);

 

// Открыть его

 

для

 

проверки

 

 

 

 

 

 

i:=1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

writeln;

 

 

 

 

 

 

 

 

 

 

файла'));

 

 

 

 

 

 

 

 

 

 

 

 

writeln(Rus('Содержимое

 

 

 

 

 

 

 

 

 

 

 

 

writeln;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

189

 

 

 

 

 

 

 

 

 

 

 

 

 

 

while not EOF(MyFile) do

// Повторять

до

конца

файла

begin

 

 

 

 

 

 

 

 

из

файла

 

 

readln(MyFile,Temp); // Чтение строки

 

этой

writeln(Rus('Строка

'),i,' = ',Temp);

//

Вывод

строки на

дисплей

 

 

 

 

 

 

 

 

 

i:=i+1

 

 

 

 

 

 

 

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

 

 

 

writeln;

 

 

// Закрыть

файл

 

 

 

 

CloseFile(MyFile);

 

 

 

 

{$I-} // Отключить контроль

ошибок

 

 

 

 

 

Append(MyFile); // Открыть

 

файл

для добавления строк

{$I+};// Включить контроль

 

ошибок

 

открытия

файла

if IOResult = 0 // Проверить

ошибку

 

then writeln('OK')

 

 

 

 

 

 

 

 

 

else begin

 

 

 

 

 

 

 

 

 

 

 

writeln(Rus('Ошибка'));

 

 

 

 

 

 

 

 

readln;

// Выход

при

ошибке

 

 

 

 

 

goto Exit

 

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

 

 

 

writeln;

 

 

еще

'),imax,Rus(' строк'));

 

writeln(Rus('Введите

 

for i:=imax+1 to imax*2 do// Повторять

5 раз

 

 

begin

 

 

 

 

 

 

 

 

 

 

 

 

write(Rus('Строка '),i,' = ');

 

клавиатуры

 

 

readln(Temp);

// Чтение строки с

файл

Writeln(MyFile,Temp) // Запись

этой

строки в

end;

 

 

 

// Закрыть

файл

 

 

 

 

CloseFile(MyFile);

 

 

 

 

Reset(MyFile);

// Открыть его

для

проверки

 

 

i:=1;

 

 

 

 

 

 

 

 

 

 

 

 

writeln;

 

 

 

 

 

 

 

 

 

 

 

writeln(Rus('Содержимое файла'));

 

 

 

 

 

writeln;

 

 

 

// Повторять

до

конца

файла

while not EOF(MyFile) do

begin

 

 

 

 

 

 

 

 

из

файла

 

 

readln(MyFile,Temp); // Чтение строки

 

этой строки

writeln(Rus('Строка

'),i,'

= ',Temp);

// Вывод

 

на

дисплей

 

 

 

 

 

 

 

 

 

 

i:=i+1

 

 

 

 

 

 

 

 

 

 

 

end; writeln; writeln('OK'); readln;

 

 

 

 

 

CloseFile(MyFile);

// Закрыть

файл

 

 

 

 

Exit:;

 

 

 

 

 

 

 

 

 

 

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

Задание 2

Создать программу демонстрации произвольного доступа к элементам файла. Она заносит в файл последовательно числа в диапазоне от N1 до N2 (целые и положительные). После записи из файла считываются на дисплей все его компоненты с номерами (начиная с 0). Блок-схема алгоритма приведена на Рис. 8.3.

В блоке 1 пользователь по запросу вводит имя файла на диске (например, E). В блоке 2 из известного имени папки, в которой файл должен быть размещен (константа FileDir в коде программы), и этого имени генерируется путь к файлу, после чего создается файл.

190