<MyRusakov.ru />

Создание нейросетей на Python

Создание нейросетей на Python

Этот курс научит Вас созданию нейросетей на Python. Курс рассчитан на начинающих. Вся информация идёт от простого к сложному очень маленькими шажками. При этом глубокое знание математики не требуется. Поскольку в курсе Вы будете получать эти знания по мере необходимости.

Из курса Вы узнаете всю необходимую теорию и терминологию. Научитесь создавать нейросети самых разных архитектур и обучать их. Также Вы создадите собственный фреймворк. Что очень важно проделать для грамотного использования того же PyTorch. Затем Вы изучите и сам PyTorch.

Помимо уроков к курсу идут упражнения для закрепления материала.

Ещё Вы получите Бонусы, дополняющие основной курс: "Распознавание изображений", "Анализ настроения по тексту отзыва", "Программирование на Python с Нуля до Гуру".

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Функции в C++: объявление, параметры и возвращаемые значения — практическое руководство

Функции в C++: объявление, параметры и возвращаемые значения — практическое руководство

Функции в C++ — одна из базовых тем, без которой сложно писать даже небольшие программы. Если переменные хранят данные, то функции описывают действия: посчитать скидку, проверить ввод, вывести меню, найти максимум, преобразовать строку и т.д.

Поисковый запрос, под который написана статья: «функции в C++ для начинающих». Ниже — практическое руководство с примерами, которые можно сразу запускать и изменять.

Что такое функция в C++

Функция — это именованный блок кода, который можно вызвать из другого места программы. У функции обычно есть:

  • тип возвращаемого значения — что функция отдаёт наружу;
  • имя — как мы её вызываем;
  • параметры — входные данные;
  • тело — команды, которые выполняются.
#include <iostream>
using namespace std;

int sum(int a, int b) {
    return a + b;
}

int main() {
    cout << sum(3, 5); // 8
    return 0;
}

Здесь sum принимает два числа типа int и возвращает их сумму.

Объявление и определение функции

В C++ функцию можно сначала объявить, а определить позже. Это полезно, когда main() находится выше остальных функций или когда проект разделён на несколько файлов.

#include <iostream>
using namespace std;

int multiply(int a, int b); // объявление, или прототип

int main() {
    cout << multiply(4, 6);
    return 0;
}

int multiply(int a, int b) { // определение
    return a * b;
}

Объявление сообщает компилятору: «такая функция существует». Определение содержит реальный код функции.

Функции без возвращаемого значения: void

Если функция ничего не возвращает, используется тип void. Частый пример — вывод информации на экран.

#include <iostream>
using namespace std;

void printMenu() {
    cout << "1. Start\n";
    cout << "2. Settings\n";
    cout << "0. Exit\n";
}

int main() {
    printMenu();
    return 0;
}

Внутри void-функции можно использовать return; без значения, чтобы досрочно завершить выполнение.

Передача параметров: по значению

По умолчанию параметры передаются по значению. Это значит, что функция получает копию переменной. Оригинал не изменяется.

#include <iostream>
using namespace std;

void addTen(int x) {
    x += 10;
}

int main() {
    int number = 5;
    addTen(number);
    cout << number; // 5, а не 15
    return 0;
}

Такой способ безопасен, но для больших объектов копирование может быть дорогим.

Передача по ссылке

Если нужно изменить исходную переменную, используйте ссылку &.

#include <iostream>
using namespace std;

void addTen(int& x) {
    x += 10;
}

int main() {
    int number = 5;
    addTen(number);
    cout << number; // 15
    return 0;
}

Передача по ссылке удобна, но применяйте её осознанно: вызывающий код должен понимать, что переменная может измениться.

const-ссылка: эффективно и безопасно

Если объект большой и менять его не нужно, используйте const-ссылку. Это частый профессиональный приём.

#include <iostream>
#include <string>
using namespace std;

void greet(const string& name) {
    cout << "Привет, " << name << "!\n";
}

int main() {
    string user = "Анна";
    greet(user);
    return 0;
}

const string& не копирует строку и запрещает менять её внутри функции.

Возврат значения из функции

Функция может возвращать не только числа, но и логические значения, строки, структуры и объекты.

#include <iostream>
using namespace std;

bool isAdult(int age) {
    return age >= 18;
}

int main() {
    int age = 20;

    if (isAdult(age)) {
        cout << "Доступ разрешён";
    } else {
        cout << "Доступ запрещён";
    }

    return 0;
}

Совет: функция должна делать одну понятную вещь. Например, isAdult только проверяет возраст, а не выводит меню и не читает данные с клавиатуры.

Параметры по умолчанию

В C++ можно задать значение параметра по умолчанию. Тогда аргумент при вызове можно не передавать.

#include <iostream>
using namespace std;

void printLine(char symbol = '-', int count = 10) {
    for (int i = 0; i < count; ++i) {
        cout << symbol;
    }
    cout << '\n';
}

int main() {
    printLine();        // ----------
    printLine('*', 5);  // *****
    return 0;
}

Важно: параметры со значениями по умолчанию должны идти справа. Нельзя задать значение первому параметру и не задать второму.

Перегрузка функций

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

#include <iostream>
using namespace std;

int maxValue(int a, int b) {
    return (a > b) ? a : b;
}

double maxValue(double a, double b) {
    return (a > b) ? a : b;
}

int main() {
    cout << maxValue(3, 7) << '\n';       // int-версия
    cout << maxValue(2.5, 1.8) << '\n';   // double-версия
    return 0;
}

Компилятор выбирает подходящую функцию по типам и количеству аргументов.

Практический пример: проверка корректного ввода

Функции особенно полезны, когда один и тот же код нужен несколько раз. Например, сделаем функцию, которая проверяет, входит ли число в диапазон.

#include <iostream>
using namespace std;

bool inRange(int value, int min, int max) {
    return value >= min && value <= max;
}

int main() {
    int rating;
    cout << "Введите оценку от 1 до 5: ";
    cin >> rating;

    if (!inRange(rating, 1, 5)) {
        cout << "Ошибка: оценка вне диапазона";
        return 1;
    }

    cout << "Оценка сохранена";
    return 0;
}

Такую функцию легко переиспользовать: для возраста, процента скидки, уровня сложности и других проверок.

Типичные ошибки новичков

  • Забыли return в функции, которая должна вернуть значение.
  • Перепутали объявление и вызов: при вызове типы писать не нужно. Правильно: sum(2, 3), неправильно: sum(int 2, int 3).
  • Слишком большая функция: если функция занимает десятки строк и делает всё сразу, её стоит разбить.
  • Неочевидное изменение параметров: если функция меняет аргумент по ссылке, это должно быть понятно из имени или документации.
  • Копирование больших объектов: для строк, контейнеров и своих классов часто лучше использовать const&.

Рекомендации по стилю

  • Называйте функции глаголами или понятными действиями: calculateTotal, printMenu, isValid.
  • Держите функцию короткой: одна функция — одна задача.
  • Для проверок используйте возвращаемый тип bool.
  • Не злоупотребляйте глобальными переменными: передавайте данные через параметры.
  • Если хотите системно разобраться в синтаксисе, задачах и практике, посмотрите курс «Программирование на C++ с Нуля до Гуру» с пошаговыми заданиями.

Итог

Функции в C++ позволяют писать более чистый, понятный и переиспользуемый код. Начните с простых функций, затем добавляйте параметры, возвращаемые значения, ссылки, const& и перегрузку. Чем раньше вы привыкнете выделять отдельные действия в функции, тем проще будет переходить к ООП, STL и реальным проектам.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.