Урок 2. Функции и структуры
Функции
Функция объявляется словом функция. Тип результата пишется после двоеточия, а вернуть возвращает значение. Если вернуть нечего, всё равно используйте : целое и вернуть 0;, как в главной:
функция площадь(целое ширина, целое высота): целое
вернуть ширина * высота;
конец
функция факториал(целое n): целое
если (n не больше 1)
вернуть 1;
конец
вернуть n * факториал(n - 1);
конец
функция поприветствовать(текст имя): целое
вывести("Привет, %имя%!");
вернуть 0;
конец
функция главная(): целое
вывести("Площадь: %(площадь(6, 7))%");
вывести("5! = %(факториал(5))%");
поприветствовать("Сфера");
вернуть 0;
конец
Площадь: 42
5! = 120
Привет, Сфера!
Функция может вызывать сама себя (рекурсия) — так считается факториал. Компилятор проверяет число и типы аргументов при каждом вызове.
Структуры
Структура собирает поля и методы в один тип. Метод — это обычная функция внутри структуры, а это — ссылка на текущий объект. Конструктор создаётся автоматически и принимает все поля в порядке объявления:
структура Прямоугольник
целое ширина;
целое высота;
функция площадь(): целое
вернуть это.ширина * это.высота;
конец
функция описание(): текст
вернуть "прямоугольник " + целое_в_текст(это.ширина) + "x" + целое_в_текст(это.высота);
конец
конец
функция главная(): целое
Прямоугольник р = Прямоугольник(4, 5);
вывести(р.описание());
вывести("площадь: %(р.площадь())%");
р.ширина = 10;
вывести("после изменения: %(р.площадь())%");
вернуть 0;
конец
прямоугольник 4x5
площадь: 20
после изменения: 50
Структуры всегда живут в куче и передаются по ссылке: если передать р в функцию и изменить поле там, оно изменится и у вызывающего. Память освобождается автоматически — по счётчику ссылок.
Что запомнить
функция имя(тип а, тип б): тип— тип результата после двоеточия.- Поля структуры не имеют значений по умолчанию, их задаёт конструктор:
Прямоугольник(4, 5). - Методы обращаются к полям через
это.поле.
Упражнения
- Напишите функцию
максимум(а, б, в), возвращающую наибольшее из трёх чисел. - Сделайте структуру
Счётс полембаланси методамипополнить(целое сумма)ипоказать(). - Реализуйте рекурсивно числа Фибоначчи.
Дальше: Урок 3. Список, Словарь и текст.