编程基础概念
标识符
标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。
标识符通常由字母和数字以及其它字符构成。特别地,标识符的第一个位置不能是数字或 _
以外的字符。例如,、
、
是合法的,
、
是不合法的。
以下为各种语言的标识符介绍:
- C++ : C++语法官方文档
- Java : Java语法官方文档
- Python : Python语法官方文档
我敢打赌, 的同学绝对不会打开这些用英文写的、冗杂又臭长的该死的语法细节手册,即使打开也会被立刻吓跑。所以我简单概括一下:
对于绝大多数的语言而言,给代码中的东西起名字的环节中,只采用大小写字母构成的变量名永远是最安全的。如果要加数字,数字只能跟在字母后面。特殊字符尽量只用下划线
_
,这个可以放在起的名字的任意位置。例如:
Wangzai0721
、kkksc03
、n
、http_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 项目中很常见,但对于简单的算法题来说,通常不是必需的。
到这里,你就已经学完了全部的编程基本概念啦!