Функцией в программировании называется законченный участок программы, решающий определённую задачу — обычно это часть большой задачи, которую решает программа в целом, хотя в простых случаях написание программы сводится к написанию одной функции. Как и у функции в математическом смысле, у функции в программировании есть входы (параметры), выход (результат) и определение, указывающее, как рассчитывается значение выхода по заданным значениям входов.
Определение простых функций на Котлине мало отличается от определения математических функций. Рассмотрим для примера математическую функцию sqr(x) = x2. На Котлине она будет записана так:
fun sqr(x: Int) = x * x // или fun sqr(x: Double) = x * x
В этом определении fun является ключевым словом, с которого начинается определение любой функции в Котлине;fun является сокращением от function — функция. sqr
— это имя функции, x
— параметр функции, = x * x
— телофункции, определяющее, как следует вычислять её результат. Имя функции вместе с её параметрами и ключевым словом fun называется её заголовком.
Поскольку операция вычисления квадрата числа в Котлине отсутствует, результат вычисляется как произведение x * x
. В Котлине присутствуют ещё ряд стандартных операций, перечислим некоторые из них:
- + сложение;
- – вычитание;
- * умножение;
- / деление;
- % остаток от деления;
- () круглые скобки для повышения приоритета операций.
Строчка, начинающаяся с символов //, является так называемым комментарием — он предназначен для лучшего понимания текста программы человеком и никак не влияет на поведение функции или программы. В Котлине возможны также скобочные комментарии, например:
/* Здесь будет длинная и сложная функция с несколькими параметрами */ // Скобочный комментарий начинается с символов /* и заканчивается символами */
Типы параметров / результата функций
Нотация : Int
или : Double
задаёт так называемый тип параметра x
и требует пояснения. Тип в программировании подобен области допустимых значений в математике; математически, запись x: Int
близка к записи x ∈ Z, а x: Double
соответственно x ∈ R. Присутствие в определении функции типов параметров в Котлине обязательно; наличие типов позволяет функции “понять”, для каких входов она применима, а для каких её использование является ошибкой.
Заметим, что тип имеется не только у параметров функции, но и у её результата. Полная запись функции возведения в квадрат в Котлине (для целого параметра) выглядит следующим образом:
fun sqr(x: Int): Int = x * x
Здесь нотация : Int
перед знаком равенства задаёт тип результата функции. В Котлине в некоторых случаях необязательно записывать тип результата функции явно, поскольку функция сама может вывести этот тип, зная типы своих параметров. В данном случае известно, что произведение целого числа на целое также даст целое число, что позволяет использовать сокращённую форму записи без указания типа результата.
В Котлине определяется некоторое количество стандартных типов; помимо них, программист имеет право определять свои типы, используя так называемые классы (о них речь пойдёт позже). На первых порах нам потребуются следующие стандартные типы:
- Int — целое число в диапазоне от -231 до 231-1;
- Double — вещественное число в диапазоне (примерно) от -1.7 * 10308 до 1.7 * 10308, имеющее точность в (примерно) 15 десятичных цифр;
- Boolean — так называемый логический или булевский тип с ровно двумя возможными значениями — true и false;
- Char — символ (одиночный), например
Z
илиЯ
; значением может являться любой символ, присутствующий в таблице “Unicode”, с кодом от 0 до 216-1; - String — строка, состоящая из любого количества (в том числе из нуля) одиночных символов.
Целые и вещественные числа устроены по-разному. Например, целые числа сохраняются в памяти компьютера точно, а вещественные числа — приближённо. Некоторые операции и функции работают по-разному с целыми и вещественными числами. Например, по правилам Котлина 5 / 2
даёт 2
(деление целых чисел), но 5.0 / 2
(или 5 / 2.0
) даёт 2.5
(деление вещественных чисел).
Имена
В приведённых примерах sqr
являлось именем функции, а x
— именем её параметра. По правилам языка Котлин, любое имя обязано начинаться с буквы или символа _ и может состоять из букв, цифр и символа _. Следует помнить, что Котлин различает строчные и прописные буквы; рекомендуется всегда начинать имена параметров и функций со строчной буквы, а имена типов — с прописной буквы. Имя, состоящее из нескольких слов, обычно записывается в так называемой camel case нотации, например bigNumber
. Не рекомендуется:
- использование букв не из латинского алфавита, например
имя
; - использование символа _ и цифр в именах, например
flag_123
; - использование транслитерации в именах, например
dlina
.
Литералы
Литералами в программировании называются константы, записываемые прямо в тексте программы и не имеющие отдельных имён. У любого литерала имеется тип, определяемый по его записи. Примеры литералов в Котлине:
- -7, 0, 42 — литералы типа Int;
- 0.0, 3.14 или 6.67e-11 — литералы типа Double, обязаны иметь как целую, так и дробную часть, запись с символом e означает 6.67 * 10-11;
- true или false — литералы типа Boolean
- ‘Z’ — литерал типа Char, необходимо использовать простые одинарные кавычки;
- “name” — литерал типа String, необходимо использовать простые двойные кавычки.
Ещё раз повторим, что Int и Double — два принципиально разных типа, а значит, 3 и 3.0 — два принципиально разных числовых литерала. В частности, деление целого числа на 3 будет происходить нацело и даст целый результат, а деление целого числа на 3.0 даёт уже вещественный результат.
Примеры с квадратными уровнениями отталкивают от изучения. как буд то программирование == математика
разве не sqr(x)= x^1/2 ?