2) Процедуры и функции

Содержание

Слайд 2

1. Понятие подпрограммы

Процедуры и функции

Подпрограмма – это именованная часть программы, представляющая собой некоторое

1. Понятие подпрограммы Процедуры и функции Подпрограмма – это именованная часть программы,
собрание операторов, структурированных аналогично основной программе.
Подпрограммы не являются обязательными, но их наличие заметно облегчает работу программиста и увеличивает «ценность» кода.
Два типа подпрограмм: процедуры и функции
Для функции указывается тип возвращаемых данных, и обязательно должен присутствовать оператор return. Если возвращать значение не нужно, то у подпрограммы указывается тип тип void (процедура).

Слайд 3

Процедуры и функции

Понятие подпрограммы;
Пользовательские функции и процедуры;
Область видимости;
Параметр-значение, параметр-переменная;
Реентерабельность;
Рекурсия.
Пример

Процедуры и функции Понятие подпрограммы; Пользовательские функции и процедуры; Область видимости; Параметр-значение, параметр-переменная; Реентерабельность; Рекурсия. Пример

Слайд 4

2. Пользовательские функции и процедуры

Процедуры и функции

Процедурой называется особым образом оформленный

2. Пользовательские функции и процедуры Процедуры и функции Процедурой называется особым образом
фрагмент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется её вызовом.

Слайд 5

2. Пользовательские функции и процедуры

Процедуры и функции

Объявление функции
<тип данных, который будет

2. Пользовательские функции и процедуры Процедуры и функции Объявление функции ( )
возвращаться функцией> <имя> (<аргументы функции>) {
< блок
кода >
}

Тип данных функции, который в конечном итоге будет передавать функция.

Имя функции, нельзя использовать зарезервированные слова в C++, имена начинающиеся с цифр, а также имена разделенные пробелом.
Лучше всего задавать «КРИЧАЩЕЕ» имя, которое будет говорить за что отвечает эта функция.

Слайд 6

2. Пользовательские функции и процедуры

Процедуры и функции

В C++ нельзя вызвать функцию

2. Пользовательские функции и процедуры Процедуры и функции В C++ нельзя вызвать
до объявления самой функции. Все потому, что компилятор не будет знать полное имя функции (имя функции, число аргументов, типы аргументов). Таким образом в примере ниже компилятор сообщит нам об ошибке:

int main() {
    Summ(1, 2);
return 0;
}
void Summ(int a, int b) {
  cout << a + b;
}

Слайд 7

2. Пользовательские функции и процедуры

Процедуры и функции

Прототип функции — это функция,

2. Пользовательские функции и процедуры Процедуры и функции Прототип функции — это
в которой отсутствует блок кода (тело функции). В прототипе функции находятся:
Полное имя функции.
Тип возвращаемого значения функции.
int Sum_numbers(int a, int b); // прототип функции
int main() {
Sum_numbers(1, 2);
return 0;
}
int Sum_numbers(int a, int b) { // сама функция
cout << a + b;
}

Слайд 8

2. Пользовательские функции и процедуры

Процедуры и функции

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

2. Пользовательские функции и процедуры Процедуры и функции Пример. Разработать функцию возведение
в степень.
#include
#define _USE_MATH_DEFINES
#include
using namespace std;
double myPower (double a, double x)
{
double y = 0.0;
if (a > 0){
y = exp(x*log(a));
}
return y;
}
int main() {
double a,x;
cout << "Введите основание и степень" << endl;
cin >> a >> x;
cout << myPower(a, x);
}

Слайд 9

2. Пользовательские функции и процедуры

Процедуры и функции

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

2. Пользовательские функции и процедуры Процедуры и функции Пример. Разработать функцию возведение
в степень.
#include
#define _USE_MATH_DEFINES
#include
using namespace std;
double myPower (double a, double x); //прототип функции
int main() {
double a,x;
cout << "Введите основание и степень" << endl;
cin >> a >> x;
cout << myPower(a, x);
}
double myPower (double a, double x)
{
double y = 0.0;
if (a > 0){
y = exp(x*log(a));
}
return y;
}

Слайд 10

2. Пользовательские функции и процедуры

Процедуры и функции

Пример. Вывести на экран результат

2. Пользовательские функции и процедуры Процедуры и функции Пример. Вывести на экран
возведение числа в степень.
#include
#define _USE_MATH_DEFINES
#include
using namespace std;
void myPower (double a, double x)
{
double y = 0.0;
if (a > 0){
y = exp(x*log(a));
}
cout >> y;
}
int main() {
double a,x;
cout << "Введите основание и степень" << endl;
cin >> a >> x;
myPower(a, x);
}

Слайд 11

2. Пользовательские функции и процедуры

Процедуры и функции

Пример. Разработать функцию, которая выводит

2. Пользовательские функции и процедуры Процедуры и функции Пример. Разработать функцию, которая
на экран прямоугольник из заданных символов определенного размера.
#include
using namespace std;
void myBox (int w, int h, char s)
{
for (int i = 1; i <= h; i++)
{for (int j = 1; j <= w; j++)
{
cout << s;
}
cout << endl;
}
}
int main() {
myBox (20,4,'+');
myBox (10,5,'=');
myBox (11,6,'O');
}

Слайд 12

Процедуры и функции

Понятие подпрограммы;
Пользовательские функции и процедуры;
Область видимости;
Реентерабельность;
Рекурсия.
Пример

Процедуры и функции Понятие подпрограммы; Пользовательские функции и процедуры; Область видимости; Реентерабельность; Рекурсия. Пример

Слайд 13

3. Область видимости

Процедуры и функции

Локальные переменные — это переменные созданные в

3. Область видимости Процедуры и функции Локальные переменные — это переменные созданные
блоках. Областью видимости таких переменных является блоки ( и все их дочерние ), а также их область видимости не распространяется на другие блоки.

Глобальные переменные имеют статическую продолжительность жизни, т.е. создаются при запуске программы и уничтожаются при её завершении. Глобальные переменные имеют глобальную область видимости (или «файловую область видимости»), т.е. их можно использовать в любом месте файла, после их объявления.

Глобальные переменные уступают локальным.

Слайд 14

3. Область видимости

Процедуры и функции

#include
using namespace std;
int main() {
int a =

3. Область видимости Процедуры и функции #include using namespace std; int main()
1;
{ // блок 1
int b = 2;
// здесь доступны локальная b и a из внешнего блока
{ // блок 1.1
int c = 3;
// здесь доступны локальная c и a, b из внешнего блока
}
{ // блок 1.2
int d = 3;
// здесь доступны локальная d и a, b из внешнего блока. //Переменная c здесь не доступна
}
}
}

Слайд 15

3. Область видимости

Процедуры и функции

#include
using namespace std;
int main() {
int a =

3. Область видимости Процедуры и функции #include using namespace std; int main()
0;
cout << “Введите значение переменной a = “;
cin >> a ;
if (a = 10) {
int b = 1;
}
else {
int b = 0;
}
cout << b;
}

Переменная b локальная

Слайд 16

3. Область видимости

Процедуры и функции

#include
using namespace std;
int a = 100;
void PrintVal_1()

3. Область видимости Процедуры и функции #include using namespace std; int a
{
cout << "PrintVal_1" << endl;
cout << a << endl;
}
void PrintVal_2() {
int a = 200;
cout << "PrintVal_2" << endl;
cout << a << endl;
}
int main() {
int b = 300;
PrintVal_1();
PrintVal_2();
}

Слайд 17

3. Область видимости

Процедуры и функции

#include
using namespace std;
int a = 1;
int b

3. Область видимости Процедуры и функции #include using namespace std; int a
= 1;
int calc(int c) {
int a = 3;
return a*10 + c;
}
int main() {
a = 4;
cout << calc(a);
}

Слайд 18

3. Область видимости

Процедуры и функции

#include
using namespace std;
int a = 1;
int b

3. Область видимости Процедуры и функции #include using namespace std; int a
= 1;
int calc(int c) {
a = 6;
return a*10 + c;
}
int main() {
a = 4;
cout << calc(a);
}

Слайд 19

3. Область видимости

Процедуры и функции

#include
using namespace std;
int a = 1;
int b

3. Область видимости Процедуры и функции #include using namespace std; int a
= 1;
int calc(int c) {
return a*10 + c;
}
int main() {
a = 3;
cout << calc(a);
}

Слайд 20

Процедуры и функции

Понятие подпрограммы;
Пользовательские функции и процедуры;
Область видимости;
Реентерабельность;
Рекурсия.
Пример

Процедуры и функции Понятие подпрограммы; Пользовательские функции и процедуры; Область видимости; Реентерабельность; Рекурсия. Пример

Слайд 21

4. Реентерабельность

Процедуры и функции

Реентерабельная, или повторно входимая функция - это функция,

4. Реентерабельность Процедуры и функции Реентерабельная, или повторно входимая функция - это
которая может быть использована более чем одной задачей без риска потери данных.
Реентерабельная функция может быть в любое время прервана и продолжена позже без потерь данных. Реентерабельные функции либо используют локальные переменные, либо защищают свои данные, размещённые в глобальных переменных.

Функция fn не является реентерабельной:
var
temp : integer;
function fn (x,y : integer):integer;
begin
temp := x;
x := y;
y := temp;
fn := x + y;
end;

Слайд 22

Процедуры и функции

Понятие подпрограммы;
Пользовательские функции и процедуры;
Область видимости;
Реентерабельность;
Рекурсия.
Пример

Процедуры и функции Понятие подпрограммы; Пользовательские функции и процедуры; Область видимости; Реентерабельность; Рекурсия. Пример

Слайд 23

5. Рекурсия

Процедуры и функции

Реку́рсия — в определении, описании, изображении какого-либо объекта

5. Рекурсия Процедуры и функции Реку́рсия — в определении, описании, изображении какого-либо
или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя

Слайд 24

5. Рекурсия

Процедуры и функции

Рекурсия – это такой способ организации вычислительного процесса,

5. Рекурсия Процедуры и функции Рекурсия – это такой способ организации вычислительного
при котором подпрограмма в ходе выполнения составляющих её операторов обращается сама к себе

Слайд 25

5. Рекурсия

Процедуры и функции

#include
using namespace std;
unsigned long int fact(unsigned long

5. Рекурсия Процедуры и функции #include using namespace std; unsigned long int
int f)
{
unsigned long int result;
if (f == 1 || f == 0) {return 1; }
else { result = f * fact(f - 1); }
return result;
}
int main()
{
int n;
cout << "Enter n!: ";
cin >> n;
cout << n << "!" << "=" << fact(n) << endl;
system("pause");
return 0;
}

Слайд 26

5. Рекурсия

Процедуры и функции

Пример: Реализовать метод половинного деления на основе

5. Рекурсия Процедуры и функции Пример: Реализовать метод половинного деления на основе
рекурсии

#include
#include
using namespace std;
double myFunc(double x) {
return x*x*x + 8;
}