Головна » Інформатика

Загальні відомості про функції. Класифікація функцій (С++)

Мета заняття:

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

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

Виховна:           Розвивати пізнавальний інтерес до предмету та задоволеність обраною професією.

 

Методичне забезпечення заняття:

Обладнання:

Роздатковий матеріал: Картки для самостійної роботи. Перелік стандартних функцій С++.

Форма роботи:  групова та індивідуальна.

Метод викладання:      Лекція (з елементами бесіди)

 

Список літератури:

1. О. І. Щедріна «Алгоритмізація та програмування процедур обробки інформації», навчальний посібник, Київ, 2001.-240с.

2. Т. А Павловская «С/С++. Программирование на языке высокого уровня», учебник для ВУЗов, Питер, 2007.-462с.

3. Т. А Павловская, Ю. А. Щупак «С/С++ Структурное программирование. Практикум» учебное пособие, Питер, 2007.- 238с.

4. Н. Культин «С/С++ в задачах и примерах», Санкт-Петербург, «БХВ-Петербург», 2004.-281с.

 

ХІД ЗАНЯТТЯ

І        Організаційна частина                                                              

1. Перевірка присутності студентів.

ІІ       Актуалізація опорних знань:

Фронтальне опитування студентів з теми «Цикли while та do while. Інструкції break, goto та continue»

         2. Перевірка домашнього завдання – виконання самостійної роботи.

ІІІ     Мотивація навчальної діяльності студентів

Повідомлення теми, мети і завдання заняття. Обґрунтування значення функцій у програмуванні.

IV     Сприйняття і первинне усвідомлення студентами навчального матеріалу

 

План лекції

 

Класифікація функцій мови С++                   (слайд)

 Визначення функції;
Стандартні функції;
Функції користувача;

Запитання на закріплення                       (слайд)

Дайте визначення функції;
Як класифікуються функції?
Скільки програма може містити функцій?

Структура функцій користувача                 (слайд)

Прототип функції;
Виклик функції;
Визначення функції.

2.1 Запитання на закріплення                          (слайд)

Де і як оголосити прототип функції?
Що таке тип поверненого значення?
Які існують типи поверненого значення?
В якому місці програми можна викликати функцію користувача?
Чи має значення тип параметра, який передається у стандартну функцію?
Якій інструкції передається управління при виклику функції?
Якій інструкції передається управління після закінчення виконання функції?
В якому місці програми можна описати визначення функції?
З яких символів починається тіло функції?

Приклад використання функції                   (слайд-задача«Максимальне число»)

(слайд-задача «Знак порівняння чисел»)

 

Параметри функцій                              (слайд)

Фактичні параметри;
Формальні параметри;
Інструкція return.

Запитання на закріплення            (слайд)

Чи повинна співпадати кількість фактичних і формальних параметрів?  Обґрунтуйте відповідь.
В якому випадку інструкція return в тілі функції не використовується?
Чи допускається позначення різними символами фактичних та формальних параметрів?

 

(слайд-задача «Математична дія»)
Відеофільм «Основи С++. Функції»

 

V  Підведення підсумків заняття, оцінювання знань студентів

VІ Домашнє завдання                                     (слайд-задача «Математичний вираз»)

                                                             (слайд «Теми для самостійного вивчення»)

 

Вивчити тему «Загальні відомості про функції. Класифікація функцій»

О. І. Щедріна Алгоритмізація та програмування процедур обробки інформації, с. 162-174;
http://www.edu.rckneu.com.ua

Самостійно опрацювати теми:

Передача параметрів у функцію; О. І. Щедріна Алгоритмізація та програмування процедур обробки інформації, с. 167-171;
Шаблони функцій. Т. А Павловская С/С++ Программирование на языке высокого уровня, с.85-87;

Написати програму, яка обчислює значення виразу (вираз вибрати самостійно).

Передбачити функцію користувача, яка на екран монітору виводить результат.

 

 

ЛЕКЦІЯ

 

 Загальні відомості про функції. Класифікація функцій

 

        Функція – це логічно закінчений фрагмент програми, який має власне ім’я та параметри.

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

 

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

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

#include "math.h"                cos() sin() abs() pow()

#include "string.h"               strlen() strcmp()           

#include "conio.h "              textcolor() cprintf()

#include "iostream.h "                   cout cin

#include "stdio.h "               printf() scanf()

 

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

 

/ / Функція sqrt з одним аргументом - дійсним числом подвійної точності,

/ / Повертає результат типу double

double sqrt (double x);

 

/ / Функція sum від трьох цілих аргументів

/ / Повертає ціле число

int sum (int a, int b, int c);

 

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

 

double x = sqrt (3);

sum (k, l, m) / 15;

 

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

func (a, b, c);

 

 

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

int

sum (int a, int b, int c)

{

 int result;

 result = a+b+ c;

 return result;

}

 

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

Аргументи a, b і c називаються формальними параметрами. Це змінні, які визначені в тілі функції (тобто до них можна звертатися тільки всередині фігурних дужок). При написанні визначення функції програма не знає їх значення. При виклику функції замість них підставляються фактичні параметри - значення, з якими функція викликається. Вище, у прикладі виклику функції sum, фактичними параметрами (або фактичними аргументами) були значення змінних k, l і m.

 

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

 

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

 

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

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

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

 

int k = 2;

int l = 3;

int m = 5;

int s = sum (k, l, m);

 

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

double

sum (double a, double b, double c)

{

 double result;

 result = a+ b+ c;

 return result;

}

 

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

int x, y, z, ires;

double p, q, s, dres;

...

/ / Викликати перше визначення функції sum

ires = sum (x, y, z);

/ / Викликати друге визначення функції sum

dres = sum (p, q, s);

 

При першому виклику функції sum всі фактичні аргументи мають тип int. Тому викликається перша функція. У другому виклику всі аргументи мають тип double, відповідно, викликається друга функція.

Важливий не тільки тип аргументів, але і їх кількість. Можна визначити функцію sum, що підсумовує чотири аргументи:

int

sum (int x1, int x2, int x3, int x4)

{

 return x1+ x2+ x3 +x4;

}

 

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

 

int foo (int x);

double foo (int x);

/ / Помилка - дворазове визначення імені

 

ВАРІАНТИ ДЛЯ САМОСТІЙНОЇ РОБОТИ

Прослухати

Прослухати

Читати фонетично

 

Запишіть алгебраїчний вираз за правилами мови програмування

Початкові дані задайте з клавіатури. Результат вивести на екран монітору.

 

ЗАДАЧА 1

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

#include "iostream.h "

#include "conio.h "

void oper (float, float, char );

void main ( )

{ float chislo1, chislo2;

 char znak;

 char vidpovid='y';

 do

 {

 cout << "\n";

 cout << " Задайте перше число ";

 cin >> chislo1;

 cout << "\n";

 cout << " Задайте друге число ";

 cin >> chislo2;

 cout << "\n";

 cout << " Задайте знак операції ";

 cin >> znak;

 cout << "\n";

 oper (chislo1, chislo2, znak );

 cout << "\n Виберіть для продовження (Y/N) ";

 cin >> vidpovid;

 cout << "\n";

 }

 while (vidpovid=='y'|| vidpovid=='Y');

 getch();

}

 void oper (float chislo1, float chislo2, char znak)

 { double rez;

 cout << "\n ";

 if ( znak=='+')

 {cout << chislo1 << znak << chislo2 <<" = " << chislo1+chislo2; cout << "\n ";

 }

 else

 if ( znak=='-')

 {cout << chislo1 << znak << chislo2 <<" = " << chislo1-chislo2;cout << "\n ";

 }

 else

 

 if ( znak=='*')

 {cout << chislo1 << znak << chislo2 <<" = " << chislo1*chislo2; cout << "\n ";

 }

 else

 

 if ( znak=='/')

 {//rez=chislo1/chislo2;

 cout << chislo1 << znak << chislo2 <<" = " << chislo1/chislo2; cout << "\n ";

 }

 else

 cout <<"Ви помилились!";

 }

 

 ЗАДАЧА 2

 

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

#include "iostream.h "

#include "conio.h "

int max (int, int );// прототип функції

void main ( )

{ int pershe, druge;

 char vidpovid='y';

 do { cout << " Задайте перше число";

                            cin >> pershe;

                                      cout << " Задайте друге число";

                            cin >> druge;

                   cout << «максимальне число = " <<

                  max (pershe, druge);

         cout << “Для продовження виберіть (Y/N) ";

         cin >> vidpovid;

                    }

 while (vidpovid=='y'|| vidpovid=='Y');

 getch();

}

int max(int pershe, int druge )

 { cout << "\n ";

 if ( pershe>druge)

         return pershe;

 else

          return druge;

 }

 

Задача 3

 

Створити функцію користувача, яка порівнює два цілих числа та повертає результат порівняння у вигляді одного із знаків: >, < або =.

 

#include "iostream.h "    

#include "iostream.h "

#include "conio.h "

char porivn (int, int );

void main ( )

{ int a, b;

 char znak;

 char vidpovid='y';

 do

 {

 cout << "\n";

 cout << " Задайте перше число ";

 cin >> a;

 cout << "\n";

 cout << " Задайте друге число ";

 cin >> b;

 cout << "\n";

 cout << "\n";

 znak = porivn (a, b);

 cout << "\n";

 cout << a << znak << b;

 cout << "\n Для продовження виберіть? (Y/N) ";

 cin >> vidpovid;

 cout << "\n";

 }

 while (vidpovid=='y'|| vidpovid=='Y');

 getch();

}

 char porivn (int a, int b)

 {

 if ( a==b)

         return ('=');

 else

 if ( a>b)

         return ('>');

 else

 

         return ('<');

 }

 

Математичні функції

abs, fabs

Синтаксис:

int abs (int x);

double fabs (double x);

Повертає ціле (abs) або дробове (fabs) абсолютне значенняня аргументу, в якості якого можна використовувати Вираження відповідного типу.

Заголовний файл: <math.h>

acos, asm, atan, acosl, asinl, atanl

Синтаксис:

double acos (double x);

double asin (double x);

double atan (double x);

long double acosl (long double x);

long double asinl (long double x);

long double atanl (long double x);

Повертає виражену в радіанах величину кута, косинус, синус або тангенс якого переданий відповідної функції

діапазоні від -1 до 1.

Заголовний файл: <math.h>

cos, sin, tan

 cosl, sinl, tanl

Синтаксис:

cos (double x);

sin (double x);

tan (double x);

long double cosl (long double x);

long double sinl (long double x);

Long double tanl (long double x);

Повертає синус, косинус або тангенс кута. Величина кута повинна бути задана в радіанах.

Заголовний файл: <math.h>

exp, expl

Синтаксис:

 double exp (double x);

long double exp (long double (x));

Повертає значення, рівне експоненті аргументу (е *, де е основа натурального логарифма).

Заголовний файл: <math.h>

pow, powl

Синтаксис:

 douLle pow (double x, double y);

long double powl (long double (x), long double (y));

Повертає значення, рівне xy.

Заголовний файл: <math.h>

sqrt

Синтаксис:

double sqrt (double x);

Повертає значення, рівне квадратному кореню з аргументу Заголовний файл: <math.h>

rand

Синтаксис:

int rand (void);

Повертає випадкове ціле число в діапазоні від 0 до RAND_MAX. Перед першим зверненням до функції rand необхідно ініціалізувати

генератор випадкових чисел. Для цієї треба викликати функцію srand.

srand

Синтаксис:

void srand (unsigned x);

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

Заголовний файл: <stdlib.h>

 

КРИТЕРІЇ ОЦІНЮВАННЯ

 

ОЦІНКА “5” (відмінно)

Студент повністю висвітлює зміст матеріалу поставленого питання або проблеми: чітко розуміє суть матеріалу, вільно володіє спеціальними термінами;

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

 

ОЦІНКА “4” (добре)

Студент в основному розкриває зміст матеріалу:

точно використовує спеціальні терміни, не допускає грубих помилок в програмному коді;

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

 

ОЦІНКА “3” (задовільно)

Студент розкриває питання частково, не завжди послідовно:

відповіді не повні, але суть питання в цілому висвітлена;

у використанні спеціальної термінології допускає помилки, слабо володіє технікою програмування;

для вирішення практичних завдань набуті знання використовує з деякими труднощами;

у програмних кодах допускає помилки.

 

ОЦІНКА “2” (незадовільно)

Студент не розкриває змісту питання:

відповідь подає непослідовно;

допускає грубі помилки в програмних кодах;

слабо володіє спеціальною термінологією;

відповіді мають значну кількість помилок.


Теги: мова с++, Руденко А.П.
Навчальний предмет: Інформатика
Переглядів/завантажень: 1166/141


Схожі навчальні матеріали:
Всього коментарів: 0
avatar