Статьи

Цикли з параметром, послусловіем і передумовою. For, Repeat, While

  1. While, або цикл з передумовою
  2. Repeat, або цикл з умовою поста
  3. For, або цикл з параметром
  4. перша форма
  5. друга форма

Привіт, дорогі читачі

Привіт, дорогі читачі! Ось ми з вами і підійшли до вивчення циклів. Цикли в Паскаль. Що це таке? Як цим користуватися? Для чого вони потрібні? Саме на ці питання я сьогодні і відповім.
Якщо ви читали цей урок , То знаєте, що існує три види алгоритмів: лінійний, розгалужується і циклічний. Ми з вами вже знаємо, як реалізовувати лінійні і розгалужуються алгоритми на Паскалі. Приступимо до вивчення останнього типу алгоритмів.
У мові Pascal, як і в більшості мов програмування, існує три типи циклічних конструкцій.

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

Візьмемо одну задачу, яку будемо вирішувати, використовуючи різні види циклів.

Завдання 1. Вивести все числа від 1 до числа, введеного з клавіатури.

While, або цикл з передумовою

Як ви, напевно, вже зрозуміли з назви, while - це цикл, в якому умова стоїть перед тілом. Причому тіло циклу виконується тоді і тільки тоді, коли умова true; як тільки умова стає false, виконання циклу припиняється.

While має формат:

while <умова> do <оператор 1>; {Поки ... роби ....}

Даний цикл підходить тільки для одного оператора, якщо ж ви хочете використовувати кілька операторів в своєму коді, вам слід зробити висновок їх в операторні дужки - begin і end; .

Рішення задачі.

program example_while; var i, N: integer; {Оголошуємо змінні} begin i: = 1; {Надаємо i значення 1} readln (N); {Прочитуємо останнє число} while i <= N do {Як тільки i стане більше N, цикл припиниться (можна було б написати просто <, але довелося б додавати 1 до N)} begin {Відкриваємо операторні дужки} write (i, '' ); {Виводимо i} Inc (i); {Збільшуємо i на один.} End; {Закриваємо дужки} end.

Repeat, або цикл з умовою поста

Repeat - повна протилежність while. Repeat - це цикл, в якому умова варто після тіла. Причому воно виконується тоді і тільки тоді, коли результат умови false; як тільки логічне вираження стає true, виконання циклу припиняється.

Repeat має формат:

repeat {повторюй ...}
<Оператор 1>;
<Оператор 2>;
...
until {до ...} <умова>

Begin і end не потрібні.

Рішення задачі.

program example_repeat; var i, N: integer; {оголошуємо змінні} begin i: = 1; {Надаємо i значення 1} readln (N); {Прочитуємо останнє число} repeat {після repeat не потрібно begin і end} write (i, ''); {Виводимо i} Inc (i); {Збільшуємо i на один.} Until i = N + 1; {Наприклад, i = 11, а N = 10. Цикл припиниться, так умова стало true.} End.

For, або цикл з параметром

For - це цикл, в якому тіло виконується задану кількість разів.

Існує дві форми запису цього циклу:

перша форма

for <счетчік1>: = <значення1> to <конечное_значеніе> do <оператор1>;

Після кожної ітерації значення <счетчік1> буде збільшуватися на 1.

<Значення1> - це початкове значення лічильника. Це може бути змінна або число.
<Конечное_значеніе>: як тільки значення <счетчік1> побільшає <конечное_значеніе>, виконання циклу припиниться.

Якщо потрібно написати кілька операторів в тілі циклу, використовуємо begin і end.

І <счетчік1>, і <конечное_значеніе>, і <значення1> - змінні цілого типу.

Найчастіше в якості лічильника використовується змінна i.

друга форма

for <счетчік2>: = <значення2> downto <конечное_значеніе> do <оператор1>;

Після кожної ітерації значення <счетчік2> буде зменшаться на 1.

<Значення2> - це початкове значення лічильника.
<Конечное_значеніе>: як тільки значення <счетчік2> стане менше <конечное_значеніе>, виконання циклу припиниться.

Два важливих примітки:

  1. Цикл повторюється, поки значення значення лічильника лежить в відрізку [значення; конечное_значеніе].
  2. Змінювати значення лічильника всередині тіла не можна! Ось що виводить компілятор:

Ось що виводить компілятор:

Рішення задачі:

program example_for; var i, N: integer; begin read (N); {Припустимо, що ми ввели 10} for i: = 1 to N do write (i, ''); {Кількість ітерацій - 10 - 1 + 1 = 10} end.

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

Давайте вирішимо пару завдань.

For1. Дано цілі числа K і N (N> 0). Вивести N раз число K.

Організовуємо простий цикл від 1 до необхідного числа.

program for1; var K, N, i: integer; begin read (K, N); for i: = 1 to N do write (K, ''); {Пишемо До через пробіл} end.

For2. Дано два цілих числа A і B (A <B). Вивести в порядку зростання всі цілі числа, розташовані між A і B (включаючи самі числа A і B), а також кількість N цих чисел.

Так як A <B, то цикл повинен буде виводити все числа від А до B. Щоб порахувати кількість чисел, використовуємо формулу: <конечное_значеніе> - <початкове_значення> + 1.

program for2; var A, B, i, count: integer; begin read (A, B); for i: = A to B do write (i, ''); {Виписуємо числа від меншого до більшого} count: = B - A + 1; {Вважаємо кількість чисел} writeln; write ( 'Кількість чисел -', count); end.

For9. Дано два цілих числа A і B (A <B). Знайти суму квадратів всіх цілих чисел від A до B включно.

Організовуємо такий же цикл, як і в попередній задачі, але одночасно підсумовуємо квадрати всіх чисел. Щоб вирахувати квадрат, використовуємо функцію Sqr .

program for9; var A, B, i, S: integer; begin read (A, B); S: = 0; {PascalABC робить це автоматично, але якщо у вас інший компілятор радимо обнуляти змінні вручну} for i: = A to B do S: = S + Sqr (i); {Складаємо всі квадрати} writeln; write ( 'Сума квадратів -', S); end.

For13 °. Дано ціле число N (> 0). Знайти значення виразу 1.1 - 1.2 + 1.3 - ... (N доданків, знаки чергуються). Умовний оператор не використовувати.

Для того, щоб поміняти знак, кожну ітерацію циклу міняємо значення спеціальної змінної на протилежне.

program for13; var N, A, i: integer; S: real; begin Write ( 'N ='); readln (N); S: = 1.1; A: = 1; {Спочатку позитивне} for i: = 2 to N do {першу ітерацію циклу ми вже зробили, тому починаємо відлік з 2} begin A: = -A; {Тепер негативне} S: = S + A * (1 + i / 10); {Складовими} end; Writeln (S: 5: 1); {Віддамо під дробову частину одне знакоместо} end.

While1 °. Дано позитивні числа A і B (A> B). На відрізку довжиною A розміщено максимально можлива кількість відрізків довжиною B (без накладання). Чи не використовуючи операції множення і ділення, знайти довжину незайнятої частини відрізка A.

Кожен раз віднімаємо B з А, поки А - В> = 0.

program while1; var A, B: integer; begin readln (A, B); while (A - B)> = 0 do A: = A - B; {Поки різниця позитивна, віднімаємо. Необхідно передбачити варіант з кратністю А і B, тому> =} write (A); end.

While4 °. Дано ціле число N (> 0). Якщо воно є ступенем числа 3, то вивести True, якщо не є - вивести False.

Діємо в такий спосіб: поки N ділиться без остачі на три, ділимо N остачі. Потім, якщо N = 1 - число є ступенем трійки; якщо N <> 1, тоді число - не ступінь трійки. Для того щоб вирішити цю задачу, потрібно знати, що таке div і mod , І як працюють логічні вирази .

program while4; var N: integer; begin readln (N); while N mod 3 = 0 do N: = N div 3; {Поки залишок від ділення на три дорівнює нулю, ділимо N остачі} writeln (N = 1); {Логічне вираз} end.

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

Що це таке?
Як цим користуватися?
Для чого вони потрібні?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то