Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 105

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
404.07 Кб
Скачать

x

i

 

x

2

 

x

3

 

x

n

 

 

s =

 

= x +

 

+

 

+... +

 

+...

(7)

i!

 

 

 

 

n!

i=1

2!

3!

 

 

 

В этой задаче число повторений в цикле заранее неизвестно, оно зависит от требуемой точности и скорости сходимости ряда. Поэтому здесь могут использоваться только циклы типа «пока», а суммировать надо до тех пор, пока последнее прибавленное слагаемое не станет меньше ε.

1)Ввод (X, ε)

2) S:=0 A:=1 I:=1

3)Повторяй

A:=A*X / I S:=S+A I:=I+1

пока А≥ε

4)Вывод (S)

Задание. Нарисовать блок-схему решения задачи 4, используя цикл с предусловием.

5. Дан набор чисел, его нужно упорядочить, например, в порядке возрастания.

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

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

После первого прохождения массива справа окажется самое большое из имеющихся чисел (оно «всплывает» – «метод пузырька»). Снова проход, но уже на один шаг короче и так n раз, но порядок может быть достигнут раньше (в частном случае вообще можно предположить, что исходный массив был уже упорядочен). Если на каком-то проходе перестановок не было, то порядок достигнут и просматривать элементы дальше уже не нужно. Алгоритм (с учетом комментариев в фигурных скобках) может быть записан следующим образом:

1)Ввод (N,A)

2) M:=N

{M:=N - сначала весь массив }

P:=1

{P – признак: P=1 – надо проходить; P=0 – не надо }

3)Пока P=1, повторяй

<< P:=0; {если ни одной перестановки, то останется P=0}

< Для I от 1 до М-1 шаг 1 повторяй, {M-1, т.к. считаем пары чисел}

если A(I) > A(I+1) , то

< C:=A(I); A(I):= A(I+1); A(I+1):=C;

21

{ Обмен данными через вспомогательную ячейку}

 

P:=1>

 

 

 

M:=M-1 >>

 

 

4)

Вывод (А)

{это уже упорядоченный набор чисел}

Здесь мы имеем ситуацию с так называемыми «вложенными циклами».

Для наглядности приняты обозначения:

 

Внутренний цикл:

< Для I …….

P:=1>

Внешний цикл: << P:=0; < Внутренний цикл >; M:=M-1 >>. Задание. Нарисовать блок-схему последнего алгоритма. Перечисленными выше структурами в начальном изучении ограничива-

ется знакомство с неформальным программированием.

Контрольные вопросы и упражнения 1. Записать формульно-словесный алгоритм вычисления следующих вы-

ражений:

 

 

А

2

+ В

2

, если А В ,

 

 

 

 

 

 

 

а)

y =

 

 

 

 

 

 

 

2

 

 

 

(8)

 

 

 

 

 

 

 

 

,

если

А >В

 

(А+ В)

 

 

 

 

x

 

 

 

 

,

если

x < 0 ,

 

 

 

 

 

 

 

 

 

 

 

 

А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А x

,

если

х >0,

 

б)

y =

(9)

 

 

А

 

 

 

 

,

если

х =0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.Какие типы алгоритмов вы знаете? Подберите пример алгоритма для каждого типа.

3.В каких случаях используются циклы с условием?

4.Что такое «тело цикла с условием»?

5.Может ли тело цикла с условием не выполниться ни разу?

6.Может ли тело цикла с условием выполняться бесконечное число раз?

7.В каких случаях используется цикл с параметром? Как он оформляется? Что происходит при его выполнении?

8.Может ли тело цикла с параметром не выполнится ни разу?

9.Чему равно количество повторений тела цикла с параметром, если параметр цикла принимает:

а) все целые значения от 1 до 10? б) все целые значения от а до b?

в) все нечетные значения от 1 до 20? г) все значения от 10 до 100 с шагом 7?

10.Как поменять местами содержимое двух ячеек памяти?

11.Есть 27 монет. Известно, что одна монета фальшивая (ее вес меньше). На чашечных весах можно сравнивать вес монет (весы показывают, какие мо-

22

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

12.Нарисовать блок-схему алгоритма прямого вычисления выражения 4х3 + 3х2 + 2х +1 по заданному значению х.

13.Нарисуйте блок-схему с использованием циклического вычисления для выражения 4х3 + 3х2 + 2х +1 записанного в виде х(х(4х + 3) +2) +1.

14.В упражнениях 12, 13 использованы разные алгоритмы вычисления тождественных выражений. Почему алгоритм из упражнения 13 более рационален?

15.Решите задачу 8, используя цикл с параметром.

16.Решите задачу 9, используя циклы с условием.

17.Нарисовать блок-схему для вычисления выражения y:

y =

1

+

1

+

1

+

1

+... +

1

.

(10)

22

32

42

52

 

152

18.В чем заключается «нисходящее проектирование программ»?

19.Изложите суть методики построения алгоритма для вычисления сумм бесконечных рядов.

20.Для чего в алгоритме упорядочения массива (задача 11) использовано понятие признака?

21.Что такое «вложенные циклы»?

Пример контрольного теста по алгоритмизации

1.Строго определенная последовательность действий, необходимых для решения поставленной задачи, – это …

а) метод решения; б) алгоритм; в) блок – схема.

2.Алгоритм является …

а) последовательностью команд, которую может выполнить испол-

нитель;

б) системой команд исполнителя; в) математической моделью; г) информационной моделью.

3.Ниже перечислены основные свойства алгоритма. Некоторые из этих понятий не относятся к основным свойствам. Укажите, какие именно.

а) дискретность; б) определенность; в) актуальность;

г) результативность; д) массовость; е) строгость; ж) секретность.

4.Свойство, означающее, что решение задачи, записанное в виде алго-

23

ритма, разбито на отдельные простейшие команды, которые расположены в порядке их выполнения, – это …

а) дискретность; б) определенность; в) результативность.

5.Массовость алгоритма – это свойство заключается в том, что каждый алгоритм, разработанный для решения некоторой задачи, должен быть применен для решения задач данного типа при всех допустимых значениях исходных данных. Верно ли данное высказывание?

6.Какие Вы знаете способы записи алгоритмов:

а) описание с помощью слов; б) описание с помощью формул; в) математическое описание; г) описание в виде блок – схем;

д) описание с помощью графических схем; е) с использованием алгоритмического языка.

7.Графическое описание алгоритмов как последовательности действий называется … . Вставьте пропущенное словосочетание.

8.Какая фигура в блок-схеме обозначает выполнение операции или группы операций?

1

2

3

4

9.Команда алгоритма, в которой делается выбор: выполнять или не выполнять какую либо группу команд, называется … . Вставьте слово.

10.В зависимости от особенностей своего построения алгоритмы делятся на несколько основных групп:

а) линейные; б) вычислительные;

в) разветвляющиеся; г) сложные; д) обработки данных; е) циклические;

ж) структурные.

Некоторые из этих понятий не относятся к основным группам алгоритмов. Укажите, какие именно.

11.«Линейным называется алгоритм, в котором все этапы выполняются строго последовательно». Верно ли такое высказывание?

12.Укажите правильный вариант ответа. Циклом называется:

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

24

при новых значениях параметров; в) выбор одного из нескольких вариантов вычислительного процесса.

II. Лабораторный практикум по программированию

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

Лабораторная работа 1. Линейный вычислительный процесс

Пример выполнения работы 1

Пусть это задание следующего вида. Составить на языке PASCAL программу вычисления значения функции

 

 

 

 

 

3 7

 

π

2

R =

 

s inq 7,2

 

+

a2 5

 

 

 

 

 

c o s

5

+a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(11)

PROGRAM PR1;

VAR R,q,a:REAL; BEGIN

WRITELN(‘Введите значения q,a’); READLN(q,a);

R:=ABS(SIN(q)-7.2)+EXP(25/37 LN(a))-COS(SQR(PI/5+a)); WRITELN(‘q=‘,q:8:2,’ a=‘,a:8:2);

WRITELN(‘R=‘,R:8:2);

END.

Задания по теме лабораторной работы 1. (Номер варианта задается преподавателем).

 

D = y5 x12 + cosv9

 

1) K = 9

 

+sin y5 f h

0)

 

2b + cosx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(12)

 

 

5

 

x

a

x

 

 

 

π y

 

 

 

 

8

 

 

y = tx

 

 

 

 

 

 

 

3

 

5

2)

 

1

x

2

+ 5,3

 

3)

S = cos

3

x

 

 

+ sin y

(13)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

25

 

T = 7

x3

+10x 7,3

 

x55,2

 

 

 

 

 

 

 

4)

5)W =

 

y4 sinc6

 

+5,8

 

 

 

 

 

 

 

6

 

 

9 π

 

 

 

 

 

(14)

 

 

 

 

 

 

 

 

 

 

 

cos xab

2

 

 

sin(a π y)8

 

π

9

 

6)

F =

 

 

 

 

+ n

 

 

L =

 

 

 

 

 

 

+ d

 

 

 

y 4 b

+ 5,4

 

7)

17,84 + x

5(ab)

 

 

 

 

 

 

 

 

 

7

 

(15)

 

x =

cos y a sin r8q

 

9)

 

 

 

 

 

 

 

 

 

 

 

8)

 

v = (x6 +3,3A)

 

 

 

 

 

 

 

 

 

 

 

d 2ab +18,31

 

 

 

x4

 

+7 cosD2

 

 

 

 

 

 

5

 

(16)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа 2. Разветвляющийся вычислительный процесс

Пример выполнения работы 2.

Пусть это будет задание: составить программу вычисления функции на языке PASCAL.

x 12,

x ≤ −2

 

3 < x

y = 8 + x,

 

2 < x 3

sin x,

 

(17)

PROGRAM РR2;

VAR x,y:REAL;

BEGIN

WRITELN(‘Ввод х’);

READLN(x);

IF x<=-2 THEN y:=x-12 ELSE

IF x<=3 THEN y:=SIN(x) ELSE y:=x+8;

WRITELN(‘x=‘,x:9:3,’ y=‘,y:9:3);

END.

Задания по теме лабораторной работы 2.

 

 

 

 

,x ≥ −1

 

x + 4

 

 

 

 

 

0) y =

3x,

4 x < −1

 

2x +5,

x < −4

 

 

 

 

 

 

x 2, x ≤ −4

 

40x3, x 6

1) y =

 

 

2

, 4 < x < 6

x + a

 

 

 

 

(18)

26

 

1x4 ,

x 2

 

 

 

 

 

 

 

 

 

 

2) y = x5 , 0 < x < 2

 

 

 

3

+7,

x 0

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

0 < x 1

 

x + 2

4) y =

ln(x 1), x >1

 

17,9+x,

x 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 < x < 4

 

 

 

x

,

6) y =

 

9xd 2 , 0 x

 

 

1 + 7x2 , x 4

 

 

 

 

 

 

 

 

 

3a9 x, 0 < x <1

 

 

 

 

 

 

 

 

 

 

8) y =

 

5x +7, x 0

 

 

 

 

cos x,

x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x17,

 

 

x <1

 

 

 

 

7

, 1 x 5

3) y = x

 

 

 

 

 

 

 

 

 

 

 

 

x > 5

 

x ln x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(19)

 

 

x4 5abc,

x > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5) y =

3ax, 3 x 0

 

 

 

 

 

 

 

 

 

 

 

 

 

x ≤ −3

 

cos x sin x,

 

 

 

 

 

 

 

 

 

 

 

 

 

(20)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+5a3

 

, x 0

 

 

 

x

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7) y =

sin x,

 

 

1 x < 0

 

cos(x +1),

x < −1

 

 

 

 

 

 

 

 

 

 

 

 

 

(21)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(x 1), x > 2

9)

 

 

 

 

 

11

f , 1 < x 2

y = xk

 

 

 

 

 

sin x

5

,

 

x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(22)

Лабораторная работа 3. Циклический вычислительный процесс

Пример выполнения работы 3.

Допустим, требуется составить программу вычисления значения функции

K = X 3 + LN 5 X 2 , при этом X [2; 14,1] c шагом 0,8 (используем оператор

FOR).

В языке PASCAL у оператора цикла FOR шаг равен 1 (или -1). Поэтому для решения задачи необходимо определить количество повторений по формуле

X

2

X

1

 

 

 

 

N =

 

 

 

+1

.

(23)

 

X

 

 

 

 

 

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

Для поставленной задачи

14,12

+1 =16 .

(24)

N =

0,8

 

 

 

 

 

PROGRAM РR3;

VAR X,K:REAL; I:INTEGER;

27

BEGIN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X:=2.0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FOR I:=1 TO 16 DO BEGIN

 

 

 

 

 

K:=EXP(3 LN(X))+EXP(5 LN(LN(SQR(X))));

 

 

WRITELN(‘X=‘,X:8:1,’

K=‘,K:9:2);

 

 

 

X:=X+0.8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

END.

END;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задания по теме лабораторной работы 3.

 

Таблица 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табулируемая

 

Пределы

Шаг в

Используемый

варианта

 

 

функция

 

 

 

 

 

изменения x

цикле

оператор цикла

0

Z = y2 ln x +1

 

[ 1; 2,25 ]

0,125

FOR

1

Z =

y3

2 f

5

2,3

 

[ 1,45; 2 ]

0,05

FOR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

+

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 1; 5 ]

0,53

FOR

Z = 10x + y 7,8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

Z = (x2 4x +8,1)d

 

[ 0,1; 1 ]

0,15

FOR

4

Z = −0,01x + x + y3x

 

[ -7; 2 ]

0,88

WHILE

5

Z = sin x 4v

3

 

 

 

[ 2; 10 ]

0,77

WHILE

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 2; 16 ]

1,37

WHILE

Z =

 

x2 + y2

 

 

 

 

 

 

 

7

Z = x3y d + f 7

 

[ 0,5; 4 ]

0,43

REPEAT

8

Z =

 

x

 

 

3

 

 

 

 

 

 

 

[ -4; -1 ]

0,38

REPEAT

 

 

 

v h

 

 

 

 

 

 

 

 

 

 

 

9

Z = 2x +3sin(xy)

 

[ 4,1; 8 ]

0,36

REPEAT

 

 

cos x5 +7,91

 

 

 

 

 

 

 

 

 

Лабораторная работа 4. Разветвление в цикле

Пример выполнения работы 4.

Пусть условие задачи выглядит следующим образом. Написать программу на алгоритмическом языке PASCAL для вычисления функции:

28

x + z2 ,2 < x < 5

 

 

D = sin x z,x 2

 

,x 5

ln x + z5

 

(25)

 

при x [0,3; 8,9] c шагом 0,35. Допускается использование любого оператора

цикла. Воспользуемся оператором WHILE. PROGRAM РR4;

VAR X,Z,D:REAL; BEGIN

WRITE(‘Введите значение Z’);

READ(Z);

WRITELN(‘Z=‘,Z:8:2); X:=-0.3;

WHILE X<=8.9 DO BEGIN

IF X<=2 THEN D:=SIN(X)-Z ELSE

IF X<5 THEN D:=SQRT(X)+SQR(Z) ELSE D:=LN(X)+EXP(5 (LN(Z)); WRITELN(‘X=‘,X:8:2,’ D=‘,D:8:2);

X:=X+0.35 END END.

Выполняется номер указанного варианта из таблицы 2 с использованием любого оператора цикла.

Задания к выполнению лабораторной работы 4

Таблица 2

№ варианта

Табулируемая функция

Пределы изменения х Шаг

0

ln x,

0 < x 1

[ -1,3; 1,8 ]

0,3

y = 4sin(x +1),

x >1

 

 

 

 

 

x 0

 

 

 

h + x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

x + 5x

3

,

x 0,5

[ -1; 0,8 ]

0,17

 

 

 

 

 

 

 

 

0 < x < 0,5

 

 

 

y = ln x,

 

 

 

 

 

 

 

 

x 0

 

 

 

n x,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

sin(2x +1),

x 4

[ 3,0; 7,5 ]

0,4

 

0,1x2

 

 

 

 

 

 

 

 

x ,

4 < x 6

 

y =

 

 

 

 

 

 

3ln x,

x > 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29

Окончание таблицы 2

3

sin x,

 

 

 

x

≤ −1

 

[ -4; 7,1 ]

0,9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y = cos 2x,

4

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 < x < 4

 

 

 

0,4x + a2,

 

 

4

sin x,

x

>11

[ 0,5; 16 ]

1,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x ,

 

 

 

5 < x

11

 

y =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 5

 

 

 

cos 2 x,

 

 

 

5

1,5x + f ,

4 x

[ 0,1; 5,2 ]

0,5

 

20 x

2 ,

 

x 1

 

y =

 

 

 

 

 

4 ln x,

1 < x < 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

cos x,

x <

2

[ -3,4; 8,7 ]

1,05

 

 

 

 

 

 

 

 

 

 

 

 

2

x 6

 

y = x0,3,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x ,

x > 6

 

 

 

sin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

ln(x 5), x > 6

[ -4,8; 7,4 ]

0,91

 

 

 

 

 

 

 

 

 

 

 

 

,

x

≤ −2

 

y = sin x r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6 x > −2

 

 

 

cos x,

 

 

 

 

 

x2

 

,

 

x 0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

x

3 +1

 

 

 

 

 

 

[ -2,3; 1,2 ]

0,3

 

 

 

 

 

 

 

 

 

 

 

 

x ≤ −1

 

 

 

y = cos x,

 

 

 

 

 

 

 

u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ x, 1 < x < 0,5

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

1,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

3,4

,

 

[ -3; 6,2 ]

0,82

 

y = cos(x + 5),

x < −1

 

 

 

ln x

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

,

 

 

x > 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа 5. Работа с массивами

Пример выполнения работы 5.

Сделаем предположение, что условие задачи следующее. Дан одномерный

30