русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


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


Дата додавання: 2013-12-23; переглядів: 1442.


Створення|створіння| функції

Функція підскік.

 

void JumpJack() // заголовок функції з|із| ім'ям JumpJack

{ //межа|кордон| функції : почало|зачинало|

Sal.up(); //дія 1

Sal.ready(); //дія 2

} //межа|кордон| функції : кінець

 

Інструкції, що розташовані між межами функції називаються тілом функції.

У кінці|в кінці| рядка - |ізаголовка функції крапка з комою не ставиться. Якщо її поставити, то компілятор буде думати, що інструкція закінчується ще до початку|начала| тіла функції .

 

// c2jmpjck.cpp

/*

У цій програмі для виконання вправ Сел використовує

Функцію JumpJack

 

*/

#include "franca.h"

athlete Sal; // створення|створіння| об'єкту класу athlete

void JumpJack() // Початок|начало| функції з|із| ім'ям JumpJack

{

Sal.up(); // up

Sal.ready(); // ready

} //Кінець функції з|із| ім'ям JumpJack

 

void mainprog() //Початок|начало| головної|чільної| функції з|із| ім'ям mainprog

{

Sal.ready(); // початкове|вихідне| положення|становище|

JumpJack(); // підскік1 (виклик функції)

JumpJack(); // підскік2 (виклик функції)

JumpJack(); // підскік3 (виклик функції)

} //Кінець головної|чільної| функції з|із| ім'ям mainprog

Функція mainprog аналогічна іншим, за винятком того, що має бути присутня в кожній програмі. У функції mainprog() можна викликати|спричиняти| інші функції. У нашому прикладі|зразку| була викликана функція JumpJack().

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

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

Аргументи і|та| параметри

Для того, щоб Салі і Сел могли виконувати дії за допомогою однієї і тієї ж функції необхідно ввести аргументи, в якості яких в даному випадку виступають об’єкти Сел і Саллі. Але при створенні функції конкретні значення цих об’єктів ми можемо не знати|наперед|. Отже, ми говоримо про фіктивні об’єкти. –формальні параметри або просто параметрами (parameters).

Реальні об'єкти, які ми задаємо при виклику функції,, називають фактичними параметрами або аргументами (arguments) .

Змінимо|зраджуватимемо| функцію JumpJack() так, щоб вона могла управляти діями як Сэла, так і Салі (чи будь-якого іншого гімнаста|).

1. Дамо ім'я фіктивному об’єкту somebody (хтось). Це і|та| є формальний параметр.

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

 

#include "franca.h"

athlete Sal, Sally;

void JumpJack(athlete somebody)

{

somebody.up();

somebody.ready();

}

 

void mainprog()

{

Sal.ready();

JumpJack(Sal);

Sal.say("Sal");

Sally.ready();

JumpJack(Sally);

Sally.say("Sally");

 

}

Аргументи за умовчанням

Нехай|хай|, ми хочемо, щоб в більшості випадків вправу виконував Сел і|та| тільки|лише| іноді|інколи| Салі. У заголовку функції ми можемо задати значення за умовчанням

void JmpJack(athlete sombody=Sal)

Таким чином, виклик функції JmpJack(); аналогічний виклику JmpJack(Sal);

Якщо ми хочемо, щоб вправи віконувала Салі, то скористаємося викликом функції JmpJack(Sally);


Функції декількох аргументів

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

 

Завдання|задача| 1: Створити дві функції з|із| одним ім'ям JmpJack(). В одній з них вправа виконується одним гімнастом а в іншій - обома|обоє| гімнастами.

 

 

// c2jmpjck.cpp

#include "franca.h"

athlete Sal, Sally,Kolya;

Clock MyTime;

 

void JmpJack(athlete somebody)

{

somebody.up();

somebody.ready();

}

 

void JmpJack(athlete first, athlete second)

{

first.left();

first.say("Перший");

second.right();

second.say("Другий");

 

}

 

void mainprog()

{

 

JmpJack(Sal,Sally);

JmpJack(Kolya);

Kolya.say("Kolya");

 

}

 

 


 

Завдання|задача| 2: Створити функцію, для виконання одночасного підскоку двох гімнастів :

 

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

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

3. Перший гімнаст знаходиться|перебуває| в стрибку 0 секунд.

4. Другий гімнаст знаходиться|перебуває| в стрибку 1 секунду.

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

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

 

 

 

// c2jmpjck.cpp

#include "franca.h"

athlete Sal, Sally,Kolya;

 

void JmpJack(athlete first, athlete second)

{

first.ready(0);

second.ready(1);

first.up(0);

second.up(1);

first.ready(0);

second.ready(1);

}

 

 

void mainprog()

{

 

JmpJack(Sal,Sally);

JmpJack(Sal,Sally);

 

}

 

 

Функции-члены и просто функции.

У объекта некоторого класса имеются функции обработки всех предназначенных для него сообщений. Например, объекты класса athlets имеют следующие функции: ready(), up(), left() и т.д

Эти функции являются частями класса (функции-члены класса athlets) и не могут выполняться независимо от него. Функции-члены могут быть определены только после определения соот- ветствующего класса.

JmpJack() не относится ни к одному из классов и поэтому называется просто функцией.

 

 


<== попередня лекція | наступна лекція ==>
Вихідні дані. | Нескінченні|безконечні| цикли


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн