Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты оаип.docx
Скачиваний:
18
Добавлен:
27.09.2019
Размер:
161.68 Кб
Скачать

2. Операторы цикла.

Цикл – это многократно повторяющиеся фрагменты программ. Алгоритм циклической структуры – это алгоритм, содержащий циклы.

В ТР существует три оператора цикла:

  • цикл с предусловием;

  • цикл с постусловием;

  • цикл с параметром.

Для всех циклов характерны следующие особенности:

  • значения переменных используемых в цикле, и не изменяющиеся в нем д.б. определены до входа в цикл;

  • вход в цикл возможен только через его начало;

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

Формат записи:

While L do OP;

где:

While - пока не;

do – выполнить;

L – выражение логического типа;

OP – тело цикла; оператор (простой или составной).

Пример. Составить программу вычисления функции y для заданного значения x.

где: C=2,7; n=2; a=0.5; 0<t<1; Dt=0,1.

Program Ex_2;

Uses

crt;

Var

y, C, a, t :real;

n:integer;

Begin

clrscr;

Writeln('Введите C, a, n'); Read(C, a, n);

Writeln('Результат:');

Writeln('t’:5,’y’:15);

t:=0;

While t<1 do

Begin

y:=C*exp(a*t)*cos(n*t);

Writeln(t:4:1,’ ‘:5, y:10);

t:=t+0.1;

End;

End.

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

Формат записи:

Repeat

OP

Until L;

где:

Repeat - повторять;

Until – пока не;

L – выражение логического типа;

OP – тело цикла; оператор (простой или составной)

Работа оператора: Выполняется оператор OP после чего вычисляется значение логического выражения L, если вычисленное значение False, то снова выполняется оператор OP в противном случае осуществляется выход из цикла.

Вычисление значения логического выражения следует после выполнения операторов тела цикла, поэтому этот оператор цикла называется циклом с постусловием.

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

Билет № 27

1.Стеки и операции над ними.

Стеком называется динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу LIFO (Last-In, First-Out) - поступивший последним, обслуживается первым.

Обычно над стеками выполняется три операции:

-начальное формирование стека (запись первой компоненты);

-добавление компоненты в стек;

-выборка компоненты (удаление).

Для формирования стека и работы с ним необходимо иметь две переменные типа указатель, первая из которых определяет вершину стека, а вторая - вспомогательная. Пусть описание этих переменных имеет вид:

var

pTop, pAux: Pointer;

где pTop - указатель вершины стека;

pAux - вспомогательный указатель.

Начальное формирование стека выполняется следующими операторами:

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

  • Добавление компоненты в стек производится с использованием вспомогательного указателя:

  • Добавление последующих компонент производится аналогично.

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

Первый оператор или группа операторов осуществляет чтение данных из компоненты - вершины стека. Второй оператор изменяет значение указателя вершины стека:

При чтении компонента удаляется из стека.

Пример. Составить программу, которая формирует стек, добавляет в него произвольное количество компонент, а затем читает все компоненты и выводит их на экран дисплея, В качестве данных взять строку символов. Ввод данных - с клавиатуры дисплея, признак конца ввода - строка символов END.

Program STACK;

uses

Crt;

type

Alfa= String[10];

PComp= ^Comp;

Comp= Record

sD: Alfa;

pNext: PComp

end;

var

pTop: PComp;

sC: Alfa;

Procedure CreateStack(var pTop: PComp; var sC: Alfa);

begin

New(pTop);

pTop^.pNext:=NIL;

pTop^.sD:=sC;

end;

Procedure AddComp(var pTop: PComp; var sC: Alfa);

Var

pAux: PComp;

begin

NEW(pAux);

pAux^.pNext:=pTop;

pTop:=pAux;

pTop^.sD:=sC

end;

Procedure DelComp(var pTop: PComp; var sC:ALFA);

begin

sC:=pTop^.sD;

pTop:=pTop^.pNext

end;

begin

Clrscr;

writeln(' ВВЕДИ СТРОКУ ');

readln(sC);

CreateStack(pTop,sC);

repeat

writeln(' ВВЕДИ СТРОКУ ');

readln(sC);

AddComp(pTop,sC)

until sC='END';

writeln('****** ВЫВОД РЕЗУЛЬТАТОВ ******');

repeat

DelComp(pTop,sC);

writeln(sC);

until pTop = NIL

end.

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