Розробка уроку

Тема: початки мови програмування С++.

Мета: ознайомитися з поняттям і структурою мови програмування С++, з величинами простих типів, їх властивостями та операціями над ними в середовищі програмування С++. По закінченню вивчення теми учень

має уявлення:

знає зміст понять:

пояснює правила виконання операцій кон'юнкції, диз'юнкції та заперечення над величинами логічного типу;

описує:

класифікує величини;

уміє:

Обладнання: ПК з встановленими ОС і середовищем програмування С++, (дана) інструкція.

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

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

Хід уроку

1. Організаційний момент

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

2. Актуалізація знань
Дати означення понять, виділені жирним шрифтом.

Алгоритмце запис скінченої послідовності вказівок, виконання яких призводить до розв'язання певної задачі.

Вказівка (алгоритму) — це спонукальне речення, що вказує, яку дію має виконати виконавець алгоритму.

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

Система вказівок виконавцяце множина (сукупність) всіх вказівок, які може виконувати даний виконавець.

Середовище виконання алгоритму — об'єкти, з якими працює виконавець у процесі виконання алгоритму.

Властивості алгоритму: дискретність, визначеність, виконуваність, скінченність, результативність, масовість, ефективність.

Дискретність (латинською discretus — розділений, розривний) алгоритму означає, що виконання алгоритму зводиться до виконання окремих дій (кроків) у певній послідовності. Причому, кожну вказівку алгоритму виконують за скінченний проміжок часу.

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

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

Скінченність означає, що виконання алгоритму закінчиться після скінченної (можливо, досить великої) кількості кроків і за скінченний час для довільних вхідних даних.

Результативність алгоритму означає, що після закінчення виконання алгоритму обов’язково:

Масовість алгоритму означає, що алгоритм можна застосувати до цілого класу однотипних задач, для яких спільними є умова та хід розв’язування та які відрізняються лише початковими (вхідними) даними. Наприклад, алгоритмом дій, складеним для одного касира, можуть успішно скористатися всі касири супермаркету. А програмою пошуку коду і підрахунку суми вартостей товарів, придбаних покупцем, — усі комп'ютери супермаркету

Ефективність алгоритму описує час виконання і об'єм ресурсів, необхідних для виконання алгоритму: чим менше часу (часова ефективність) і ресурсів (просторова ефективність), тим ефективність вища.

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

Мова програмування (англійською programming language) — це система позначень для опису алгоритмів та структур даних.

Мову програмування визначає набір лексичних, синтаксичних і семантичних правил, що задають зовнішній вигляд програми і дії, які виконує виконавець (комп'ютер) під її керуванням.

Синтаксис мови програмуванняправила, що визначають, як має виглядати програма цією мовою. Зокрема, як писати вказівки (оператори), опис типів даних, сталих і змінних та інші мовні конструкції.

Тип данихце деякий клас об'єктів даних разом з набором операцій для створення і роботи з ними. В кожній мові програмування є певний набір вбудованих примітивних типів даних. Зазвичай додатково передбачено засоби визначення нових типів даних.

Програмний кодтекст програми — складається з вказівок, описів змінних, сталих, приєднаних бібліотек тощо.

Компілятордопоміжна програма для компіляції — створення машинного коду, тобто перекладу мовою вказівок комп'ютера.

C++мова програмування, яку на початку 80-х років створив Бьяртні Страуструп на основі популярної серед професіоналів-програмістів мови С.

Назва мови С++ походить від назв С та операції інкременту (див. далі ++).

Абетка мови С++набір допустимих символів — складається з:

Літери українського алфавіту можна використовувати лише для запису коментарів.

Коментарце частина тексту програми для пояснення програми чи окремих вказівок і не впливає на виконання програми.

Коментар мовою С++ записують так:
// текст коментаря до кінця рядка
/* текст коментаря */

Програми складаються із синтаксичних конструкцій, які називають вказівками (інші назви — оператори, команди, речення). Вказівки будують з неподільних елементів мови: слів, чисел, символів операцій. Слова поділяють на ключові слова й ідентифікатори (назви величин)

Ключові (службові, зарезервовані) слова використовують для запису вказівок і опису об'єктів.

Наприклад: if, else, int, float, const, sqrt тощо. Змінити призначення ключового слова у програмі не можна.

Ідентифікаторце назва, яку надають об'єктам (змінним, сталим, функціям тощо).

Істотною особливістю мови С++ порівняно з іншими мовами є те, що програма складається з функцій, які відіграють роль підпрограм (процедур) в інших мовах.

Головна функція, яка має бути в кожній програмі, — це функція такого вигляду:

int main()
{
 тіло функції;
}


Директиви препроцесоравказівки компілятора, які виконуються на початку компіляції програми і їх відповідно записують на початку тексту програми — у мові С++ починаються із символу #.

Директива #include <назва файлу.розширення> означає приєднання програмного коду зі вказаного файлу.

Найчастіше це стандартні бібліотеки, розташовані у теці INCLUDE і необхідні для виконання вказівок мови С++. Наприклад, для виконання вказівок введення-виведення даних необхідно підключити бібліотеку iostream.h.

Найпростіша програма мовою С++ має такий загальний вигляд:

#include <назва файлу 1.розширення> …
#include <назва файлу N.розширення>
int main()
 {
  <тіло функції>;
 }


Зазвичай програми мають і інші об'єкти: дані (змінні та сталі), функції (стандартні та створені користувачем) тощо. Всі дані, які використовують у програмі, необхідно зазделегідь описати для розподілу оперативної пам'яті згідно з описами.

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

Назва величини:

У мові С++ розрізняють малі та великі літери. Наприклад, ідентифікатори sum i Sum — різні.

У програмі С++ всі оголошення об'єктів і вказівки закінчують символом ; (крапка з комою).

Сталівид даних, значення яких заборонено змінювати протягом виконання програми. Їх описують після ключового слова const. Наприклад,

const k = 100, a = -3;
const float = 5.1, z = 10;


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

Зміннівид даних, значення яких дозволено змінювати протягом виконання програми.

Змінним можна надавати величину під час опису (оголошення). Елементи списків записують через кому. Наприклад,

int k, n = 0;
float a, b = 2.3, c;
char t = 'c', s;


Величини потрібно описати до їхнього першого використання.

Тип даних характеризує допустимі величини для цих даних і сукупністю операцій над ними.

В мові С++ розрізнять прості та складні типи даних. До простих відносять числові, логічні та символьні типи даних.

Числові дані поділяють на цілі та дійсні.

Цілі типи

Назва типуОбсяг,
байтів
Діапазон
int2 або 4 –32768...32767 або
–2147483648...2147483647
short int2 –32768...32767
unsigned short int2 або 4 0...65536 або 0...4294967295
long int 4–2147483648...2147483647
unsigned long int40...4294967295

Об'єм пам'яті, яка виділяють під величини типу int та unsigned short int, залежать від розрядності операційної системи: 2 байти в 32-х розрядній і 4 байти в 64-х розрядній системі.

Дійсні типи

Назва типуОбсяг,
байтів
Діапазон
float 4 3.4·10–38...3.4·10+38
double8 1.7·10–308...1.7·10+308
long double10 1.18·10–4932...1.18·10+4932

Для дійсних чисел вказано діапазони зміни абсолютнної величини (модуля). Дійсні числа можна записувати у форматі з фіксованою крапкою (2.56, –0.3) або у науковому форматі (з рухомою крапкою: –0.23e3=–230, 1.45e–2=0.0145)

Логічний тип bool. Змінні цього типу можуть набувати лише величин: false (хибність) і true (істина). Вони займають 1 байт у пам'яті.

Символьний тип char. Змінні цього типу можуть набувати лише величин з кодової таблиці комп'ютера ASCII.

Символьна стала це один символ, узятий в одинарні лапки, або число у 8-, 10- чи 16-й системі числення, яке є кодом символу у таблиці ASCII. Наприклад:

char s='f'; d=102;

Зауважимо: 102 — це десятковий код символу 'f'. Після такого опису:

char s='f'; int n=s;

змінна n набуде величини 102.

Вказівка надання значення має такий вигляд:

<назва> = <вираз>;

або

<назва1> = <назва2> = … = <назваN> = <вираз>;

і діє так: обчислюють вираз і його величину надають змінній або декільком змінним. Вираз може містити числа, сталі, змінні, назви функцій, з'єднані символами операцій. Змінна і вираз не обов'язково мають бути одного типу. У С++ відбувається автоматичне перетворення (узгодження) типів. Розрізняють явне і неявне узгодження типів. При перетворенні дійсного числа в ціле відкидають дробову частину. Наприклад, після виконання такого коду:

int b, a; float c;
a = 2; c = 4.9; b = a*c;

змінна b набуде величини 9 після неявного перетворення дійсного числа 9.8 у ціле.

Явне перетворення типів задають у круглих дужках перед змінною чи виразом.

Явне перетворення типів для поданого вище прикладу опису змінних:

ВказівкаРезультат виконання
b = (int)  c * a; b = (int) 4.9 * 2 = 4 * 2 = 8
b = (int) (c * a); b = (int) (4.9 * 2 ) = (int) 9.8 = 9

Вираз може містити дані різних числових типів (змішані вирази). Узгодження типів у виразах відбувається з урахуванням пріорітету типів:

Операції

ПозначенняЗміст
+ -надання знаку
*множення
/ділення
%остача від ділення
+додавання
-віднімання
==дорівнює
!=не дорівнює
<менше
<=не більше
>більше
>=не менше

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

16 / 4 - 2 = 2;
16 / (4 - 2) = 8;


Операція інкременту (++) існує у двох формах:

Величину змінної при цьому збільшують на 1. Інакше кажучи, вказівки a++, ++a і a=a+1 — рівносильні. Але форма інкременту впливає на порядок виконання операцій. Наприклад:

Операція декременту (--) має такі самі форми і властивості, але діє як вказівка зменшення на 1.

Cуміщення вказівки надання величини з арифметичною операцією (між символами пропуску немає) у мові С++ використовують для скорочення коду програми. А саме:

ПозначенняЗміст
+=збільшити на …
-=зменшити на …
*=збільшити у таку кількість разів
/=зменшити у таку кількість разів
%=замінити на залишок від ділення на …

Наприклад, такі пари вказівок рівносильні:
a = a + 10;  i  a += 10;
b = 4 * b;  i  b *= 4;

Математичні функції (основні) описано у бібліотеці math.h, яку необхідно обов'язово підключати для використання цих функцій, серед яких є такі:

abs(x) — модуль числа х;
sqrt(x) — кадратний корінь числа х;
pow(x,y) — піднесення числа х до степеня y;
ceil(x) — заокруглення числа х до більшого цілого;
floor(x) — результат відкидання дробової частини числа х.

Якщо в арифметичному виразі використано функції, то спочатку обчислюють величини всіх функцій, а потім виконують операції згідно їх пріорітету та дужок (як в математиці). Вирази записують в один рядок, але можна записувати і в декілька рядків, «розриваючи» після символа арифметичної операції. Власне символ дублювати не потрібно.

Тип логічної (булевої) змінної bool мають дані, що набувають лише двох величин:

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

Проста умоваце два арифметичних вирази, сполучені символом операції (відношення) порівняння.

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

Прості і складені умови — частковий випадок висловлювань. Математична теорія висловлювань — складова університетського курсу математичної логіки — ґрунтується на аксіоматичному підході. Внаслідок високого рівня абстракції її не вивчають у школі. Тому будемо користуватися неформалізованими (наївними) уявленнями про висловлювання. Для висловлювань, записаних мовою програмування, будемо користуватися також назвою логічний вираз.

Примітка. Логічним виразом може бути ціле число: 0 — false, відмінне від 0 — true.

Логічні операції C++

ПріорітетОпераціяНазва
1 ! заперечення
2 && логічне «і»
3 | логічне «або»

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

Логічне «і» (кон'юнкція) справджується тоді й лише тоді, коли справджуються обидва її аргументи — висловлювання, записані безпосередньо до і після знаку операції.

Логічне «або» (диз'юнкція) — справджується тоді й лише тоді, коли справджується хоча б один з двох її аргументів — висловлювань, записаних безпосередньо до і після знаку операції.

Таблиця істинності в іншій формі подає запроваджені означення. Тут A і B — логічні вирази або дані логічного типу.

AB! B A && BA | B
false false true false false
false true false falsetrue
true false true falsetrue
true true false truetrue

Приклади логічних виразів (для цілого х):

Примітка. При вивченні математичної логіки у вищій школі доводять теорему (про існування нормальної диз'юнктивної форми булевої функції), з якої випливає, що будь-яку булеву функцію (залежність булевої змінної від булевих змінних-аргументів) можна виразити за допомогою заперечення, логічних «і» та «або».

Логічні змінні й вирази зазвичай використовують як умови у вказівках галуження та циклу.

Введення-виведення даних у мові С++ реалізовано з використанням концепції потоків, бо немає вбудованих вказівок введення-виведення. Під потоком розуміють процес уведення-виведення даних (як послідовності символів) у файл. Периферійні пристрої введення-виведення клавіатура і монітор розглядаються як текстові файли. Під час виконання будь-якої програми автоматично підключаються стандартні потоки для введення даних з клавіатури та виведення на монітор. При бажанні потоки можна перенаправити на інший пристрій, наприклад, файл жорсткого диску. Вказівки введення-виведення даних описано у бібліотеці iostream (Input / Output Stream — поток введення / виведення), яку необхідно підключати майже в кожній програмі. Цю бібліотеку включено у стандартну бібліотеку C++.

cin >> — вказівка введення даних із клавіатури — дає змогу вводити величину однієї або величини декількох змінних (вказівку >> застосовують перед кожною змінною). Наприклад:

cin >> a >> b;

При виконанні програми значення змінних вводяться через пропуск або натисненням клавіші Enter.

cout << — дає змогу виводити на монітор величини сталих, змінних або виразів.

Текстові повідомлення записують у подвійних лапках, але самі лапки на екран не виводяться.

У мові С++ є набір керівних послідовностей (символів), які записують у вказівках введення-виведення. Керівну послідовність "\n" викорис­товують для переходу на новий рядок перед або після потоку виведення даних. Наприклад:

cout <<"\n s="<<s; — виводить на монітор у новому рядку назву змінної та її значення.

Для зручності роботи користувача з створено інтерактивне інтегроване середовище програмування, у якому об'єднано можливості:

і в якому передбачено можливість запуску програми на виконання в разі успішної компіляції. Інтерактивним середовище називають тому, що воно працює в режимі постійного спілкування з користувачем, а інтегрованим тому, що об'єднує в собі одночасно всі згадані вище можливості. Такими середовищами є, наприклад, платформно незалежне і вільно поширюване середовище Code Blocks, яке ми будемо вивчати на наступних уроках.

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

#include <iostream>
using namespace std;
int main()
{
 int a,b;
 cin >>a >>b;
 cout << a*b;
 return 0;
}

Тут вказівка

using namespace std;

замовляє простір назв std, який використовують майже всі стандартні бібліотеки С++.

Простір назвдеяке сховище чи середовище, створене для назв. Одну й ту саму назву можна незалежно означити (тлумачити) у кількох просторах. Тлумачення назви, визначеної у просторі назв, пов'язане саме з цим простором.

Зазвичай вважають, що програмувати складно і не кожен може бути програмістом. Насправді, маючи інтегроване середовище програмування, програмувати легко і просто, порівняно зі складанням алгоритмів. І навчитися цьому нескладно, якщо починати з редагування наявних програм.

Завдання 1. Змінити подану вище програму таким чином, щоб обчис­лювати:

Приклад 2. Подамо приклад програми знаходження кількості цифр введеного цілого числа (до 10 цифр).

#include <iostream>
using namespace std;
int main()
{
  int a,b;
  cin >> a;
  b=0;
  while (a>0)
  {
    a/=10;
    b+=1;
  }
  cout << b;
  return 0;
}

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

Примітка. В даному середовищі програмування не забезпечено вивід повідомлень кирилицею, для використання україно- чи російськомовних повідомлень недостатньо лише вказівки cout. Як це зробити при кодуванні файлів UTF-8 показано у наступному коді програми розв'язання такої задачі: за введеним роком народження людини визначити, чи у 2013 році вона була шкільного віку, тобто чи був її вік від 6 до 17 років включно.

#include <iostream>
#include <clocale>
using namespace std;
int main()
{
  setlocale(LC_ALL, "");
  wcout << L"Введiть рiк народження" << endl;
  int r,v;   bool s; // опис змінних
  cin >> r;          // введення r - року народження
  v=2013 - r;        // обчислення v - віку
  if ((s = v > 5) && (v < 18))
  wcout << L"Школяр" << endl;
  else
  wcout << L"Не школяр" << endl;
}

При цьому використано компілятор налаштовано таким чином.

Якщо в тексті програми є помилки, то їх можна переглянути на закладці Build messages, розташованій у нижній частині вікна під робочим полем.

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

Приклад 4. Наступна програма зчитує 3 цілих числа й порівнює кожне з них з сумою решти. У разі перевищення виводить 1, інакше — 0.

Код програми

#include <iostream>
#include <clocale>
using namespace std;
int main()
{
  setlocale(LC_ALL, "");
  wcout << L"Введiть цiлi числа a, b, c " << endl;
  int   a, b, c;
  bool la,lb,lc;
  cin  >> a >> b >> c;
  la=(a<b+c);
  lb=(b<c+a);
  lc=(c<a+b);
  cout << "a>b+c b>c+a c>a+b" << endl;
  cout << "  " << la << "     "
               << lb << "     " << lc << endl;
}

Вікно користувача після запуску програми й уведення чисел 8 5 2 має такий вигляд.

4. Закріплення вивченого матеріалу

Завдання 1. Дати відповіді на запитання.

  1. Якою буде величина b після виконання такого коду?

    int a = 5, b;
    b = a / 2;
    c = a / 4 + b;
  2. Якими будуть величини c, d після виконання такого коду?

    int d, c;
    d = 2.6;
    c = pow(d,3);
    c += 2;
    d = 10*c++;
  3. Якими будуть величини c, d, якщо у попередньому завданні використати префіксну форму інкременту?

  4. Величини змінних o1, o2, o3, o4, o5 — річні оцінки учня. Записати логічний вираз, який справджується тоді й лише тоді, коли учень відмінник, тобто всі його оцінки перевищують 9. Описати всі використані змінні.

  5. Величини змінних o1, o2, o3, o4, o5 — річні оцінки учня. Записати логічний вираз, який справджується тоді й лише тоді, коли учень не встигає, тобто хоча б одна з оцінок менша від 4. Описати всі використані змінні.

Завдання 2. Перевірити у середовищі програмування отримані відповіді до завдання 1.

5. Підсумок уроку

Виставлення оцінок.

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

Завдання 1. Дано вік людини. Скласти логічний вираз, який справджується тоді й лише тоді, коли ця людина не шкільного віку.

Завдання 2. Дано ціле число. Скласти логічний вираз, який справджується тоді й лише тоді, коли це двозначне число.

Завдання 3. Дано порядковий номер року. Скласти логічний вираз, який справджується тоді й лише тоді, коли цей рік високосний. Врахувати, що серед років, які кратні 4 не всі роки високосні. Високосними не є роки кратні 100, але кратні 400 — високосні.

Завдання 4. Поміняти величини двох змінних цілого типу без використання додаткових змінних і операцій введення-виведення. Скласти алгоритм та написати текст програми мовою С++.


Текст упорядкувала Людмила Павлівна Кохно, вчитель інформатики спеціа­лізованої школи № 94 «Еллада» Печерського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 28.10.2013 року по 01.11.2013 року.