Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Цикл с переменной





Весьма часто возникает необходимость просто выполнить участок программы заданное число раз. Конечно, можно организовать такой цикл при помощи оператора WHILE. Например, нам нужно перебрать все целые числа от 10 до 20 и просуммировать их. Сделать это можно следующим образом:

 

VAR i: BYTE; s: WORD;

BEGIN

i:=10;

s:=0;

WHILE i<=20 DO

BEGIN

s:=s+i;

i:=i+1

END;

 

Такая программа работоспособна, но громоздка и некрасива.

Есть способ лучше – использовать цикл с переменной FOR..TO. Его общий вид таков:

 

FOR переменная:=начальное значение TO конечное значение DO

оператор;

 

или

 

FOR переменная:=начальное значение TO конечное значение DO

begin

{последовательность инструкций, которая называется телом цикла }

end;

 

Оператор FOR автоматически перебирает значения целой переменной от начального до конечного c шагом 1 и при каждом увеличении переменной на единицу выполняет оператор. Обратите внимание, что оператор FOR работает только с целыми числами и шаг приращения всегда равен единице. Также обратите внимание, что в случае, если начальное значение счетчика превышает конечное значение счетчика, то последовательность операторов между begin и end ни разу не будет выполнена.

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

Перепишем нашу программу, используя оператор FOR:

 

VAR i: BYTE; s: WORD;

BEGIN

s:=0;

FOR i:=10 TO 20 DO

s:=s+i;

 

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

А что делать, если нужно перебирать не целые, а дробные значения? Единственный выход – по-прежнему перебирать целые, а в теле цикла делить их на 10,100,1000… для получения дробного числа. Например, просуммируем числа от 0.1 до 1.2 с шагом 0.1:

 

VAR i:BYTE; s:REAL;

BEGIN

s:=0.0; { обязательно 0.0, а не 0 – это вещественное число }

FOR i:=1 TO 12 DO

s:=s+i/10;

 

Иногда нужно перебирать числа в обратную сторону – от большего к меньшему. Обычный цикл FOR в случае, когда начальное значение переменной цикла меньше конечного, вообще не будет выполняться ни разу. Однако в Delphi предусмотрен вариант цикла с переменной, в котором шаг равен минус единице. Все отличие состоит в том, что слово TO заменяется на DOWNTO:

FOR i:=20 DOWNTO 10 DO…

На блок-схемах цикл с переменной изображается так, как показано на рис. 3.

Рис. 3. Обозначение цикла с переменной на блок-схемах.

Следующая программа вычисляет сумму первых 10 элементов ряда:

1+1/2+1/3+... (значение 1-го элемента ряда связано с его номером формулой 1/1). После вычисления очередного элемента ряда в поле метки формы, предназначенное для вывода результата, выводится номер элемента ряда и его значение.

Диалоговое окно программы содержит два компонента: поле метки (Label1) и командную кнопку (Button1). Вычисление суммы ряда и вывод результата выполняет процедура обработки события onClick, текст которой приведен ниже.

 

procedure TFonnl.ButtonlClick(Sender: TObject);

var

i: integer; { номер элемента ряда }

elem: real; { значение элемента ряда }

summ: real; { сумма элементов ряда }

begin

summ:=0;

Label1.Caption:=' ';

for i:=l to 10 do begin

elem:=l/i;

Labell.Caption: =Labell.Caption +

IntToStr(i)+' '+FloatToStr(elem)+#13;

summ:=summ+elem;

end;

Labell.Caption:=Labell.Caption+

' Сумма ряда: '+FloatToStr(sunnn);

end;

 

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

 

Date: 2015-06-06; view: 466; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию