Skip to content

Commit

Permalink
Merge pull request #89 from Alex-luov/edit2
Browse files Browse the repository at this point in the history
edited
  • Loading branch information
ssssank committed Jun 20, 2023
2 parents 27fdf46 + c3993ec commit ca81c7c
Showing 1 changed file with 22 additions and 16 deletions.
38 changes: 22 additions & 16 deletions modules/50-functions/20-function-return/description.ru.yml
Expand Up @@ -17,15 +17,16 @@ theory: |
Пользы от таких функций не очень много, так как результатом их работы невозможно воспользоваться внутри программы.
В этом уроки мы рассмотрим как сделать наши функции полезными.
В этом уроки мы рассмотрим, как сделать наши функции полезными.
## Возвращаемые значения
Когда мы пишем пользовательскую функцию, мы можете определить, будет ли ваша функция возвращать значение вызывающей стороне или нет. Чтобы вернуть значение вызывающей стороне, необходимы две вещи.
Во-первых, наша функция должна указать, значение какого типа будет возвращено. Это делается путем установки типа возвращаемого значения функции, который является типом, определенным перед именем функции.
Когда мы пишем пользовательскую функцию, мы можем определить, будет ли она возвращать значение вызывающей стороне или нет.
Чтобы вернуть значение вызывающей стороне, необходимы две вещи:
Во-вторых, внутри функции, которая будет возвращать значение, мы используем инструкцию `return`, чтобы указать конкретное значение, возвращаемое вызывающей стороне. Конкретное значение, возвращаемое функцией, называется возвращаемым значением. Когда инструкция `return` выполняется, возвращаемое значение копируется из функции обратно в вызывающую функцию. Этот процесс называется возвратом по значению.
* Функция должна указать, значение какого типа будет возвращено. Это делается путем установки типа возвращаемого значения функции, который является типом, определенным перед именем функции
* Внутри функции, которая будет возвращать значение, используем инструкцию `return`. Это нужно, чтобы указать конкретное значение, возвращаемое вызывающей стороне. Конкретное значение, возвращаемое функцией, называется возвращаемым значением. Когда инструкция `return` выполняется, возвращаемое значение копируется из функции обратно в вызывающую функцию. Этот процесс называется возвратом по значению
Общий вид функции:
Expand All @@ -35,12 +36,12 @@ theory: |
}
```
Давайте рассмотрим простую функцию, которая возвращает строку, и пример программы, которая ее вызывает:
Рассмотрим простую функцию, которая возвращает строку. Также пример программы, которая ее вызывает:
```cpp
#include <iostream>
#include <string>
// функция фозвращает строку, поэтому тип возвращаемого значения std::string
// функция возвращает строку, поэтому тип возвращаемого значения std::string
std::string GetDomain() {
return "Hexlet";
}
Expand All @@ -52,7 +53,7 @@ theory: |
}
```
Выполнение начинается с верхней части `main`. В первой же инструкции происходит вызов функции `GetDomain()`, в результате она возвращает конкретное значение **Hexlet** обратно вызывающей стороне, которое затем выводится в консоль через std::cout.
Выполнение начинается с верхней части `main`. В первой же инструкции происходит вызов функции `GetDomain()`. В результате она возвращает конкретное значение **Hexlet** обратно вызывающей стороне, которое затем выводится в консоль через std::cout.
Любой код после `return` не выполняется:
Expand All @@ -63,7 +64,7 @@ theory: |
}
```
Возвращать можно не только конкретное значение. Так как `return` работает с выражениями, то справа от него может появиться почти все что угодно. Здесь нужно руководствоваться принципами читаемости кода:
Возвращать можно не только конкретное значение. Так как `return` работает с выражениями, справа от него может появиться почти все что угодно. Здесь нужно руководствоваться принципами читаемости кода:
```cpp
#include <string>
Expand All @@ -75,18 +76,21 @@ theory: |
```
Здесь мы не возвращаем переменную, возвращается всегда значение, которое находится в этой переменной. Ниже пример с вычислениями:
Здесь мы не возвращаем переменную. Возвращается всегда значение, которое находится в этой переменной. Ниже пример с вычислениями:
```cpp
int sum() {
return 5 + 5;
}
```
<!--TODO - автору: здесь не хватает описание кода - на что обратить внимание, что здесь сделали -->
## Отсутствие возвращаемого значения
Функции не обязаны возвращать значение. Чтобы сообщить компилятору, что функция не возвращает значение, используется тип возвращаемого значения `void`. Давайте посмотрим на функцию `Greating()`:
Функции не обязаны возвращать значение. Чтобы сообщить компилятору, что функция не возвращает значение, используется тип возвращаемого значения `void`.
Посмотрим на функцию `Greating()`:
```cpp
#include <iostream>
Expand All @@ -96,15 +100,17 @@ theory: |
}
```
Эта функция имеет тип возвращаемого значения void, что указывает на то, что она не возвращает значение вызывающей стороне.
Эта функция имеет тип возвращаемого значения `void`. Это указывает на то, что она не возвращает значение вызывающей стороне.
## Возвращаясь к main
Теперь у вас есть концептуальные инструменты, чтобы понять, как на самом деле работает функция `main`.
<!--TODO - автору: давай тут название заголовка поменяем. Нужно избавиться от деепричастия. Ну и чтобы из названия было ясно, о чем речь в блоке -->
Теперь у нас есть концептуальные инструменты, чтобы понять, как работает функция `main`.
Когда программа выполняется, операционная система вызывает функцию `main`. Инструкции в main выполняются последовательно.
Когда программа выполняется, операционная система вызывает функцию `main`. Инструкции в `main` выполняются последовательно.
Наконец, main возвращает целочисленное значение (обычно 0), и ваша программа завершается. Значение, возвращаемое из `main`, называют кодом возврата и по нему судят об спешности выполнения программы.
Также `main` возвращает целочисленное значение обычно 0, и программа завершается. Значение, возвращаемое из `main`, называют кодом возврата. По нему судят об успешности выполнения программы.
instructions: |
Реализуйте функцию `SayHurrayThreeTimes()`, которая возвращает строку "hurray! hurray! hurray!".
Expand Down

0 comments on commit ca81c7c

Please sign in to comment.