Схема алгоритма и текст программы




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

Тема: Вычисление сумм (произведений) конечного числа элементов ряда. Оператор FOR …DO (FOR... DOWNTO)

Цель работы: научиться разрабатывать блок-схему алгоритма и программу с использованием операторов цикла FOR …DO на примере вычисления сумм (произведений) элементов конечного ряда

Теоретическая часть

Оператор FOR …DO

Циклические вычисления в Паскале реализуются с помощью операторов FOR...TO(DOWNTO)...DO, WHILE...DO или REPEAT...UNTIL.

Особенностью операторов FOR...TO (DOWNTO)...DO является встроенный внутренний счетчик цикла, фиксирующий количество повторений.

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

 

FOR переменная цикла:= выражение 1 TO выражение 2 DO

{операторы тела цикла};

или

FOR переменная цикла:= выражение 1DOWNTO выражение 2 DO

{операторы тела цикла};

В формате: переменная цикла (управляющая переменная, счетчик цикла) – имя переменной целочисленного типа; выражения 1 и 2 — выражения, тип результата которых совпадает с типом переменной цикла; операторы тела цикла любой исполнимый оператор или блок операторов, заключенных в операторные скобки; FOR, TO, DOWNTO и DO – ключевые слова.

!!! Использование оператора FOR регламентируется следующими правилами.

· Переменная цикла, её начальное и конечное значения должны быть одного типа.

· При выполнении оператора очередное значение параметра цикла вычисляется автоматически. В частности, для целого типа шаг изменения значения переменной цикла равен 1 при конструкции с TO и -1 при конструкции с DOWNTO.

· После служебного слова DO может стоять только один оператор. Если в цикле необходимо выполнить группу операторов, то их заключают в операторные скобки BEGIN... END, образуя составной оператор.

· Цикл не выполняется вообще, если начальное значение переменной цикла больше (при DOWNTO меньше), чем конечное. В этом случае управление передается оператору, следующему непосредственно за конструкцией FOR.. TO (DOWNTO)... DO.

· В конструкции FOR.. TO (DOWNTO)... DO используется только одна переменная цикла. При наличии вложенных циклов у каждой конструкции FOR.. TO (DOWNTO)... DO должна быть своя, отличающаяся от других переменная.

· При организации вложенных циклов внутренний и внешний циклы не должны пересекаться. Цикл, который начинается последним, должен завершаться первым:

FOR N:= 1 TO 5 DO

BEGIN WRITELN (N:2,'.');

FOR J:= 1 TO 5 DO WRITELN (N:2,'.', J:2,'.') END;

 

Пример работы циклов

Пример 3.1. Найти сумму конечного ряда. Значение x вводится с клавиатуры.

 

program Project1;

var x,s:real; i:integer;

begin

Write('x='); Readln(x);

s:=0;

for i:=1 to 10 do //начало цикла For

s:=s+x*i; //конец цикла For

Writeln('s=',s:5:3); //вывод результата

Readln;

end.

 


Пример 3.2. Дано действительное число х. Вычислить сумму элементов ряда. Число суммируемых элементов ряда (N) задается во время работы программы с клавиатуры.

 

.

Program Project2; //вычисление суммы заданного числа элементов ряда

var

x,s,a:real;

f:longint;

i,n,k:integer;

begin //начало раздела операторов

write('введите значение x=');

readln(x);

write('введите значение n=');

readln(n);

//значение первого слагаемого ряда вычисляется до цикла

a:=x; //значение x в степени (2*1-1)

f:=1; //значение f=(2*1-1)!=1

s:=a; //а - значение 1-го слагаемого, s=a

//к - переменная для изменения знака очередного слагаемого с + на -

k:=1;

for i:=2 to n do //начало цикла

begin

k:=- k; //значение (-1) для i-го слагаемого

a:=a * sqr(x); //вычисление х в степени (2i+1) i-го слагаемого

f:=f * (2*i-2)*(2*i-1); //вычисление факториала i-го слагаемого

s:=s+k*a/f; //добавление i-го слагаемого к общей сумме

end; //конец цикла

//вывод результата на экран

writeln('при x=',x:4:2,' сумма', n,' элементов =',s:7:5);

readln;

end.

 

 

Пример 3.3. Задано число х и натуральное число N. Вычислить произведение N элементов ряда

.

 

Для вычисления произведения целесообразно использовать рекуррентные соотношения, т.е. каждую дробь в скобках, начиная со второй, выражать через предыдущую. Это позволит существенно сократить объем вычислений. Расчет N! в числителе дроби каждого множителя выполняется в программе в теле цикла по формуле f:=f*n. p:=p*(2+f/a) - формула умножения элементов ряда Р=P1*P2*…*Pi-1 на очередной Pi элемент ряда.

 

Схема алгоритма и текст программы

 

Program Project3;

//вычисление произведения заданного числа элементов ряда

 

var

x,p,a: real; f: longint; i,n: integer;

begin

write('введите x=');

readln(x);

write('введите n=');

readln(n);

p:=1; //начальное значение произведения

a:=1; f:=1; //начальные значение числителя и знаменателя дроби

for i:=1 to n do //начало цикла

begin

a:= a*x;

f:=f*i

p:=p*(2+f/a);

end; //конец цикла

//вывод результата на экран

writeln('при x=',x:4:2,' произведение', n:2,' элементов=',p:7:5);

readln;

end.

 

 

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: