SlideShare una empresa de Scribd logo
1 de 72
Бублик Володимир Васильович Програмування - 2 Лекція 8. Процедурне програмування. Функції  Лекції для студентів 2 курсу
1. Визначення та виклик функції
Визначення функції ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Виклик функції ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Способи виконання функцій ,[object Object],[object Object],[object Object],[object Object],[object Object]
Вбудовані функції ,[object Object],[object Object],[object Object]
Приблизна схема викликів ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Макровизначення ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклади макропідстановок ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Виклик функції ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
2. Передача параметрів
Передача параметрів ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Передача параметрів значенням ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Сторонній ефект ,[object Object],[object Object],[object Object],[object Object]
Приклад 1. swap ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад  2 .  p swap ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад  3 .  r swap  ( тільки С++) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Безпечність виклику ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Масиви як параметри ,[object Object],[object Object],[object Object],[object Object]
Задача додому ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4. ,[object Object],[object Object],[object Object],[object Object]
Приклад 4 (1). ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4 ( 2 ) . ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4 ( 3 ) . ,[object Object],[object Object],[object Object],[object Object]
Приклад 4 ’ (1).  ,[object Object],[object Object],[object Object],[object Object]
Приклад 4 ’ (2). ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4 ’(2) . ,[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4 ’(3) . ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4 ’(4) . ,[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад 4 ’( 5 ) . ,[object Object],[object Object],[object Object],[object Object],[object Object]
Висновок ,[object Object],[object Object],[object Object],[object Object]
“ Загорнуті” масиви ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Параметри сталі відсилки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Скалярний добуток ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Створення вектору  ―  конструктор ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Видалення об'єкту  ― д еструктор ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Замовчувані значення параметрів ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Типи параметрів (перший підсумок) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Порівняння типів параметрів ,[object Object],[object Object],[object Object],[object Object],[object Object]
Сталий параметр ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Параметри-указники ,[object Object],[object Object],[object Object],[object Object],Повний але непрямий доступ до фактичного параметру; передача масивів ( T[])  (в стилі чистого С) Маловживаний тип параметру; доступ лише для читання: сталий фактичний параметр ( vs const T&) Незмінний  формальний параметр - указник ,  немає впливу на фактичний параметр-адресу ( this   в  C++) Незмінний указник на  сталий  фактичний параметр В усіх випадках 5-8 сам указник передається значенням
Головна проблема параметра-указника Як відрізнити масив від скалярного значення? Вихід: жорстка дисципліна програмування, додатковий параметр типу  size_t  з відповідним коментарем void  f ( double  * px, size_t  size_of_px );
Типова помилка в параметрі-указнику ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Результат ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Параметри-указники ,[object Object],[object Object],[object Object],[object Object],Указник-вихідний параметр (чистий С) Те ж саме, але в стилі С++ А ще різні варіації на тему  const
Указник другого рівня ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Виклик указником другого рівня ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Псевдонім указника ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Виклик відсилкою до указника ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Особливості нульового параметру-указника ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Вершина дерева ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Видалення дерева ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад використання ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Завданння ,[object Object]
Указники  vs.  відсилки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Зведення типів   при передачі параметрів ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Неявне зведення відсилок   неможливе ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Явне зведення відсилок   хибне ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Неявне зведення указників   неможливе теж ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3. Обчислення результату
Результат функції ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Результати-значення ,[object Object]
Точка площини ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Дерево ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Результати-відсилки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Результати   і параметри-відсилки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Сталі відсилки ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Результати-указники ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Висновки ,[object Object],[object Object],[object Object]
Рекурсія ,[object Object],[object Object],[object Object],[object Object],[object Object]
Неефективність рекурсії ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ефективна рекурсія ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Más contenido relacionado

La actualidad más candente

лекц2 невизн інт
лекц2 невизн інтлекц2 невизн інт
лекц2 невизн інтcit-cit
 
05 Operations And Utilities
05 Operations And Utilities05 Operations And Utilities
05 Operations And Utilitiesolegapster
 
Lecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesLecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesMaksym Davydov
 
07 Localisation
07 Localisation07 Localisation
07 Localisationolegapster
 
06 Pointers To Class Members
06 Pointers To Class Members06 Pointers To Class Members
06 Pointers To Class Membersolegapster
 
03 Constants And Variables
03 Constants And Variables03 Constants And Variables
03 Constants And Variablesolegapster
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascalAnn Eres
 
урок 19 цикли Складання програм
урок 19 цикли Складання програмурок 19 цикли Складання програм
урок 19 цикли Складання програмHelen Pat
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal1cana1
 
General Functors
General FunctorsGeneral Functors
General FunctorsDzendzula
 
Презентація на тему :"Первісна та невизначений інтеграл"
Презентація на тему :"Первісна та невизначений інтеграл"Презентація на тему :"Первісна та невизначений інтеграл"
Презентація на тему :"Первісна та невизначений інтеграл"Антонина Антонина
 

La actualidad más candente (20)

лекц2 невизн інт
лекц2 невизн інтлекц2 невизн інт
лекц2 невизн інт
 
05 Operations And Utilities
05 Operations And Utilities05 Operations And Utilities
05 Operations And Utilities
 
Lecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile DevicesLecture 13 Local Optimization on Mobile Devices
Lecture 13 Local Optimization on Mobile Devices
 
07 Localisation
07 Localisation07 Localisation
07 Localisation
 
Lecture 07 swift
Lecture 07 swiftLecture 07 swift
Lecture 07 swift
 
06 Pointers To Class Members
06 Pointers To Class Members06 Pointers To Class Members
06 Pointers To Class Members
 
Funkciji1
Funkciji1Funkciji1
Funkciji1
 
03 Constants And Variables
03 Constants And Variables03 Constants And Variables
03 Constants And Variables
 
Neviznacheny integral
Neviznacheny integralNeviznacheny integral
Neviznacheny integral
 
+6 for
+6 for+6 for
+6 for
 
05 Arrays
05 Arrays05 Arrays
05 Arrays
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal
 
урок 19 цикли Складання програм
урок 19 цикли Складання програмурок 19 цикли Складання програм
урок 19 цикли Складання програм
 
Pascal основи програмування частина 1
Pascal основи програмування частина 1Pascal основи програмування частина 1
Pascal основи програмування частина 1
 
08 Templates
08 Templates08 Templates
08 Templates
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal
 
Pascal (динамічні структури даних)
Pascal (динамічні структури даних)Pascal (динамічні структури даних)
Pascal (динамічні структури даних)
 
General Functors
General FunctorsGeneral Functors
General Functors
 
Презентація на тему :"Первісна та невизначений інтеграл"
Презентація на тему :"Первісна та невизначений інтеграл"Презентація на тему :"Первісна та невизначений інтеграл"
Презентація на тему :"Первісна та невизначений інтеграл"
 
General Functors ...
General Functors                                                             ...General Functors                                                             ...
General Functors ...
 

Destacado

2013 AllStar Celebrity Kickoff Party
2013 AllStar Celebrity Kickoff Party2013 AllStar Celebrity Kickoff Party
2013 AllStar Celebrity Kickoff PartyJennifer Beaver
 
Lc Presentation
Lc PresentationLc Presentation
Lc Presentationreachab7
 
Holistic Approach
Holistic ApproachHolistic Approach
Holistic Approachreachab7
 
06 Data Structures
06 Data Structures06 Data Structures
06 Data Structuresolegapster
 
The Race Party - Indianapolis 500 weekend
The Race Party - Indianapolis 500 weekendThe Race Party - Indianapolis 500 weekend
The Race Party - Indianapolis 500 weekendJennifer Beaver
 

Destacado (7)

2013 AllStar Celebrity Kickoff Party
2013 AllStar Celebrity Kickoff Party2013 AllStar Celebrity Kickoff Party
2013 AllStar Celebrity Kickoff Party
 
Lc Presentation
Lc PresentationLc Presentation
Lc Presentation
 
01 Paradigms
01 Paradigms01 Paradigms
01 Paradigms
 
Holistic Approach
Holistic ApproachHolistic Approach
Holistic Approach
 
06 Data Structures
06 Data Structures06 Data Structures
06 Data Structures
 
The Race Party - Indianapolis 500 weekend
The Race Party - Indianapolis 500 weekendThe Race Party - Indianapolis 500 weekend
The Race Party - Indianapolis 500 weekend
 
2014 Super Bowl NYC
2014 Super Bowl NYC2014 Super Bowl NYC
2014 Super Bowl NYC
 

Similar a 08 Functions

11 Iterated Containers
11 Iterated Containers11 Iterated Containers
11 Iterated Containersolegapster
 
Знайомство з програмуванням на мові C++
Знайомство з програмуванням на мові C++Знайомство з програмуванням на мові C++
Знайомство з програмуванням на мові C++Alexander Kuzmenko
 
програмування на мові паскаль
програмування на мові паскаль програмування на мові паскаль
програмування на мові паскаль Helen Pata
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови CiEscuela
 
Phpunit модульне тестування
Phpunit модульне тестуванняPhpunit модульне тестування
Phpunit модульне тестуванняVladimir Maslechkin
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthVadym Muliavka
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summaryeleksdev
 
урок 12 вирази мова Паскаль
урок 12 вирази  мова Паскальурок 12 вирази  мова Паскаль
урок 12 вирази мова ПаскальHelen Pata
 
10 Polymorphism
10 Polymorphism10 Polymorphism
10 Polymorphismolegapster
 
Тестування з допомогою PHPUnit
Тестування з допомогою PHPUnitТестування з допомогою PHPUnit
Тестування з допомогою PHPUnitAndriy Nasinnyk
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1rznz
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021OdessaJS Conf
 

Similar a 08 Functions (19)

Функції в C++
Функції в C++Функції в C++
Функції в C++
 
11 Iterated Containers
11 Iterated Containers11 Iterated Containers
11 Iterated Containers
 
tsql
tsqltsql
tsql
 
Знайомство з програмуванням на мові C++
Знайомство з програмуванням на мові C++Знайомство з програмуванням на мові C++
Знайомство з програмуванням на мові C++
 
Lr5
Lr5Lr5
Lr5
 
програмування на мові паскаль
програмування на мові паскаль програмування на мові паскаль
програмування на мові паскаль
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови Ci
 
9 13
9 139 13
9 13
 
Phpunit модульне тестування
Phpunit модульне тестуванняPhpunit модульне тестування
Phpunit модульне тестування
 
IT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depthIT Talks The c++'s simplest smart pointers in depth
IT Talks The c++'s simplest smart pointers in depth
 
Less37
Less37Less37
Less37
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summary
 
урок 12 вирази мова Паскаль
урок 12 вирази  мова Паскальурок 12 вирази  мова Паскаль
урок 12 вирази мова Паскаль
 
10 Polymorphism
10 Polymorphism10 Polymorphism
10 Polymorphism
 
Тестування з допомогою PHPUnit
Тестування з допомогою PHPUnitТестування з допомогою PHPUnit
Тестування з допомогою PHPUnit
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1
 
3018 1
3018 13018 1
3018 1
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
 
Python
PythonPython
Python
 

08 Functions