Відмінності між версіями «Конспект уроку №10 Свинаренка Олександра»
Рядок 68: | Рядок 68: | ||
Метою сьогоднішнього уроку є навчитись складати та виконувати програми для розв’язання | Метою сьогоднішнього уроку є навчитись складати та виконувати програми для розв’язання | ||
саме такого типу. Сідаємо за комп’ютери. | саме такого типу. Сідаємо за комп’ютери. | ||
+ | |||
+ | Умова: Дано натуральне число n. Визначити кількість додатних та від'ємних елементів таблиці aij, де i,j = 1,2,…,n, якщо: Aij = sin(i+j). | ||
+ | Візьмемо дві змінних count_plus та count_minus для зберігання кількості додатних та від'ємних елементів масиву відповідно . | ||
+ | На початку програми в даній задачі необхідно заповнити масив за законом, що заданий в умові. А після обчислення елементу масиву можна перевірити, являється він додатнім чи від'ємним і в залежності від результату перевірки додати одиницю до однієї чи другої змінної. | ||
+ | Програма, що реалізує запропонований алгоритм, наведена нижче: | ||
+ | Program Example_350_1; | ||
+ | Uses crt; | ||
+ | Const n = 8; | ||
+ | Type | ||
+ | Masiv = array[1..n,1..n] of real; | ||
+ | Var A:Masiv; {A - масив для зберігання даних | ||
+ | чисел} | ||
+ | i,j:byte; {і,j - змінні циклу} | ||
+ | count_plus,count_minus:word; | ||
+ | Begin | ||
+ | Clrscr; | ||
+ | count_plus:=0; | ||
+ | count_minus:=0; | ||
+ | For i:=1 to n do | ||
+ | Begin | ||
+ | For j:=1 to n do | ||
+ | begin | ||
+ | A[i,j]:=sin(i+j); {Заповнення масиву} | ||
+ | Write(A[i,j]:8:2); {Виведення на екран} | ||
+ | If A[I,j] > 0 | ||
+ | Then count_plus: = count_plus + 1; | ||
+ | If A[I,j] < 0 | ||
+ | Then count_minus: = count_minus + 1; | ||
+ | end; | ||
+ | writeln; | ||
+ | End; | ||
+ | Writeln('Кількість додатних елементів масиву - ',count_plus); | ||
+ | Writeln('Кількість від'ємних елементів масиву - ',count_minus); | ||
+ | Readkey; {Затримка зображення на екрані} | ||
+ | End. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Умова: Дано одновимірний масив цілих чисел A[і], де і =1,2,…,n. Визначити, скільки разів максимальний елемент зустрічається у даному масиві та порядковий номер першого найбільшого елементу. | ||
+ | |||
+ | |||
+ | Для розв'язку цієї задачі спочатку необхідно пройти по всіх елементах масиву і знайти серед них максимальний, запам'ятавши його номер. Для цього користуються стандартним алгоритмом, що полягає в наступному: | ||
+ | 1) береться будь-який елемент масиву (як правило, перший) і його значення присвоюється змінній max, тобто він вважається за еталон найбільшого елементу; | ||
+ | 2) по черзі з масиву вибираються всі останні елементи і, якщо серед них знайдеться більший за вибраний еталон, то змінній max присвоюється нове значення, яке тепер буде новим еталоном. В іншій змінній, наприклад, N_max запам'ятовується номер цього найбільшого елементу (початкове значення цієї змінної було 1, тому що спочатку ми вважали найбільшим 1-ий елемент). | ||
+ | Після закінчення перегляду всього масиву змінна max буде містити шуканий максимум, а змінна N_max - його номер. Щоб запам'ятати номер першого максимального елемента, необхідно шукати в матриці елемент, що точно більше еталону. Якщо ж ми будемо шукати елемент, що не менший за еталон, то в змінній N_max залишиться номер останнього найбільшого елементу (подумайте чому). | ||
+ | Після знаходження максимуму другим проходом можна вже підрахувати кількість таких елементів в масиві. Для цього кожен елемент порівнюється з еталоном, що знаходиться в змінній max, та до лічильника count додається одиниця у випадку співпадання цих значень. | ||
+ | Програма, що реалізує описаний алгоритм, наведена нижче: | ||
+ | |||
+ | Program Example; | ||
+ | |||
+ | Uses crt; | ||
+ | |||
+ | Const n = 30; | ||
+ | |||
+ | Var A:array[1..n] of integer; {A - масив даних чисел} | ||
+ | |||
+ | i:byte; {і - зміннa циклу} | ||
+ | |||
+ | count,N_max:byte; {count - кількість | ||
+ | |||
+ | максимальних елементів в | ||
+ | |||
+ | масиві, N_max - номер першого | ||
+ | |||
+ | найбільшого елементу} | ||
+ | |||
+ | max:integer; {max - максимальний елемент масиву} | ||
+ | |||
+ | Begin | ||
+ | |||
+ | Clrscr; | ||
+ | |||
+ | Randomize; | ||
+ | |||
+ | {Заповнення масиву випадковими числами та | ||
+ | |||
+ | виведення його на екран для контролю за | ||
+ | |||
+ | роботою програми} | ||
+ | |||
+ | For i:=1 to n do | ||
+ | |||
+ | Begin | ||
+ | |||
+ | A[i]:=random(150) - random(80); | ||
+ | |||
+ | Write(A[i]:5); | ||
+ | |||
+ | end; | ||
+ | |||
+ | {Надання змінним початкових значень} | ||
+ | |||
+ | max:=A[1]; N_max:=1; | ||
+ | |||
+ | count:=0; | ||
+ | |||
+ | {Прохід по масиву для пошуку максимуму та його номеру} | ||
+ | |||
+ | for i:=1 to n do | ||
+ | |||
+ | begin | ||
+ | |||
+ | if A[i]> max | ||
+ | |||
+ | then | ||
+ | |||
+ | begin | ||
+ | |||
+ | max:=A[i]; | ||
+ | |||
+ | N_max:=i; | ||
+ | |||
+ | end; | ||
+ | |||
+ | end; | ||
+ | |||
+ | {Другий прохід по масиву для підрахунку кількості | ||
+ | |||
+ | максимальних елементів} | ||
+ | |||
+ | for i:=1 to n do | ||
+ | |||
+ | begin | ||
+ | |||
+ | if A[i]= max | ||
+ | |||
+ | then count:=count+1; | ||
+ | |||
+ | end; | ||
+ | |||
+ | Writeln('Максимум = ',max); | ||
+ | |||
+ | Writeln('Номер першого максимума = ',N_max); | ||
+ | |||
+ | Writeln('Кількість максимумів = ',count); | ||
+ | |||
+ | Readkey; {Затримка зображення на екрані} | ||
+ | |||
+ | End. | ||
Версія за 11:23, 10 грудня 2008
Урок на тему "Пошук у таблицях елементів із деякою властивістю"
Мета уроку: навчитись створювати і виконувати програми пошуку в таблицях елементів із заданими властивостями; розвивати мислення і творчі здібності; формувати акуратність та уважність при створенні програм.
Тип уроку: урок засвоєння нових знань з елементами практичної роботи.
Хід уроку
І. Організаційна частина.
ІІ. Перевірка знань.
(Учні сидять за столами)
Слово вчителя. На попередніх уроках ми вивчали масиви. Давайте пригадаємо що нам вже відомо з цієї теми.
3 учні виконують завдання на карточках:
а) записати способи опису двовимірного масиву;
б) записати, як здійснюється введення елементів одновимірного масиву.
в) записати, як здійснюється виведення елементів одновимірного масиву.
Усне опитування:
Що називається масивом?
Наведіть приклади масивів?
Який масив називається одновимірним?
Що таке двовимірний масив?
Чи можемо ми ввести зразу весь масив? (ні)
А як здійснюється ввід-вивід елементів масиву? (поелементно)
З допомогою якої вказівки можна це зробити?
ІІІ. Пояснення нового матеріалу
А тепер давайте розглянемо такі завдання: За якими критеріями учнів нагороджують золотою медаллю після закінчення школи? (усно пояснюють учні) При проведенні спортивних змагань зі стрибків в довжину як визначити, хто став переможцем? (усно пояснюють учні) Більшість з вас користується мобільними телефонами. Як ви здійснювали купівлю, якщо знали яка саме модель вам потрібна? Заходили в будь-який магазин, чи використовували якийсь інший варіант? (цікавились цінами в різних мобільних точках, а вже потім вибирали ту, де ціна найнижча)
Слово вчителя. Задачі різні. Що в них є спільного? (порівнюємо і вибираємо найменше(найбільше) значення, або порівнюємо з конкретною величиною) Задачі такого типу на перший погляд здаються зовсім не придатними для розв’язування з допомогою комп’ютера. Але ви вже знаєте, що їх можна перевести на мову математики (математична постановка задачі), скласти алгоритм їх розв’язання і на основі нього написати програму мовою програмування.
Отже, запишіть тему сьогоднішнього уроку: Пошук у таблицях елементів із деякою властивістю.
Метою сьогоднішнього уроку є навчитись складати та виконувати програми для розв’язання саме такого типу. Сідаємо за комп’ютери.
Умова: Дано натуральне число n. Визначити кількість додатних та від'ємних елементів таблиці aij, де i,j = 1,2,…,n, якщо: Aij = sin(i+j). Візьмемо дві змінних count_plus та count_minus для зберігання кількості додатних та від'ємних елементів масиву відповідно . На початку програми в даній задачі необхідно заповнити масив за законом, що заданий в умові. А після обчислення елементу масиву можна перевірити, являється він додатнім чи від'ємним і в залежності від результату перевірки додати одиницю до однієї чи другої змінної. Програма, що реалізує запропонований алгоритм, наведена нижче:
Program Example_350_1; Uses crt; Const n = 8; Type Masiv = array[1..n,1..n] of real; Var A:Masiv; {A - масив для зберігання даних чисел} i,j:byte; {і,j - змінні циклу}
count_plus,count_minus:word; Begin
Clrscr; count_plus:=0; count_minus:=0;
For i:=1 to n do
Begin For j:=1 to n do begin A[i,j]:=sin(i+j); {Заповнення масиву} Write(A[i,j]:8:2); {Виведення на екран} If A[I,j] > 0 Then count_plus: = count_plus + 1; If A[I,j] < 0 Then count_minus: = count_minus + 1; end; writeln;
End;
Writeln('Кількість додатних елементів масиву - ',count_plus); Writeln('Кількість від'ємних елементів масиву - ',count_minus); Readkey; {Затримка зображення на екрані}
End.
Умова: Дано одновимірний масив цілих чисел A[і], де і =1,2,…,n. Визначити, скільки разів максимальний елемент зустрічається у даному масиві та порядковий номер першого найбільшого елементу.
Для розв'язку цієї задачі спочатку необхідно пройти по всіх елементах масиву і знайти серед них максимальний, запам'ятавши його номер. Для цього користуються стандартним алгоритмом, що полягає в наступному:
1) береться будь-який елемент масиву (як правило, перший) і його значення присвоюється змінній max, тобто він вважається за еталон найбільшого елементу;
2) по черзі з масиву вибираються всі останні елементи і, якщо серед них знайдеться більший за вибраний еталон, то змінній max присвоюється нове значення, яке тепер буде новим еталоном. В іншій змінній, наприклад, N_max запам'ятовується номер цього найбільшого елементу (початкове значення цієї змінної було 1, тому що спочатку ми вважали найбільшим 1-ий елемент).
Після закінчення перегляду всього масиву змінна max буде містити шуканий максимум, а змінна N_max - його номер. Щоб запам'ятати номер першого максимального елемента, необхідно шукати в матриці елемент, що точно більше еталону. Якщо ж ми будемо шукати елемент, що не менший за еталон, то в змінній N_max залишиться номер останнього найбільшого елементу (подумайте чому).
Після знаходження максимуму другим проходом можна вже підрахувати кількість таких елементів в масиві. Для цього кожен елемент порівнюється з еталоном, що знаходиться в змінній max, та до лічильника count додається одиниця у випадку співпадання цих значень.
Програма, що реалізує описаний алгоритм, наведена нижче:
Program Example;
Uses crt;
Const n = 30;
Var A:array[1..n] of integer; {A - масив даних чисел}
i:byte; {і - зміннa циклу}
count,N_max:byte; {count - кількість
максимальних елементів в
масиві, N_max - номер першого
найбільшого елементу}
max:integer; {max - максимальний елемент масиву}
Begin
Clrscr;
Randomize;
{Заповнення масиву випадковими числами та
виведення його на екран для контролю за
роботою програми}
For i:=1 to n do
Begin
A[i]:=random(150) - random(80);
Write(A[i]:5);
end;
{Надання змінним початкових значень}
max:=A[1]; N_max:=1;
count:=0;
{Прохід по масиву для пошуку максимуму та його номеру}
for i:=1 to n do
begin
if A[i]> max
then
begin
max:=A[i];
N_max:=i;
end;
end;
{Другий прохід по масиву для підрахунку кількості
максимальних елементів}
for i:=1 to n do
begin
if A[i]= max
then count:=count+1;
end;
Writeln('Максимум = ',max);
Writeln('Номер першого максимума = ',N_max);
Writeln('Кількість максимумів = ',count);
Readkey; {Затримка зображення на екрані}
End.
IV. Закріплення нових знань
Підведення підсумку, що повинні були вивчити, навчитись робити, оцінювання.
V. Домашнє завдання
--СВИНАРЕНКО АЛЕКСАНДР 11:19, 10 декабря 2008 (EET)