42758

Построение циклов с инструкциями „while” и „repeat”

Лабораторная работа

Информатика, кибернетика и программирование

Инструкция whiledo Особенность этой инструкции состоит в том что условие проверяется перед входом в тело цикла поэтому цикл while называют еще циклом с предусловием.1 Синтаксис инструкции whiledo В этом описании условие продолжения это выражение логического типа определяющее условие при котором выполняются инструкции тела цикла . В целом инструкция while выполняется следующим образом: Вычисляется значение выражения условие продолжения . Если значение выражения условие равно flse то есть условие не выполняется выполнение...

Русский

2013-10-31

162.5 KB

4 чел.

Лабораторная работа № 5.
Построение циклов с инструкциями „while” и „repeat”

Цели работы:

  •  Ознакомиться с принципами использования циклов While и Repeat.
  •  Разработать проект, обеспечивающий решение математических задач численными методами.

5.1 Краткое описание инструкций whiledo и repeatuntil.

 Инструкция whiledo

Особенность этой инструкции состоит в том, что условие проверяется перед входом в тело цикла, поэтому цикл while называют еще циклом с предусловием.

В общем виде инструкция while записывается следующим образом.

Рисунок 5.1 – Синтаксис инструкции whiledo

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

В целом, инструкция while выполняется следующим образом:

  •  Вычисляется значение выражения <условие продолжения>.
  •  Если значение выражения условие равно false, то есть условие не выполняется, выполнение <инструкций тела цикла>прекращается.
  •  Если значение выражения <условие продолжения> равно true (условие выполняется), то выполняются <инструкции тела цикла>, расположенные между словами begin и end.
  •  После этого снова все повторяется.

Следует заметить, что для того чтобы цикл завершился, нужно чтобы последовательность инструкций, расположенных между begin и end, влияла на значение <условия продолжения >.

 Инструкция repeatuntil

Особенность этой инструкции состоит в том, что условие проверяется после выполнения операторов тела цикла, поэтому <инструкции тела цикла> выполняются, как минимум, один раз. Цикл Repeat называют еще циклом с постусловием.

На языке Delphi в общем виде инструкция Repeat записывается следующим образом.

Рисунок 5.2 – Синтаксис инструкции Repeat

Здесь <условие выхода из цикла> это выражение логического типа, определяющее условие завершения цикла.

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

  •  Сначала выполняются <инструкции тела цикла> находящиеся между словами repeat и until.
  •  Затем вычисляется значение выражения <условие выхода из цикла>. Если оно не выполняется (значение выражения равно false), то инструкции тела цикла выполняются еще раз.
  •  Если условие выполняется (значение выражения равно true), то выполнение цикла прекращается.

Таким образом, инструкции цикла, находящиеся между repeat и until, выполняются до тех пор, пока не выполнится условие выхода из цикла.

5.2 Описание новых компонентов, используемых в создаваемом проекте.

 Таблица 5.1 Новые компоненты

Компонент

Описание

PageControl

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

CheckBox

Основное свойство этого компонента Checked может принимать значения true или false (включено или выключено).

5.3 Условия индивидуальных заданий и схемы алгоритмов их решения.

 Таблица 5.2 Итерационный  алгоритм

1

a>0,b>0

a/b>6, x0< π/2

Таюлица 5.3 Бесконечный ряд

1

, для х<1

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

procedure TfrmWhileRepeat.Button1Click(Sender: TObject); //процедура для вычисления итерационной формулы

var a,b,xnew,xold,eps:real;

begin

 memo1.Clear;

 a:=strtofloat(edta.Text); //ввод исходных данных

 b:=strtofloat(edtb.Text);

 eps:=strtofloat(edtEps1.Text);

 xnew:=a; //установка начального значения

 repeat

   xold:=xnew;

    if (a=0) then break;

   xnew:=sqrt(b*sin(Xold)/a);

    if checksteps.Checked then

   memo1.Lines.Append(floattostr(xnew));

 until abs(xold-xnew)<eps;

 edtResult1.Text:=floattostr(xnew); // вывод результатов

 edtControl1.Text:=floattostr(sqrt(b*sin(Xnew)/a));

end;

procedure TfrmWhileRepeat.Button2Click(Sender: TObject); //процедура для вычисления экспоненты

 var x,eps,u,s:real; i:integer; s1:string;

begin

 memo1.Clear;

 x:=strtofloat(edtx.Text); //исходные данные

 eps:=strtofloat(edteps2.Text);

 i:=1; u:=x; s:=u;

  if abs(x)>1 then showmessage('Неверные данные') else  //проверка значения Х

    while abs(u)>eps do

       begin

        i:=i+1;

        u:=-u*x/i;

        s:=s+u;

          if checksteps.Checked then

            begin

            s1:=format('%10.7f %10.7f',[u,s]);

            memo1.Lines.Append(s1);

            end;

       end;

edtresult2.Text:=floattostr(s); //вывод результатов

edtControl2.Text:=floattostr(exp(x));

end;

5.5 Результаты тестирования проекта.

 Рисунок 5.3 Результаты тестирования 1

Рисунок 5.4 Результаты тестирования 2

Выводы: ознакомился с принципами использования циклов whiledo и repeatuntil, создал проект по своему варианту для вычисления значений по формуле, ознакомился с новими компонентами.


Начало

Xnew:=a

old:=Xnew

A=0

    Xnew-Xold    <=eps

Конец

Начало

   X   >1

ShowMessage

(‘Неверные данные’)

i:=1;  u:=x;  s:=u;

i:=i+1

S:=S+U

Конец

      U  >eps