Главная

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

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

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

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

ТОР 5 статей:

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

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

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

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

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

КАТЕГОРИИ:






Программирование простых циклических алгоритмов в системе 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 – выражения, определяющие соответственно начальное и конечное значения счетчика цикла. Тело цикла – один простой или составной оператор. Счетчик цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. Счетчик цикла может быть только порядкового типа. Не допускается вещественный тип.

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

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

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

for k:= 10 to 14 do 10 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.

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

1. Как функционирует оператор цикла for и какая типовая схема алгоритма ему соответствует?

2. Как функционирует оператор цикла while и какая типовая схема алгоритма ему соответствует?

3. Как функционирует оператор цикла repeat и какая типовая схема алгоритма ему соответствует?

4. Определить значение переменной s после выполнения операторов:

s:=0; i:=1;

while i>5 do i:=i+1; s:=s+1/i;

5. Определить значение переменной s после выполнения операторов:

s:=0; i:=1;

repeat s:=s+1/i; i:=i+1; until i>1;

6. Определить значение переменной s после выполнения операторов:

s:=0; i:=1;

while i>1 do begin s:=s+1/i; i:=i–1; end;

7. Определить значение переменной s после выполнения операторов:

s:=1; n:=1;

for i:=2 to n do s:=s+s1/i;

8. Сколько раз будет выполнятся тело цикла?

k:=0;

for i:=0 to 9 do k:=k+1;

9. Найдите ошибки в следующих фрагментах программы, если var k, i: integer; x, y: real:

а) y:=0; for x:=0.1 to 0.9 do y:=y+sin x;

б) k:=82; y:=1; for i:=1 to sqrt (k) do y:=2*y;

10. Найдите ошибки в следующих фрагментах программы, если var k, i: integer; x, y: real:

а) k:=0; for i:=1 to 9 do i:=k+sqr(i); k:=k+1;

б) k:=1; for i:=64 to 1 do begin i:=2*i; k:=k+1; end;






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

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