Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_Programmirovanie_1_Kurs_1_Sem_Anosov_Yu...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.2 Mб
Скачать

Варианты заданий на лабораторную работу № 2.

1

16

2

17

3

18

4

19

5

20

6

21

7

22

8

23

9

24

10

25

11

26

12

27

13

28

14

29

15

30

Пример решения типовой задачи лабораторной работы № 2.

Рассмотрим решение поставленной во второй лабораторной работе задачи на примере следующего варианта задания:

Написать и отладить программу, реализующую ветвящийся вычислительный процесс и выполняющей вычисления согласно следующим формулам:

Этап первый. Предварительный анализ предметной области задачи.

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

Для хранения результата вычислений также необходимо предусмотреть соответствующую переменную «X».

Так как в процессе вычислений (согласно поставленной задаче) будет неоднократно выполняться операция деления, то следует ожидать, что результат вычислений может оказаться дробным (вещественным). Кроме того, исходные значения переменных «a» и «b», также могут быть вещественными. Следовательно, тип всех переменных в нашей программе должен быть вещественным, а не целочисленным.

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

Var a,b,X : real;

Этап второй. Разработка алгоритма программы.

Согласно условию задачи, при различных значениях исходных данных программа должна выполнять различные действия. Т.е. в программе необходимо организовать несколько независимых ветвей вычислений, выбираемых согласно текущим значениям переменных, введённым пользователем программы.

Выбор, по какому пути пойдёт вычисление, в языке «Паскаль» осуществляется при помощи операторов «if…thenelse» или «Case».

Так как в нашей задаче не даны конкретные значения переменных, при которых следует осуществлять тот или иной выбор вычислительной ветви, а указаны только условия соответствия переменных «a>b», «a=b» и «a<b», то применение оператора «Case» нам не подойдёт. Следовательно, организацию ветвления необходимо будет реализовать, используя оператор «if…thenelse».

Общий (предварительный) вид алгоритма программы будет выглядеть следующим образом:

Ввод данных (а, b).

Если a>b То: X=b / a + 2

Если a=b То: X=-57

Если a<b То: X=(a-b) / b

Печать результата (X).

Этап третий. Оптимизация разработанного алгоритма.

Если внимательно посмотреть на данный алгоритм, то легко заметить, что в случае, когда «a>b», программа, уже вычислив значение «X» по первому условию, будет проверять второе и третье условие, хотя это совершенно излишне. Можно ли остановить выполнение ненужных команд в нашей программе, если результат уже вычислен? Да. Для этого необходимо использовать не короткий, а полный оператор «if…thenelse». В этом случае алгоритм пример такой вид:

Ввод данных (а, b).

Если a>b

То: X=b/a + 2

Иначе: Если a=b

То: X=-57

Иначе: Если a<b

То: X=(a-b) / b

Печать результата (X).

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

Однако. Обратим внимание на общую связь всех условий: «a>b», «a=b» и «a<b». Легко заметить, что если не выполнено ни первое, ни второе условие, то третье условие проверять не нужно, так как оно выполнится автоматически! Действительно, если «a» не больше «b» и не равно «b», то, следовательно, «a» меньше «b»!

Следовательно, проверку третьего условия можно из алгоритма убрать, и алгоритм примет следующий вид:

Ввод данных (а, b).

Если a>b

То: X=b/a + 2

Иначе: Если a=b

То: X=-57

Иначе: X=(a-b) / b

Печать результата (X).

Этап четвёртый. Написание предварительного кода программы.

Написание кода программы по уже разработанному и оптимизированному алгоритму не составляет никакого труда.