Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Программирование разветвленных алгоритмов в системе Delphi




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

Составной оператор

Составной оператор представляет собой группу операторов, отделенных друг от друга точкой с запятой и ограниченную операторными скобками begin и end.

Пример

begin

оператор 1;

оператор 2;

...

оператор n;

end;

Пример

begin

a:=a+12;

c:=a*b+2;

end;

Составной оператор воспринимается как единое целое и может находится в любом месте программы.

В языке Delphi имеются две формы условного оператора − полный и неполный.

Полный условный оператор

Ключевые слова if, then, else означают соответственно «если», «то», «иначе». Условие – выражение булевского типа. При записи условия могут использоваться операции отношения =, <>, >, >=, <, <= и логические операции not, and, or, xor.

Рассмотрим блок-схему алгоритма полного условного оператора (рис. 3.1).

Рис. 3.1. Блок-схема алгоритма полного условного оператора

Здесь s1, s2 – один простой или составной оператор.

Если после ключевых слов then или else следует выполнить не один, а несколько операторов, то необходимо использовать составной оператор.

Приоритеты выполнения операций:

1) not;

2) *, /, div, mod, and;

3) +, –, or, xor;

4) >, >=, <, <=, =, <>.

Результатом вычисления условия может являться истина (true) или ложь (false). Если условие истинно, то выполняется оператор s1, иначе – оператор s2.

Пример

a:=1; b:=2; c:=0;

if a>b then c:=a

else c:=b;

Так как выражение a>b ложно, то будет выполнятся оператор после else, т.е. c:=b.

Неполный условный оператор

Рассмотрим блок-схему алгоритма неполного условного оператора (рис. 3.2).

Рис. 3.2. Блок-схема алгоритма неполного условного оператора

Если результат вычисления условия – истина, то выполняется оператор s1. Если ложь, то выполняется оператор, непосредственно следующий за условным оператором if.

Пример

a:=2; b:=8; c:=0;

if a>b then c:=a+b;

c:=c+12;

Результатом выполнения данного примера будет c=12, так как выражение a>b ложно и оператор c:=a+b не будет выполняться. Если после ключевого слова then следует выполнить не один, а несколько операторов, то необходимо ис­пользовать составной оператор.

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

Оператор выбора Case является обобщением оператора if и позволяет сделать выбор из произвольного числа вариантов.

Case <выражение-селектор> of

<список1>:<оператор1>;

<список2>:<оператор2>;

...

<списокN>:<операторN>

else <оператор>

end;

Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else. Слово else может отсутствовать. Если слово else отсутствует, то активизируется оператор, стоящий непосредственно за словом end, т.е. первый оператор за границей Case. Селектор можетиметь порядковый тип. Вещественный тип нельзя использовать. Тип констант в любом случае должен совпадать с типом селектора.

Примеры Case

1. Селектор целочисленного типа:

Case k of

1: z:=k+10;

2: z:=k+100;

3..9: z:=k+1000;

11,14,17..20: z:=k+5000

end;

2. Селектор символьного типа:

Case n of

‘A’, ‘a’: Label1.Caption:=’арбуз’;

‘В’, ‘в’: Label1.Caption:=’вишня’;

‘C’, ‘c’: Label1.Caption:=’слива’;

else Label1.Caption:=’Ошибка ввода’

end;

Приведем схему алгоритма для примера 2 (рис. 3.3):

Рис. 3.3. Блок-схема алгоритма оператора выбора

В первом примере показан способ задания метки интервалом 3..9, а во втором примере – с помощью перечисления.

Пример программирования разветвленного алгоритма

Задание. Вычислить значение функции

1. Разработка алгоритма (рис. 3.4):

а) входные данные: x – действительная переменная.

б) выходные данные: F – действительная переменная.

Рис. 3.4. Блок-схема алгоритма программы

2. Разработка формы (рис. 3.5, табл. 3.1):

Рис. 3.5. Внешний вид формы

Таблица 3.1

Используемые компоненты

Имя компонента Страница палитры компонент Настраиваемое свойство Значение
1. Form1 Caption Пример лабораторной работы №3
2. Edit1 Standard Text  
3. Label1 Standard Caption Введите x
4. Label2 Standard Caption Результат
5. Label3 Standard Caption  
6. Label4 Standard Caption Для вывода результата – щелчок по метке «Результат»

3. Текст программы:

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Label3: TLabel;

Label4: TLabel;

procedure Label2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

{ обработчик события OnClick }

procedure TForm1.Label2Click(Sender: TObject);

varx,f:real;

begin

{ преобразуем текст из Edit1 в вещественное число }

x:=StrToFloat(Edit1.Text);

{ вычисление fосуществляется по сооветствующей формуле }

if x<0 then f:=sqr(sin(x))

else if (x>=0) and (x<=1.5) then f:=sqrt(x)

else f:=cos(sqr(x));

{ преобразуем число f в строку и покажем результат в метке }

Label3.Caption:= FloatToStr(f);

end;

end.


Контрольные вопросы к главе 3

1. Вычислить значения выражений:

a or b and not a при a=true и b=false;

t and (p mod 3=0) при t=true, p=1010;

(x*y<>0) and (y>x) при x=2, y=1;

(x*y<>0) or (y>x) при x=2, y=1;

not (a and b) при a=false, b=true.

2. Записать на Delphi выражение, истинное при выполнении данного условия:

х принадлежит отрезку [0,1];

x лежит вне отрезка [0,1];

x принадлежит отрезку [2,5] или [–1,1];

x лежит вне отрезка [2,5] или [–1,1].

3. Пояснить структуру и правила выполнения условных операторов.

4. Записать указанное действие в виде одного условного оператора:

5. Какое значение будет иметь переменная z после выполнения операторов?

z:=0; x:=1; y:= –1;

if x>0 then if y>0 then z:=1 else z:=2;

6. Какое значение будет иметь переменная z после выполнения операторов?

z:=1; x:= –1; y:=1;

if x>0 then if y>0 then z:= z + 5

else z:= z + 7;

7. Укажите ошибки в следующих операторах:

if 1<x<2 then x:=x+1; y:=0;

else x:=0; y:=y+1;

8. Как можно изобразить схему алгоритма для оператора выбора, в котором селектор может принимать 5 вариантов значений?

9. Найдите ошибки в части программы:

procedure example;

var d: real; t: boolean;

begin

case d of

2,3,5,7: t:=true; d:=t+1;

0,1,4..8,9: t:=false;

end;

end;






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных