Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5. Delphi ветвления.doc
Скачиваний:
6
Добавлен:
16.11.2019
Размер:
220.16 Кб
Скачать

11

Ф едеральное агентство по образованию

ГОУ ВПО Тульский государственный университет

Т ехнологический факультет

Кафедра "Автоматизированные станочные системы"

Курс "Информатика"

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

ДЛЯ ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ

СТУДЕНТАМИ НАПРАВЛЕНИЯ 230100

ТУЛА 2007

Р азработал:

к.т.н., доц. Троицкий Д.И.

Рассмотрено на заседании кафедры АСС

1 сентября 2007, протокол №7

Зав. кафедрой АСС д.т.н., проф.

_______________ Иноземцев А.Н.

Содержание

1. Задачи с ветвлениями 4

2. Логический тип данных 4

3. Организация ветвлений 5

4. Объединение операторов 6

5. Сложные условия 8

6. Множественное ветвление 9

1.Задачи с ветвлениями

Сложные проблемы всегда имеют простые,

легкие для понимания неправильные решения.

Из законов Мэрфи

Программа с ветвлениями состоит из нескольких "кусков". То, какой из этих "кусков" будет выполняться, зависит от результата проверки условия. Условие сравнивает между собой две величины (на равенство, неравенство, больше, меньше и т.д.). Например, при решении квадратного уравнения нужно проверять, не оказался ли дискриминант отрицательным.

Условие всегда дает два и только два варианта ответа: да (условие выполняется) или нет (условие не выполняется). Примеры условий приведены в Табл. 1. Сравнивать между собой можно не только числа, но и буквы, и строки символов. Большей считается буква, стоящая ближе к началу алфавита.

Табл. 1

Параметры

Условие

Результат

a=10 b=20

a<b

да

a=-5 b=-10

a>b

да

a=10 b=10.01

a=b

нет

a='a' b='z'

a>b

да

a='abc' b='cde'

a=b

нет

Условие "не равно" записывается как "<>", "больше или равно" – ">=", меньше или равно – "<=".

2.Логический тип данных

Всякий провод, нарезанный на куски, окажется слишком коротким.

Из законов Мэрфи

Итак, в результате проверки условия можно получить ответ "да" или "нет". Чтобы этот ответ можно было записать в переменную, в Delphi предусмотрен особый тип данных – логический. Переменные логического типа могут принимать только два значения: TRUE (да, истина) и FALSE (нет, ложь. Вспомните русское слово "фальшь"). Логический тип данных в программе назван BOOLEAN в честь английского математика XIX века Дж. Буля (J. Bool), разработавшего основы алгебры логики. Логические переменные нельзя ввести с клавиатуры, но можно вывести на экран. Рассмотрим следующий пример программы:

VAR l:BOOLEAN; a,b:WORD;

BEGIN

a:=10;

b:=20;

l:=a>=b

END;

Так как 10 не больше или равно 20, переменная l примет значение FALSE (ложь).

Разумеется, переменные логического типа нельзя смешивать с переменными других типов. Например, в приведенном примере присваивание типа a:=a+l будет полной бессмыслицей (как можно сложить число и слово FALSE?) и вызовет ошибку при компиляции.

3.Организация ветвлений

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

Из законов Мэрфи.

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

Ветвление в программе организуется двумя операторами: IF (как говорится в программистском фольклоре, узник замка Иф был программистом ) и CASE. Сначала рассмотрим главный оператор ветвления – IF. Его общий вид таков:

Полная форма

Сокращенная форма

IF условие THEN

оператор1

ELSE

оператор2;

IF условие THEN

оператор1;

Если (а IF по-английски и означает "если") условие истинно, то выполняется оператор1. Если же оно ложно, то либо выполняется оператор2, либо, при сокращенной форме – оператор, следующий за IF.

Наша программа будет выглядеть так (для краткости опустим оператор TRY..EXCEPT):

VAR a,b:REAL;

BEGIN

ClrScr;

a:=FloatToStr(LabeledEdit1.Text);

b:=FloatToStr(LabeledEdit1.Text);

IF a>b THEN

Label1.Caption:='Первое число больше второго'

ELSE Label1.Caption:='Второе число больше первого'

END;

Обратите внимание на запись с отступами: операторы, стоящие внутри IF, смещаются вправо. Delphi этого не требует, ему все равно, а вот человеку разбираться в записи с отступами гораздо легче. Еще один важный момент – точка с запятой ставится только после второго оператора. Ни перед, ни после ELSE точки с запятой быть не может!

При использовании сокращенной формы записи нельзя забывать, что оператор, следующий за IF, про условие ничего не знает и никак с IF не связан. Скажем, следующий вариант программы ошибочен:

IF a>b THEN

Label1.Caption:='Первое число больше второго';

Label1.Caption:='Второе число больше первого'

Второй оператор присваивания := никак не связан с IF и будет выполняться всегда. В итоге в любом случае программа будет выводить текст 'Второе число больше первого'. Сокращенную форму используют тогда, когда при невыполнении условия ничего делать не надо.