Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу.docx
Скачиваний:
108
Добавлен:
24.02.2016
Размер:
2.8 Mб
Скачать

4.3. Оператор выбора Case

case <селектор> of <список 1>: P1; <список 2>: P2;

<список n>: Pn; else Pe; end; Pk;

Этот оператор служит для разделения ес­тественного порядка выполнения операторов на несколько (возможно более двух) ветвей в зави­симости от значения, которое принимает выра­жение порядкового типа - (селектор). Напом­ним, что к порядковым типам относятся целые, символьные, логические, перечисляемые, ин­тервальные.

Оператор Case имеет следующий вид:

read (Item); case Item of

0: y:=sin(x); 1: y:=cos(x); 2: y:=ln(x) else

Write('Item<>0,1,2'); end;

<списою> представляет перечисление тех значений переменной <селектор> при которых выполняется оператор Pi. После его выполнения будет выполняться Pk. Если значение селектора не попала ни в один <списою>, выполняется Pe (Заметим, что строка else может отсутствовать, тогда будет выполнен Pk).

С помощью оператора Case удобно про­граммировать алгоритмы, имеющие возмож­ность выбора из нескольких вариантов. Напри­мер, вычислить значение y=f(x) для одной из трех функций, y=sinx, y=cosx, y=lnx в зависимо­сти от вводимого номера Item варианта (0,1,2). можно так:

4.4. Некоторые возможности, предоставляемые Delphi для организации разветвлений

При создании программ в Delphi для организации разветвлений обычно используются компоненты в виде кнопок - переключателей TCheckBox и TradioGroup [1]. Состояние таких кнопок визуально отражается на форме. Кнопка типа TcheckBox, помещенная на форму, позволяет пользователю с помощью щелчка мышью на ней изменить ее состояние (включена-выключена) и соответственно изменить значение связанной с ней переменной TсheckBox.Checked булевского типа (true-fulse), что может быть использовано в операторе if внутри программы: например If CheckBox.Checked then P1

else P2;

Группа кнопок типа TRadioGroup, помещенная на форму, позволяет пользователю организовать селектор, передающий в программу через пере­менную целого типа RadioGroup.ItemIndex номер включенной кнопки (0,1,2...) при остальных выключенных. Это может быть полезно использова­но с помощью оператора Case внутри программы.

Лекция 5. Составление и програмирование циклических алгоритмов

5.1. Понятие цикла

Обычная современная ЭВМ выполняет миллионы арифметических или логических операций в секунду. Если допустить даже, что один оператор она выполняет за 1/1000 секунды, то чтобы загрузить ее расчетом на 10 секунд нужно написать 10 тысяч операторов, на 1 час требуется 3.6 миллионов опе­раторов !!! Такая программа нереальна. Так что же делает ЭВМ, когда часами считает сравнительно короткую программу из 100 операторов?

Оказывается, она повторяет вычисления одних и тех же операторов миллионы раз при незначительных изменениях некоторых данных !!! Прак­тически все алгоритмы решения задач содержат циклически повторяемые участки. Цикл - это одно из фундаментальных понятий программирования.

Под циклом понимается организованное повторение некоторой после­довательности операторов.

Реализовать его в Паскале можно следующим образом

Label Me1, Me2;

Me1 : P1; P2;

Pn; Goto Me1;

Me2 : Pk;

Здесь Ме1 - метка, которая описывается в разделе объявлений про­граммы (имена меток могут быть цифрами), оператор Goto Me1; передает управление на первый повторяемый оператор, «помеченный» (через двоето­чие) меткой. Для того, чтобы приведенный алгоритм не «зацикливался» до бесконечности требуется с помощью одного из повторяемых операторов ор­ганизовать условие выхода из цикла, например, записав, оператор Pn так:

if <условие> Goto Me2;

Такая технология организации циклов была характерна для «старых» языков - Бейсик, Фортран. Однако, очень скоро были выявлены ее недостат­ки. Особенно неудобно оказалось составлять программы автоматизированной отладки и тестирования. Поэтому при разработке новых языков были введены специальные операторы, позволяющие организовать циклы без использова­ния меток. В языке Паскаль имеется три таких оператора: Repeat, While, For, а оператор Goto M оставлен для тех, кто традиционно привык к старой техно­логии. Все эти операторы организуют цикл и организуют проверку условия выхода из него.