24326

Исследование циклических конструкций Java

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

Исторические личности и представители мировой культуры

Оператор цикла for(цикл со счетчиком). Оператор цикла while (цикл с предусловием). Оператор цикла do...while (цикл с постусловием). Конструкции перехода (прерывания)

Русский

2014-10-12

183 KB

5 чел.

ПЗ-6-2

Исследование циклических конструкций Java

   Подготовка к занятию

1. Оператор цикла for(цикл со счетчиком)

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

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

4. Конструкции перехода (прерывания)

 

На занятии рассматривается порядок применения циклических конструкций языка Java при разработке приложений для Java SE в IDE NetBeans.

Для выполнения заданий этого занятия требуются программное обеспечение и ресурсы, перечисленные ниже:

Программное обеспечение

Ресурс для загрузки

Комплект для разработчика на языке Java (JDK) с IDE NetBeans

JDK 7u7 with NetBeans 7.2

http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-432126.html

Тестовый редактор TextPad 6

http://www.textpad.com/download/

Перед началом работы создайте на личном флеш-диске каталоги типа:

E:\NBprojectsFIO\pz62_FIOдля записи результатов работы – проектов NetBeans IDE.

E:\JavaFIO\pz62_FIO –- для записи результатов работы, полученных в TextPad.

Примечание: FIO – аббревиатура от фамилии, имени, отчества студента. Например, для Павленко Сергея Леонидовича FIO = PSL.

Подготовка к занятию

П1. Создание и настройка проекта

Используя методку, рассмотренную на  пз2, создайте и настройте в NetBeans IDE проект с именем MyApp62_FIO.

П.2. Добавление кода к автоматически созданному исходному файлу

К коду главного класса добавьте вывод сообщения "Исследование циклических конструкций Java" путем замены строки

           // TODO code application logic here

строкой 

           System.out.println("Исследование циклических конструкций Java");

       

Сохраните изменения путем выбора команды "Файл" > "Сохранить".

П3. Компиляция и выполнение проекта

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

Выберите команду "Выполнить" > "Запустить главный проект" (F6).

На экране окно NetBeans IDE должно принять вид, подобный приведенному на рис.1.

Рис. 1

Если все получилось – то Вы готовы к выполнению заданий занятия.

Циклические конструкции

В языке Java есть три цикклические конструкции:

  •  оператор цикла for (цикл со счетчиком)
  •  оператор цикла while (цикл с предусловием)
  •  оператор цикла do...while (цикл с постусловием)

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

Оператор "++" называется инкрементным ("увеличивающим"), а "--" декрементным ("уменьшающим"). У этих операторов имеются две формы, постфиксная (наиболее распространенная, когда оператор ставится после операнда) и префиксная (используется очень редко, в ней оператор ставится перед операндом).

Для любой числовой величины x выражение x++ или ++x означает увеличение x на 1, а выражение x-- или --x означает уменьшение x на 1.

Различие двух форм связано с тем, когда происходит изменение величины – после вычисления выражения, в котором используется оператор, для постфиксной формы, или до этого вычисления – для префиксной.

Например, присваивания j=i++ и j=++i дадут разные результаты. Если первоначально i=0, то первое присваивание даст 0, так как i увеличится на 1 после выполнения присваивания. А второе даст 1, так как сначала выполнится инкремент, и только потом будет вычисляться выражение и выполняться присваивание. При этом в обоих случаях после выполнения присваивания i станет равно 1.

1. Оператор цикла for(цикл со счетчиком)

1.1. Справочная информация

for(блок инициализации; условие выполнения тела цикла;

   блок изменения счетчиков)

оператор;

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

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

После каждого выполнения тела цикла (очередного шага цикла) выполняются операторы блока изменения счетчиков. Они должны разделяться запятыми.

Пример:

for(int i=1,j=5; i+j<100; i++,j=i+2*j){

 ...

};

Каждый из блоков оператора for является необязательным, но при этом разделительные ";" требуется писать.

Наиболее употребительное использование оператора for – для перебора значений некоторой переменной, увеличивающихся или уменьшающихся на 1, и выполнения последовательности операторов, использующих эти значения. Переменная называется счетчиком цикла, а последовательности операторов – телом цикла.

1.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы с оператором цикла for.

(Это может быть код, решающий следующие задачи: вычисление суммы последовательных чисел,

вычисление суммы четных чисел – последовательных и в интервале, вычисление суммы нечетных чисел – последовательных и в интервале, вычисление факториала и т.п.)

б). Дополните строки программы, введенные согласно п.1.2а, строчными комментариями.

в). Для каждого примера получите скрины окон кода и вывода по образцу рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.1.2а и п.1.2б,  в блочном комментарии.

Примечание:

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


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

2.1. Справочная информация

while(условие)

   оператор;

Пока условие сохраняет значение true — в цикле выполняется оператор, иначе — действие цикла прекращается. Если условие с самого начала false, цикл прекращается, и тело цикла не выполнится ни разу.

Цикл while обычно применяют вместо цикла for в том случае, если условия продолжения достаточно сложные. В отличие от цикла for в этом случае нет формально заданного счетчика цикла, и не производится его автоматического изменения. За это отвечает программист. Хотя вполне возможно использование как цикла for вместо while, так и наоборот. Многие программисты предпочитают пользоваться только циклом for как наиболее универсальным.

Пример:

i=1;

x=0;

while(i<=n){

 x+=i;//эквивалентно x=x+i;

 i*=2;//эквивалентно i=2*i;

};

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

double a=…;

double b=…;

double dx=…;

double x=a;

while(x<=b){

 …

 x=x+dx;

};

Как мы уже знаем, данный цикл будет обладать неустойчивостью в случае, когда на интервале от a до b укладывается целое число шагов. Например, при a=0, b=10, dx=0.1 тело цикла будет выполняться при x=0, x=0.1, …, x=9.9. А вот при x=10 тело цикла может либо выполниться, либо не выполниться – как повезет! Причина связана с конечной точностью выполнения операций с числами в формате с плавающей точкой. Величина шага dx в двоичном представлении чуть-чуть отличается от значения 0.1, и при каждом цикле систематическая погрешность в значении x накапливается. Поэтому точное значение x=10 достигнуто не будет, величина x будет либо чуть-чуть меньше, либо чуть-чуть больше. В первом случае тело цикла выполнится, во втором – нет. То есть пройдет либо 100, либо 101 итерация (число выполнений тела цикла).

2.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы с оператором цикла while.

(Это может быть код, решающий следующие задачи: вычисление суммы последовательных чисел,

вычисление суммы четных чисел – последовательных и в интервале, вычисление суммы нечетных чисел – последовательных и в интервале, вычисление факториала и т.п.)

б). Дополните строки программы, введенные согласно п.2.2а, строчными комментариями.

в). Для каждого примера получите скрины окон кода и вывода по образцу рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.2.2а и п.2.2б,  в блочном комментарии.

Примечание:

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

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

3.1. Справочная информация

do

 оператор;

while(условие);

Если условие принимает значение false, цикл прекращается. Тело цикла выполняется до проверки условия, поэтому оно всегда выполнится хотя бы один раз.

Пример:

int i=0;

double x=1;

do{

 i++; // i=i+1;

 x*=i; // x=x*i;

}

while(i<n);

Если с помощью оператора do…while организуется цикл с вещественным счетчиком или другой проверкой на равенство или неравенство чисел типа float или double, у него возникают точно такие же проблемы, как описанные для циклов for и while.

При необходимости организовать бесконечный цикл (с выходом изнутри тела цикла с помощью оператора прерывания) часто используют следующий вариант:

do{

 …

}

while(true);

3.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы с оператором цикла do … while.

(Это может быть код, решающий следующие задачи: вычисление суммы последовательных чисел,

вычисление суммы четных чисел – последовательных и в интервале, вычисление суммы нечетных чисел – последовательных и в интервале, вычисление факториала и т.п.)

б). Дополните строки программы, введенные согласно п.3.2а, строчными комментариями.

в). Для каждого примера получите скрины окон кода и вывода по образцу рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.3.2а и п.3.2б,  в блочном комментарии.

Примечание:

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


4
. Конструкции перехода (прерывания)

4.1. Справочная информация

Довольно часто требуется при выполнении какого-либо условия прервать цикл и перейти к выполнению другого алгоритма или очередной итерации цикла. В Java имеются гибкие и структурные средства для решения этих проблем - операторы continue и break:

Операторы continue и break используются в двух вариантах – без меток для выхода из текущего (самого внутреннего по вложенности) цикла, и с меткой - для выхода из помеченного ей цикла. Меткой является идентификатор, после которого стоит двоеточие. Метку можно ставить непосредственно перед ключевым словом, начинающим задание цикла ( for, while, do ).

  •  continue; – прерывание выполнения тела цикла и переход к следующей итерации (проверке условия) текущего цикла;
  •  continue имя метки; – прерывание выполнения тела цикла и переход к следующей итерации (проверке условия) цикла, помеченного меткой ( label );
  •  break; – выход из текущего цикла;
  •  break имя метки; – выход из цикла, помеченного меткой;

4.2. Задание для практической работы

а). Дополните код главного класса проекта строками,  выполнение которых в приложении  позволит пояснить особенности работы операторов continue и break.

б). Дополните строки программы, введенные согласно п.4.2а, строчными комментариями.

в). Для каждого побитового оператора получите скрины окон кода и вывода по примеру рис.2 и рис.3(см. пз-4).

г). Разместите строки кода, введенные согласно п.4.2а и п.4.2б,  в блочном комментарии.

Примечание:

Выполнение заданий по п.4.2а и п.4.2б для очередного побитового оператора осуществляйте после выполнения задания по п.4.2г для предыдущего.


4.
Отчет о занятии

Полученные в ходе занятия результаты оформить в виде отчета средствами MS Word и записать в файл pz62_FIO.doc. Отчет должен содержать:

1. Тему занятия и учебные вопросы.

2. Скрины с ответами и результатами выполнения всех действий по учебным вопросам занятия – для личных проектов NetBeans IDE.

3. Выводы с анализом полученных результатов – лучше отдельно по вопросам занятия.

4. Фамилию, имя и отчество студента, представляющего отчет.

По итогам занятия создать папку pz62-Фамилия, в которой разместить:

- файл отчета pz6_FIO.doc

- папку pz62_FIO с папкой проекта  MyApp62_FIO

Папку pz62-Фамилия поместить в архив (rar, zipбез пароля!!!) и отослать преподавателю по e-mail.


7


 

А также другие работы, которые могут Вас заинтересовать

8366. Демографический кризис в Китае и проблемы связанные с ним 32.41 KB
  Введение. Весь мир взволнован проблемами постоянно растущей численности населения Китая. Приводятся все новые факты, подтверждающие реальность китайской демографической угрозы. Огромное население придает всем проблемам в Китае масштабность, глубину...
8367. Заметки о китайском социализме 88 KB
  Заметки о китайском социализме. Опыт Китая позволяет понять, что необходимо сделать для строительства эффективного социалистического общества XXI века. Понятно, что это будет общество, отличающееся от социализма, обоснованного в других условиях К. М...
8368. Основы разговорного китайского языка 103.5 KB
  Основы разговорного китайского языка В пособии приводиться базовые фразы в форме диалогов, упражнения для повторения пройденной лексики, упражнения для перевода с русского языка на китайский для закрепления грамматических форм. Тексты, приведенные...
8369. Все о китайском чае 103 KB
  Во все времена Китай считался одним из главных производителей чая. За долгую историю производства чая в это стране были открыты и внедрены в практику различные способы выращивания чайного листа, продуманы и апробированы принципы его предварительной ...
8370. Китайский и японский новый год 41.5 KB
  Китайский новый год. Существует древнее суеверие, которое не позволяет в первый день Нового года есть мясо. Считается, что такая пища способна отвратить от человека счастье на целый год. Также не полагается мыть волосы в этот день, поскольку можно с...
8371. Китайское изобразительное искусство 53 KB
  Китайское изобразительное искусство Китайская национальная живопись гохуа появилась в глубокой древности. Она отличается большим своеобразием и совершенно отлична по материалу, технике и художественным средствам от европейской живописи. Китайские ка...
8372. Великая китайская стена 32 KB
  Великая китайская стена (кит.трад., упр, пинь инь: буквально: Длинная стена или кит. трад., упр., пиньинь, буквально: Длинная стена в 10 000 ли)...
8373. Великая китайская стена. Архитектурное сооружение 27.5 KB
  Великая китайская стена Эта очень однородная традиционная архитектура повторяется на протяжении веков установлением типов простых прямоугольных зданий невысокого силуэта, построенных в соответствии с канонами пропорций и методов строительства, котор...
8374. Велика Китайська стіна 24.5 KB
  Велика Китайська стіна - символ Китаю, одна із найграндіозніших споруд усіх часів і народів. Стіна починається недалеко від Ляодунської затоки і проходить по горах через Північний Китай і пустелю Гобі, довжина стіни зі сходу на захід - 6700 км....