Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
21 ошибка прогр... 64536
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

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

Принадлежит ли точка пересечению двух окружностей на Turbo Pascal + Отче...
моделирование процесса поступления заявок в ЭВМ на GPSS + Пояснительная ...
Метод конечных разностей для интерполяции/экстраполяции на Delphi

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Оператор цикла 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 Апрель 03 2010 21:42:31 · 2 Комментариев · 10473 Прочтений · Для печати

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


Комментарии
Татьяна Ноябрь 18 2010 11:28:02
Извините, но в Вашем коде с примерами, например, DemoCalc, есть досадные опечатки:
Rezult :*= Х/Y должно быть If Y<> 0 then Rezult := Х/Y;
И не лучше было бы вместо
Readln (Ans);
написать
Ans:=ReadKey ; ?
Также вызывает удивление такая запись <параметр цикла>:<=82... Знак ':' для чего? Может <параметр цикла><=82.
диана Декабрь 16 2010 09: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...
Шаблон для новост...

Случайные загрузки
DeleteEdit
Error mod
Измерение тактово...
CarGame [Исходник...
Preview
Игра "Астероиды" ...
Просмотр файлов и...
Простой пример ка...
Rss Parser
DiZsubmit
CoolHints2k
DemoEdit [Исходни...
Панель случайной ...
32 урока по Delphi
Indy in Depth Глу...
Abbrevia
RxLIB
PHP 5 на примерах
Visual Basic for ...
Создание отчетов ...

Топ загрузок
Приложение Клие... 100590
Delphi 7 Enterp... 94114
Converter AMR<-... 20134
GPSS World Stud... 16192
Borland C++Buil... 13543
Borland Delphi ... 9524
Turbo Pascal fo... 7157
Калькулятор [Ис... 5378
Visual Studio 2... 5064
FreeSMS v1.3.1 3582
Случайные статьи
Конструктор копиро...
Программный продукт
Играть в Кекс на с...
Листинг 9.8. Двоич...
ДОПУСТИМЫЕ СПОСОБЫ...
только соединиться...
TMemoryStream
Создание XHTML-при...
Создаем правила бр...
Какие из следующих...
Перегрузка шаблоно...
Ветвление
Вулкан казино игро...
зательно
Если у клиента либ...
Процесс подъема но...
Переменные объекты
Оптимизация кода
Спец. команды
Режимы прогрева
Определение шаблон...
Содержание
Практикум 16-1: за...
3. Это избыточное ...
5.1. Принципы
Статистика



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


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