Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programirovanie_ekzamen.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
235.52 Кб
Скачать

Иллюстрация if и case

В качестве примера, иллюстрирующего использование операторов ветвления, приведем несколько различных реализаций функции sgn(x)2) - знак числа х. Из математики известно, что эта функция имеет следующие значения:

sgn(x) = -1, если x < 0;

sgn(x) = 0, если x = 0;

sgn(x) = 1, если x > 0.

Реализовать эту функцию для случая, когда х вещественное, можно следующими способами (при условии, что x:real; sgn: -1..1;):

  1. if x=0 then sgn:= 0;

  2. if x<0 then sgn:= -1;

  3. if x>0 then sgn:= 1;

Это так называемая реализация "в лоб". Здесь нет никаких хитростей и никаких попыток оптимизации: даже если сработает первый вариант, второй и третий все равно будут проверены, невзирая на то, что результат уже получен.

  1. if x=0

  2. then sgn:= 0

  3. else if x<0 then sgn:= -1

  4. else sgn:= 1;

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

  1. if x=0

  2. then sgn:=0

  3. else sgn:=x/abs(x);

Еще одна попытка сократить текст программы. Здесь используется стандартная функция abs(), которая возвращает абсолютное значение аргумента. Проблема в данном случае состоит в том, что "/" - деление дробное, но ведь нам необходим целый, а не вещественный ответ! "Давайте воспользуемся стандартной функцией округления", - скорее всего, скажет внимательный читатель.

  1. if x=0

  2. then sgn:=0

  3. else sgn:=round(x/abs(x));

И действительно, исправленный вариант будет выдавать верный результат.

  1. case x=0 of

  2. true: sgn:=0;

  3. false:

  4. sgn:=round(x/abs(x));

  5. end;

  1. Способы структуризации алгоритмов

Структурированная программа (или подпрограмма) - это программа, составленная из фиксированного множества базовых конструкций. Рассмотрим основные определения и способы образования этих конструкций в схемах алгоритмов. Из операций, развилок и слияний строятся базовые конструкции: следование, ветвление, цикл. Применяя только эти три конструкции, можно реализовать алгоритм решения любой задачи. Конструкция, представляющая собой последовательное выполнение двух или более операций, называется следованием. Конструкция, состоящая из развилки, двух операций и слияния, называется ветвлением. Одна из операций может отсутствовать. Конструкция, имеющая линии управления, ведущие к предыдущим операциям или развилкам, называется циклом. Конструкции следование, ветвление и цикл можно представить как операции, так как они имеют единственный вход и единственный выход. Произвольную последовательность операций можно представить как одну операцию. Операция может быть реализована любым оператором языка ПАСКАЛЬ (простым или составным), либо группой операторов, за исключением оператора перехода GOTO. В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести, это: -следование; -ветвление; -цикл с предусловием; -цикл с постусловием; -цикл с параметром; -вариант.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]