Алгоритми і програми роботи з лінійними таблицямиПлан конспект уроку з інформатики на тему УРОК 2 Тема уроку: Алгоритми і програми роботи з лінійними таблицями Навчальна мета: навчити розв.язувати типові задачі по обробці лінійних таблиць (знаходження суми та добутку елементів таблиць, знаходження кількості елементів, що мають певне значення). розглянути приклади застосування даних алгоритмів при розв(зуванні задач Розвиваюча мета: розвивати увагу, вміння застосовувати базові алгоритми при складанні програм Виховна мета: виховувати в учнів увагу при роботі в комп»ютерному класі Тип уроку: вироблення умінь і навичок під час розв»язання задач Наочність: таблиці Хід уроку На початку уроку оголошую тему та мету уроку. З метою перевірки розуміння учнями попередньої теми, проводжу тестування на карточках (7-10 хв). Варіант 1 1. Заданий масив температур повітря за місяць квітень.Вкажіть правильний опис масиву:а)t:аггау(1..30) of real. б)t1:аггау[1..30] of char.в)t:аггау[1..30] of real. 2.Значення елемента масиву не перевищує числа 9.Вкажіть правильний запис умови: а) а[і]<> 9. б) і<=9. в) а[і]<=9. 3. Вкажіть правильний ввід масиву: а) fог і:=1 tо 5 do readln(а[і]). б) foг і:=1 tо 5 do readln а[і] . в) fог і:=1 tо 5 readln(а(і)). 4. Запишіть команду введення масиву перших п.яти латинських букв. Варіант 2 1. Вкажіть правильний опис масиву назв днів тижня: а) d: аггау[1..7] of real. б) d:аггау[1..7] оf integег. в) d:аггау[1..7] of string. 2.Номер елемента масиву парний. Вкажіть правильно записану умову:а) а[і] mod 2=0 б) і mod 2=0 в) а[і] mod 2 <>0 3.Вкажіть правильний вивід масиву: а) fог і:=1 tо 7 dо б) foг і:=1 tо 7 dо в) fог і:=1 tо 7 dо writeln(t[і]). writeln t(і). writeln t[і]. 4. Опишіть масив оцінок з тематичної атестації 25 учнів класу. Варіант 3 1.Вкажіть фрагменти правильного виведення масиву кількості уроків у вашому класі протягом тижня. a) writeln(к[і]). б) for і:=1 to 5 do в) for. і:=1 to 5 do writeln k[i] writeln(k[i]). 2. Значення елементів масиву належать проміжку [-1.8].Вкажіть правильно записану умову: а) (j>-1) аnd (і<8). б) (а[і]>-1) аnd (а[і]<8). в) (а[і]>-1) ог (а[і]<8). 3.Індекси елементів масиву можуть бути такого типу: а) геаl. б) integer. в) string. 4. Опишіть масив назв семи шкільних предметів. Варіант 4 1. Який опис масиву кількості днів у перших семи місяцях року є правильним: а) кd: аггау[1..7] of string. б) kd: аггау[1:7] of integer. в) kd: аггау[1..7] of real. 2. Номери елементів масиву непарні. Вкажіть правильно записану умову: а) j<>0: б) а[і] mod 2<>0. в) j mod 2<>0. 3.Вкажіть правильний ввід масиву: а)for і:=1 to 9 dо б) for і:=1 to 9 dо в) fог і:=1 tо 9 do геаdln а[і ] . геаdln(а[і]). геаdln(а(і)). 4. Запишіть команди вводу масиву назв пір року. Варіант 5 1. Вкажіть правильний опис масиву цін 5 товарів на складі:а) сt.аrrау[1..5] оf геаl. б) сt:аггау[1..5] оf сhаг.в) сt:аггау[1..5] оf integeг. 2.Значення елементів масиву належать проміжку [1.10].Вкажіть правильно записану умову: а) (j>1) аnd (і<10). б) (а[і]>1) аnd (а[і]<10). в) (а[і]>1) ог (а[і]<10).. 3. Значення елемента масиву перевищує число 9.Вкажіть правильний запис умови: а) а[і]> 9 б) а[і]<=9 в) і=9 4. Запишіть команди виведення масиву десяти оцінок. Варіант 6 1. Вкажіть фрагмент програми введення масиву назв пір року: а) for i:=1 to 5 dо б) foг i:=1 tо 4 do в) fог i:=1 tо 4 dо геаdln(Р[i]). геаdln Р[i]. геаdln(Р[i]). 2.Значення елементів масиву належать проміжку [3.9].Вкажіть правильно записану умову: а) (j>3) аnd (і<9). б) (а[і]>3) аnd (а[і]<9). в) (а[i]>3) ог (а[i]<9). 3. Елемент масиву парний.Вкажіть правильно записану умову: а) а[і] mod 2=0. б) і mod 2=0. в) а[і] mod 2 <>0. 4. Опишіть масив назв 8 маршрутів тролейбусів. Повідомлення нового матеріалу Ми починаємо роглядати типові алгоритми опрацювання масивів, а саме: заповнення та вивід масиву за певним правилом, знаходження суми та добутку елементів масиву, підрахунку кількості елементів, що задовольняють певну умову, а також застосування даних алгоритмів при розв»язанні задач. Звертаю увагу на те, що дуже велика кількість задач по обробці масивів потребує виконання однотипних дій з усіма її елементами, тому зручно в цих випадках використовувати цикл з параметром для організації повторення. Приклад 1 Дано два лінійні масиви A[1..N], B[1..M]. Заповнити новий масив С за таким правилом: спочатку записати всі додатні елементи масиву А, далі всі додатні елементи масиву В зберігаючи їх порядок. Вивести на екран утворений масив та його розмірність. Оскільки ми не знаємо скільки є всіх додатніх елементів, то масив С має мати розмірність N+M. Для підрахунку кількості додатніх елементів необхідно ввести зміну цілого типу, якій на початку програми присвоїти значення рівне 0 (K:=0). Спочатку переглядаємо масив А, якшо зустрічається додатній елемент, то збільшують значення K на 1, а його значення записують в масив С. Аналогічно опрацьовуємо і масив В. Програма, що реалізує розв.язок цієї задачі, має наступний вигляд: Program Masiv_3. Uses crt. Const n=10. m=20. Var n, m, i, k:word. {k – кількість додатніх елементів в обох масивах А і В (розмірність масиву С)} A:array[1..n] of integer. B:array[1..m] of integer. C:array[1..n+m] of integer. Begin Clrscr. k:=0. {початкова кількість додатніх елементів рівна 0} Randomize. For i:=1 to n do Begin A[i]:=random(20)-10. {Заповнення масиву A випадковими числами} Write(A[i]:5). End. Writeln. {перехід на новий рядок} For i:=1 to m do Begin A[i]:=random(20)-10. {Заповнення масиву B випадковими числами} Write(B[i]:5). End. Writeln. {перехід на новий рядок} For i:=1 to n do Begin If A[i]>0 then Begin inc(k) {збільшення індекса масиву С} C[k]:=A[i]. {занесення додатного елемента масиву А в масив С} End. End. For i:=1 to m do Begin If B[i]>0 then Begin inc(k) {збільшення індекса масиву С} C[k]:=B[i]. {занесення додатного елемента масиву B в масив С} End. End. For i:=1 to k do write(C[i]:5). {вивід масиву С на екран} Writeln. Readkey. {Затримка зображення на екрані} End. Виконання програми учні перевіряють на комп»ютері. Приклад 2 Знайти суму елементів одновимірного масиву A[1..N]. Слід наголосити, що при знаходженні суми, змінній, в якій зберігається значення суми, на початку програми (як правило) присвоюють значення рівне 0. Програма, що реалізує розв.язок цієї задачі, має наступний вигляд: Program Masiv_Suma. Uses crt. Var n,i:word. a:array[1..100] of real. Sum:real. { Sum – змінна, в якій зберігається значення суми} Begin Clrscr. Sum:=0. {Початкове значення суми рівне 0} Write(.Введіть кількість елементів масиву (<=100): .). Readln(N). For i:=1 to N do Begin Write(«A[«.i.»]=»). Readln(A[i]). {Заповнення масиву } End. For i:=1 to N do Sum:=Sum+A[i]. {Знаходження суми елементів масиву} Writeln(«Cума елементів масиву рівна - »,Sum). {Вивід значення суми на екран} Readkey. {Затримка зображення на екрані} End. Після розгляду задачі учням можна задати наступне запитання: Які зміни потрібно зробити в цій програмі, щоб знайти: суму додатніх (від»ємних) елементів. кількість додатніх (від»ємних) елементів. кількість елементів рівних даному числу. та ін.? Для застосування даного алгоритму на практиці можна запропонувати учням наступну задачу. Приклад 3 Знайти середньодобову температуру, якщо виміри здійснювалися через кожну годину. Для розв.язування цієї задачі пропонується використати масив для зберігання замірів температури кожної години. Так як такі заміри роблять через кожну годину на протязі доби, то масив повинен мати розмірність 24 елементів цілого типу, оскільки температуру (як правило) задають цілим числом. Щоб знайти середньодобову температуру, необхідно спочатку знайти їх сумарну суму і результат поділити на 24. Оскільки ми виконуємо дію ділення, то змінна, в якій буде зберігатися значення середньодобової температури, повинна бути дійсного типу (real). Програма, що реалізує розв.язок цієї задачі, має наступний вигляд: Program Temperatura. Uses crt. Var i:word. Т:array[1..24] of integer. Sum:word. {Sum – сумарна сума всіх температур} Ser_temp:real. {Ser_temp – cередньодобова температура} Begin Clrscr. Sum:=0. For i:=1 to 24 do Begin Write(«Введіть температуру о», і, «-й годині »). Readln(Т[i]). {Заповнення масиву} End. For i:=1 to N do Sum:=Sum+Т[i]. {Знаходження сумарної суми всіх температур} Ser_temp:=Sum/24. {Знаходження середньодобової температури} Writeln(«Cередньодобова температура рівна »,Ser_temp:0:2). {Вивід середньодобової температури на екран} Readkey. {Затримка зображення на екрані} End. Учні реалізовують дану програму на комп»ютері. Рекомендую учням, для спрощення відлагодження програми і економії часу, використати автоматичне заповнення масиву за допомогою генератора випадкових чисел, а з метою перевірки правильності заповнення, масив можна виводити на екран. Наприклад: Randomize. {Ця процедура запускається з метою зробити числа генератора випадкових чисел ще більш |випадковими|} For i:=1 to 24 do Begin Т[i]:=random(20)-15. {Заповнення масиву випадковими числами в діапазоні від -15 до 5} Write(Т[i]:5). {Виведення масиву на екран для контролю правильності роботи програми} End. Дане заповнення можна було використати в попередній задачі. Розглядаємо задачу знаходження добутку елементів масиву А[1..n] значення яких не рівні нулю.. Приклад 4 Знайти добуток не нульових елементів одновимірного масиву A[1..N]. Слід наголосити, що при знаходженні добутку, змінній, в якій зберігається значення добутку, на початку програми (як правило) присвоюють значення рівне 1. Програма, що реалізує розв.язок цієї задачі, має наступний вигляд: Program Masiv_Dobutok. Uses crt. Var N,і:word. A:array[1..20] of real. Dobutok:real. {Dobutok – змінна, в якій зберігається значення добутку} Begin Clrscr. Dobutok::=1. {Початкове значення добутку рівне 1} Write(.Введіть кількість елементів масиву (<=10): .). Readln(N). For i:=1 to N do Begin Write(«A[«.i.»]=»). Readln(A[i]). {Заповнення масиву } End. For i:=1 to N do If A[i]<>0 then Dobutok:=Dobutok*A[i]. {Знаходження добутку елементів масиву} Writeln(«Добуток елементів масиву рівний - », Dobutok). {Вивід значення добутку на екран} Readkey. {Затримка зображення на екрані} End. Учням можна запропонувати придумати умови задач, при розв»язуванні яких можна було б використати вивченні на уроці алгоритми. По можливості усно їх розв»язати. Підсумок уроку Ми розглянули базові алгоритми опрацювання табличних величин – це: заповнення та вивід масиву за певним правилом, знаходження суми та добутку елементів масиву. розглянули їх практичне застосування при розв(язуванні задач. Ще раз наголошую, що при знаходженні суми, змінній, в якій зберігається значення суми, на початку програми (як правило) присвоюють значення рівне 0, а добутку – 1. . Домашнє завдання : Вивчити алгоритми знаходження суми та добутку елементів масиву. 2) Початковий рівень Дано натуральне число n та послідовність дійсних чисел a1, a2, … an. Визначити в цій послідовності кількість додатніх елементів. Середній рівень Дано натуральне число n та послідовність дійсних чисел a1, a2, … an. Визначити в цій послідовності кількість елементів, що більші заданого числа. Достатній рівень Дано натуральне число n та послідовність дійсних чисел a1, a2, … an. Визначити в цій послідовності кількість сусідств двох чисел різного знаку. Високий рівень Дано два одновимірних масиви. Утворити новий масив, у якому спочатку будуть розташовані всі елементи першого масиву в їх первісній послідовності, а потім елементи другого масиву в зворотній послідовності. Завдання до даної теми Середню групу дитячого садочка вивели на прогулянку. Скільки дівчаток і скільки хлопчиків видна з-за паркану, якщо зріст хлопчиків задається у сантиметрах від.ємними числами, а дівчаток - додатними у вигляді цілих значень a1, a2, …, an? Крім того, у всіх дівчаток на голівках зав.язані бантики заввишки 10 см, а висота паркану H см. Дано натуральне число А. Складіть програму, що представляє його у вигляді многочлена. Наприклад, 123 ==>1 * 10^2 + 2 * 10^1 + 3*10^0. Дано натуральне число n та цілі числа a1, a2, … an і b1, b2, … , bn. Визначити значення c1, c2, … , cn, якщо ci = ai + bi. Дано дійсні числа a1, a2, …, a30, b1, b2, …, b30. Обчислити (a1 + b30)(a2 + b29)…(a30 + b1). Дано одновимірний масив завдовжки n. Розділити його на два нових масиви таким чином, щоб у першому опинились додатні елементи, а в другому – від.ємні. Дано два одновимірних масиви. Об.єднати ці два масиви у третій масив, в який спочатку ввійдуть елементи першого масиву, а потім – другого, зберігаючи свою первісну послідовність. Дано два однакові за довжиною одновимірні масиви. Об.єднати їх у третій масив, чергуючи елементи першого та другого масивів. Дано два одновимірних масиви. Утворити новий масив, у якому спочатку будуть розташовані всі додатні елементи першого масиву, потім додатні елементи другого, далі всі від.ємні елементи першого масиву, потім від.ємні елементи другого. Дано дійсні числа а1951, а1952,..., а2000 – кількість опадів (в мм), що випали у місті за останні 50 років минулого століття. Обчислити середню кількість опадів за цей період і щорічне відхилення від середнього значення. Барон Мюнхаузен, вийшовши на екологічно чисте полювання, зарядив свою рушницю кісточками вишень. Після того як він вдало влучив поміж роги оленям, в яких влучило відповідно k1, k2, …, kn кісточок, у них на головах виросли чудові молоді вишеньки. Скільки саджанців зміг подарувати барон Мюнхаузен садівникам-дослідникам?