Розробка заняття на тему: "Робота з елементами масиву за допомогою оператора циклу".

Про матеріал
Даний матеріал містить пояснення роботи з елементами масиву за допомогою оператора циклу for, особливості роботи із випадковими числами для надання значення елементам масиву на прикладах; спрямований на затвердження навичок роботи з елементами масивів, розвиток уваги, спостережливості, логічного мислення.
Перегляд файлу

Первомайський ЦНТТУМ

Гурток “Сучасні технології програмування”

Керівник гуртка Семенова Олена Анатоліївна

 

Розробка заняття на тему:

Робота з елементами масиву за допомогою оператора циклу.

 

Тема: Робота з елементами масиву за допомогою оператора циклу.

Мета: повторити поняття “масив”, “одновимірний масив”, “багатовимірний масив”, “двовимірний масив”, їх властивості, способи оголошення, затвердити навички працювати з елементами масива, розвивати увагу, спостережливість, логічне мислення.

Обладнання: ПК, ПЗ — середовище програмування CodeBlocks.

Тип заняття: засвоєння нових знань.

 

Хід заняття

1. Починаємо, як завжди, із розминки :). Сьогодні її сумістимо із повторенням: слова для сліпого набору будемо називати ті, що мають безпосереднє відношення до минулого заняття, або найбільше запам“ятались. Називаємо слово і пояснюємо його значення, як ми його розуміємо...

1. Масив      7. Цикл

2. Елемент      8. Ініціалізація

3. Оголошення     9. Спосіб

4. Індекс      10. Змінна

5. Шахи      11. Значення

6. Оператор      12. Випадок

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

 Перевіряємо текст, виправляємо помилки та похибки, мисленно ставимо собі оцінки і переходимо до програмування. :)

 

2. Основна частина.

 Минуле заняття завершилось трьома завданнями “для справжніх програмістів”. :) Гадаю, що не всі з вас із ними впорались. Для тих, хто все ж таки подолав їх усі, будемо вважати це повторенням із цікавими доповненнями. Тож, давайте розберемось із завданнями по черзі і досконально.

 

  1. Складіть програму, в ході якої одновимірний масив із 10 елементів буде заповнювати користувач введенням чисел в консолі. (Підказка - використайте оператор циклу)

 

 Для початку визначимось із змінними… За завданням нам потрібно заповнити масив із кількістю елементів 10, назвемо його arr (чому саме так? Правильно, тому що англійською масив — array). Отже, першою змінною буде оголошено (?) arr[10] (масив arr із кількістю елементів 10). Кожен елемент масива має вводити користувач, тому в нас має бути змінна - значення елемента. Назвемо її n. Для введення значень елементів ми будемо використовувати оператор циклу, а це означає, що має з“явитись ще одна змінна - лічильник. Нехай вона називається j. Отже, нам потрібно оголосити три цілі змінні. Поїхали!...

 

#include <iostream>

#include <windows.h>//додаткове запитання: навіщо потрібна в програмі ця бібліотека?

using namespace std;

 

int main()

{SetConsoleCP(1251);

SetConsoleOutputCP(1251);

 int n, j, arr[10];

 

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

 

for (j=0; j<k; j++)

{

cout<<"Введіть значення  "<<j+1<<" елемента"<<endl;

cin>>n;

 

 

 Звичайно, можна було просто написати “Введіть значення елемента”... Але так програма для користувача буде виглядати приємнішою і зрозумілішою. Згодні? Насправді це особистий вибір програміста.

 І ще одне запитання: як ви гадаєте, чому там не j, a j+1?

 Так, це теж зроблено саме для зручності користувача. Адже на відміну від нього, програміст знає, що відлік елементів масиву починається з 0, але для користувача це буде перший елемент, який він записує.

 Ідемо далі. В нас почав працювати оператор циклу: користувач вводить перше число n (нульовий елемент масива), і ми повинні записати його значення в масив:

 

age[j]=n;

 Тобто, на першій ітерації (першому колі) цикла у нас j=0, користувач вводить значення нульового елементу n, наприклад, 25 і ми записуємо його в масив: age[j]=n тобто для цього кроку age[0]=25.

 Ітог цих дій: ми надали значення першому (нульовому) елементу масива.

Далі в нас операції цикла закінчуються, оператор збільшує лічильник на одиницю, перевіряє умови циклу і, якщо наш лічильник ще не досяг 9 (чому саме  9?), тобто,   що умова j<10, вірна, то дії повторюються: користувач вводить числа і програма їх записує в масив.

 Коли в нас всі 10 значень для елементів масива будуть введені, цикл закінчиться. Але ми маємо побачити, що все було зроблено правильно, тому давайте подивимось, що там у нас в результаті записано в масив…

 Для цього знову скористаємось оператором циклу. Але на цей раз будемо діяти навпаки: не вводити, а виводити в консоль значення всіх десяти елементів масиву.

 

  for(j=0; j<9 ;j++)     //чому для лічильника в цьому циклі не оголошена інша змінна?

  {cout<<age[j]<<endl;

  }

 return 0;

}

 

 Отже, наша програма в цілому буде виглядати так:

#include <iostream>

#include <windows.h>

using namespace std;

 

int main()

{SetConsoleCP(1251);

SetConsoleOutputCP(1251);

 int n, j, arr[10];

 

for (j=0; j<k; j++)

{cout<<"Введіть значення  "<<j+1<<" елемента"<<endl;

cin>>n;

age[j]=n;

}

  for(j=0; j<9; j++)

  cout<<age[j]<<endl;

 return 0;

}

 Спробуйте тепер змінити програму так, щоб в консоль елементи вивелись не в стовпчик, а в рядок через кому: 64, 15, 6, 7...

 

 Переходимо до другого завдання:

  1. Складіть програму, яка буде заповнювати одновимірний масив із 10 елементів випадковими числами.

Як ви, сподіваюсь, розумієте, в даному завданні ми маємо заповнити масив програмно, а в консолі лише вивести результат для перевірки.

Отже, ми можемо частково використати попередню програму. Чому? Так, тому що в нас змінюється принцип заповнення масиву, а виведення в консоль є аналогічним.

 

Починаємо, як завжди, із аналізу: що нам потрібно для створення випадкових чисел?Пам”ятаємо? Потрібно підключити бібліотеку time.h - вона потрібна для коректної роботи з випадковими числами. І ще потрібно оголосити функцію srand(time(NULL));...  . Поїхали!..

#include <iostream>

#include <windows.h>

#include <time.h>

 

using namespace std;

 

int main()

{SetConsoleCP(1251);

SetConsoleOutputCP(1251);

srand(time(NULL));

 

Тепер подивимось, які нам потрібні змінні: по-перше, масив. Він у нас є: int n, j, arr[10]; , лічильник j теж потрібен, а чи потрібна нам змінна n ? Давайте оголосимо поки що як є, потім побачим :). Отже, оголошуємо змінні і переходимо до заповнення масиву.

 

int n, j=0,  age[10];

 

for (j=0; j<10; j++)   //”перекладіть” цей і наступний рядки із значків у звичні всім слова (тобто пояснити зміст описової частини цикла: для j від 0 до 9 включно із кроком 1 виконувати...)

{

age[j]=rand(); //як бачимо, надання значення елементам масива відбувається без зайвих змінних, отже, змінна n не потрібна, її можна не оголошувати.

}

 

Цикл відпрацював, лишається перевірити результат.

Для цього можна використати цикл з попередньої програми.

 

  for(j=0; j<10 ;j++)

  {cout<<age[j]<<endl; }

 

Давай те все ж таки змінимо цю частину і зробимо виведення значень елементів у рядок через кому :)

 

for(j=0;j<10;j++)

  {cout<<age[j];

  if(j<9)   // навіщо тут умовний оператор? Що він перевіряє і який результат його роботи?

  cout<<",";

  }

 

Отже, ось наша програма для заповнення масива з 10 елементів випадковими числами:

#include <iostream>

#include <windows.h>

#include <time.h>

 

using namespace std;

 

int main()

{SetConsoleCP(1251);

SetConsoleOutputCP(1251);

 int j=0,  age[10];

 

srand(time(NULL));

 

for (j=0;j<10;j++)

{

age[j]=rand();

}

 

 for(j=0;j<10;j++)

  {cout<<age[j];

   if(j<9)

   cout<<",";

  }

 

 return 0;

}

Запитання ще лишились? Якщо все зрозуміло, то в нас лишилось останнє, третє завдання:

  1. Складіть програму, яка заповнить випадковими числами двовимірний масив chess.

 

 Зрозуміло, що це завдання найскладніше, але ми ж не шукаємо легких шляхів. :)

 Програма з 2 завдання нам допоможе. Там все необхідне для генерації випадкових чисел вже є.

 Як завжди, починаємо із умови: потрібно заповнити випадковими числами двовимірний масив chess.  (Що означає в перекладі?)

 Для початку пригадуємо, що таке двовимірний масив: елементи мають два індекса, як пошук “координат” по вертикалі  та горизонталі. Тобто, в нас має бути оголошений масив chess[8][8]. Отже, нам потрібні будуть два лічильника для двох циклів.  Підключаємо бібліотеки та оголошуємо змінні:

 

 

#include <iostream>

#include <windows.h>

#include <time.h>

 

using namespace std;

 

int main()

{SetConsoleCP(1251);

SetConsoleOutputCP(1251);

 int j=0,  chess[8][8], i=0;

 

srand(time(NULL));

 

 Тепер заповнюємо масив елементами: “проходимо “по вертикалі”.  Уявіть собі  шахову дошку ... ми знаходимось у верхньому лівому кутку…у нас дві “координати”:  індекс j=0 (рядок) та індекс і=0(стовпчик).  Тобто, це  нульовий стовпчик, в якому має розташуватись нульовий ряд елементів… Якщо ми спустимось вниз, наш індекс стовпчика збільшиться на одиницю… Отже, ми маємо два цикла, один із яких по лічильнику j  пробігає “внутрі” цикла із лічильником і, тобто, вкладений в нього.

 

for (i=0; i<8; i++)//”йдемо по стовпчиках, починаючи з нульового

{

 for(j=0; j<8 ;j++)// заповнюємо значеннями елементи кожного рядка, відповідно номеру “стовпчика”

{age[j][i]=rand();

if(j==7) //навіщо тут умовний оператор? Що він перевіряє і який результат його роботи?

{cout<<age[j][i]<<endl;}

else

cout<<age[j][i]<<",";

}

 

}

 return 0;

}

 

 Отже, як бачимо, насправді нічого занадто складного немає — досить лише трішки подумати.

 Тепер завдання, щоб побачити, наскільки ви засвоїли роботу із масивами :)

  1. Складіть програму, яка буде заповнювати одновимірний масив із 20 елементів випадковими числами від 1 до 10.
  2. Додайте до програми частину, яка буде із цього масива обирати найменший та найбільший елементи.
  3. (Для особливих любителей) Додайте ще одну можливість: вивести в консоль ВСІ елементи масиву з мінімальним та максимальним значеннями.

     Наприклад, якщо в масиві «arr»  5й та 9й елемент дорівнюють 1, то в консолі після переліку всіх значень має з“явитись ще щось  типу: елементи arr[5] та arr[9] мають мінімальне значення 1… Або: максимальне значення 10 мають елементи arr[1],

arr[12], arr[19].

 

 

 

 

 

 

 

 

 Приємного кодування! :)

docx
Додано
23 грудня 2021
Переглядів
489
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку