编程基础概念

标识符

标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。

标识符通常由字母和数字以及其它字符构成。特别地,标识符的第一个位置不能是数字或 _ 以外的字符。例如, 是合法的, 是不合法的。

以下为各种语言的标识符介绍:

我敢打赌, 的同学绝对不会打开这些用英文写的、冗杂又臭长的该死的语法细节手册,即使打开也会被立刻吓跑。所以我简单概括一下:

对于绝大多数的语言而言,给代码中的东西起名字的环节中,只采用大小写字母构成的变量名永远是最安全的。如果要加数字,数字只能跟在字母后面。特殊字符尽量只用下划线 _,这个可以放在起的名字的任意位置。

例如:Wangzai0721kkksc03nhttp_helper 等,这样的变量名都是最不容易出错的。

关键字

每种语言都会有一些特殊的标识符,我们称之为“关键字”或者“保留字”,它们已经被编译器赋予了特定含义,所以你不能用他们为自己的东西命名。实际上,大部分关键字完全毫无卵用,也没啥人会用它,但仍然不能被用作变量名。另外,还有一些关键字被叫做“软关键字”或者“上下文关键字”,只要不在对应语境下,也可以用作变量名(强烈不建议这么做)。

各大编程语言基本上都有一个非常庞大的关键词库,划明了哪些词是不能被程序员滥用的。一般情况下,为了避免引起程序员随便起的名字和关键词 “撞车”,冷门一点的关键词都会被起的比较长,从而使得名字撞车变得相对罕见。

以下为各种语言的关键字表:

C++ : cppreference.com
Java : docs.oracle.com
Python : docs.python.org

我敢打赌, 的同学绝对不会打开这些用英文写的、冗杂又臭长的该死的语法细节手册,即使打开也会被立刻吓跑。所以我简单概括一下:

以 C++ 为例,在后面你会学到 if 分支语句关键词、 for 循环语句关键词等。你只要记住自己学过的关键词,知道自己起的名字不能和他们装车就够了,对于绝大多数冷门的关键词,没有个十年脑血栓都不会主动起出这样的名字,就算你有一天心血来潮真的起了这样一个糟糕的名字,IDE 也会贴心地帮你报错,你自己改一下名字就好了。

重识代码模板

还记得我们在上一节中让你尝试编写的代码吗?这些代码可以理解为一个代码的模板,当我们写常规的算法题时,这些代码对程序特定功能作用不大,只是一个通用的“格式”,有点类似与写信时我们写的“尊敬的某某某”、“此致敬礼”之类的,不管你觉得对方是否真的“尊敬”或者你是否真的在写信的时候敬了个礼,这些东西你一般都不得不写。接下来,我们就一一解释一下这些“此致敬礼”类的代码模板的作用。

实际上,如果你不想了解语法的具体逻辑,你完全可以无脑背下这些模板式的代码,因为在大多数的算法题中,你根本不需要修改这些代码模板中的内容!

C++

C++ 的代码模板如下:

#include <bits/stdc++.h>
using namespace std;
int main(){
    cout<<"Hello Nowcoder";
    return 0;
}

接下来让我们逐一介绍一下这些语句分别是什么。

#include <bits/stdc++.h>

这一行代码的作用是声明了使用 <bits/stdc++.h> 这个头文件。头文件包含了 C++ 中几乎所有的内置函数和类,比如基本的输入输出功能、数学函数、字符串处理函数等等。

这里用的 <bits/stdc++.h> 是 C++ 中最常用的头文件,它包含了 C++ 中几乎所有的头文件,你可以直接使用这些头文件中的函数,而不需要手动包含每个头文件。

using namespace std;

这一行代码的作用是声明了使用 std 这个命名空间。命名空间是 C++ 中用来组织代码的一种机制,它可以避免命名冲突。

一般而言,我们会默认使用 std 这个命名空间,因为它是 C++ 中最常用的命名空间。

int main(){
    cout<<"Hello Nowcoder";
    return 0;
}

这一行代码的作用是定义了一个名为 main 的函数,它是 C++ 程序的主函数, 是程序开始执行的起点,所有的实现具体功能的代码都需要写在这里。以我们的模板代码为例,我们使用 cout 输出语句输出了 Hello Nowcoder 这个字符串,这才是我们真正想要实现的功能,类似于写信中的正文。关于输入输出语句,我们会在下一节中详细介绍。

此外,主函数还有一个返回值,它的类型是 int(Integer 的缩写),表示函数的返回值是一个整数。这个返回值表示的是程序在运行过程中是否出现错误,一般来说,返回值为 0 表示程序正常结束,返回值为非 0 表示程序出现了错误。在我们的代码中,我们在输出完字符串之后写了 return 0;,表示程序正常输出了我们需要的字符串后正常结束。

C++ 语句的结束

在 C++ 中,语句的结束是由分号 ; 来表示的。分号是 C++ 中最基本的语句结束符号,它表示一条语句的结束。如果你漏掉了分号,编译器会报错。此外,由 # 开始的语句是预处理语句,它不是一条完整的语句,所以也不需要分号;大括号 {} 中的语句是一个语句块,大括号本身也不是一条完整的语句,所以也不需要分号。

C++ 注释

在 C++ 中,注释是用来解释代码的,它不会被编译器执行,所以可以用来写一些注释,方便自己或者其他人阅读代码。注释有两种,一种是单行注释,另一种是多行注释。

  • 单行注释以 // 开头,后面的内容都是注释,直到行末结束。

  • 多行注释以 /* 开头,以 */ 结尾,中间的内容都是注释。

#include <bits/stdc++.h> // 这是头文件
using namespace std; // 这是命名空间
int main(){
    /*
    这是多行注释
    这是多行注释
    这是多行注释
    这里我们想些啥就写啥
    不会被编译器执行
    */
    cout<<"Hello Nowcoder"; // 这是输出语句
    return 0; // 这是返回语句
}

Java

Java 的代码模板如下:

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello Nowcoder");
    }
}

接下来让我们逐一介绍一下这些语句分别是什么。

public class Main {
    // 类的内容
}

这部分代码定义了一个名为 Main 的 类 。在Java中,所有的代码都必须位于类的内部。 public 是一个访问修饰符,表示这个类可以被任何其他类访问。

public static void main(String[] args) {
    // 主函数的内容
}

这一行代码定义了Java程序的 主函数 ,它是程序开始执行的起点。 public 表示这个方法可以被任何其他类访问; static 表示这个方法属于类而不是类的实例; void 表示这个方法没有返回值; main 是方法的名称; String[] args 是方法的参数,它是一个字符串数组,用于接收命令行参数。

System.out.println("Hello Nowcoder");

这一行代码使用 System.out.println() 方法输出了 Hello Nowcoder 这个字符串。 System 是Java标准库中的一个类, out 是 System 类中的一个静态成员, println() 是 out 对象的一个方法,用于输出一行文本。

Java 语句的结束

在Java中,语句的结束也是由分号 ; 来表示的。分号是Java中最基本的语句结束符号,它表示一条语句的结束。如果你漏掉了分号,编译器会报错。大括号 {} 用于定义代码块,如类、方法等,大括号本身不需要分号。

Java 注释

在Java中,注释也有两种形式:单行注释和多行注释。

  • 单行注释以 // 开头,后面的内容都是注释,直到行末结束。

  • 多行注释以 /* 开头,以 */ 结尾,中间的内容都是注释。

此外,Java还有一种特殊的注释形式,叫做文档注释,它以 /** 开头,以 */ 结尾,用于生成API文档。不过在算法题中,我们一般不会用到文档注释。

Python

Python 的代码模板如下:

print("Hello Nowcoder")

恭喜你已经学完了所有的 Python 模板!Python 是这样的,你直接说正事就行了,不需要客套之类的乱七八糟的,主打的就是一个简洁!

这一行代码使用 print() 函数输出了 Hello Nowcoder 这个字符串。在Python中, print() 是一个内置函数,用于将指定的对象输出到标准输出设备(通常是屏幕)。

Python 语句的结束

与 C++ 和 Java 不同,Python 使用缩进来表示代码块,而不是大括号 {} 。此外,Python语句的结尾通常不需要分号 ; ,但是你可以使用分号用来在一行中写多条语句。

Python 注释

在 Python 中,注释也有两种形式:单行注释和多行注释。

  • 单行注释以 # 开头,后面的内容都是注释,直到行末结束。

  • 多行注释可以使用三个单引号 ''' 或三个双引号 """ 包围,中间的内容都是注释。

# 这是单行注释
print("Hello Nowcoder")  # 这是输出语句

'''
这是多行注释
这是多行注释
这是多行注释
这里我们想写啥就写啥
不会被编译器执行
'''

"""
这也是多行注释
这也是多行注释
这也是多行注释
"""

如果你需要编写更复杂的Python程序,你可能会用到以下结构:

def main():
    print("Hello Nowcoder")

if __name__ == "__main__":
    main()

这段代码定义了一个名为 main 的函数,并在程序作为主程序运行时调用它。当某个 python 代码作为主代码被运行时,__name__ 的值会被赋为 __main__,进而跳转到主函数中。if 语句你还没有学,所有这个东西只要了解即可,这种结构在更大的 Python 项目中很常见,但对于简单的算法题来说,通常不是必需的。

到这里,你就已经学完了全部的编程基本概念啦!