Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_novyy (1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
388.1 Кб
Скачать

10.2.7. Оператор цикла с предусловием

Общая структура оператора цикла с предусловием имеет вид:

While <логическое условие> Do_2

Begin <оператор 1>;

<оператор 2>;

.............

<оператор N>

End;

Оператор цикла While - Do организует выполнение одного оператора неизвестное заранее число раз. Тело цикла выполняется до тех пор, пока условие истинно; выполнение прекращается, если условие становится ложным.

Пример 1.

Составить программу на языке Turbo-Pascal решения нелинейного уравнения f(x) = 0 методом итераций с точностью до 0.0001.

f(x) = x - cos(x*x+1)

Решение:

Для решения задачи методом итераций запишем исходное уравнение в виде x = cos(x*x+1).

Program iter (Input,Output);

Uses Crt;

Const eps=0.0001;

Var x,y : Real;

Begin

Writeln('Введите нулевое приближение x0');

Read (y); x:=y+1;

While (Abs(x-y) < eps) Do

Begin

x:=y;

y:= cos(x*x+1);

End;

Writeln('Решение уравнения : x=',x);

Repeat Until KeyPressed

End.

10.2.8. Оператор цикла с постусловием

Общая структура оператора цикла с постусловием имеет вид:

Repeat <оператор 1>;

<оператор 2>;

.............

<оператор N>

Until <логическое условие>;

Оператор цикла Repeat - Until организует выполнение нескольких операторов неизвестное заранее число раз. Тело цикла выполняется до тех пор, пока условие ложно, выполнение прекращается, если условие становится истинным.

В отличие от оператора цикла While - Do этот оператор цикла всегда выполнится хоть один раз.

Пример 2.

Составить программу на языке Turbo-Pascal решения нелинейного уравнения f(x) = 0 методом итераций с точностью до 0.0001.

f(x) = x - cos x

Решение:

Для решения задачи методом итераций запишем исходное уравнение в виде x = cos x.

Program iter (Input,Output);

Uses Crt;

Const eps=0.0001;

Var x,y : Real;

Begin

Writeln('Введите нулевое приближение x0');

Read (y);

Repeat x:=y;

y:= cos(x);

Until (Abs(x-y) > eps);

Writeln('Решение уравнения : x=',x);

Repeat Until KeyPressed

End.

10.2.9. Операторы цикла с параметром

Конструкции операторов циклов с параметром имеют вид:

For <параметр>:=<начальное знач.> To <конечное знач.> Do

Begin

<оператор 1>;

<оператор 2>;

.............

<оператор N>

End;

For <параметр>:=<конечное знач.> DownTo <начальное знач.> Do

Begin

<оператор 1>;

<оператор 2>;

.............

<оператор N>

End;

Операторы цикла For организуют выполнение одного оператора заранее известное число раз. Тело циклов этих операторов выполняется до тех пор, пока параметр не достигает конечного или начального значения, соответственно. Тип начального и конечного значений должен быть таким же, что и у параметра. Эти значения не должны изменяться в процессе выполнения цикла. Например,

s := 0; p := 1;

For i := 1 To n Do

Begin

s:=s+i;

p:=p*n

End;

11. Структурированные типы данных

Структурированные типы данных определяют наборы однотипных или разнотипных компонентов, при этом типы компонентов образуются из других, например, простых типов данных. В языке Turbo-Pascal существует пять структурированных типов данных:

1) тип - массив,

2) тип - строка,

3) тип - запись,

4) тип - множество,

5) тип - файл.

В стандарте языка Pascal существует понятие упакованного массива (packed), в Turbo-Pascal упаковка осуществляется автоматически и поэтому явно упаковка массивов не используется.

11.1. Тип - массив

Составной тип данных массив представляет собой способ композиции однотипных данных. При описании массива указывается число его компонент, которое остается постоянным во время всего выполнения программы. Все компоненты массива имеют общее имя, доступ к любой отдельной компоненте осуществляется с помощью индексов. Объявления массива в программе имеют вид:

type <имя массива>=array[<тип индекса>] of [тип компонент>];

Например,

type vector=array[1..50] of integer;

{одномерный массив}

type matr=array[1..10,1..20] of real;

{двумерный массив}

Обьявление переменных в программе имеет вид:

var x: vector;

y: matr;

Размерность массива может быть любой, компоненты массива могут быть любого (в том числе и структурированного типа), индексы могут быть любого порядкового типа, кроме типа LongInt. Доступ к компонентам массива осуществляется указанием имени массива, за которым в квадратных скобках помещается значения индексов компонента. Например,

M1[2]

Matr[x,y]

M2[Succ(i)]

Одному массиву можно присвоить значения другого массива, но только идентичного типа. Например, если заданы массивы

var A,B : array[1..5] of integer;

C : array[1..5] of integer;

то допустим оператор:

A := B;

но не допустим оператор

С := A;

так как массивы А и С - не идентичных типов.

11.2. Тип - строка

В языке Turbo-Pascal тип - строка (стандартный тип string) есть последовательность символов произвольной длины ( до 255 символов). У типа - строки в квадратных скобках может быть указан его размер от 1 до 225. Если размер строки не указан, то он считается равным 255, например

Str: string[80];

MaxStr: string;

Const January: string[10]='Январь;

Для строк имеют место операции конкатенации (+) и сравнения. Например,

Str1:='Turbo-';

Str2:='Pascal';

Str :=Str1 + Str2;

или

if str := 'Turbo-Pascal' then writeln ('OK!');

Сравнивать строки можно разной длины, сравнение происходит слева направо в соответствии с кодами символов.

11.3. Тип - запись

В отличие от типа - массива составной тип данных запись определяет способ композиции разнотипных данных . Тип-запись включает ряд компонент, называемых полями, которые могут быть разных типов.

Общая структура этого типа имеет вид:

type <имя записи> = record

s1 : t1;

s2 : t2;

........

sN : tN

end;

Здесь si - имя i-го поля записи, ti - тип поля записи. Например,

type time = record hour : 1..24;

min : 1..60;

sec : 1..60

end;

var x : time;

Обращение к записи осущствляется указанием переменной и соответствующего поля, например,

x.hour:=12;

x.min:=45;

x.sec:=35

Для того чтобы не выписывать каждый раз имя записи при обращении к ее полям, можно использовать оператор над записями With. Его структура имеет вид

With <имя записи> Do <оператор>;

В этом случае внутри оператора можно указывать только поле записи, например фрагмент

With x do

begin

hour:=12;

min:=45;

sec:=35

end:

эквивалентен предыдущему.

11.4. Тип - множество

Составной тип - множество это тип данных образуемый над некоторым базовым типом так, что в переменная множественного типа имеет в качестве значения множество всевозможных сочетаний объектов исходного множества. Число элементов исходного множества в Turbo-Pascal не может быть больше 256, а порядковые номера элементов (значения функции Ord) должны находится в пределах от 0 до 255.

В общем случае задание множественного типа имеет вид:

type <имя типа> = set of <имя базового типа>;

Например,

type a = set of (0..2);

Множеству в программе можно присвоить то или иное значение. Это выполняется с помощью конструктора множеств. Конструктор множеств задает множество элементов с помощью перечисления в квадратных скобках выражений, значения которых дают элементы этого множества. Например

[Plus, Minus]

[1..K mod 12, 15]

Chr(0) .. Chr(31),'A','B']

В каждое множество включено и пустое множество [ ]. Над переменными множественного типа могут выполняться операции:

+

обьединение множеств,

*

пересечение множеств,

разность множеств,

=

проверка эквивалентности двух множеств,

<>

проверка неэквивалентности двух множеств,

<=

проверка включения левого множества в правое,

>=

проверка включения право-го множества в левое,

in

проверка принадлежности элемента слева в множество справа.

Результатом операций обьединения, пересечения , разности является соответствующее множество, остальные результаты дают результат логического типа.

11.5. Тип - файл

Тип - файл представляет собой одну из разновидностей типов данных, которая отражает структуру исходных и входных данных, расположенных на внешних носителях (магнитных дисках). Файл представляет собой структурно организованный последовательный упорядоченный набор компонентов данных, при этом число компонентов файла не объявляется. Описание этого типа данных в программе имеет вид:

type <имя файла> = file of <имя базового типа>;

Например,

type f = file of real;

type g = file of char;

var x: f;

y: g;

Для ввода, вывода и обработки текстовой информации в Turbo-Pascal используется стандартный файловый тип Text, например

type letter : text;

С переменными файлового типа можно выполнять стандартные процедуры:

начальной установки

reset(f),

чтение файла по компонентам

get(f),

стирание

rewrite(f),

запись в файл

put(f).

Для ввода и вывода информации на экран монитора в языке Turbo-Pascal существует два стандартных файла input, output.

Файл input можно только читать, запись в этот файл запрещена, запрещен также возврат к прочитанной позиции (просмотр файла input возможен только один раз).

В файл output возможна только запись, его чтение запрещено (запись в файл output возможна только один раз).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]