Участник:Alexsmail/Программирование 2020/новый черновик: различия между версиями

Содержимое удалено Содержимое добавлено
м орфография
дополнение
Строка 86:
 
 
println является встроенная в Kotlin top-level функция, которая выводит на консоль строку текста, которая является значением его единственного аргумента. println является сокращением print line - ''распечатать'' строчку вывести на экран, т.е. написать на экране текст и в конце него приготовиться писать с новой строчки.
 
'''Замечание:''' * Advanced : ''Исторический экскурс'': На механических пишущих машинках был рычаг, который возвращал каретку к левому краю страницы и прокручивал вал, подвигая бумагу вверх на строку. На телетайпах и более поздних алфавитно-цифровых печатающих устройствах (АЦПУ) вместо каретки была головка, в лазерных принтерах она перестала быть материальной, но в термине возврат каретки всё это продолжали называть кареткой, чтобы его не менять. На телетайпах возврат каретки и подачу строки разделили. Конец исторического экскурса. ''Возврат каретки'' (англ. carriage return, CR) - управляющий символ ASCII (0x0D, 13<sub>10</sub>, ''''\r'''') , при выводе которого курсор перемещается к левому краю поля, не переходя на другую строку. Этот управляющий символ вводится клавишей «Enter». ''Подача строки'' (от англ. line feed, LF — "подача [бумаги] на строку") — управляющий символ ASCII (0x0A, 10 в десятичной системе счисления, ''''\n''''), при выводе которого курсор перемещается на следующую строку. В случае принтера это означает сдвиг бумаги вверх, в случае дисплея — сдвиг курсора вниз, если ещё осталось место, и прокрутку текста вверх, если курсор находился на нижней строке. Системы, основанные на ASCII или совместимом наборе символов, используют или LF (перевод строки, 0x0A), или CR (возврат каретки, 0x0D) по отдельности, или последовательность CR+LF. Эти названия основаны на командах принтера: перевод строки означает, что одна строка на бумаге должна быть перенесена при печати, а возврат каретки означает, что каретка печатающего устройства должна вернуться к началу текущей строки.
 
'''Замечание:''' * Advanced : Windows и Linux по разному интерпретируют \n (LF) и \r (CR). Linux и другие Unix-подобные системы использует единственные \n (LF) символ для того, чтобы пометить переход на новую строку, MS-DOS использует комбинацию CR+LF (\r\n), которую наследовал Windows. JVM ''абстрагирует'' (см. об этом также ниже) эту разницу. Команда println выберет CR+LF (\r\n) символ под Windows или \n (LF) под Linux. Впрочем, это всё детали, главное, что println выводит на экран то, что её попросили и завершает это переводом на новую строчку.
 
 
Код приведенный выше полностью эквивалентен следующему:
Строка 149 ⟶ 154 :
 
В любом удобном для вас месте создайте файл ''HelloWorld.kt'' Это обычный текстовый файл, можете для этого использовать Notepad или любой другой текстовый редактор. Напишите там
 
Running the REPL
 
 
Строка 159 ⟶ 166 :
 
Сохраните этот файл. Допустим вы его сохранили в C:\dev\kotlin.
 
 
=== REPL ===
 
REPL является сокращением от read-eval-print loop — цикл "чтение — вычисление — вывод". REPL является форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки (CLI). В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Названия элементов ''цикла'' обозначают:
 
• функция read() читает одно выражение и преобразует его в соответствующую структуру данных в памяти;
• функция eval() принимает одну такую структуру данных и вычисляет соответствующее ей выражение;
• функция print() принимает результат вычисления выражения и печатает его пользователю.
 
И начинаем сначала (loop).
 
 
 
Далее, мы должны скомпилировать этот код - преобразовать его в формат, который доступен для понимания компьютера. В Kotlin мы не компилируем в так называемые машинные коды - инструкции для конкретного процессора, которые будут непосредственно на нём исполняется, мы компилируем в так называемый ''байткод'' - промежуточное представление кода. Это некоторый другой язык программирования, ''концептуально'' типа ассемблера. Байткод был изобретён для того, чтобы отвязать написание программы от конкретной операционной системы\процессора на которой она будет бежать. Идея Java Virtaul Machine - написал один раз - бежит везде. К примеру, вы можете писать код, компилировать его в байткод на Windows или Mac, а затем запустить байткод под Linux и ваша программа, в теории, работает точно также. См. ещё чуть ниже. На практике это не совсем одно и то же, к примеру если вы работаете с файловой системой, вас могут ожидать сюрпризы, однако, во-первых, ваша программа работает в принципе, а во-вторых, правильно написанная программа будет-таки работать везде.
Строка 269 ⟶ 289 :
Последнее поле самое интересное. Там написано, что искать функцию main() нужно в HelloWorldKt.class. О чём я и говорил выше.
 
'''TODO:''' * Intelij, Eclipse
 
=== REPL ===
 
REPL является сокращением от read-eval-print loop — цикл "чтение — вычисление — вывод". REPL является форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки (CLI). В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Названия элементов ''цикла'' обозначают:
 
• функция read() читает одно выражение и преобразует его в соответствующую структуру данных в памяти;
• функция eval() принимает одну такую структуру данных и вычисляет соответствующее ей выражение;
• функция print() принимает результат вычисления выражения и печатает его пользователю.
 
И начинаем сначала (loop).
 
 
 
Running the REPL
 
We can run the compiler without parameters to have an interactive shell. We can type any valid Kotlin code and see the results.
 
Shell https://kotlinlang.org/assets/images/tutorials/command-line/kotlin_shell.png
 
https://ru.wikipedia.org/wiki/REPL
 
 
<syntaxhighlight lang="bash">
C:\dev\kotlin>kotlinc-jvm
Welcome to Kotlin version 1.2.0 (JRE 1.8.0_111-b14)
Type :help for help, :quit for quit
>>> :load HelloWorld.kt
>>> main(emptyArray())
Hello, World!
>>> 2+2
4
>>> 0.3+0.6
0.8999999999999999
>>> 7.0/2
3.5
>>> 7/2
3
>>> 7%2
1
>>> 1/0
java.lang.ArithmeticException: / by zero
>>> 1.0/0
Infinity
>>> 0/0
java.lang.ArithmeticException: / by zero
>>> 0.0/0
NaN
>>> Math.sqrt(4)
error: the integer literal does not conform to the expected type Double
Math.sqrt(4)
>>> Math.sqrt(4.0)
2.0
>>> Math.pow(Math.sqrt(4.0), 2.0)
4.0
>>> Math.pow(Math.sqrt(Math.sqrt(Math.sqrt(Math.sqrt(Math.sqrt(Math.sqrt(Math.sqrt(Math.sqrt(4.0)))))))), 256.0)
3.999999999999903
</syntaxhighlight>