Розробка уроку — практичної роботи

Тема: cтворення програми мовою С# з розгалуженням і повторенням.

Мета: навчитися:

По завершенню вивчення учень:

Обладнання: комп’ютери IBM PC з встановленими ОС та середовищем програмування мовою C# або стійким доступом до мережі Інтернет для роботи з online-компілятором (наприклад, rextester).

Структура уроку

  1. Організаційний момент.
  2. Актуалізація опорних знань.
  3. Вивчення нового матеріалу.
  4. Інструктаж з ТБ.
  5. Закріплення вивченого матеріалу.
  6. Підбиття підсумків уроку.
  7. Домашнє завдання.

Хід уроку

1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.

Мотивація навчання: сьогодні ми навчимося складати програми мовою C# з розгалуженням і повторенням у середовищі. Cклавши програму один раз, можна виконати її для різних значень вхідних даних. Це може істотно зменшити час виконання завдань для багатьох варіантів вхідних даних. Сподіваюся, ви навчитеся краще логічно мислити і використовувати програмування для ефективного розв'язання і навчальних, і практичних задач.

2. Актуалізація опорних знань
(відомості щодо програмування мовою С#)

Основна частина програми мовою на C# має такий вигляд:

static main() {тіло програми}

Оператор виведення значення змінної на екран має такий вигляд:

System.Console.WriteLine(змінна);

Якщо на початку програми написати директиву:

using System;

класи і методи System можна використовувати безпосередньо, не вказуючи їх повні назви. Наприклад, писати Console.WriteLine замість System.Console.WriteLine.

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

Операції поділяють на унарні і бінарні. До унарних належать ті, в яких використано один операнд (аргумент), до бінарних — ті, в яких використано два операнди.

Бінарні арифметичні оператори

НазваЗапис
Додаванняa + b
Відніманняa - b
Діленняa / b
Множенняa * b
Лишок від
ділення
a % b

Наприклад, 4 — результат операції 9%5.

Унарні арифметичні оператори:

Наприклад, такий фрагмент коду:

static void Main(string[] args)
{ int a = 0, b = 5;
  a++; // a=1;
  b--; // b=4;
  System.Console.WriteLine(a);
  System.Console.WriteLine(b);
}

виведе числа 1 і 4 по одному в рядку.

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

Оператори порівняння

НазваЗапис
Більше >
Менше <
Не менше >=
Не перевищує <=
Дорівнює ==
Не дорівнює !=

Оголошення змінних в С# здійснюють таким чином: спочатку вказують тип даних для обраної змінної, а потім назву цієї змінної.

Запис назви змінної або сталої може містити лише літери латиниці, цифри або нижнє підкреслення і має задовольняти такі вимоги:

Вказівка надання значення має такий вигляд:
<назва> = <вираз>;
або
<назва1> = <назва2> = … = <назваN> = <вираз>;

Наприклад, int a; float b; char d='s'; bool k=true;

ТипОбласть значеньТип, розмір,
(точність — кількість
десяткових цифр для
дійсних чисел)
int–2147483648..2147483647ціле зі знаком, 32 біт
byte0..255ціле без знаку, 8 біт
charU+0000..U+ffffсимвол Unicode, 16 біт
booltrue або falseбулеве, 8 біт
short–32768..32767ціле зі знаком, 16 біт
ushort0..65535ціле без знаку, 16 біт
uint0..4294967295ціле без знаку, 32 біт
long–9223372036854775808
..9223372036854775807
ціле зі знаком, 64 біт
ulong0..18446744073709551615ціле без знаку, 64 біт
float±1,5 ∙ 10-45..±3,4 ∙ 1033дійсне, 4 байти, 7 розрядів
double±5 ∙ 10-324..±1,7 ∙ 10306дійсне, 8 байтів, 16 розрядів
decimal -7,9 ∙ 1028..7,9 ∙ 1028дійсне, 16 байтів, 28 розрядів

Примітка. В С# запис оператору надання значення (=) не використовують для позначення рівності при порівнянні значень. Для позначення рівності використовують подвійний запис цього самого символу (==).

3. Вивчення нового матеріалу

Умовні оператори слугують для запису розгалуження у програмі. Залежно від справдження деякої умови (логічного виразу) вони виконують той чи інший набір вказівок. В С# є такі умовні оператори:

Оператор if … else … має такий синтаксис:

if (умова) {Вказівки, які потрібно виконати при справдженні умови}
else       {Вказівки, які потрібно виконати при хибності умови}

— див. приклад з перевіркою введеного числа на парність.

При відсутності else і його продовження маємо неповну форму вказівки розгалуження. Якщо після if або else потрібно виконати лише одну вказівку, фігурні дужки можна не викорис­товувати.

Вкладені умовні оператори використовують для збільшення напрямків галуження:

if (умова1) {блок вказівок1} else
if (умова2) {блок вказівок2} else {блок вказівок3}

— див. приклад визначення, яке з двох введених чисел більше.

Для запису складного логічного виразу використовують логічні оператори:
! — заперечення;
|| — логічне «або»;
&& — логічне «і»

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

Оператор switch має такий синтаксис:

switch (вираз)
{ case значення1 : Блок вказівок1; break;
  case значення2 : Блок вказівок2; break; …
  case значенняn : Блок вказівокn; break;
        default : Блок вказівок(n + 1)
};

Значення виразу буде порівняно послідовно зі значеннями, вказаними після службових слів case. Якщо вираз дорівнює значенню, то буде виконано відповідний блок коду і при досягненні ключового слова break оператор switch завершить свою роботу. Інакше буле виконано блок вказівок після службового слова default — див. приклад програми, яка виводить на екран назву дня тижня відповідно до порядкового номеру дня тижня.

Тернарний оператор ?: використовують для скорочення обсягу коду. Він має такий синтаксис:

логічний вираз? вираз1: вираз2

Спочатку буде обчислено логічний вираз. При його справдженні буде обчислено вираз1, інакше буде обчислено вираз2 — див. приклад програми для перевірки числа на парність.

Оператор ?: можна використовувати для надання значень.

Оператори повторення (дій) — цикли — слугують для опису багаторазового повторення виконання деякої частини коду. У С# є такі 4 оператори циклів: for, while, do-while, foreach.

Оператор for використовують тоді, коли наперед відома кількість повторень. Він має такий синтаксис:

for (ініціалізація лічильника; умова продовження; зміна значення лічильника){дії}

— див. приклад програми, яка виводить на екран числа 0, 1, 2, 3, 4 (по одному в рядку).

У поданому прикладі:

Спочатку буде надано значення: i = 0. Далі при справдженні умови (i < 5) буде виконано тіло циклу (gії) та змінено значення лічильника (у поданому прикладі значення i буде збільшено на 1). Після цього знову перевірка умови і так далі. Коли умова стане хибною, цикл завершить свою роботу.

Оператор whileцикл з перевіркою умови до виконання дій у циклі — має такий синтаксис:

while (умова продовження) {дії}

Розмовною мовою останній запис можна перекласти таким чином: поки справджується умова, виконувати дії — див. приклад програми, яка виводить на екран числа 0, 1, 2, 3, 4 (по одному в рядку).

Оператор do-whileцикл з перевіркою умови після виконання дій у циклі — має такий синтаксис:

do { дії} while (умова продовження)

Розмовною мовою останній запис можна перекласти таким чином: виконувати дії і продовжувати це робити, поки справджується умова продовження — див. приклад програми, що завершить роботу лише при введенні числа 5.

Зауважимо: для цього виду оператора циклу гарантовано хоча б один прохід циклу.

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

foreach (тип змінна in  колекція) {тіло циклу}

— див. приклад програми, що знаходить суму елементів масиву з використанням циклу foreach.

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

Оператор continue дозволяє перейти до наступної ітерації, не завершивши до кінця поточну — див. приклад програми, що яка знаходить суму непарних елементів масиву.

4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу


Програми записувати у вказану вчителем теку з назвами Ваше прізвище_№ завдання.

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

Завдання 2. Скласти програму, яка перевіряє, чи є дане число кратним 3 і/або 7 та виводить на екран монітора відповідне повідомлення.

Завдання 3. Скласти програму, яка визначає, у якої фігури площа більше і на скільки: у квадрата зі стороною x або у прямокутника зі сторонами y і z (натуральні числа x, y, z вводити з клавіатури).

Завдання 4. Скласти програму, яка для даних одновимірного масиву v і двох чисел p і q (p < q) визначить n — кількість елементів масиву v, розташованих (строго) між p і q.

Завдання 5. Скласти програму, яка визначає, чи є дана таблиця чисел 6×6 вона магічним квадратом, у якому суми елементів у всіх рядках і стовпчиках та на діагоналі однакові. При заповненні масивів використати такий зразок для заповнення таблиці а 6×6 числами магічного квадрату й лінійного масиву r довжини 6:

int [,] a = new int [6,6] {
 {27, 29,  2,  4, 13, 36},
 { 9, 11, 20, 22, 31, 18},
 {32, 25,  7,  3, 21, 23},
 {14, 16, 34, 30, 12,  5},
 {28,  6, 15, 17, 26, 19},
 { 1, 24, 33, 35,  8, 10}};        
int [] r = new int [6] {0,0,0,0,0,0};

Порівняти складені програми з демонстраційними розв'язаннями: 1, 2, 3, 4, 5.

6. Підбиття підсумків уроку
Виставлення оцінок.

7. Домашнє завдання

  1. У разі потреби доробити завдання класної роботи.

  2. Удосконалити розв'язання завдання 5: припиняти порівнювання сум елементів у рядках і стовпчиках, щойно буде виявлено різні суми.

  3. Сформулювати й розв'язати задачу з використанням розгалуження й повторення.


Текст упорядкувала Мамедова Лариса Сергіївна, вчитель спеціалізованої школи № 118 «Всесвіт» з поглибленим вивчення європейських мов Подільського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 27.11.2017 по 01.12.2017.