
- •Основы программирования
- •Предисловие
- •Введение
- •1. Изучение интегрированной среды Delphi
- •Контрольные вопросы к главе 1
- •Задание к лабораторной работе № 1
- •2. Программирование линейных алгоритмов в системе Delphi
- •Контрольные вопросы к главе 2
- •Задания к лабораторной работе № 2
- •3. Программирование разветвленных алгоритмов в системе Delphi
- •Контрольные вопросы к главе 3
- •Задания к лабораторной работе № 3
- •4. Программирование простых циклических алгоритмов в системе Delphi
- •Контрольные вопросы к главе 4
- •Задания к лабораторной работе № 4
- •5. Программирование с использованием одномерных массивов в системе Delphi
- •Контрольные вопросы к главе 5
- •Задания к лабораторной работе № 5
- •6. Программирование с использованием двумерных массивов в системе Delphi
- •Контрольные вопросы к главе 6
- •Задания к лабораторной работе № 6
- •7. Программирование в системе Delphi с использованием подпрограмм
- •Контрольные вопросы к главе 7
- •Задания к лабораторной работе № 7
- •8. Изучение приемов работы с графикой в delphi
- •Контрольные вопросы к главе 8
- •Задания к лабораторной работе №8
- •9. Программирование в системе Delphi с помощью строк
- •Контрольные вопросы к главе 9
- •Задания к лабораторной работе №9
- •10. Изучение работы с файлами в системе delphi
- •Контрольные вопросы к главе 10
- •Задания к лабораторной работе №10
- •Заключение
- •Библиографический список
- •Предметный указатель
- •Delphi: основы программирования
4. Программирование простых циклических алгоритмов в системе Delphi
В данном разделе осуществляется изучение операторов цикла языка Delphi, приобретение навыков программирования простых циклических алгоритмов, ввода, компиляции и отладки программ.
На языке Delphiсуществуют три оператора цикла:
Цикл с предусловием (while).
Цикл с постусловием (repeat).
Цикл со счетчиком (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.
Приведённые ниже примеры операторов циклов демонстрируют значения, принимаемые счетчиками циклов в процессе выполнения программы.
Операторы: Значения:
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.