Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Java. Експрес-курс: Цикл for

  1. Використання декількох змінних
  2. Робота з масивами
  3. аналог foreach
  4. вкладені цикли
  5. трикутник Флойда

Наша взаимовыгодная связь https://banwar.org/

Стаття проплачена кішками - всесвітньо відомими виробниками кошенят.

Якщо стаття вам сподобалася, то можете підтримати проект .

Конструкція for управляє циклами. Команда виконується до тих пір, поки управляє логічний вираз не стане хибним.

Блок-схема.

Цикл for є найбільш поширеним циклом в програмуванні, тому його слід вивчити. Цикл for проводить ініціалізацію перед першим кроком циклу. Потім виконується перевірка умови циклу, і в кінці кожної ітерації відбувається зміна керуючої змінної. Виглядає наступним чином:

for (ініціалізація; логічне вираз (умова); крок (ітерація)) команда

Будь-яке з трьох виразів циклу (ініціалізація, логічне вираз або крок) можна пропустити. Перед виконанням кожного кроку циклу перевіряється умова циклу. Якщо умова виявиться помилковим, то виконання продовжиться з інструкції, наступної за конструкцією for.

Пам'ятайте, що вираз ініціалізації виконується один раз, потім обчислюється умова, яка повинна бути булевим виразом.

Як правило, цикл for використовують для перебору. Як ім'я першої змінної часто використовують i (скор. Від init), але ви можете використовувати будь-яке ім'я.

Найпростіший приклад:

for (int x = 0; x <9; x = x + 1) mInfoTextView.append ( "\ nЗначеніе x:" + x);

У цьому прикладі змінної x присвоюється початкове значення, рівне нулю. Потім виконується перевірка умови в логічному вираженні (x <9), якщо результат перевірки правдивий, то виконується оператор після висловлення циклу. Після чого процес повторюється. Процес триває до тих пір, поки результат перевірки умови не стане хибним.

Третє вираз в циклі - крок, тобто, на яке значення потрібно змінити змінну. Строго кажучи, в такому вигляді (x = x + 1) сучасні програмісти не пишуть, тому що є укорочена форма запису (x ++). Попередній приклад можна переписати по іншому:

for (int x = 0; x <9; x ++)

Цей запис є класичною і правильною, якщо нам потрібно порахувати від 0 до 8. Може виникнути спокуса написати, наприклад, так:

for (int x = 0; x

Результат буде таким же, але такий код небажаний. Намагайтеся писати традиційно. Особливо це проявляється при роботі з масивами.

Збільшення значення змінної на одиницю - дуже поширений випадок. Але це не є обов'язковою умовою циклу, ви можете встановити крок і за допомогою множення, віднімання і інших дій. Наприклад, ми хочемо вивести процес зменшення життів у дуже цікавою кішки:

for (int life = 9; life> = 0; life--) mInfoTextView.append ( "\ nУ кішки залишилося життів:" + life);

append ( \ nУ кішки залишилося життів: + life);

Спробуйте потренуватися на кішках. Наприклад, виводимо парні числа.

for (int x = 0; x <9; x + = 2) mInfoTextView.append ( "" + x); // між лапками прогалину

отримаємо:

0 2 4 6 8

Якщо потрібно виконати декілька операторів в циклі, то використовують фігурні дужки.

for (int kitten = 1; kitten <10; kitten ++) {mInfoTextView.append ( "\ nСчітаем кошенят:" + kitten); mResultEditText.setText ( "Ура! Нас підрахували"); }

У цьому прикладі виконується цикл з висновком числа підрахованих кошенят, а також виводиться текст в текстовому полі. До речі, це один з прикладів неправильного коду, коли в текстовому полі дев'ять разів поспіль виводиться одна і та ж рядок. Ми цього не помічаємо, але в реальності процесор виконує зайву роботу і другий оператор безумовно потрібно винести за межі блоку коду, який відноситься до циклу. Подібні помилки дуже часто зустрічаються у початківців програмістів, які забувають, як працює цикл.

Коли ми оголошуємо змінну в першій частині оператора for (int i = 0; ...), то область видимості змінної обмежена тілом циклу і ця змінна не доступна на іншій ділянці коду. Це підходящий варіант, якщо змінна більше ніде не використовується. При цьому змінна має область видимості і тривалість існування, що збігаються з видимістю і тривалістю життя самого циклу. Поза циклу змінна припинить своє існування.

Якщо керуючу змінну циклу потрібно використовувати в інших частинах програми, то її не слід оголошувати всередині циклу.

int i; // ця змінна нам знадобиться не тільки в циклі for (i = 0; i <10; i ++) {// щось робимо} // можемо використовувати змінну десь ще x = i + 10;

З іншого боку, якщо видимість змінної обмежена в межах циклу, то не буде ніякого конфлікту, якщо ви будете використовувати однакові імена змінних в різних циклах for, так як вони не будуть один одному заважати.

Використання декількох змінних

Іноді потрібно вказати кілька змінних в ініціалізацій частини циклу. Для початку подивимося на стандартний приклад:

int a, b; b = 4; for (a = 1: a <b; a ++) {mInfoTextView.append ( "a =" + a + "\ n"); mInfoTextView.append ( "b =" + b + "\ n"); b--; }

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

int a, b; for (a = 1, b = 4; a <b; a ++, b--) {mInfoTextView.append ( "a =" + a + "\ n"); mInfoTextView.append ( "b =" + b + "\ n"); }

Як видно з коду, кома служить роздільником для двох змінних. Тепер обидва розділених комою оператора в итерационной частини циклу виконуються при кожному виконанні циклу. Даний код вважається більш ефективним, хоча на практиці зустрічається рідко.

Частини циклу можуть бути порожніми.

Залишимо порожнім перший вираз.

int i = 0; for (; i <10; i ++) {// щось робимо mInfoTextView.append ( "\ n" + i); }

У наступному прикладі немає ініціалізації і итерационного вираження:

int i; boolean kind = false; i = 0; for (;! kind;) {mInfoTextView.append ( "i одно" + i + "\ n"); if (i == 10) done = true; i ++; }

А можна взагалі все три частини оператора залишити порожніми:

for (;;) {// ...}

У цьому випадку створюється нескінченний цикл, який ніколи не завершиться. Практичного сенсу даний код не має.

Робота з масивами

З звичайними числами зазвичай не працюють в циклі for. Набагато частіше цикл використовують при роботі з масивами .

Основна різниця між ними, що масив може складатися з невпорядкованих чисел, а число елементів може бути різним. На щастя, у масиву є спеціальне властивість length - довжина масиву. Перший приклад можна переписати таким чином.

int [] mice = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (int i = 0; i

Ми створили масив з чисел від 0 до 9. Потім проходимо в циклі, але на цей раз у другому операторі не використовуємо число 9, а обчислюємо довжину масиву. Такий гнучкий підхід дозволять виробляти з масивами різні трюки - упорядковувати, сортувати, перевертати і т.д.

Наприклад, якщо ми хочемо вивести числа в зворотному порядку, міняємо логіку в такий спосіб. Тепер нам потрібно починати висновок не з 0, а з 9, тобто int i = 9 або int i = mice.length - 1 (для універсальності). Крок буде не збільшуватися, а зменшуватися, значить - i--. А умовою стане досягнення 0, тобто i> = 0. Перевіряємо.

int [] mice = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for (int i = mice.length - 1; i> = 0; i--) {mInfoTextView.append ( "" + mice [i]); }

аналог foreach

У багатьох мовах існує більш компактна форма for для перебору елементів масивів - foreach. Конструкція foreach не вимагає ручного зміни змінної-кроку для перебору - цикл автоматично виконує цю роботу.

В Java вирішили не додавати нове ключове слово, а просто зробили вдосконалений вид циклу for, який має вигляд:

for (тип ітер_пер: колекція) блок_операторов

Для порівняння напишемо цикл для обчислення суми значень елементів масиву традиційним способом:

int [] nums = {1, 2, 3, 4, 5}; int sum = 0; for (int i = 0; i <5; i ++) sum + = nums [i];

Цей код можна переписати таким чином:

int [] nums = {1, 2, 3, 4, 5}; int sum = 0; for (int i: nums) sum + = i;

При проходженні циклу змінної i автоматично присвоюється значення, рівне значенню наступного елемента масиву nums. Таким чином, при першому проходженні змінна i містить значення 1, при другому - 2 і т.д. Крім того при такому способі виключається можливість помилок виходу за межі масиву.

Для цього способу можна використовувати масив або будь-який клас з інтерфейсом Iterable.

Можна перервати виконання циклу за допомогою оператора break:

int [] nums = {1, 2, 3, 4, 5}; int sum = 0; for (int i: nums) {sum + = i; if (i == 3) break; // зупиняємо цикл, якщо значення дорівнює 3}

Врахуйте, що в циклі в стилі foreach итерационная змінна доступна тільки для читання, так як вона пов'язана тільки з вихідним масивом. Навіть якщо ви зміните її значення, то це не вплине на роботу з масивом.

Також можна використовувати даний спосіб для багатовимірних масивів.

Оскільки кожен оператор for в стилі foreach перебирає елементи масиву послідовно, починаючи з першого і закінчуючи останнім, то даний спосіб зручний для багатьох операцій. Наприклад, для пошуку значення в неврегульованих масиві. Пошук припиняється після виявлення потрібного значення.

int [] nums = {3, 1, 6, 4, 9, 5, 8, 2}; int val = 5; boolean found = false; // шукаємо значення 5 в масиві for (int x: nums) {if (x == val) {found = true; break; }} If (found) {mInfoTextView.setText ( "Значення знайдено"); }

Так як у нас невпорядкований список, то нам потрібно послідовно пройтися по всіх елементах. Якщо нам пощастить і потрібне значення зустрінеться при переборі, то виходимо з циклу і йдемо спати.

вкладені цикли

Також допустимо використання вкладених циклів, коли один цикл виконується всередині іншого:

int i, j; for (i = 0; i <10; i ++) {for (j = i; j <10; j ++) {mInfoTextView.append ( "*"); } MInfoTextView.append ( "\ n"); }

В результаті отримаємо:

********** ********* ******** ******* ****** ***** **** * ** ** *

При вкладених циклах кількість повторень перемножується. У попередньому прикладі було 100 повторень. Наприклад, можна написати таблицю множення.

int i, j, a = 0; for (i = 1; i <10; i ++) {for (j = 1; j <10; j ++) {a = i * j; System.out.print (a + "|"); } System.out.println (); }

Результат дивіться в вкладці LogCat.

Цикл for є більш зручним варіантом циклу while .

for (int i = 10; i> 0; i -) {System.out.println ( "Відлік пішов ..." + i); }

Цей же варіант з while:

int i = 10; while (i> 0) {System.out.println ( "Відлік пішов ..." + i); i--; }

За допомогою циклу можна малювати красиві візерунки, змінюючи координати однієї фігури.

трикутник Флойда

Складіть "Трикутник Флойда", який виглядає як набір чисел, які збільшуються на одиницю. Наприклад, трикутник з висотою шість рядків виглядає наступним чином.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

відповідь

Реклама

Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: