34656

Операторы организации циклов

Реферат

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

Операторы ограничения и прерывания цикла Цикл с параметром Оператор цикла применяется при выполнении расчетов или других действий повторяющихся определенное количество раз. Оператор имеет вид: For i:= N1 To N2 Do оператор ; либо For i:= N1 DownTo N2 Do оператор ; Здесь i параметр цикла переменная порядкового типа N1 N2 начальное и конечное значения параметра цикла i. Напомним что оператор может иметь вид: Begin операторы end; Схема выполнения оператора цикла с параметром имеет вид: В случае связки To цикл...

Русский

2013-09-08

57 KB

10 чел.

исциплина «Основы алгоритмизации и программирование»  Операторы организации циклов

Операторы организации циклов

1. Цикл с параметром

2. Цикл с условием

3. Операторы ограничения и прерывания цикла

Цикл с параметром

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

For  i:= N1    To    N2  Do  "оператор";

либо 

For  i:= N1  DownTo  N2  Do "оператор";

Здесь i - параметр цикла (переменная порядкового типа),

N1, N2 - начальное и конечное значения параметра цикла i.

N1, N2 могут быть константами, переменными или выражениями порядкового типа.

Напомним, что "оператор" может иметь вид: Begin "операторы" end;

Схема выполнения оператора цикла с параметром имеет вид:

В случае связки "To" цикл выполняется при условии N1 <= N2 и происходит с единичным возрастанием параметра цикла i от N1 до N2. В случае связки DownTo цикл выполняется при условии N1 >= N2 и происходит с единичным уменьшением параметра цикла i от N1 до N2.

В операторе цикла не разрешается присваивать параметру цикла какое-либо значение.

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

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

Сумма членов последовательности величин

a1, a2, a3, . . . , an

называется конечной суммой

Sn = a1 + a2 + a3+ . . . + an

Для некоторых последовательностей известны формулы расчета конечных сумм, например:

при an = an-1 + d; Sn = (a1 + an)*n/2; - арифметическая прогрессия,

при an = an-1 * q; Sn= (a1 - an*q)/(1-q); - геометрическая прогрессия,

где d и q - постоянные числа.

Здесь N-ый член последовательности выражается через (N-1)-ый член. Такие зависимости называются реккурентными.

Конечная сумма последовательности может быть неизвестна, тогда для ее расчета применяется алгоритм суммирования членов последовательности в цикле от 1 до N. Приведем пример расчета конечной суммы последовательности: 12 + 32 + 52 +. . . + (2*N-1)2; Sn = N*(4*N2-1)/3;

PROGRAM SUM_K;                     { расчет конечной суммы }

var

 a, S, Sn, i, N : word;

Begin   

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

 readln(N);

 S:= 0;

 For i:= 1 to N do

   begin                          {  цикл суммирования }

     a := Sqr(2*i-1);

     S:= S+a

   end;

 Sn := N*(4*N*N-1) div 3;

 Writeln('Конечная сумма S=',  S:10:2);        

 Writeln('Расчет конечной суммы по формуле Sn=',  Sn:10:2);

 Writeln('Нажми Enter');

 ReadLn   

End.

В некоторых случаях "N"-ый член последовательности определяется через сумму предыдущих членов, например,

an= p*Sn-1,

тогда 

Sn= Sn-1 + an = Sn-1*(1+р),

и конечную сумму можно рассчитать по формуле:

Sn = S0*(1+p)N,

где "S0" - начальная сумма.

Рассмотрим программу вычисления конечной суммы денежного вклада в банк через N месяцев при ежемесячной процентной ставке "pr" (5% cоответствует pr=5).

PROGRAM VKLAD;        { расчет конечной суммы вклада в банк }

var

 S, Sn, pr : Real;

 i, N      : Integer;

Begin

 Write('Введите начальную сумму вклада S=');

 readln(S);

 Write('Введите процент по вкладу pr=');

 readln(pr);

 Write('Введите количество месяцев вклада N=');

 readln(N);

 For i:= 1 to N do S:= S*(1+pr/100);     { цикл произведений }

 Writeln('Конечная сумма вклада S=',  S:10:2);

 { Оператор для расчета "Sn" напишите самостоятельно }

 Writeln('Расчет конечной суммы вклада по формуле Sn=', Sn:10:2);

 Writeln('Нажмите Enter');         

 readln  

End.

Часто применяются вложенные операторы цикла. Например, если необходимо провести все варианты расчета при изменении нескольких параметров в заданных диапазонах.

Составим программу расчета функции y = A*sin(x) - cos(x)/A; при изменении аргумента "x" в диапазоне от 0 до Pi с шагом Pi/100 и при изменении параметра "A" в диапазоне от 1 до 3 с шагом 0.5.

Program tabl;

var

 y, x, a, dx : real;

 i, j: integer;

Begin

 Writeln(' Расчет по формуле:  y=A*sin(x)-cos(x)/A; ');

 Writeln('--------------------------------------------------');

 Writeln('|   X   |  A=1.0 | A=1.5 | A=2.0 | A=2.5 | A=3.0 |');

 Writeln('--------------------------------------------------');

 dx := pi/100;

 for i:= 0 to 100 do

    begin    { внешний цикл изменения аргумента "X" }

      x:= dx*i;

      Write( x:8:4 );

      for j := 1 to 5 do

        begin{ вложеннный цикл изменения параметра "A" }  

          A := 0.5*(j+1);

          y := A*sin(x)-cos(x)/A;    Write(y:8:4)  

        end;

      Writeln;                                   {перевод курсора на новую строчку}

      if ((i+1) mod 20) = 0 then readln{задержка прокрутки экрана до нажатия Enter}

    end;

 readln;

End.

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

В Турбо-Паскале применяются два оператора цикла с условием:

While  "условие"  DO  "оператор";   

- цикл с предусловием: проверка условия перед каждым выполнением "оператора",

Repeat  "операторы"  Until  "условие";  

- цикл с постусловием: проверка условия после каждого выполнения "операторов".

Здесь "условие" - выражение логического типа (Boolean).

Схема выполнения операторов имеет вид:

Цикл WHILE

Цикл REPEAT

В цикле While "оператор" выполняется если условие верно (True), если условие ложно (False), то цикл заканчивается, т. е. цикл While повторяется пока выполняется условие. Цикл While начинается проверкой условия, поэтому, если начальное условие ложно, то "оператор" не выполняется ни разу. Для включения в тело цикла нескольких операторов применяется составной оператор: Begin "операторы" end.

Цикл Repeat повторяется, если условие ложно (False), и заканчивается, если условие верно (True), т. е. цикл Repeat повторяется до выполнения условия.

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

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

Сумма членов бесконечной последовательности

a1, a2, a3, ... , an, ...

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

a1 + a2 + a3 +... + an+...

Здесь an - общий член ряда.

Сумма конечного числа членов ряда называется частичной суммой и обозначается "Sn".

Если сумма членов бесконечного ряда имеет конечный предел "S", то ряд называется сходящимся. Для некоторых рядов получены формулы расчета суммы членов ряда. Например, сумма членов числового ряда:

1 + 1/32 + 1/52 + . . . + 1/(2*N-1)<SUP2< sup> + ...

имеет предел S = Pi2/8 и общий член an = 1/(2*N-1)2, где N = 1, 2, 3, ...

Для сходящегося ряда вычисляется последовательность частичных сумм с заданной погрешностью. Абсолютная погрешность расчетов определяется по формуле Eps=abs(S-Sn), либо Eps=abs(an), если значение S неизвестно. Относительная погрешность расчетов определяется по формуле Eps_o=abs((S-Sn)/S), либо Eps_o=abs(an/Sn).

Частичные суммы вычисляются по формуле: Sn = Sn-1 + an 

Для знакопеременного ряда следует добавить k1=-1, а в цикле: k1:=-k1, an=k1*an. В некоторых случаях "N"-ый член ряда выражается через "N-1"-ый, например, для ряда:

1 + 1/2! + 1/4! + 1/6! + ... + 1/(2*N)! + ... ; N = 0, 1, 2, ...

общий член ряда вычисляется по формуле: an = an-1*k;

Параметр k = an/an-1 - коэффициент роста вычисляется предварительно (до написания программы).

Для данного ряда

an = 1/(2*N)! = 1/( 1*2*...*(2*N-2)*(2*N-1)*2*N)
a
n-1 = 1/(2*(N-1))! = 1/((2*N-2))! = 1/(1*2*...*(2*N-2))
k = a
n/an-1 = 1/((2*N-1)*2*N)

Здесь N! = 1*2*3*...*N; - вычисление факториала числа "N", причем 0! = 1.

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

 N  := 0;

 a  := 1;

 SN := 1;

 S  := (e+1)/e;

 e := 2.7182828;

 Repeat

   N := N+1;

   k := 1/((2*N-1)*2*N);

   a := a*k;    

   SN := SN+a;

   Writeln('Частичная сумма Sn= ',  Sn:11:6);

 Until abs(S-Sn) < eps;              { eps - допустимая погрешность расчетов}

 Writeln('Сумма ряда S = ', SN:11:6);

Операторы ограничения и прерывания цикла

Данные операторы применяются внутри операторов цикла с параметром или условием. Операторы имеют вид:

    Continue;   -  ограничение цикла,

    Break;      -  прерывание цикла.    

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

For i := 1 to 3 do

 begin       

   Write( 'Введите ПАРОЛЬ:' );    Readln(S); {S и Parol - переменные одного типа}

   If S = Parol  Then  Break                                 { прерывание цикла }

   else  If   i <> 3  Then Continue;                        { ограничение цикла }

   Writeln( 'Доступ к программе ЗАПРЕЩЕН' );

   Writeln( 'Нажмите Enter' );

   Readln;

   Halt                                                  { прерывание программы }

 end;                                                   { продолжение программы }


 

А также другие работы, которые могут Вас заинтересовать

79014. Проблема классификации наук 54.5 KB
  Проблема классификации наук. Науки: гуманитарные естественные точные математические экономические макроэкономика логика психология. В конечном счете все проблемы по классификации наук проявляются как невозможность совершить упомянутую классификацию без нарушения логических правил: требования одного основания и правило запрещающее членам деления иметь общий элемент. проблемы в качестве своего источника имеют трудность отыскания такого единого основания деления которое было бы существенным признаком для любой науки Наука как целостное...
79015. Основные закономерности развития науки 37.5 KB
  Основные закономерности развития науки. Необходимо выделять внешнее и внутреннее развитие любой системы и рассматривать специфику того и другого видов развития в том числе и науки. Сам процесс развития науки также понимается далеко неоднозначно. cumultio увеличение накопление по сути дела сводит на нет и даже игнорирует качественные изменения которые происходят в структуре научного знания и вызываются изменением основных понятий и принципов науки особенно в ходе научных революций.
79016. Исторические типы рациональности: классическая, неклассическая, постклассическая науки 31.5 KB
  Исторические типы рациональности: классическая неклассическая постклассическая науки. Исторические типы научной рациональности. Три крупных стадии исторического развития науки каждую из которых открывает глобальная научная революция можно охарактеризовать как три исторических типа научной рациональности сменявшие друг друга в истории техногенной цивилизации. Причем появление каждого нового типа рациональности не отбрасывало предшествующего а только ограничивало сферу его действия определяя его применимость только к определенным типам...
79017. Саморазвивающиеся синергетические системы и стратегия научного поиска 57 KB
  Саморазвивающиеся синергетические системы и стратегия научного поиска. Между тем подлинная самоорганизация по самому смыслу этого термина означает именно изменение прежней организации порядка или структуры и появление нового порядка и структуры в результате изменения взаимодействия между элементами системы. Точнее говоря причины такого изменения поведения элементов системы их самоорганизации следует искать в процессе взаимодействия элементов системы с внешней средой. Как признается он сам в то время он решал частную проблему и не...
79018. Глобальный эволюционизм и современная научная картина мира 36 KB
  Глобальный эволюционизм и современная научная картина мира. Научная картина мира основа рационалистического мировоззрения опирающаяся на совокупный потенциал науки той или иной эпохи. В научной картине мира систематизируются научные знания полученные в различных дисциплинарных областях. Есть частная картина мира и общая картина мира.
79020. Проблема смысла и сущности техники 43 KB
  Проблема смысла и сущности техники. Сущность техники техника призвана усиливать органы и потенции человека в том числе и интеллектуальные. Узкий смысл понятия техники: под техникой понимается техническое устройство артефакт созданное человеком из элементов природы для решения конкретных культурных задач. Широкий смысл понятия техники: искусственный или организованный прием усиливающий улучшающий или облегчающий действие техника письма техника плавания техника вопросов и т.
79021. Роль техники в становлении классического математизированного и экспериментального естествознания 33.5 KB
  Роль техники в становлении классического математизированного и экспериментального естествознания. Дальнейшее усовершенствование техники упиралось в главное противоречие эпохи противоречие между сравнительно высоким уровнем достигнутых к этому времени технологических знаний и резким отставанием теоретического естествознания. Развитие философии и естествознания в эпоху Возрождения привело к глубокому кризису аристотелевской картины мира и поставило задачу выработки отражающей реальные свойства действительности физической концепции а...