Работа с файлами в Turbo Pascal. Численные методы и связанные с ними задачи.

Работа с файлами в Turbo Pascal

При работе с файлами в TP используются следующие процедуры:

assign(var F; name: string); - устанавливает соответствие между

файлом и файловой переменной, окрывает все другие поцедуры работы

с файлами. F -переменная любого файлового типа, name - полное имя

файла.

close(var F); - окончание процедур работы с файлами (закрытие

файла).

rewrite(var F: file); - создаёт и открывает новый файл.

reset(var F: file); - открывает существующий файл.

append(var F: text); - открывает существующий текстовый файл и

позиционирует указатель обработки на конец файла. После этого

можно дополнять текстовый файл информацией, начиная с конца стро-

ки.

erase(var F); - удаляет неоткрытый внешний файл любого типа, за-

даваемый переменной F.

rename(var F: newname: string); - переименовывает неоткрытый файл

F любого типа. Новое имя задаётся строкой newname.

Текстовый файл можно рассматривать как последовательность симво-

лов, разбитую на строки длиной от 0 до 256 символов. Для описания

используется стандартный тип text: var F: text; (F - файловая пе-

ременная).

Стандартные типы данных не требуют описания в разделе type в от-

личие от типов, образованных пользователем. Формат раздела:

type <имя типа> = <значение типа>;

Имя и значение типа даёт пользователь. Пример: type fil=text;

 

Рассмотрим работу с файлами в TP на примерах.

 

Пример 1. Запись текстового файла на диск и ввод в него текста.

 

program wtf;

type fil=text;

var f1:fil; name:string[35]; txt:string;

begin

write('Введите имя файла для записи текста>');

readln(name);

writeln;

assign(f1,name);

rewrite(f1);

writeln('Введите текст для записи (для окончания-Enter):');

writeln;

repeat

write(':>');

readln(txt);

writeln(f1,txt);

until txt='';

close(f1);

writeln;

writeln('Ввод окончен, нажмите Enter.');

readln;

end.

 

Пример 2. Запись результата вычисления в текстовый файл.

 

program wtf1;

uses crt;

type fil=text;

var f1:fil; name:string[35]; txt:string;

var i,n:real;s,q:real;

begin

clrscr;

writeln('Для вычисления суммы ряда S=1+1/4+1/9+...+1/n2,');

write('введите n=1,2,3...: n=');

read(n);

i:=1;

S:=1;

while i<>n do

begin

i:=i+1;

s:=s+1/(i*i);

end;

writeln('Сумма членов ряда равна S=',s);

name:='rezult.txt';

txt:='Сумма ряда S=1+1/4+1/9+...+1/n2 равна: S=';

writeln;

assign(f1,name);

rewrite(f1);

writeln(f1,txt,s,' при n=',n:9:0);

close(f1);

writeln('Ваш результат будет записан в файл rezult.txt');

writeln('Для выхода из программы нажмите Enter.');

readkey;

end.

 

Пример 3. Чтение последовательности длиной до 35 символов из

текстового файла example.txt (его содержимое, например,

"23456 Всем привет!"

 

Функция Eoln(var F: text) возвращает булевское значение True,

если текущая файловая позиция находится на маркере конца строки

или вызов Eof(F) возвратил значение True. Во всех других случаях

значение функции будет False.

Функция Eof(var F: text) возвращает булевское значение True, ес-

ли указатель конца файла находится сразу за последним компонен-

том. В противном случае - False.

 

program wtf2;

var F: text; St: string[35];

begin

assign(F, 'example.txt'); {Файл example.txt должен существовать!}

reset(F);

while not Eoln(F) do begin {Проверка конца строки}

read(F,St);

writeln('St = ',St); {Вывод на экран}

end;

readln(F); {Переход к следующей строке}

close(F);

writeln('Вывод символов из файла окончен. Для выхода - Enter.');

readln;

end.

 

Численные методы и связанные с ними задачи.

Рассмотрим некоторые характерные для численных методов задачи,

для решения которых удобно использовать программирование на TP.

 

Пример 1. Вычислите приближенно определенный интеграл по формуле

прямоугольников. Подынтегральная функция f(x)=sin(x). Пределы ин-

тегрирования a=0; b=pi.

 

program INTEGRAL1;

var i,n:integer; a,b,S,h,x,Y:real;

begin

writeln('Подынтегральная функция f(x)=sin(x). Пределы a=0; b=pi.');

write('Введите число членов ряда приближения: n=');

read(n);

a:=0; b:=pi;

h:=(b-a)/n;

S:=0;

for i:=1 to n do

begin

x:=a+i*h-h/2;

S:=S+h*sin(x)

end;

writeln('Приближенное значение интеграла равно: I=',S);

writeln('Для выхода из программы введите число 1.');

readln(Y);

end.

 

Пример 2. Вычислите выражение S=sqrt(1+sqrt(2+sqrt(3+sqrt(4+...)))

с максимальной точностью.

 

program zp1;

var j,n:integer;s0,s1:real;

begin

s0:=0;

s1:=1;

n:=1;

while s0<>s1 do

begin

s0:=s1;

n:=n+1;

s1:=0;

for j:=n downto 1 do

s1:=sqrt(j+s1);

end;

writeln('Ответ: значение выражения S=',s1);

writeln('Для выхода из программы - Enter.');

readln

end.

 

Пример 3. Вычислите с точностью e (e<<1) сумму ряда

S=sin(x)=x-x3/3!+x5/5!-x7/7!+...+(-1)(n-1)*x(2*n-1)/(2*n-1)!

Это разложение функции S=sin(x) в ряд Тейлора.

 

program zp2;

var i:integer;x,y,S,e,q:real;

begin

write('Введите x=');

read(x);

write('Введите величину точности e=');

read(e);

i:=1;

S:=x;

y:=x;

while abs(y)>e do

begin

i:=i+1;

y:=-y*x*x/((2*i-2)*(2*i-1));

S:=S+y;

end;

writeln('Ответ: Сумма ряда S=',S);

writeln('Для сравнения и проверки S=sin(x)=',sin(x));

writeln('Для выхода из программы введите любое число.');

readln(q);

end.

 

Пример 4. Решение уравнения F(x)=sin(x)-x+0.25=0 методом простых

итерраций. Суть этого метода заключается в следующем. Пусть Xo -

исходное приближённое значение корня уравнения F(x)=0, которое

может быть переписано в виде x=f(x). Тогда в качестве следующего

приближения примем x1=f(Xo). В качестве следующего приближения

возьмём x2=f(x1). Продолжая процесс дальше, в качестве n-го приб-

лижения необходимо положить Xn=f(X(n-1)). Итеррационный процесс

будет сходиться и мы в итоге указанной процедуры найдем корень

уравнения, если ABS(f'(x))<1. В противном случае процесс расхо-

дится и мы не найдём решение этим методом. При нахождении исход-

ного значения корня Xo следует учитывать, что в окрестности корня

функция F(x) меняет знак.

Данное уравнение можно решить только приближённо и лишь численны-

ми методами. Заданная точность e=1e-9. Начальное значение корня

x=1. Получаемый в процессе решения результат x=1.1712296519 прев-

ращает уравнение в тождество с большой точностью.

 

program iterac;

label m1;

var i:integer; x,x1,e,q:real;

begin

e:=1e-9;

x:=1;

for i:=1 to 30 do

begin

x1:=sin(x)+0.25;

if abs(x1-x)<=e then goto m1;

x:=x1;

end;

m1: writeln('Ответ: x =',x1);

writeln('Для выхода введите любое число.');

readln(q);

end.

 

Пример 5. Решение уравнения F(x)=cos(x)-x=0 методом Ньютона.

Согласно методу Ньютона, корень уравнения равен x1=x-F(x)/F'(x).

Этот численный метод часто используется как основной, а также в

тех случаях, когда уравнение не удаётся решить методом простых

итерраций. Чтобы метод сходился и приводил к результату необходи-

мо, чтобы начальное значение x было выбрано достаточно близко к

корню и в окресности корня значение F'(x) не было слишком большим

и F'(x) не было слишком близко к нулю. Последнее условие F'(x)<>0

означает, что никакие два корня не находятся слишком близко один

к другому.

В данном примере начальное значение корня x=0.7. Корень x=0.73908.

 

program Newton;

uses crt;

var x,x1,e:real; i:integer;

begin

clrscr;

i:=1;

e:=1E-3;

x:=0.7;

repeat

i:=i+40;

x:=x+i*e;

x1:=x+(cos(x)-x)/(sin(x)+1);

until abs(x-x1)>=e;

writeln('Ответ: x=', x1);

writeln('Проверка решения: F(x)=cos(x)-x =', cos(x1)-x1);

writeln('Выход - любая клавиша.');

readkey;

end.

Другие записи

10.06.2016. Основы программирования на QBasic
Среда программирования QBasic. Бейсик (Basic) - диалоговый учебный язык программирования для персональных компьютеров. На современных компьютерах используется следующие версии Basic: GWBasic, QBasic…
10.06.2016. МАССИВЫ
С понятием "массив" приходится сталкиваться при решении науч- но-технических и экономических задач обработки совокупностей большого количества значений. Массив - это множество однотипных элементов,…
10.06.2016. Основы программирования в среде Visual Basic 3.0.
Среда программирования Visual Basic (VB) используется для созда- ния программ, работающих в Windows. Версии VB 1.0-3.0 работают в Windows 3.1, VB 4.0-6.0 в Windows 95. В основе VB лежат идеи объектно-ориентированного…
10.06.2016. Графические редакторы
Технологии получения графических изображений Графические редакторы - это инструменты компьютера для получения графических изображений: рисунков, картинок, чертежей, диаграмм, графиков и т.д.,…
10.06.2016. Графические редакторы систем автоматизированного проектирования (САПР)
1. CirCad - программа для создания радиосхем. Вход в программу - !start.bat или circad.exe. Выход из программы - Q и Enter. GrafEdit - простейший чёрно-белый графический редактор элементов…