如何在Kotlin中编写第一个程序?
我听说您想学习编程。
您很可能正在研究Kotlin,因为您想创建一个Android应用程序。 或者,也许您正在尝试着手进行后端Web开发。
无论哪种情况,Kotlin都是一种很好的入门语言。
您已经在寻找一个好的教程,但是无论如何,它们都需要Java方面的知识。
那不是很不幸吗?
从初学者的角度来看-绝对是!
那么,您会发现,本教程分为多部分,正是您所需要的,因为它没有任何以前的编程经验。
因此,本教程不会涉及到Android或Web开发领域,但它将为您提供一个坚实的基础,开始您的编程之旅。
但在开始之前:
我需要在计算机上安装什么?
PS:如果您需要在Atom中安装Kotlin软件包的帮助,请参阅Atom官方手册上的教程 。
PPS:为什么不使用IntelliJ IDEA或其他一些IDE?
尽管我很喜欢IntelliJ,但我理解对于初学者来说这可能会令人困惑。
而且,这将使您无法学习程序开发周期(编辑,编译,运行),因为IDE会为您做所有事情。
如果您已经是一位经验丰富的程序员,并且您不需要这些细节,而只想学习一些Kotlin,请使用任何喜欢的编辑器或IDE。 不过请记住:本教程将使用kotlinc
编译器。
在我的高级教程之一中,我们充分利用了IDE。
- 要运行Kotlin编译器编译的程序,需要JDK(针对您的平台: Mac OS X , Linux , Windows )。
- Kotlin编译器
kotlinc
。 正确安装后,您应该能够在终端应用程序中运行命令kotlinc -version
:
$ kotlinc -version
info: kotlinc-jvm 1.2.21 (JRE 1.8.0_152-b16)
版本可能会有所不同,因为该语言( JetBrains )的作者经常更新该语言。
但是你说我不需要Java ...
在进行JDK的安装过程时,您可能想知道为什么要安装Java东西。
我只是告诉你,本指南不需要Java知识,不是吗?
所以,这是东西。
尽管Kotlin是自己的独立语言,但它确实依赖Java的标准库和开发套件。
您无需立即对此进行足够的思考。 它将在您的第一个应用程序中为您做的就是帮助Kotlin构建和运行您的应用程序。 适当时,我们将解决该问题。
暂时,我们应该立即着手在Kotlin中创建您的第一个程序!
你好世界-无聊...无聊吗?
我知道这很无聊,也许您已经看过几次了,但是在本文中,我们不仅要创建和运行您的“ Hello World”程序,还要:
- 了解程序的代码及其组成的所有部分。
- 探索构建和运行应用程序时发生的情况。
此外,您还将学习编程中可能发生的错误类型,并作为练习的一部分:
- 您将在屏幕上打印一些更有趣的东西。
- 您将以各种方式破坏程序,以便您可以经历开发周期中提到的所有类型的错误。
说到…
科特林的发展周期
在Kotlin中,我们将编程过程分为几个步骤:
- 通过在文本编辑器中键入程序来编写程序,然后将其保存到文件
ProgramName.kt
。 - 通过在终端应用程序中键入
kotlinc ProgramName.kt -include-runtime -d ProgramName.jar
进行编译。 我们将稍后讨论该命令的各个部分。 - 通过在终端应用程序中键入
java -jar ProgramName.jar
来运行编译的程序。
第一步,您将使用Kotlin编程语言创建该程序的人类可读的表示形式。
第二步将人类可读的程序翻译成适合机器执行的语言。 -d ProgramName.jar
选项指定将结果写入哪个文件。 -include-runtime
告诉Kotlin编译器包括其标准库。 如果没有该选项,则下一步将看到运行时错误。
第三步运行程序。
让我们看看“ Hello World”程序的外观如何:
在Kotlin中创建您的第一个程序
编写Kotlin程序。
程序是一系列字符(例如字母,数字,空格和特殊符号)。 就像句子,段落或诗歌一样。
要编写程序,您需要使用文本编辑器键入这些字符并将其保存到名为HelloWorld.kt
的文件中:
编译Kotlin程序
Kotlin编译器( kotlinc
)是将您用Kotlin语言编写的程序转换为更适合在计算机上执行的语言的应用程序。
它以扩展名为.kt
(包含您的程序)的常规文本文件作为输入,并创建扩展名为.jar
(适合在计算机上执行的版本)的文件。
要编译Kotlin程序HelloWorld.kt
,请在终端中输入以下文本:
kotlinc HelloWorld.kt -include-runtime -d HelloWorld.jar
如果您正确键入程序,则应该看不到任何错误。 如果您在某处打错了文字,则会看到类似以下的错误输出:
HelloWorld.kt:1:14: error: expecting comma or ')'
fun main(args Array<String>) {
^
HelloWorld.kt:1:15: error: parameter name expected
fun main(args Array<String>) {
^
HelloWorld.kt:1:10: error: a type annotation is required on a value parameter
fun main(args Array<String>) {
^
此输出表明存在编译错误。 如果得到类似的信息,请确保正确键入了HelloWorld.kt
程序。 如果必须,请逐个字符检查。
程序成功编译后,您将看不到任何输出。 通常,Kotlin编译器的任何输出都将指示排序错误或警告。
运行Kotlin程序
有了编译的程序后,就可以运行它。 当计算机运行您的应用程序时,它将严格按照您提供的说明进行操作。
这是编程中最重要的部分-您可以使计算机精确地执行您想要的操作。
要运行HelloWorld.jar
程序,请在终端中键入以下命令:
java -jar HelloWorld.jar
如果一切正确,您将在终端中看到预期的输出:
Hello World
了解程序
println()
行是文件HelloWorld.kt
最重要的一行。 该行是在终端中打印“ Hello World”文本的行。 稍后,当我们要编写更复杂的应用程序时,我们将处理程序的其他部分,例如fun
, args
, Array<String>
。
println()
函数在标准输出上打印提供的文本。 标准输出通常与终端中的输出相同,但并非总是如此。 有时,标准输出可以重定向到其他位置,例如重定向到文件中。
文本"Hello World"
是字符串文字。 字符串文字是表示程序源代码中文本( String
类型)的固定值的文字。 稍后我们将返回类型和文字。
创建程序
现在,您的所有程序都将变得很简单,就像HelloWorld.kt
一样。 唯一的不同是将要放入main()
函数中的语句序列。 创建程序的最简单方法是:
- 将
HelloWorld.kt
内容复制到MyProgram.kt
(其中“ MyProgram”是新程序的名称) - 用语句序列替换
println()
语句:
失误
无论您做什么,编程时都会出错。 可以通过仔细检查程序来解决问题(就像您修复语法和在给朋友的消息中拼写错误时所做的一样)。 您将遇到几种错误:
编译时错误
Kotlin编译器会捕获这些错误。 之所以发生此类错误,是因为源代码的结构不正确,并且Kotlin编译器无法理解您要告诉的内容。
Kotlin编译器会告诉您源代码中哪里有错误,以及编译器期望什么。 Kotlin编译器将尝试解释为什么它无法将代码转换为机器可执行语言。
运行时错误
在运行程序时(例如,在运行java -jar HelloWorld.jar
,执行系统会捕获这些错误。 之所以发生此类错误,是因为程序试图执行无效的操作,例如:
- 被零除,
- 试图访问不存在的数据,
- 试图读取您无权读取的文件,
- 试图访问互联网上不可用的资源,
- 等等。
逻辑错误
这些错误也称为错误。 这些错误通常意味着程序在运行时产生错误的答案或错误的结果。
例如,如果您有一个程序,该程序要求用户输入两个数字并打印出这两个数字的总和。 当用户输入7
和5
,程序将打印13
而不是12
。 那是一个错误的答案,因此程序存在逻辑错误(错误)。
程序员完全有责任检查错误的结果和程序的源代码,以找出其行为不正确的原因。 当您以程序员的身份发现“为什么”时,您应该能够修复该错误。
逻辑错误是最难的。 它们可能是微妙的,不可复制的并且很难找到。
作为程序员,至关重要的一点是,能够识别正在处理的错误类型,并仔细检查源代码以找出失败的原因并进行修复。 那是您应该通过练习和练习学习的第一项技能之一。
如果有足够的实践,那么您在避免这类错误方面会变得越来越好。 编写程序是一项需要不断谨慎和勤奋的活动。
输入输出
编写一个程序,不仅在屏幕上输出文本,而且还可以与用户进行交互,这不是很好吗?
这是任何程序的典型用例。 很少有应用程序不需要任何用户输入,因此您必须学习如何做。
在命令行应用程序世界中,有两种简单的方法可以做到这一点。
(而且您不希望直接进入图形或移动应用程序的世界,因为复杂性很高-首先要打基础)
命令行参数
第一种方法是从命令行参数读取用户输入。 例如,要访问第一个命令行参数,可以使用args[0]
。 对于第二个args[1]
。 对于第三个args[2]
。 等等。
这是读取第一个参数的示例程序: ReadFirstArgument.kt
:
现在尝试编译:
kotlinc ReadFirstArgument.kt -include-runtime -d ReadFirstArgument.jar
并运行它:
java -jar ReadFirstArgument.jar Peter
您应该看到预期的输出:
Hello, Peter! How are things going?
尝试用您的名字替换“ Peter”参数。 它应该向您打招呼,并询问您的情况如何!
从标准输入读取
现在,此方法更具交互性,但也更加复杂。 它将涉及一些概念,我们将在稍后讨论。
首先,我们将要求用户输入名称,然后将用户输入内容读入本地变量name
(关于本地变量,以后) :
这里最重要的部分是readLine()
。 它正在读取用户输入,直到行尾(当用户按下“ Enter”时)。
然后,我们将使用局部变量name
就像在上一个程序中使用args[0]
:
要编写这样的程序,请创建文件ReadFromInput.kt
并在文本编辑器中键入以下内容:
然后,使用kotlinc …
命令编译该程序,然后使用java -jar …
命令运行该程序。 正确完成此操作后,在运行程序时应看到以下内容:
你叫什么名字? > 玛丽
你好,玛丽! 事情进行得如何?
(重点是用户键入的内容)
尝试使用其他名称-它应该可以按预期工作。
练习题
- 编写一个程序
HelloWorldMultipleTimes.kt
,它将输出“ Hello World”十五次。
如果您陷入困境或想查看答案,请在此处找到解决方案 。 - 编写一个程序
ReadTwoArguments.kt
,该程序将读取第一个和第二个命令行参数,并将其输出为用户的名字和名字。
如果您陷入困境或想查看答案,请在此处找到解决方案 。 - 编写一个程序
ReadMutlipleInputs.kt
,该程序将询问用户其名字,然后询问他们的名字。 最后,该程序应通过姓氏和名字的组合来问候用户。
如果您陷入困境或想查看答案,请在此处找到解决方案 。 - 在
HelloWorld.kt
,如果删除:
*main
*fun
,
*println
,
*"Hello World"
,
*{
,
*}
,
*首先"
,
*秒"
?
这是什么样的错误(针对上述每个选项)?
如果您陷入困境或想查看答案,请在此处找到解决方案 。 - 编译
HelloWorld.kt
,如果不指定该怎么办:-include-runtime
?
如果您陷入困境或想查看答案,请在此处找到解决方案 。 - 编写一个程序
AsciiArtHello.kt
,它将在终端中输出以下内容:
## ## ######### ## ## #########
## ## ## ## ## ## ##
## ## ## ## ## ## ##
######### ######### ## ## ## ##
######### ######### ## ## ## ##
## ## ## ## ## ## ##
## ## ## ## ## ## ##
## ## ######### ######### ######### #########
如果您陷入困境或想查看答案,请在此处找到解决方案 。
- 当运行程序
ReadFirstArgument
,如果不提供第一个参数,则:
java -jar ReadFirstArgument.jar
会发生什么样的错误?
如果您陷入困境或想查看答案,请在此处找到解决方案 。
- 我已经编写了以下程序
HelloWeird.kt
:
该程序有什么问题? 如果编译并运行它会怎样? 如何修复该程序?
如果您陷入困境或想查看答案,请在此处找到解决方案 。
我的相关文章
From: https://hackernoon.com/how-to-write-your-first-program-in-kotlin-8554cb526158