Програмування на мові Паскаль Тема Цикли. Цикли Цикл – це багатократне виконання однакової послідовності дій. цикл з відомою кількістю кроків цикл з невідомою.

Презентация:



Advertisements
Похожие презентации
Тема 2. Розгалуження. Алгоритми розгалуження Задача. Ввести два цілих числа і вивести на екран більше з них. Ідея розвязання: потрібно вивести на екран.
Advertisements

Бройченко А.Г КОМАНДИ ПОВТОРЕННЯ (Turbo Pascal 7.0) КОМАНДИ ПОВТОРЕННЯ (Turbo Pascal 7.0) Інформатика-11 Тема-4.
Поняття циклу. Класифікація циклів. Порівняльна характеристика циклів. Формати команд повторення мовою програмування.
Основи алгоритмізації та програмування Вказівка повторення. Цикли.
Тема: Вказівка повторення та її опис навчальною алгоритмічною мовою та мовою програмування. Мета: повторити правила опису циклічних алгоритмів за допомогою.
Опис програм мовою програмування Вказівка повторення з передумовою while Вказівка повторення з передумовою while Вказівка повторення з передумовою while.
Ковальчук О.М КОМАНДИ РОЗГАЛУЖЕННЯ (Turbo Pascal 7.0) КОМАНДИ РОЗГАЛУЖЕННЯ (Turbo Pascal 7.0) Інформатика-11 Тема-4 Ковальчук О.М., 2007.
Команда повторення (while, repeat). Головні питання 4 Що таке цикли і де вони застосовуються? Що являє собою оператор while Що являє собою оператор.
Вказівка повторення. повторити правила опису циклічних алгоритмів за допомогою блок-схем і навчальною алгоритмічною мовою, повторити правила опису циклічних.
Цикли в мові С++ Цикл - це процес виконання певного набору команд деяку кількість разів.
Розгалуження в алгоритмах і програмах Алгоритми з розгалуженням.
Ізяславський НВК 2, Гульчак Інна Василівна ЦИКЛИ.
Ізяславський НВК 2, Гульчак І.В. Цикли в алгоритмах і програмах Visual Basic клас Академічний рівень.
Це така алгоритмічна конструкція, де за певних умов виконується команда або серія команд. З Передумовою (WHILE) З Післяумовою (REPEAT) З Параметром (FOR)
Основи алгоритмізації та програмування Опрацювання табличних величин: знаходження мінімального або максимального значення серед елементів масиву, кількості.
Базові структури алгоритмів Інформатика-11 Тема-2.
Програмування на мові Паскаль Тема 1. Вступ © К.Ю. Поляков, Переклад: Н. Б. Мартинчук Р. М. Васильчик.
Програмування на мові Паскаль Тема 1. Вступ © К.Ю. Поляков, Переклад: Н. Б. Мартинчук Р. М. Васильчик.
Програмування на мові Паскаль Тема 1. Вступ © К.Ю. Поляков, Переклад: Н. Б. Мартинчук Р. М. Васильчик.
Програмування на мові Паскаль Тема 1. Вступ © К.Ю. Поляков Переклад: Н. Б. Мартинчук Р. М. Васильчик.
Транксрипт:

Програмування на мові Паскаль Тема Цикли

Цикли Цикл – це багатократне виконання однакової послідовності дій. цикл з відомою кількістю кроків цикл з невідомою кількістю кроків (цикл з умовою) Задача. Вивести на екран квадрати і куби цілих чисел від 1 до 8 (від a до b ). Особливості: однакові дії виконуються 8 раз.

Алгоритм початок i, i2, i3 кінець ні так i <= 8? i := 1; i := i + 1; i2 := i * i; i3 := i2 * i; задати початкове значення змінної циклу перевірити, чи все виконали обчислити квадрат і куб вивести результат перейти до наступного i

Алгоритм (з блоком "цикл") початок i, i2, i3 кінець i2 := i * i; i3 := i2 * i; i := 1,8 блок "цикл" тіло циклу

Програма program qq; var i, i2, i3: integer; begin for i:=1 to 8 do begin i2 := i*i; i3 := i2*i; writeln(i:4, i2:4, i3:4); end; end. змінна циклу початкове значення кінцеве значення

Цикл з зменшенням змінної Задача. Вивести на екран квадрати і куби цілих чисел від 8 до 1 (в зворотному порядку). Особливості: змінна циклу повинна зменшуватися. Розвязання:... for i:=8 1 do begin i2 := i*i; i3 := i2*i; writeln(i:4, i2:4, i3:4); end;... downto

Цикл з змінною for := to do begin {тіло циклу} end; Збільшення змінної на 1: for := downto do begin {тіло циклу} end; Зменшення змінної на 1:

Цикл з змінною Особливості: змінна повинна бути тільки цілою ( integer ) крок зміни змінної циклу завжди рівний 1 ( to ) або -1 ( downto ) якщо в тілі циклу тільки один оператор, слова begin і end можна не писати: якщо кінцеве значення менше початкового, цикл ( to ) не виконується ні разу (перевірка умови в початку циклу, цикл з передумовою) for i:=1 to 8 do writeln(Привіт');

Цикл з змінною Особливості: в тілі циклу не дозволяється змінювати змінну циклу (чому?) при зміні початкового і кінцевого значення всередині циклу кількість кроків не змінюється: n := 8; for i:=1 to n do begin writeln('Привіт'); n := n + 1; end; немає зациклювання

Цикл з змінною Особливості: після виконання циклу в багатьох системах встановлюється перше значення змінної циклу, при якому порушується умова: for i:=1 to 8 do writeln('Привіт'); writeln('i=', i); for i:=8 downto 1 do writeln('Привіт'); writeln('i=', i); i=9 i=0

Скільки разів виконається цикл? a := 1; for i:=1 to 3 do a := a+1; a = 4a = 4 a := 1; for i:=3 to 1 do a := a+1; a = 1a = 1 a := 1; for i:=1 downto 3 do a := a+1; a = 1a = 1 a := 1; for i:=3 downto 1 do a := a+1; a = 4a = 4

Як змінюється крок? Задача. Вивести на екран квадрати і куби непарних цілих чисел від 1 до 9. Особливості: змінна циклу повинна збільшуватися на 2. Проблема: в Паскалі крок може бути 1 або -1. Розвязання:... for i:=1 to 9 do begin if ??? then begin i2 := i*i; i3 := i2*i; writeln(i:4, i2:4, i3:4); end;... i mod 2 = 1 виконується тільки для непарних i Що погано? ?

Як змінюється крок? – II Ідея: Потрібно вивести всього 5 чисел, змінна k змінюється від 1 до 5. Початкове значення i дорівнює 1, з кожним кроком циклу i збільшується на 2. Розвязання:... ??? for k:=1 to 5 do begin i2 := i*i; i3 := i2*i; writeln(i:4, i2:4, i3:4); ??? end;... i := i + 2; i := 1;

Як змінюється крок? – III Ідея: Потрібно вивести всього 5 чисел, змінна k змінюється від 1 до 5. Знаючи k, потрібно розрахувати i. Розвязання:... for k:=1 to 5 do begin ??? i2 := i*i; i3 := i2*i; writeln(i:4, i2:4, i3:4); end;... i := 2*k – 1; k12345 i13579 i = 2k-1

Завдання "4": Ввести a і b і вивести квадрати і куби чисел від a до b. Приклад: Введіть границі інтервалу: "5": Вивести квадрати і куби 10 чисел наступної послідовності: 1, 2, 4, 7, 11, 16, … Приклад:

Програмування на мові Паскаль Тема 5. Цикли з умовою © К.Ю. Поляков, Переклад: Н. Б. Мартинчук Р. М. Васильчик

Цикл з невідомою кількістю кроків Приклад: Відрізати поліно від колоди. Скільки разів потрібно зробити рух пилкою? Задача: Ввести ціле число (< ) і визначити кількість цифр у ньому. Ідея розвязання: Відрізаємо послідовно останню цифру, збільшуємо лічильник. Проблема: Невідомо, скільки кроків потрібно зробити. Розвязання: Потрібно зупинитися, коли n = 0, тобто потрібно робити поки n <> 0 ". ncount

Алгоритм початок count кінець ні так n <> 0? count := 0 ; count := count + 1; n := n div 10; обнулити лічильник цифр ввести n виконувати "поки n <> 0 "

Програма program qq; var n, count: integer; begin writeln(Ввести ціле число'); read(n); count := 0; while n <> 0 do begin count := count + 1; n := n div 10; end; writeln('В числі ', n, ' знайшли ', count, ' цифр'); end., n1: integer; n1 := n; n1, виконувати "поки n <> 0 " Що погано? ?

Цикл з умовою while do begin {тіло циклу} end; Особливості: можна використовувати складені умови: якщо в тілі циклу тільки один оператор, слова begin і end можна не писати: while (a<b) and (b<c) do begin {тіло циклу} end; while a < b do a := a + 1;

Цикл з умовою Особливості: умова перевіряється кожен раз при вході в цикл якщо умова на вході в цикл хибна, цикл не виконується жодного разу якщо умова ніколи не стане хибною, програма зациклиться a := 4; b := 6; while a > b do a := a – b; a := 4; b := 6; while a < b do d := a + b;

Скільки разів виконується цикл? a := 4; b := 6; while a < b do a := a + 1; 2 рази a = 6 a := 4; b := 6; while a < b do a := a + b; 1 раз a = 10 a := 4; b := 6; while a > b do a := a + 1; 0 разів a = 4 a := 4; b := 6; while a < b do b := a - b; 1 раз b = -2 a := 4; b := 6; while a < b do a := a - 1; зациклювання

Заміна for на while і навпаки for i:=1 to 10 do begin {тіло циклу} end; i := 1; while i <= 10 do begin {тіло циклу} i := i + 1; end; for i:=a downto b do begin {тіло циклу} end; i := a; while i >= b do begin {тіло циклу} i := i - 1; end; Заміна while на for можлива тільки тоді, коли можна наперед розрахувати кількість кроків циклу. Заміна циклу for на while можлива завжди.

Завдання "4": Ввести ціле число і знайти суму його цифр. Приклад: Ввести ціле число: 1234 Сума цифр числа 1234 рівна 10. "5": Ввести ціле число і визначити, чи правда, що в його записі є дві однакові цифри. Приклад: Ввести ціле число: Ввести ціле число: Ні. Так.

Послідовності Приклади: 1, 2, 3, 4, 5, … 1, 2, 4, 7, 11, 16, … 1, 2, 4, 8, 16, 32, … an = nan = n a 1 = 1, a n+1 = a n +1 a 1 = 1, a n+1 = a n + n a n = 2 n-1 a 1 = 1, a n+1 = 2 a n b 1 = 1, b n+1 = b n +1 c 1 = 2, c n+1 = 2 c n

Послідовності Задача: знайти суму всіх елементів послідовності, які по модулю більші 0,001: Елемент послідовності (починаючи з 2): n b12345 c z b := b+1; c := 2*c; z := -z;

Алгоритм початок S кінець ні так |a| > 0.001? S := S + a; S := 0 ; b := 1; c := 2 ; z := -1; a := 1; початкове значення a := z*b/c; b := b + 1; c := 2*c; z := -z; перший елемент новий елемент зміни Перестановка? ?

Програма program qq; var b, c, z: integer; S, a: real; begin S := 0; z := -1; b := 1; c := 2; a := 1; while abs(a) > do begin S := S + a; a := z * b / c; z := - z; b := b + 1; c := c * 2; end; writeln('S =', S:10:3); end. перехід до наступного доданка початкове значення збільшення суми розрахунок елемента послідовності

Завдання "4": Знайти суму елементів послідовності з точністю 0,001: Відповідь: S = "5": Знайти суму елементів послідовності з точністю 0,001: Відповідь: S = 1.220

Цикл з післяумовою Задача: Ввести ціле додатне число (< ) і визначити кількість цифр в ньому. Проблема: Як не дати ввести від'ємне число або нуль? Розвязання: Якщо вводиться неправильне число, повернутися назад до введення даних (цикл!). Особливості: Один раз тіло циклу потрібно виконати в будь-якому випадку => перевірку умови циклу потрібно виконувати в кінці циклу (цикл с післяумовою). Цикл с післяумовою – це цикл, в якому перевірка умови виконується в кінці циклу.

Цикл з післяумовою: алгоритм початок кінець так ні n > 0? тіло циклу умова ВИХОДУ блок "типовий процес" ввести n основний алгоритм

Програма program qq; var n: integer; begin repeat writeln(Ввести додатне число'); read(n); until n > 0;... { основний алгоритм } end. until n > 0; умова ВИХОДУ Особливості: тіло циклу завжди виконується хоча б один раз після слова until ("до тих пір, поки не…") ставиться умова ВИХОДУ із циклу

Скільки разів виконується цикл? a := 4; b := 6; repeat a := a + 1; until a > b; 3 рази a = 7 a := 4; b := 6; repeat a := a + b; until a > b; 1 раз a = 10 a := 4; b := 6; repeat a := a + b; until a < b; зациклення a := 4; b := 6; repeat b := a - b; until a < b; 2 рази b = 6 a := 4; b := 6; repeat a := a + 2; until a < b; зациклення

Завдання (з захистом від неправильного введення) "4": Ввести натуральне число і визначити, чи правда що сума його цифр дорівнює 10. Приклад: Ввести число >= 0: Введіть число >= 0: Потрібно додатне число. Ні Ввести число >= 0: 1234 Так "5": Ввести натуральне число і визначити, які цифри зустрічаються декілька разів. Приклад: Введіть число >= 0: Повторяються: 2, 3Немає повторів.