Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delfi__Osnovy_programmirovania.doc
Скачиваний:
298
Добавлен:
12.04.2015
Размер:
8.98 Mб
Скачать

4. Программирование простых циклических алгоритмов в системе Delphi

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

На языке Delphiсуществуют три оператора цикла:

  1. Цикл с предусловием (while).

  2. Цикл с постусловием (repeat).

  3. Цикл со счетчиком (for).

Оператор цикла while

Рассмотрим схему алгоритма оператора while(рис. 4.1).

Рис. 4.1. Схема алгоритма оператора while

Условие представляет собой булевское выражение, тело цикла – один простой или составной оператор. Если тело цикла состоит из нескольких операторов, то эти операторы нужно заключать в операторные скобки. Если результат вычисления условия равенtrue(правда), то тело цикла выполняется и снова осуществляется переход к проверке условия. Если результат вычисления условия равенfalse(ложь), то происходит выход из цикла и переход к оператору, следующему за циклическим операторомwhile. Если перед первым выполнением цикла значение выражения былоfalse, тело цикла вообще не выполняется и происходит переход к следующему оператору.

Пример

Вычислить сумму нечетных чисел в интервале 0 – 10.

var K, S: integer;

begin

S:=0; K:=1;

while K<11 do

begin

S:=S+K;

K:=K+2;

end;

end;

Оператор цикла repeat

Рассмотрим схему алгоритма оператора repeat(рис. 4.2).

Рис. 4.2.Схема алгоритма оператора repeat

Условие представляет собой булевское выражение, тело цикла – один или несколько операторов. Тело цикла оператораrepeatвыполняется, пока условие равноfalse. Если тело цикла состоит из нескольких операторов, то эти операторы можно не заключать в операторные скобки. Тело цикла оператораrepeatвыполняется, по крайней мере, один раз, так как проверка условия выполняется после тела цикла. Поэтому данный оператор цикла используется реже по сравнению с другими операторами цикла.

Пример

Вычислить сумму чисел от 1 до 100.

var d, s: integer;

begin

d:=1;

s:=0;

repeat

s:=s+d;

d:=d+1;

until d>100;

end;

Оператор цикла for

Рассмотрим схему алгоритма оператора for(рис. 4.3).

Рис. 4.3. Схема алгоритма оператора for

В операторе цикла forможно использовать только два значения шага счетчика цикла: либо +1, либо –1. В теле цикла оператораforне допускаются изменения счетчика цикла.

for <счетчик цикла>:=s1 to s2 do <тело цикла>;

Счетчик цикла увеличивается на 1 при каждом выполнении тела цикла.

for <счетчик цикла>:=s1 downto s2 do <тело цикла>;

Счетчик цикла уменьшается на 1 при каждом выполнении тела цикла.

s1 иs2 – выражения, определяющие соответственно начальное и конечное значения счетчика цикла. Тело цикла – один простой или составной оператор. Счетчик цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных.Счетчик цикла может быть только порядкового типа. Не допускается вещественный тип.

Тело цикла не выполнится ни разу, если для оператора fortо начальное значение счетчикаs1 больше конечного значенияs2, а для оператораfordowntoначальное значение счетчикаs1 меньше конечного значенияs2.

Приведённые ниже примеры операторов циклов демонстрируют значения, принимаемые счетчиками циклов в процессе выполнения программы.

Операторы: Значения:

fork:= 10to14do10 11 12 13 14

for k := 14 downto 11 do 14 13 12 11

for c := ’a’ to ‘e’ do a b c d e

for c := ’e’ downto ‘a’ do e d c b a

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

Пример программирования циклического алгоритма

Задание. Вычислить сумму целых чисел, значения которых лежат в диапазоне отx1 доx2.

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

а) входные данные: х1, x2 – целочисленные переменные;

б) выходные данные: s– целочисленная переменная.

Рис. 4.4. Схема алгоритма вычисления суммы чисел

2. Разработка формы (рис. 4.5).

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

Чтобы сконструировать форму, изменим свойства каждой компоненты соответствующим образом (табл. 4.1).

Таблица 4.1

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

Имя компонента

Страница палитры компонент

Настраиваемые свойства

Значение

1. Form1

Caption

Пример лабораторной работы №4

2. Edit1

Standard

Text

3. Edit2

Standard

Text

4. Label1

Standard

Caption

ВНИМАНИЕ! Вводить только целые числа!

5. Label2

Standard

Caption

Введите границу диапазона (снизу)

6. Label3

Standard

Caption

Введите границу диапазона (сверху)

7. Label4

Standard

Caption

Результат

8. Label5

Standard

Caption

9. Label6

Standard

Caption

Для вывода результата – щелчок по метке «Результат»

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

unit Unit1;

interface

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

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Label5: TLabel;

Label6: TLabel;

procedure Label4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.Label4Click(Sender: TObject);

var x1,x2,s:integer;

begin

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

x1:=StrToInt(Edit1.Text);

{преобразуем текст из Edit2 в целое число}

x2:= StrToInt(Edit2.text);

{обнуление суммы}

s:=0;

{организация цикла}

while x1<=x2 do

{тело цикла}

begin

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

s:=s+x1;

{увеличение значения х1 на 1}

x1:=x1+1;

end; {конец тела цикла}

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

Label5.Caption:=IntToStr(s);

end;

end.

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