Функции. (част 1) Трифон Трифонов. 9 ноември 2016 г. Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г.

Подобни документи
Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Триф

C++

Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари

Канонична форма на клас или 4 (голямата четворка) Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно и

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Lush Green

Lush Green

Виртуални функции

Структура на програма в C - Част 2 - типове, функции

Програмиране на Паскал

4

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

-

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА

Проф

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1

Slide 1

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА

Информатика

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

Black and White

Компютърна Графика и Презентации - Графично моделиране

УЧЕБНА ПРОГРАМА ПО ВИЗУАЛНО ПРОГРАМИРАНЕ ЗА IV КЛАС (ВЪВЕЖДАНЕ НА ДИСЦИПЛИНАТА ПО ПРОЕКТ ИНОВАТИВНО УЧИЛИЩЕ ) КРАТКО ПРЕДСТАВЯНЕ НА УЧЕБНАТА ПРОГРАМА

Microsoft Word - VM22 SEC55.doc

Маисви

Slide 1

Анализ и оптимизация на софтуерни приложения

Препис:

Функции (част 1) Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 9 ноември 2016 г. Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 1 / 9

Функциите в математиката Какво е функция в математиката? Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Ran обхват, област от стойности Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Ran обхват, област от стойности Нека F Dom Ran Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Ran обхват, област от стойности Нека F Dom Ran така че x!y(x, y) F (функционалност) Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Ran обхват, област от стойности Нека F Dom Ran така че x!y(x, y) F (функционалност) еквивалентно: ако (x, y 1 ) F и (x, y 2 ) F, тогава y 1 = y 2 Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Ran обхват, област от стойности Нека F Dom Ran така че x!y(x, y) F (функционалност) еквивалентно: ако (x, y 1 ) F и (x, y 2 ) F, тогава y 1 = y 2 Ако (x, y) F пишем f (x) = y. Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Функциите в математиката Какво е функция в математиката? f : Dom Ran Dom дефиниционна област Ran обхват, област от стойности Нека F Dom Ran така че x!y(x, y) F (функционалност) еквивалентно: ако (x, y 1 ) F и (x, y 2 ) F, тогава y 1 = y 2 Ако (x, y) F пишем f (x) = y. F графика на функцията f Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 2 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R f (x) = x 2 Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R f (x) = x 2 double square(double x) { return x * x; } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R f (x) = x 2 double square(double x) { return x * x; } Пример 2 Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R f (x) = x 2 double square(double x) { return x * x; } Пример 2 d : R R R R R Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R f (x) = x 2 double square(double x) { return x * x; } Пример 2 d : R R R R R d(x 1, y 1, x 2, y 2 ) = (x 2 x 1 ) 2 + (y 2 y 1 ) 2 Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е програмна функция? Относително независима част от програмата, извършваща определено пресмятане Може да бъде използвана многократно Пример 1 f : R R f (x) = x 2 double square(double x) { return x * x; } Пример 2 d : R R R R R d(x 1, y 1, x 2, y 2 ) = (x 2 x 1 ) 2 + (y 2 y 1 ) 2 double distance(double x1, double y1, double x2, double y2) return sqrt(square(x2 - x1) + square(y2 - y1)); } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 3 / 9

Какво е подпрограма? Относително независима част от програмата, извършваща определена последователност от действия Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 4 / 9

Какво е подпрограма? Относително независима част от програмата, извършваща определена последователност от действия Може да бъде изпълнявана многократно Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 4 / 9

Какво е подпрограма? Относително независима част от програмата, извършваща определена последователност от действия Може да бъде изпълнявана многократно Още: процедура, метод Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 4 / 9

Какво е подпрограма? Относително независима част от програмата, извършваща определена последователност от действия Може да бъде изпълнявана многократно Още: процедура, метод Пример 1 void printhello() { cout << "Hello!\n"; } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 4 / 9

Какво е подпрограма? Относително независима част от програмата, извършваща определена последователност от действия Може да бъде изпълнявана многократно Още: процедура, метод Пример 1 void printhello() { cout << "Hello!\n"; } Пример 2 void printreversedigits(int n) { while (n > 0) { cout << n % 10; n /= 10; } } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 4 / 9

Процедури и функции Функцията извършва пресмятане и връша резултат Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 5 / 9

Процедури и функции Функцията извършва пресмятане и връша резултат Процедурата изпълнява поредица от оператори Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 5 / 9

Процедури и функции Функцията извършва пресмятане и връша резултат Процедурата изпълнява поредица от оператори Понякога двете понятия се смесват... int readnumber(int from, int to) { int n; do { cout << "n = "; cin >> n; } while (n < from n > to); return n; } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 5 / 9

Процедури и функции Функцията извършва пресмятане и връша резултат Процедурата изпълнява поредица от оператори Понякога двете понятия се смесват... int readnumber(int from, int to) { int n; do { cout << "n = "; cin >> n; } while (n < from n > to); return n; } В C++ се наричат просто функции Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 5 / 9

Дефиниране на функция <сигнатура> { <тяло> } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат ако типът на резултата се пропусне, подразбира се int Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат ако типът на резултата се пропусне, подразбира се int <формални_параметри> ::= <празно> void <параметър> {, <параметър> } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат ако типът на резултата се пропусне, подразбира се int <формални_параметри> ::= <празно> void <параметър> {, <параметър> } <параметър> ::= <тип> [<идентификатор>] Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат ако типът на резултата се пропусне, подразбира се int <формални_параметри> ::= <празно> void <параметър> {, <параметър> } <параметър> ::= <тип> [<идентификатор>] ако <идентификатор> се пропусне, параметърът няма име и не се използва Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат ако типът на резултата се пропусне, подразбира се int <формални_параметри> ::= <празно> void <параметър> {, <параметър> } <параметър> ::= <тип> [<идентификатор>] ако <идентификатор> се пропусне, параметърът няма име и не се използва Пример: f (x, y) = x + 5 Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Дефиниране на функция <сигнатура> { <тяло> } <сигнатура> ::= [ <тип_резултат> void ] <идентификатор> ( <формални_параметри> ) void = празен тип, не връща резултат ако типът на резултата се пропусне, подразбира се int <формални_параметри> ::= <празно> void <параметър> {, <параметър> } <параметър> ::= <тип> [<идентификатор>] ако <идентификатор> се пропусне, параметърът няма име и не се използва Пример: f (x, y) = x + 5 <тяло> ::= { <оператор> } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 6 / 9

Извикване на функция <име>(<фактически_параметри>) Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 7 / 9

Извикване на функция <име>(<фактически_параметри>) <фактически_параметри> ::= <празно> void <израз> {, <израз> } Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 7 / 9

Извикване на функция <име>(<фактически_параметри>) <фактически_параметри> ::= <празно> void <израз> {, <израз> } извикването на функция всъщност е операция с много висок приоритет Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 7 / 9

Извикване на функция <име>(<фактически_параметри>) <фактически_параметри> ::= <празно> void <израз> {, <израз> } извикването на функция всъщност е операция с много висок приоритет типът на фактическия параметър се съпоставя с типа на съответния формален параметър Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 7 / 9

Извикване на функция <име>(<фактически_параметри>) <фактически_параметри> ::= <празно> void <израз> {, <израз> } извикването на функция всъщност е операция с много висок приоритет типът на фактическия параметър се съпоставя с типа на съответния формален параметър ако се налага, прави се преобразуване на типовете Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 7 / 9

Извикване на функция <име>(<фактически_параметри>) <фактически_параметри> ::= <празно> void <израз> {, <израз> } извикването на функция всъщност е операция с много висок приоритет типът на фактическия параметър се съпоставя с типа на съответния формален параметър ако се налага, прави се преобразуване на типовете <формален_параметър> = <фактически_параметър> Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 7 / 9

Връщане на резултат return [<израз>]; Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 8 / 9

Връщане на резултат return [<израз>]; оператор за връщане на резултат на функция Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 8 / 9

Връщане на резултат return [<израз>]; оператор за връщане на резултат на функция типът на <израз> се съпоставя с типа на резултата на функцията Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 8 / 9

Връщане на резултат return [<израз>]; оператор за връщане на резултат на функция типът на <израз> се съпоставя с типа на резултата на функцията ако се налага, прави се преобразуване на типовете Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 8 / 9

Връщане на резултат return [<израз>]; оператор за връщане на резултат на функция типът на <израз> се съпоставя с типа на резултата на функцията ако се налага, прави се преобразуване на типовете работата на функцията се прекратява незабавно Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 8 / 9

Връщане на резултат return [<израз>]; оператор за връщане на резултат на функция типът на <израз> се съпоставя с типа на резултата на функцията ако се налага, прави се преобразуване на типовете работата на функцията се прекратява незабавно стойността на <израз> е резултатът от извикването на функцията Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 8 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Декларацията е обещание за дефиниция на функция Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Декларацията е обещание за дефиниция на функция Декларацията не е задължителна Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Декларацията е обещание за дефиниция на функция Декларацията не е задължителна Една функция може да бъде декларирана няколко пъти... Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Декларацията е обещание за дефиниция на функция Декларацията не е задължителна Една функция може да бъде декларирана няколко пъти......но може да бъде дефинирана само веднъж Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Декларацията е обещание за дефиниция на функция Декларацията не е задължителна Една функция може да бъде декларирана няколко пъти......но може да бъде дефинирана само веднъж Неизпълнените обещания водят до проблеми... Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9

Деклариране на функция <декларация_на_функция> ::= <сигнатура>; Декларацията е обещание за дефиниция на функция Декларацията не е задължителна Една функция може да бъде декларирана няколко пъти......но може да бъде дефинирана само веднъж Неизпълнените обещания водят до проблеми......освен когато никой не разчита на тях Трифон Трифонов (УП 16/17) Функции 9 ноември 2016 г. 9 / 9