Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная работа №3. Программирование циклических алгоритмов




Цель работы

Закрепить практические навыки работы с системой PascalABC.net, научиться правильно использовать различные операторы циклов; научиться составлять программы решения задач с использованием циклических структур.

Общие сведения

Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же операторов при различных значениях промежуточных данных. Число повторений этих операторов может быть задано в явной (цикл с известным заранее числом повторений) или неявной (цикл с неизвестным заранее числом повторений) форме.

Примеры решения задач по теме «Программирование циклических алгоритмов»

Задание 1

Вычислить значение:

Для организации вычислений суммы и произведения использовать оператор цикла с параметром For....

Этапы решения задачи

1. Для упрощения расчетов разобьем выражение на две составляющие:

Окончательное значение y вычислим по формуле

2. Составляем блок-схему алгоритма и программу расчета, используя оператор цикла for...

 
 

Program zadanie1; Var k, f, y: real; i, j:integer; Begin k:=0; f:=1; {задаём начальные значения } for i:=1 to 10 do begin k:=k+sin(i*i); {расчет суммы} end; for i:=1 to 7 do begin f:=f*exp(0.7*j); {расчет произведения} end; y:=5*k+2.4*f; {расчет параметра у} writeln (‘y=’, y); {вывод параметра у } End.

 

4. Выполним программу в среде Pascal ABC.NET (см. п.3.1.4).

Задание 2

Написать программу для вычисления приведенной ниже функции

с использованием операторов:

a) FOR…;

b) While…do;

c) Repeat…until.

Этапы решения задачи

1. Определим переменные, которые будем использовать в программе:

S – сумма ряда, b – степень числителя x, a – степень очередного слагаемого в знаменателе, z –знак слагаемого.

2. Для вычисления N – числа повторений цикла for.. –используем формулу

3. Составляем блок-схему алгоритма и программу расчета, используя оператор цикла for...

    PROGRAM ZADANIE2_a; Var b, S, x, b1, b2, h: real; a, i, z, n: integer; Begin Z: = 1; { знак очередного слагаемого} А: = 2; {Степень очередного слагаемого в знаменателе S:= 0; {Здесь накапливаем сумму слагаемых } x:=0.73; B: = 1.2; {Степень числителя x очередного слагаемого} B1: = B; B2: = 4.2; H:=0.2; N:=trunc((B2 -B1)/h)+1; {количество циклов } For I: = 1 То N do {Цикл по всем слагаемым} Begin S: = S+ z *(sin(exp(b* ln(x))) /exp(a*ln(2))); a: = а + 2; {Очередное значение степени знаменателя} b: = b+H; {Очередное значение степени числителя} z:= – z; {Знак слагаемого меняем} End; Writeln(‘ Сумма =’, S:6:4); End.

4. Составляем блок-схему алгоритма и программу расчета, используя оператор цикла while..do. Этот цикл называется циклом с предусловием, так как проверка проводится до начала очередной итерации. До первого входа в цикл переменной b уже должно быть присвоено начальное значение. Затем сравним его с конечным значением. Цикл будет выполняться, пока условие истинно. Как только условие нарушается, выполнение цикла завершается.

 
 

 

PROGRAM ZADANIE2_B; Var b, S, x, h: real; a, i, z, n: integer; Begin Z: = 1; { знак очередного слагаемого} А: = 2; {Степень очередного слагаемого в знаменателе S:= 0; {Здесь накапливаем сумму слагаемых } x:=0.73; B: = 1.2; {Степень числителя x очередного слагаемого} H:=0.2; while (b< = 4.2) do Begin S: = S+ z *(sin(exp(b* ln(x))) /exp(a*ln(2))); a: = а + 2; {Очередное значение степени знаменателя} b: = b+H; {Очередное значение степени числителя} z:= – z; {Знак слагаемого меняем} End; Writeln(‘ Сумма =’, S:6:4); End.

5. Составляем блок-схему алгоритма и программу расчета, используя оператор цикла Repeat…until.

    PROGRAM ZADANIE2_С; Var b, S, x, h: real; a, i, z, n: integer; Begin Z: = 1; x:=0.73; А: = 2; S:= 0; B: = 1.2; H:=0.2; repeat S: = S+ z *(sin(exp(b* ln(x))) /exp(a*ln(2))); a: = а + 2; b: = b+H; z:= – z; until (b>4.2); Writeln(‘ Сумма =’, S:6:4); End.

3. Выполним программу в среде Pascal ABC.NET (см. п.3.1.4).

Задание 3

Составить программу, которая вычисляет сумму ряда с заданной точностью. Нужная точность считается полученной, если очередное слагаемое оказалось по модулю меньше, чем данное малое положительное число e.

. х =1,7, e=10–3 .

Этапы решения задачи

1. Определим переменные, которые будем использовать в программе: S – сумма ряда, SL – текущее слагаемое, F – знаменатель(факториал), eps – заданная точность, N – номер слагаемого. По условию задачи слагаемое требуется сравнивать с заданной точностью. Наиболее удобным для данного вида вычислений является оператор цикла Repeat…until, так как проверка условия осуществляется после каждого выполнения тела цикла.

2. Составим блок-схему алгоритма и программу расчета.

 
 

 

Program zadanie3; var s, x, eps, SL:real; f, n:integer; Begin x:=1.7; {Значение Х} S:=0; {Значение суммы ряда} n:=0; {номер слагаемого} f:=1; {Значение F – факториал } eps:=1E-3;; {Значение заданной точности} writeln(' | n | SL | s | '); Repeat SL:= exp((2*n+1)*ln(x))/F; {вычисление ТЕКУЩЕГО СЛАГАЕМОГО} s:=s+sl; {вычисление Суммы ряда } n:=n+1; f:=f*(2*n)*(2*n+1); {вычисление факториала } writeln(' ',n:2,' ',sl:5:2,' ',s:5:2,' '); until (sL<eps); end.

4. Выполним программу в среде Pascal ABC.NET (см. п.3.1.4).

Задание 4

Затабулировать функцию двух переменных внутри квадрата и и области существования функции . Шаги табуляции Δ х = Δ у. Результаты вывести в виде таблицы. В точках, где функция не определена, вывести 4 символа «*».

x y Δ х = Δ y
[-1; 2] [0; 1] 0,1

Этапы решения задачи

1. Для вычисления функции определим область допустимых значений функции: , так как «подкоренное» выражение должно быть положительным.

2. Так как функция зависит от двух переменных , будем использовать конструкцию из вложенных циклов while..do. Составим блок-схему алгоритма и программу расчета.

Program zadanie4;

var Z, x, Y:real;

N:integer;

Begin

WRITELN(‘ | N | X | Y | Z |’);

N:=0; {Номер точки}

X:=-1; {начальное значение Х}

WHILE (X<=2) DO {Цикл по Х}

BEGIN

Y:=0; {начальное значение Y}

WHILE (Y<=1) DO {Цикл по Y}

BEGIN

N:=N+1;

d:= 3-SQR(X); {Область существования Z}

IF ((d>0) THEN

BEGIN

Z:=SQRT(d)+2*Y;

WRITELN(‘ ‘,N:2,’ ’,X:5:2,’ ‘,Y:5:2, ‘ ‘, Z:5:2);

writeln(‘__________________________’);

END

ELSE

begin

WRITELN(‘*****’);

writeln(‘__________________________‘);

end;

Y:=Y+0.1;

END;

X:=X+0.1;

END;

end.

Варианты заданий по теме «Циклические алгоритмы»

Задание 1

Вычислить значение функции y. Значение x задать произвольно.

№ варианта Значение y
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Задание 2

Написать программу для вычисления значения функции F (x) с использованием операторов: For…; While…do; Repeat…until. Значение x задать произвольно.

№ варианта Вид выражения F(x)
  .
 
 
 
 
 
 
 
 
 
  N ввести с клавиатуры
 
 
 
 

 

Задание 3

Составить программу, которая вычисляет сумму ряда с заданной точностью. Нужная точность считается полученной, если очередное слагаемое оказалось по модулю меньше, чем e (это и все последующие слагаемые учитывать не надо).

№ вар-та Вид выражения х Точность e
  1,25 10–4
  1,7 10–3
  1,1 0,5×10–4
  0,5×10–4
  0,35 10–3
  0,7 10–4
  0,3 10–4
  0,15 10–4
  0,21 10–3
  0,15 10–4
  0,3 0,5×10–4
  0,15 10–4
  0,7 10–4
  0,1 0,5×10–4
  10–3

Задание 4

Затабулировать функцию двух переменных внутри квадрата и и области существования функции . Шаги табуляции Δ х = Δ у. Результаты вывести в виде таблицы. В точках, где функция не определена вывести 4 символа «*».

№ варианта x y Δ х = Δ y
  [0; 1] [0; 1] 0,1
  [0; 2] [0; 2] 0,2
  [0; 1] [0; 1] 0,1
  [0; 2] [0; 2] 0,2
  [0; 1,5] [0; 1,5] 0,15
  [0; 1] [0; 1] 0,1
  [0; 3] [0; 3] 0,3
  [0; 1,5] [0; 1,5] 0,15
  [0; 2] [0; 2] 0,2
  [0; 1] [0; 1] 0,1
  [0; 4] [0; 4] 0,4
  [0; 1] [0; 1] 0,3
  [-1; 1] [0; 1] 0,1
  [0; 1] [-1,2; 1,2] 0,2
  [0; 1,5] [0; 1,5] 0,15

Лабораторная работа №4.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...