Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

Пользователей: 13,362
новичок: uvapke
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Медиа плейер на Delphi + Пояснительная записка
Программа тестирования и обучающая программа по математике на Turbo Pasc...
Меры близости на векторах в Delphi + Блок схемы

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


В случаях, когда число повторений может быть заранее известно, для организации циклической обработки информации применяется оператор повтора for. Часто этот оператор повтора называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной.
Оператор повтора for состоит из заголовка и тела цикла.
Данный оператор может быть представлен в двух форматах:
for <параметр цикла> :== to do <оператор>;
for <параметр цикла> := downto do <оператор>;



где Sl и S2 — выражения, определяющие соответственно начальное и конечное значе-ния параметра цикла;
for ... do — заголовок цикла;
<оператор>—тело цикла.
Тело цикла может быть простым или составным оператором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного.
Заголовок оператора повтора for определяет:
• диапазон изменения значений управляющей переменной (параметра цикла) и одновременно число повторений оператора, содержащегося в теле цикла;
• направление изменения значения параметра цикла (возрастание — to или убывание — downto).

Пример.
for I:= 1 to 100 do Read (M[I]); {Чтение элементов массива}
for I:= 100 downto 1 do Write (M[I]); {Вывод элементов массива}



При первом обращении к оператору for вначале вычисляются выражения S1, S2 и осуществляется присваивание
<параметр цикла>:=S1.



После этого циклически повторяются следующие действия.
1. Проверяется условие
<параметр цикла>:<=82.



2. Если условие выполнено, то оператор for продолжает работу (выполняется оператор в теле цикла), если условие
<параметр цикла>:<=82


не выполнено, то оператор for завершает работу, и управление в программе передается на опера-тор, следующий за циклом.
3. Значение управляющей переменной изменяется на +1 (to) или —1 (downto) и далее с п. 1. Обратите внимание, что шаг изменения управляющей переменной — единица.
На использование управляющей переменной (параметра цикла) в цикле for налагаются следующие ограничения.
1. В качестве параметра должна использоваться простая переменная, описанная в текущем блоке.
2. Управляющая переменная должна иметь дискретный тип (как правило, integer).
3. Начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной. При этом допустим любой скалярный тип, кро¬ме вещественного.
4. В теле цикла запрещается явное изменение значения управляющей переменной (например, оператором присваивания).
5. После завершения оператора значение управляющей переменной становится неопределенным, если только выполнение оператора не было прервано операто-ром перехода.
Примером действия оператора for может служить программа DemoFor, которая выводит на экран таблицу перевода из градусов по шкале Цельсия(С) в градусы по Фаренгейту(Р) для значений от 15°С до 30°С с шагом 1 градус. Перевод осуществляется по формуле: F = С* 1.8+32.
program DemoFor;
var
I: integer ;
F: real;
begin
Writeln (' Температура ');
for I:= 15 to 30 do {Заголовок цикла с параметром}
begin {Начало тела цикла}
F:= I*1.8+32;
Writeln ('По Цельсию= ',I,' по Фаренгейту= ', F:5:2)
end; {Конец тела цикла}
end.



В блоке описания переменных описаны параметр цикла I типа integer и переменная F — температура по Фаренгейту типа real. Переменная I, помимо функций управляющей переменной, является переменной, хранящей целочисленные значения температуры по шкале Цельсия. В начале выполнения программы на экран выводится надпись 'Температура', а затем оператором повтора выводится таблица соотношения температуры в шкалах Цельсия и Фаренгейта. Печать таблицы выполняется оператором
Writeln ('По Цельсию= ',I,' по Фаренгейту= ', F:5:2)



Цикл выполняется следующим образом.
При первом обращении к оператору for вычисляются значения начального (15) и ко-нечного (30) параметров цикла, и управляющей переменной I присваивается начальное значение 15.
Затем циклически выполняется следующее:
1. Проверяется условие I<=30.
2. Если оно соблюдается, то выполняется составной оператор в теле цикла, т. е. рассчитывается значение выражения 1*1.8+32, затем оно присваивается переменной F, и на экран выводится сообщение
'По Цельсию= ',I,' по Фаренгейту= ', F:5:2



Если условие I<=30 не соблюдается, т. е. как только I станет > 30, оператор те¬ла цикла не выполняется, а управление в программе передается за пределы опера¬тора for, в нашем примере на оператор end;. Программа завершает работу.
3. Значение параметра цикла I увеличивается на единицу, и управление передается в заголовок цикла for для проверки условия.
Далее цикл повторяется с п.1.
Вторым примером оператора цикла for может служить программа, которая печатает на экране символы американского стандартного кода обмена информацией (ASCII) в порядке убывания кода.
program DemoASCII;
var
A: integer;
begin
for A:= 255 downto 0 do {Цикл с убыванием параметра}
Writeln ('код символа = ',А, ' символ = ', Chr(A));
end.



В данной программе применяется цикл for с убыванием значения управляющей переменной А (используется указание downto — убывание).
Рассмотрим пример программы, имитирующей арифметический калькулятор, которой используются операторы присваивания, условия и повтора.
program DemoCalc;
var
X, Y, Rezult : real;
Operation, Ans: char;
begin
repeat {Начало цикла с постусловием}
Write ('X = ');
Read (X); {Считывание первого операнда}
Write ('Y = ');
Readln (Y); {Считывание второго операнда}
Writeln ('операция (+, -, *, /) >');
Readln (Operation); {Считывание знака операции}
case Operation of {Выбор арифметического действия}
'+' : Rezult := X+Y;
'-' : Rezult := X-Y;
'*' : Rezult := X*Y;
'/' : Rezult := Х/Y;
else
Writeln ('Ошибка ввода');
end;
Writeln (X,Operation,Y,'=',Rezult); {Печать арифметического выражения}
Write ('Продолжить (Y/N)');
Readln (Ans); {Считывание ответа на вопрос}
Until (Ans='M') or (Ans='n'); {Проверка условия окончания цикла}
end.



В разделе описания переменных описаны переменные — операнды X, Y и результат арифметических операций Rezult вещественного типа, а также переменная Operation символьного типа, в которой хранится значение знака арифметической операции, и Ans — переменная символьного типа, которой присваивается значение "Y" или 'V".
Процесс выполнения арифметических операций калькулятором организован с помо-щью оператора repeat и продолжается до тех пор, пока переменной Ans не будет присвоено значение V или 'п'.
В теле цикла сначала запрашиваются и считываются с клавиатуры значения
операндов:
Write ('X = ');
Read (X);
Write ('Y = ');
Readln (Y);



затем запрашивается и считывается знак арифметической операции
Writeln ('операция (+, -, *, /) >');
Readln (Operation);



Оператор выбора case по значению переменной Operation (селектор) выбирает знак операции и в зависимости от его значения выполняет арифметическую операцию. Например, если значение переменной Operation равно значению константы выбора '—', то вы-полняется оператор присваивания Rezult := Х—Y и т. д. Если значение переменной Operation не равно ни одному значению константы выбора, то управление передается на опера-тор, стоящий за словом else, и на экран выводится сообщение 'Ошибка ввода'. Если знак операции был введен верно, то на экран выводится сообщение вида: 5 —3 = 2.
После этого на экран выводится запрос 'Продолжить (Y/N)' и с клавиатуры считывается значение переменной символьного типа Ans. Если значение выражения (Ans='N') or (Ans='n') будет False, то цикл повторится вновь, иначе цикл будет завершен и управление в программе будет передано на оператор end.
Опубликовал Kest April 03 2010 17:42:31 · 2 Комментариев · 11397 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Татьяна November 18 2010 08:28:02
Извините, но в Вашем коде с примерами, например, DemoCalc, есть досадные опечатки:
Rezult :*= Х/Y должно быть If Y<> 0 then Rezult := Х/Y;
И не лучше было бы вместо
Readln (Ans);
написать
Ans:=ReadKey ; ?
Также вызывает удивление такая запись <параметр цикла>:<=82... Знак ':' для чего? Может <параметр цикла><=82.
диана December 16 2010 06:13:56
smiley спасибо
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Работа с картотеками
Delphi 2006 - Спр...
BDEPack
Философия C++. Пр...
Delphix Sample [И...
Иллюстрированный ...
PHP: настольная к...
RAS
CwstatusBar
Программирование ...
PHP5. Профессиона...
Prolog Interprete...
Visual Basic for ...
Программа рисует ...
DemoEdit [Исходни...
C++ Builder: Книг...
Xrumer 4 Platinum...
AntiRus
C# 2005 и платфор...
Доступа к БД Fire...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97828
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5981
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Салоны красоты Тюмень
ПРЕОБРАЗОВАНИЕ АРИ...
Цели, стоящие пере...
Волоконно-оптическ...
Можно ли найти сам...
Обращение к памяти...
Следование правилам
Онлайн-казино Пари...
Введение в PHP
А.4. ЗДРАВЫЙ СМЫСЛ
каталогов полномоч...
Решение головоломк...
ЭЛЕМЕНТЫ ПРОЦЕДУРЫ...
Ц - Алфавитный ука...
Раздел описания ме...
Внешняя сортировка...
ПОСТРОЕНИЕ ЭКСПЕРТ...
Если ГВСканал связ...
Оценка ущерба
к ресурсам для уче...
Ошибка EOLESYS..OP...
Игровые автоматы. ...
Загрязнение объект...
Алгоритм Флойда из...
Игровые платформы,...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?