русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Инструкция цикла for()


Дата добавления: 2015-06-12; просмотров: 1152; Нарушение авторских прав


 

Все кончается рано или поздно.

Из к/ф «Гараж»

 

Для выполнения однотипных многократно повторяющихся действий использу- ют инструкции цикла. В Java существует несколько инструкций цикла. Рассмо- трим инструкцию цикла for().

Синтаксис вызова инструкции цикла for() следующий:

for(инициализация;условие;итерация){

//телоцикла

}

В круглых скобках после ключевого слова for указываются три группы, или бло- ка, выражений. Блоки разделяются точкой с запятой. Первый блок обычно назы- вается блоком инициализации. Как правило, в этом блоке размещается команда (или команды), которая перед выполнением цикла присваивает индексным пере- менным начальные значения. Второй блок — условие, при выполнении которого продолжается работа инструкции цикла. Третий блок содержит команды, которы- ми изменяются значения индексных переменных. Первый и третий блоки могут состоять из нескольких команд. Команды одного блока разделяются запятыми.

Далее, после ключевого слова for и круглых скобок в фигурных скобках идет блок команд, которые выполняются в рамках каждого цикла и фактически фор- мируют тело инструкции цикла. Если тело инструкции цикла состоит из одной команды, фигурные скобки можно не ставить. Выполняется инструкция цикла по следующему алгоритму.

Начинается выполнение инструкции цикла с блока инициализации: последо- вательно выполняются все команды этого блока. Далее проверяется условие во втором блоке. Если оно истинно (значение true), выполняются команды тела инструкции цикла (команды в фигурных скобках). Далее выполняются коман- ды третьего блока в круглых скобках и проверяется условие во втором блоке. Если условие истинно, выполняются команды основного тела инструкции цик- ла, команды блока изменения индексных переменных (третий блок), затем про- веряется условие и т. д. Вся эта процедура продолжается до тех пор, пока при проверке условия его значение не становится равным false.



По завершении инструкции цикла выполняется следующая после него инструк- ция. Обращаем внимание читателя на то, что команды первого блока инициа- лизации инструкции цикла выполняются только один раз на начальном этапе выполнения инструкции. Пример использования инструкции цикла приведен в листинге 2.6.

 

Листинг 2.6.Использование инструкции цикла for()

class UsingFor{

public static void main(String[] args){


 

Инструкция цикла for()57

 

// Индексная переменная: int i;

// Переменная для вычисления суммы: int sum=0;

// Инструкция цикла: for(i=1;i<=100;i++){ sum+=i;}

System.out.println("Сумма чисел от 1 до 100: "+sum);}

}

Программой вычисляется сумма натуральных чисел от 1 до 100. Для этого вво- дится целочисленная переменная sum, которая инициализируется с начальным нулевым значением — в эту переменную записывается значение суммы. Вы- числение суммы осуществляется посредством инструкции цикла. В нем исполь- зуется целочисленная индексная переменная i. Объявляется переменная вне инструкции цикла. В первом блоке (блок инициализации) индексной перемен- ной присваивается значение 1. Проверяется условие i<=100, то есть инструкция цикла выполняется до тех пор, пока значение индексной переменной не превы- сит значение 100. В теле инструкции цикла переменная sum увеличивается на текущее значение индексной переменной i. В третьем блоке инструкции цикла командой i++ значение индексной переменной увеличивается на единицу.

Последней командой программы выводится сообщение о значении суммы. В ре- зультате выполнения программы мы получаем сообщение:

Сумма чисел от 1 до 100: 5050

Чтобы посчитать сумму нечетных чисел в указанном диапазоне, в третьем бло- ке изменения индексной переменной команду i++ достаточно заменить коман- дой i+=2. Кроме того, индексную переменную можно инициализировать прямо в первом блоке инструкции цикла. Пример измененной программы для вычис- ления суммы нечетных чисел приведен в листинге 2.7.

 

Листинг 2.7.Вычисление суммы нечетных чисел

class UsingFor2{

public static void main(String[] args){

// Переменная для вычисления суммы: int sum=0;

// Инструкция цикла: for(int i=1;i<=100;i+=2){ sum+=i;}

System.out.println("Сумма нечетных чисел от 1 до 100: "+sum);}

}

В результате выполнения программы получаем:

Сумманечетныхчиселот1до100:2500

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


 

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

 

Листинг 2.8.Сумма нечетных чисел

class UsingFor3{

public static void main(String[] args){

int sum,i;

// Инструкция цикла: for(sum=0,i=1;i<=100;sum+=i,i+=2);

System.out.println("Сумма нечетных чисел от 1 до 100: "+sum);}

}

Индексная переменная i и переменная sum объявляются вне инструкции цикла. Инициализируются обе переменные в первом блоке. Условие выполнения ин- струкции цикла не изменилось. Третий блок состоит из двух команд: команды sum+=i, предназначенной для увеличения значения переменной sum на величину i, и команды i+=2, изменяющей значение индексной переменной. Тело инструк- ции цикла не содержит команд, поэтому после закрывающей круглой скобки стоит точка с запятой. Результат выполнения программы такой же, как и в пред- ыдущем случае. Отметим несколько принципиальных моментов.

‰ Если переменные sum и i объявить в инструкции цикла, доступными они будут только в пределах этой инструкции. С индексной переменной i в этом случае проблем не возникает, а вот последняя команда программы, в которой имеется ссылка на переменную sum, оказывается некорректной.

‰ Имеет значение порядок следования команд в третьем блоке инструкции цикла. Если команды sum+=i и i+=2 поменять местами, сначала будет изменяться зна- чение индексной переменной, а затем на это новое значение увеличиваться переменная sum. В результате сумма будет вычисляться не от 1, а от 3.

‰ Хотя тело инструкции цикла не содержит команд, точку с запятой все равно ставить нужно. Если этого не сделать, телом цикла станет следующая после инструкции цикла команда — в данном случае это команда: System.out.println("Сумма нечетных чисел от 1 до 100: "+sum)

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

Блоки инструкции цикла могут быть пустыми. В листинге 2.9 приведен пример, в котором отсутствуют команды первого блока инициализации и третьего блока изменения значения индексной переменной. При этом программа работает кор- ректно, и сумма нечетных чисел вычисляется правильно.

 

Листинг 2.9.Пустые блоки в инструкции цикла

class UsingFor4{

public static void main(String[] args){


 

Инструкция цикла while()59

 

int sum=0,i=1;

// Инструкция цикла с пустыми блоками: for(;i<=100;){

sum+=i; i+=2;}

System.out.println("Сумма нечетных чисел от 1 до 100: "+sum);}

}

Индексная переменная i и переменная для вычисления суммы sum инициали- зируются при объявлении вне инструкции цикла. Поэтому в блоке инициали- зации ничего инициализировать не нужно, и блок оставлен пустым (хотя точка с запятой все равно ставится). Второй блок с проверяемым условием остался неизменным. Третий блок также пустой. Команда i+=2, которая изменяет значе- ние индексной переменной, вынесена в тело инструкции цикла.

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

 

Листинг 2.10.В инструкции цикла все блоки пустые

class UsingFor5{

public static void main(String[] args){

int sum=0,i=1;

// Инструкция цикла со всеми пустыми блоками: for(;;){

sum+=i; i+=2;

// Выход из инструкции цикла: if(i>100) break;}

System.out.println("Сумма нечетных чисел от 1 до 100: "+sum);}

}

Поскольку второй блок пустой, то формально мы имеем дело с бесконечным ци- клом. В таком цикле необходимо предусмотреть возможность выхода из цикла. Для этого последней в теле инструкции цикла размещена команда if(i>100) break с условной инструкцией. При выполнении условия, проверяемого в условной инструкции, командой break осуществляется завершение инструкции цикла.

 



<== предыдущая лекция | следующая лекция ==>
Условная инструкция switch() | Инструкция цикла while()


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.831 сек.