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


 

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

40867. Текст, упражнения и вопросы. Французский язык 72.5 KB
  Patrick adore les jeux-concours intellectuels où il faut répondre aux questions sur l’histoire, la littérature, la langue. Mais les parents ne lui permettent pas de passer beaucoup de temps devant l’écran.
40868. Частичный артикль (du, de la) 104 KB
  Tu ne l suis ps– Non j’i déjà mnqué quelques épisodes et je n’ime ps voir les feuilletons qund je ne sis ps le début de l’histoire. Heureusement il y des puses publicitires: comme ç j’i le temps d’ller prendre une tsse de thé à l cuisine. Dns ce feuilleton on prle des ventures d’un petit grçon. pprenez les mots: lit m молоко cfé m кофе jus m – сок vin m – вино pin m хлеб beurre m – сливочное масло fromge m сыр fromge m blnc творог poisson m рыба jmbon m ветчина sucisson m колбаса sucre m сахар sel m соль poivre...
40869. Futur Simple глаголов III группы 128 KB
  Vous désirez Bonjour Monsieur. Donnezmoi s’il vous plît un kilo de pommes et un kilo de poires. Et vezvous des frises Non Mdme ce n’est ps l sison. Voulezvous utre chose lors je prendri des frises surgeléesзамороженные u supermrché.
40870. Относительные местоимения qui, que 117 KB
  vezvous quelque chose de léger Bien sûr Mdme. Vous désirez une entrée Pour moi une slde de tomtes et de concombres s’il vout plît. Qu’estce que vous nous conseillez comme dessert Nos gteux sont délicieux. Je peux ussi vous recommnder notre trte ux frises et des glces différentes.
40871. Определенный артикль во французском языке 88 KB
  Mdemoiselle vous vez des chussures en cuir mrron Quelle est votre pointure Monsieur Je fis du 44. TEXTE 24 PPRENDRE UNE LNGUE ETRNGERE Il n’y ps longtemps Jcques reçu pr son courriel l'invittion à une conférence interntionle sur les problèmes des grndes villes. Il y fer un rpport sur les tendnces ctuelles de l'rchitecture et prticiper à une des tbles rondes. Il pprend cette lngue dès septembre et vers l fin des cours il fit des progrès remrqubles.
40872. Imparfait в придаточном предложении 103 KB
  Pour voir le poste que je veux il fut prler u moins deux lngues étrngères. Mon nglis est ssez bon qunt u russe je ne l’pprends que dès septembre. Oh On dit que cette lngue est très difficile Сomment rrivestu à l’étudier Mis non ce n’est ps trop dur Pourtnt il fut trviller ferme. Et qu’estce que tu sis déjà fire Bon je sis lire et trduire des textes dptés je peux m’exprimer sur quelques sujets liés à l vie cournte et à m profession.
40873. Предпрошедшее время. Plus-que-parfait 143 KB
  Estce que tu es un bon conducteur Je pense que oui mis il fut être très ttentif. Oui vriment être u volnt c’est ssez énervnt On peut voir une pnne ou un ccident on risque toujours de pyer une mende en prlnt u téléphone portble u volnt ou en oublint d’ttcher l ceinture de sécurité ремень безопасности. Bon c’est ton choix 2. Trduisez les questions et répondezy: 1.
40874. Cогласование времен во французском языке 124.5 KB
  Mis il y bien longtemps que je ne suis ps descendu dns le métro. Heureusement ce n’étit ps ux heures de pointe lors les voitures n’étient ps bondées et j’i été ssis pendnt presque tout le trjet. J’i enfin lu à l fin le livre que tu m’vis donné. Trduisez les questions et répondezy : 1.
40875. Имя существительное во французском языке 68.5 KB
  Le moment des vacances et des voyages est enfin venu. Vous allez partir, peut-être seul pour la première fois, peut-être très loin... Pour vous aider à comprendre si vous êtes prêt, voici vingt questions de notre enquête. Répondez par oui ou par non et calculez vos points. Puis consultez le résultat.