Відмінності між версіями «Конспект уроку №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)