Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
ОРФОГРАФІЧНІ ВПРАВИДата добавления: 2015-10-19; просмотров: 1685
Вычислить при заданном значении аргумента Х значение функции Y= 11Х10 +10Х9 +9Х8 + 8Х7 + 7Х6 + 6Х5+ 5Х4 + 4Х3 + 3Х2 + 2Х + 1. Применяя схему Горнера, получим: Y=((((((((((11X+10)X+9)X+8)X+7)X+6X)+5)X+4)X+3)X+2)X+1). Program gorner; Var i:integer; X,Y:real; Begin write(‘Задайте значение Х:’); readln(X); {Вычисление по схеме Горнера:} Y:=11; For i:=10 downto 1 do Y:=Y*X+i; Writeln(‘При Х=’,Х:6:2,’ Y=’,Y:8:4); Writeln(‘Для выхода из программы нажать Enter’);readln; End. ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ
ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ имеет структуру: WHILE условие DO оп-р; где условие – это выражение, принимающее значение false или true. оп-р – простой или составной оператор, выполняющийся в цикле до тех пор, пока условие = true, иначе программа переходит к выполнению оператора, следующего за оператором цикла.
Пример 3. Вычислить сумму ряда элементов убывающей последовательности S=1+1/22+1/32 +1/42+…+1/k2+… . Вычисление производить до тех пор, пока очередной элемент ряда не станет меньше некоторой заданной величины Е. Program sum_r; Label 1;{метка} Var k:integer; Sum,a,E:real;{a – очередной элемент ряда} Begin 1: write(‘Задайте значение Е>0: ’);readln(E); {Очевидно, что при Е>=1 задача теряет смысл, поэтому проверяется условие корректности задания значения Е:} if E>=1 then begin writeln(‘Значение Е задано не корректно. Надо Е<1’); goto 1 end; a:=1;{первый элемент ряда равен 1} Sum:=0;k;=0; While a > E do Begin k:=k+1;a:=1/sqr(k);sum:=sum+a; writeln(‘На шаге’, k:3, ‘ сумма ряда S=’,sum); End; Writeln(‘Решение закончено. Нажмите Enter’);readln End. Особенность оператора while состоит в том, что если условие первоначально равно false, то никакие действия внутри оператора цикла ни разу не выполняются и программа сразу переходит к выполнению оператора, следующего за оператором цикла. ОПЕРАТОР ЦИКЛА С ПОСТУСЛОВИЕМ
ОПЕРАТОР ЦИКЛА С ПОСТУСЛОВИЕМ имеет структуру: REPEAT оп-р1; Оп-р2; … Оп-рk UNTIL условие; В отличие от оператора While оператор цикла REPEAT во-первых, выполняется по крайней мере один раз, то есть сначала выполняются все операторы оп-р1, оп-р2,…, оп-рk, а затем проверяетсяусловие, во-вторых, повторное выполнение операторов оп-р1, оп-р2,…, оп-рk, происходит до тех пор, пока условие = false. Поэтому можно сказать, что оператор While выполнается пока условие истинно, а оператор Repeat выполнается до тех пор, пока условие не станет истинно. Замечание. Для корректной работы операторов цикла проверяемые условия должны зависеть от действий внутри цикла. В противном случае возможно неограниченное повторение цикла («зацикливание» программы) в операторе While при условие=True и в операторе Repeat при условие =False. Рекомендации по применению. В отличие от оператора For операторы While и Repeat следует применять в тех случаях, когда количество выполнений цикла неизвестно и не может быть вычислено до начала выполнения оператора цикла. В частности, оператор цикла Repeat удобно применять для организации повторного выполнения программы при изменяемых значениях исходных данных, задаваемых пользователем. В этом случае в программе следует предусмотреть формирование запроса на повторное выполнение программы, например, следующим образом: Repeat ………. Операторы программы ………. Write(‘Повторить работу программы? – Y/N’);read(povtor); Until povtor = (’N’ or ‘n’); Рассмотрим пример применения оператора Repeat для второго варианта организации работы предыдущей программы (пример 3), в котором повторное решение задачи при другом значении Е происходит без выхода из программы. Пример 3.1. Program sum_r2;{Вариант 2: Repeat – для повторного ввода данных} Label 1;{метка} Var k:integer; Sum,a,E:real;{a – очередной элемент ряда} Povtor:char; Begin REPEAT 1: write(‘Задайте значение Е>0: ’);readln(E); {Очевидно, что при Е>=1 задача теряет смысл, поэтому проверяется условие корректности задания значения Е:} if E>=1 then begin writeln(‘Значение Е задано не корректно. Надо Е<1’); goto 1 end; a:=1;{первый элемент ряда равен 1} Sum:=0;k;=0; While a > E do Begin k:=k+1;a:=1/sqr(k);sum:=sum+a; writeln(‘На шаге’, k:3, ‘ сумма ряда S=’,sum); End; Write(‘Повторить работу программы? – Y/N’);
|