Урок. "Поняття підпрограми та її аргументів. Поняття локальних і глобальних змінних. Формальні і фактичні параметри підпрограм. Стандартні підпрограми та підпрограми користувача."

Про матеріал

Засвоюємо відомості з основ алгоритмізації та програмування, знайомимося з мовою С++ та її складовими. Вивчаємо поняття підпрограми та її аргументів. Поняття локальних і глобальних змінних. Формальні і фактичні параметри підпрограм. Стандартні підпрограми та підпрограми користувача. Створення і виклик підпрограм.

Перегляд файлу

 

 

Тема: Поняття підпрограми та її аргументів. Поняття локальних і глобальних змінних. Формальні і фактичні параметри підпрограм. Стандартні підпрограми та підпрограми користувача. Створення і виклик підпрограм.

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

Розвивальна мета: Розвивати координацію рухів, зорову пам’ять, вміння працювати з програмами

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

Тип уроку:  Урок вивчення нового матеріалу (лекція)

 

Хід уроку

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

Сьогодні ми з вами розглянемо тему: «Поняття підпрограми та її аргументів. Поняття локальних і глобальних змінних. Формальні і фактичні параметри підпрограм. Стандартні підпрограми та підпрограми користувача. Створення і виклик підпрограм.».

 

II. Етап орієнтації

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

 

III. Етап проектування

План уроку

  1.                   Поняття підпрограми та її аргументів.
  2.                   Поняття локальних і глобальних змінних.
  3.                   Формальні і фактичні параметри підпрограм.
  4.                   Стандартні підпрограми та підпрограми користувача.
  5.                   Створення і виклик підпрограм.

ІV. Етап навчальної діяльності

Будь-яку програму можна розділити на частини. Наприклад, одна з частин відповідає за отримання вхідних даних, інша – за розрахунок вихідних даних, а третя – передає ці дані на пристрої виведення.

В С++, як і в будь-якій мові програмування є засоби, які дозволяють об’єднати такі структурні одиниці і присвоїти їм власне ім’я. Такі структурні одиниці в С++ називаються функціями (підпрограмами).

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

Мова С++ включає в себе бібліотеки функцій, які можна використовувати в програмі. Перед тим, як розповісти як визначити функцію самому, давайте розглянемо як використовувати стандартні функції.

Розглянемо функцію sqrt, яка визначає квадратний корінь заданого числа. Вхідними даними є аргумент функції (число з якого потрібно визначити квадратний корінь), а вихідними даними є значення, яке обчислює сама функція. В деяких функціях може бути більше одного аргумента, але більше одного вихідного значення НЕ БУВАЄ.

Синтаксис використання функції дуже простий. Наприклад, присвоїмо значення кореня числа 9 змінній kor

kor = sqrt(9.0);

Вираз sqrt(9.0) називають викликом функції (зверненням до функції). В якості аргумента може виступати як константа(число 9.0), так і змінна. Функції можна використовувати при обчисленні в виразах, наприклад k = sqrt(D)/2.  Це

Виклик функції можна також використовувати в cout-інструкціях. Наприклад,

cout<<”Довжина сторони квадрата, площа якого дорівнює”<<area<<”, дорівнює ”<<sqrt(area);

Виклик функції – це вираз, який складається з ім’я функції за яким в дужках знаходяться аргументи функції. Якщо у функції декілька аргументів, то вони відділяються один від одного комами.

 

Синтаксис виклику функції

Ім’я _функції (Список_аргументів)

 

Ім’я

Опис функції

Тип аргументу

Тип вихідного значення

Приклад

Вихідне значення

Заголовок бібліотеки

sqrt

Квадратний корінь

double

double

sqrt(4.0)

2.0

cmath

pow

Піднесення до степеня

double

double

pow(2.0,3.0)

8.0

cmath

abs

Абсолютне значення тип int

int

int

abs(-7)

abs(7)

7

7

cstdlib

labs

Абсолютне значення тип long

long

long

labs(-70000)

labs(70000)

70000

70000

cstdlib

fabs

Абсолютне значення тип double

double

double

fabs (-7.5)

fabs (7.5)

7.5

7.5

cmath

ceil

Округлення зверху

double

double

ceil(3.2)

ceil(3.9)

4.0

4.0

cmath

floor

Округлення знизу

double

double

floor(3.2)

floor(3.9)

3.0

3.0

cmath

Наприклад, pow(x,y) це , тільки потрібно пам’ятати, що тип змінних х і у завжди буде дробовим(double).

Увага!!!

При математичному діленні чисел типу int ми отримаємо число також типу int. Але це не завжди правильно. Наприклад, 9 : 2 = 4,5, але числа 9,2 типу int, а число 4,5 типу double. При діленні в середовищі С++ ми отримаємо наступне:

9 / 2 = 4

Що не є вірним значенням. Для того, щоб програма рахувала вірно, потрібно, щоб хоча б один аргумент був типу double.

При діленні в середовищі С++ ми отримаємо наступне:

9 / 2,0 = 4,5  або    9,0 / 2 = 4,5

 

Якщо ми маємо працювати зі змінними, то не досить буде задати один з аргументів типом double.  Для правильного підрахунку використовується функція приведення типу int в тип double, яка виглядає так:

double(9);

Дана інструкція перекладає число 9 в число 9,0. Замість числа 9 можна підставляти будь-яку змінну.

double(total_weight);

 

Наприклад, щоб підрахувати вагу однієї штуки товару потрібно загальну вагу товару поділити на кількість товару(штук).

 

int total_weight, number;

double one_weight;

one_weight = double(total_weight)/ number;

 

Завдання 1. Обчисліть значення арифметичних виразів:


sqrt(16.0)= 4.0

pow(2,3)= 8.0

abs(3)= 3

fabs(-3.0)= 3.0

ceil(5.1)= 6.0

floor(5.8)= 5.0

7/abs(-2)= 3

sqrt(16)= 4.0

pow(2.0,3)= 8.0

abs(-3)= 3

fabs(-3.5)= 3.5

ceil(5.8)= 6.0

pow(3.0,2)/2.0= 4.5

(7+ sqrt(4.0))/3.0= 3.0

pow(2.0,3.0)= 8.0

pow(1.1,2)= 1.21

abs(0)= 0

fabs(3.5)= 3.5

floor(5.1)= 5.0

pow(3.0,2)/2= 4.5

sqrt(pow(3,2))= 3.0


Завдання 2. Перекладіть математичні вирази на мову С++:

=sqrt(x+y)

= sqrt(time+tide)/nobody

= (-b+sqrt(b*b-4*a*c))/(2*a)

= pow(x, y+7)

= sqrt()

= abs(x-y)  або fabs(x-y)  labs(x-y) 

Завдання 3. Напишіть програму, яка вираховує квадратний корінь з числа Пі, Число Пі приблизно дорівнює 3,14159. Константа const double Pi знаходиться в бібліотеці cmath.

#include <iostream>

#include <cmath>

using namespase std;

int mail()

{

cout<<”Квадратний корінь з ”<<PI<<”=”<<sqrt(PI)<<endl;

return 0;

}

 

Створення власних функцій

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

В Лістингу показано приклад визначення власної функції в середині програми. Функція називається total_cost і має два аргументи – ціна одиниці товару і кількість одиниць товару, який потрібно купити. Функція повертає користувачу повну вартість всього товару з урахуванням податку.

Лістинг

#include <iostream>

using namespase std;

// Прототип функції

double total_cost(int number_par, double price_par);

// Обчислює повну вартість number_par штук по ціні price_par

// з урахуванням 5% податку.

int mail()

{

double price, bill;

int number;

cout<<”Введіть кількість одиниць товару \n”;

cin>> number;

cout<<”Введіть ціну одиниці товару \n”;

cin>> price;

bill = total_cost(number, price); //виклик функції

cout.setf(ios::fixed);

cout.setf(ios::showpoint);

cout.precision(2);

cout<<number<<” одиниць по ”<< price<<” $”<<”кожна<<endl;

cout<<”Загальна сума з врахуванням податку<<bill<<” $”<< endl;

return 0;

}

 

//Визначення функції

double total_cost(int number_par, double price_par)

{

//Початок тіла функції

const double TAX_RATE=0.05; //5% податoк.

double subtotal;

subtotal= price_par* number_par;

return(subtotal+ subtotal *TAX_RATE);

}

////Кінець тіла функції

 

Приклад діалогу

Введіть кількість одиниць товару 2

Введіть ціну одиниці товару 10,10

2 одиниць по 10.10 $ кожна

Загальна сума з врахуванням податку 21.21 $

 

 

Опис функції складається з двох частин, які називаються прототипом функції та визначенням функції.

Прототип функції описує, як функція повинна викликатися, а також містить інформацію про ім’я функції, кількість її аргументів та тип функції і закінчується завжди крапкою з комою. Аргументи прототипу функції називають формальними параметрами.  Вони виступають в ролі заповнювача, який стоїть замість реального аргументу. В якості імен формальних параметрів можуть виступати будь-які правильні ідентифікатори. Перше слово прототипу функції вказує на тип значення, який повертає дана функція.

Наприклад, в нашому лістингу прототип функції це

double total_cost(int number_par, double price_par);

number_par, price_par – формальні параметри

функція total_cost має тип double

Виклик функції, який знаходиться в програмі має вигляд:

bill = total_cost(number, price);

 

Синтаксис прототипу функції

В коді прототип знаходиться до виклику функції, зазвичай перед функцією main()

 

Тип_функції     Ім’я _функції (Список_параметрів);

 

де Список_параметрів має вигляд

Тип1_ Формальний параметр1, Тип2_ Формальний параметр2, і т.д.

 

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

Інструкція return складається безпосередньо з слова return та виразу, який повертає функція в програму. Виклик функції завершується виконанням функції return

 

Синтаксис визначення функції

 

Тип_функції     Ім’я _функції (Список_параметрів)

{//Початок тіла функції

Об’ява змінних 1

Інструкція1;

return(Функція, яка повертає значення в програму);

}//Кінець тіла функції

 

При повторному виклику функції bill = total_cost(number, price);  замість формальних (невідомих) аргументів підставляються вже відомі(фактичні параметри) змінні number, price в функцію та відбувається обчислення даної функції.

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

Змінні, які об’являються в тілі функції називають локальними змінними даної функції.

Змінні, які об’являються в функції main програми називають локальними змінними функції main.

Розміщення директиви using в середині функції виконується аналогічно і називається локальною директивою. 

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

Крім глобальних констант можна використовувати глобальні змінні, але використовуються такі змінні в програмуванні дуже рідко.

 

Завдання 1. Написати прототип і визначення функції з трьома змінними, яка повертає програмі значення суми цих трьох аргументів. Всі аргументи типу int

 

Прототип функції:

int sum(int n1, int n2, int n3);

// Повертає значення суми трьох цілих чисел

 

Визначення функції:

int sum(int n1, int n2, int n3)

{

return(n1+n2+n3);

}

 

 

Завдання 2. Написати прототип і визначення функції з одним аргументом типу double. При додатному значенні аргументу програма повертає символьне значення ‘P, при від’ємному значенні аргументу програма повертає символьне значення ‘F’.

 

Прототип функції:

char positive_test (double number);

/* При додатному значенні аргументу програма повертає символьне значення ‘P, при від’ємному значенні аргументу програма повертає символьне значення ‘F’. */

 

Визначення функції:

char positive_test (double number)

{

if (number > 0)

{

return(‘P’);

}

else

{

return(‘F’);

}

}

 

 

VI. Контрольно-оцінювальний етап

Вчитель оцінює роботу учнів на уроці

 

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

Завдання. Написати прототип і визначення функції з одним аргументом типу double. При додатному значенні аргументу програма повертає фразу ‘Здано, при від’ємному значенні аргументу програма повертає фразу ‘Не здано’.

 

1

 

doc
До підручника
Інформатика (академічний, профільний рівень) 11 клас (Лисенко Т.І., Ривкінд Й.Я., Чернікова Л.А., Шакотько В.В.)
Додано
18 вересня 2018
Переглядів
671
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

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