Урок 8. Операторы повторения

цикл с предусловиемУрок из серии «Программирование для школьников в среде Lazarus»

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

В программе цикл может быть реализован при помощи конструкций for, while и repeat.

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

Оператор FOR используется в том случае, когда  некоторую последовательность действий надо выполнить несколько раз, причем число повторений заранее известно.

Общий вид оператора:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
For <счетчик> := <нач_знач> to <кон_знач> do
Begin
<тело цикла>
End;
For <счетчик> := <нач_знач> to <кон_знач> do Begin <тело цикла> End;
For  <счетчик> := <нач_знач>  to <кон_знач> do

Begin

   <тело цикла>

End;

 

где:

счетчик – переменная-счетчик числа повторений;
нач_знач – выражение, определяющее начальное значение счетчика цикла;
кон_знач – выражение, определяющее конечное значение счетчика цикла;
тело цикла — операторы, которые будут повторяться.

Переменная-счетчик, выражения нач_знач и кон_знач должны быть целого типа.

Количество повторений цикла можно вычислить по формуле:  кон_знач – нач_знач +1.

Если между begin  и end   находится только один оператор, то begin и end можно не писать.

Например, в результате выполнения следующего программного кода:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
tab1:=' ';
for i:= 1 to 5 do
begin
tab1:= tab1 + IntToStr(i) + ' ' + IntToStr(i*i) + chr(13);
end;
tab1:=' '; for i:= 1 to 5 do begin tab1:= tab1 + IntToStr(i) + ' ' + IntToStr(i*i) + chr(13); end;
tab1:=' ';
for i:= 1 to 5 do
begin
   tab1:= tab1 + IntToStr(i) + ' ' + IntToStr(i*i) + chr(13);
end;

 

переменная tabl будет содержать изображение таблицы квадратов чисел.

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

Операторы цикла с условием while и repeat

Операторыwhile и repeat используются в том случае, когда некоторую последовательность действий надо выполнить несколько раз, причем необходимое число повторений во время разработки программы не известно и может быть определено только во время работы программы.

Оператор цикла с предусловием while .. do

Общий вид оператора:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
While условие do
begin
<тело цикла>
end;
While условие do begin <тело цикла> end;
While условие do

begin

   <тело цикла>

end;

 

где условие – выражение логического типа, определяющее условие выполнения тела цикла. Операторы тела цикла  выполняются, пока условие не станет ложным (False).

Оператор цикла с постусловием и repeat… until

Общий вид оператора:

repeat

   <тело цикла>

until условие

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

Операторы тела цикла выполняются до тех пор, пока условие не станет истинным (False).

Обратите внимание на различия. В операторе while do выход из цикла происходит тогда, когда условие станет ложным, а в операторе repeat … until – когда условие станет истинным.

Более подробно об операторах цикла можно посмотреть в уроках по языку Паскаль.

Практическая работа

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

Доход по вкладу




Ход выполнения работы

1. Загрузите Lazarus, создайте новый проект. Сохраните файлы проекта в папке Доход по вкладу.

2. Создайте интерфейс по образцу.

3. Напишите обработчик события для кнопки Вычислить.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
procedure TForm1.Button1Click(Sender: TObject);
var
sum:real; // сумма вклада
pr: real; // процентная ставка
period: integer; // срок вклада
profit: real; //доход по вкладу
sum2: real; //сумма при вычислении
//методом сложных процентов
i: integer;
begin
sum:=StrToFloat(Edit1.text);
pr:=StrToFloat(Edit2.text);
period:=StrToInt(Edit3.text);
if RadioGroup1.ItemIndex=0 then
// Выбран переключатель Простые проценты
profit:=sum*(pr/100/12)*period
else
// Выбран переключатель Сложные проценты
begin
sum2:=sum;
for i:=1 to period do
sum2:= sum2+sum2*(pr/100/12);
profit:=sum2-sum;
end;
sum:=sum+profit;
Label4.Caption:='Доход: '+FloatToStrF(profit,ffFixed,8,2)
+#13+'Сумма в конце срока вклада: '+FloatToStrF(sum, ffFixed,8,2);
end;
procedure TForm1.Button1Click(Sender: TObject); var sum:real; // сумма вклада pr: real; // процентная ставка period: integer; // срок вклада profit: real; //доход по вкладу sum2: real; //сумма при вычислении //методом сложных процентов i: integer; begin sum:=StrToFloat(Edit1.text); pr:=StrToFloat(Edit2.text); period:=StrToInt(Edit3.text); if RadioGroup1.ItemIndex=0 then // Выбран переключатель Простые проценты profit:=sum*(pr/100/12)*period else // Выбран переключатель Сложные проценты begin sum2:=sum; for i:=1 to period do sum2:= sum2+sum2*(pr/100/12); profit:=sum2-sum; end; sum:=sum+profit; Label4.Caption:='Доход: '+FloatToStrF(profit,ffFixed,8,2) +#13+'Сумма в конце срока вклада: '+FloatToStrF(sum, ffFixed,8,2); end;
procedure TForm1.Button1Click(Sender: TObject);
var

   sum:real;                  // сумма вклада

   pr: real;                  // процентная ставка

   period: integer;           // срок вклада

   profit: real;              //доход по вкладу

   sum2: real;                //сумма при вычислении

                              //методом сложных процентов

   i: integer;

begin

   sum:=StrToFloat(Edit1.text);

   pr:=StrToFloat(Edit2.text);

   period:=StrToInt(Edit3.text);

   if RadioGroup1.ItemIndex=0 then

     // Выбран переключатель Простые проценты

     profit:=sum*(pr/100/12)*period

else

    // Выбран переключатель Сложные проценты

   begin

      sum2:=sum;

      for i:=1 to period do

         sum2:= sum2+sum2*(pr/100/12);

      profit:=sum2-sum;

   end;

   sum:=sum+profit;

   Label4.Caption:='Доход: '+FloatToStrF(profit,ffFixed,8,2)

   +#13+'Сумма в конце срока вклада: '+FloatToStrF(sum, ffFixed,8,2);

end;

 

4. Проверьте работу приложения.

До встречи в следующем уроке!

Подписаться
Уведомить о
guest

1 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Юрий
Юрий
1 год назад

«…пока условие не станет истинным (False)…»
Истинно испокон веков было (True)