Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 1).doc
Скачиваний:
104
Добавлен:
15.04.2015
Размер:
1.69 Mб
Скачать

12.1. Табулирование функций

Табулирование функций - построение таблиц функций.

Наиболее наглядным примером циклического вычислительного процесса является задача табулирования функции: вычисления значений функции у =f(x) для значений аргумента х, изменяющихся от начального значения x0 до конечного хn с постоянным шагом hx (рис. 12.1).

а б

Рис. 12.1. Общая схема алглритма табулирования функции

Здесь многократно повторяемые действия (тело цикла) - это вычисление значения функции f(x) для очередного значения аргумента х и вывод полученного результата на печать; переменная цикла - переменная х. Цикл выполняется для значений х, равных х0, х0 + hx ,

х0 + 2hx , х0 + 3hx , …, хn , Алгоритмы табулирования функции с пред- и постусловием дают, вообще говоря, одинаковый результат. Но тело цикла с предусловием в определенной ситуации может не выполниться ни разу, а тело цикла с постусловием обязательно выполняется хотя бы один раз.

Помимо циклов с пред- и постусловием принято различать циклы с заранее неизвестным и заданным числом повторений. При табулировании функции по алгоритму с заранее известным числом повторений, число повторений цикла Nx определяется как

Nx = [(xn – x0) / hx] +1,

где скобки [ ] означают целую часть числа.

В циклах с известным числом повторений всегда можно определить переменную, связанную с числом повторений цикла, значение которой изменяется по заданному закону: от начального до конечного с постоянным шагом. Такая переменная используется для управления циклом: в условии окончания цикла осуществляется сравнение текущего значения переменной с заданным порогом. Эту переменную именуют параметром цикла, а сам цикл - циклом с параметром.

13. Разветвляющиеся алгоритмы

13.1. Команда выбора case

Форма команды выбора, которая на псевдокоде имеет следующий вид:

селектор

Выбрать из имя по

набор1: действие 1;

набор2: действие 2;

... ...

Константа

константа1, константа2, константа3, ….

диапазон

наборn: действие n;

Все

Синтаксис

Case селектор of

набор 1 : оператор1;

набор 2 : оператор1;

набор N : операторN;

end; {case}

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

1-й случай: когда указывается просто одна константа

2-й случай: когда указывается несколько констант, разделенных запятыми

3-й случай: может указываться диапазон констант

4-й случай: комбинация первых трех случаев.

ПРИМЕР: стоит задача для введенного символа вывести на экран информацию о том, какой это символ: буква (большая или маленькая) или цифра?

Var

C : char;

Begin

Read(c);

Case с of

'A' ..'Z' : writeln(‘Прописная буква’);

'a' ..'z' : writeln(‘' Строчная буква'’);

'0' ..'9' : writeln(‘' Цифра '’);

end; {case}

end.

Замечание1: Переменная селектор на Паскале может быть любого порядкового типа, кроме longint.

Замечание2: После каждого двоеточия вы можете написать действие только из одного оператора. В случае необходимости несколько операторов нужно заключать в операторные скобки (begin-end).

Более полная форма команды выбора на псевдокоде и соответствующий оператор на Паскале имеют следующий вид:

выбрать

при ситуация 1: действие 1;

...

при ситуация n-1: действие n-1;

иначе действие n;

все

выбрать из имя по

набор 1: действие 1;

...

набор n-1: действие n-1;

иначе действие n;

все

Синтаксис

Case селектор of

набор 1 : оператор1;

набор 2 : оператор1;

набор (N-1) : оператор(N-1)

else операторN

end; {case}

Синтаксические диаграммы:

Пример 1: стоит задача для введенного символа вывести на экран информацию о том, какой это символ: буква (большая или маленькая) или цифра?

Var

C : char;

Begin

Read(c);

Case с of

'A' ..'Z' : writeln(‘Прописная буква’);

'a' ..'z' : writeln(‘' Строчная буква'’);

'0' ..'9' : writeln(' Цифра ')

else writeln(' Другой символ’)

end; {case}

end.