Coding 入门手册

本手册针对 0 基础向,带你入门编程。

Say "Hello World!"

走进代码世界的第一步:安装一个 C/C++ 编译器。

C 或者 C++ 代码需要通过编译器,编译成计算机可以直接执行的指令,才能构建成一个可执行文件。

GNU 的 gcc 就是一个C/C++的编译器。

  • Windows用户:安装 MinGW ,它包含了一些编译相关工具,如 gcc、g++等。

  • macOS 用户:安装 Xcode,就能获得 gcc。

  • Unix/Linux 用户:参考安装过程

接下来选择一个 IDE(集成开发环境):

比如我用的是 Coderunner,也可以用XCode,这两个 IDE 仅支持 macOS 。

其它还有 Qt-CreatorCLionVisual StudioCode::Blocks等。

下载安装完 IDE 后,启动 IDE,新建一个 C++ 文件(hello.cpp),然后输入代码:

#include <iostream>

int main(){
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

编译运行之后就可以看到运行的结果,输出了一句“Hello, World!”。

编程语言学习

C++、Python、Java 是使用较多,应用较广的编程语言。

R 语言较多用于统计分析、绘图。

当然其他语言也很有趣好玩,但是在这里我们将先学习这 4 门编程语言。

准备好了吗?

C++ 10分钟入门

首先我们学习变量、类型、运算符、函数、条件和循环语句等知识。

打开你的 IDE,新建一个hello.cpp文件。

一个C++程序开头一般是引入头文件,意味着我们的程序里面要用到头文件中的东西。

#include <iostream>

接下来是 main 函数,函数就是一段可以完成一定功能的代码。

int main(){
    // 我是一个什么也没有做的 main 函数
    return 0;
}

main 前面的 int 是代表这个函数会返回一个整数。

如你所见,main 是函数的名字,一个 C++程序在执行的时候,main 函数就是它的入口。

函数用圆括号()表示接收参数,没有参数也可以。

函数的主体用花括号{}包起来。

//表示注释,注释是写给人看的,比如你可以解释代码的作用。

return 0; 是一个语句,表示我们的 main 函数返回0,main 函数返回0就是正常结束了。

接下来我们加上一些功能:

#include <iostream>

int main(){
    int x = 5;  // 定义了一个整数变量,并赋值为5。

    // 注意每句语句后面都用了分号;结尾

    x = x + 10; // 把原来的 x加上10,再赋值给 x

    // 在控制台输出x = 15,endl 表示换行符,std::表示在 std 的命名空间里
    std::cout << "x = " << x << std::endl; 
    return 0;
}

在你的 IDE 中点击执行代码的按钮(有的是 RUN,有的是▸),就可以看到程序的输出了: x = 15

然后我们来写个函数吧:

#include <iostream>

// 函数的定义,a 是一个类型为整数的参数
// add10前面的 int 表示函数的返回结果是一个整数
int add10(int a){
    return a+10;
}

int main(){
    int x;
    std::cin >> x; // 从控制台接收用户的输入
    x = add10(x); // 这里调用了 add10 函数,把原来的 x 作为参数传入进去,再把函数的返回值赋值给x。
    std::cout << "x = " << x << std::endl; 
    return 0;
}

程序往往要处理不同情况,所以我们来加上一些判断语句吧。

#include <iostream>

int add(int a){
    // 定义一个存储结果的变量res
    int res = 0; 

    if (a < 10){ // 如果 a 比10小
        res = a+20; // 让 res = a+20
    } else {
        res = a+10; // 让 res = a+10
    }

    return res; // 返回 res
}

int main(){
    int x;
    std::cin >> x;
    x = add(x); 
    std::cout << "x = " << x << std::endl; 
    return 0;
}

看到了吗?if后面圆括号里是我们判断的条件。这个条件是个表达式,如果表达式的值为真,那就执行圆括号后面的花括号内的语句。

else 表示条件为假的情况,那就执行它后面花括号里的语句。

程序经常会重复执行一段代码,这叫做循环,我们来看看吧:

#include <iostream>

int main(){
    // 圆括号里有3个语句,分别是(初始化; 循环继续的条件; 循环变量的变化)
    for(int i=0; i<10; i++){ // i++表示的是把i +1赋值给 i
        std::cout << "#";
    }
    return 0;
}

这段程序会输出10个#

好啦,到此,你已经入门 C++啦,开心吗😎。

更多的语法和用法,我们在之后的实践中会继续介绍的,是不是很期待?!!~

Python 10分钟入门

Python 的语法也很简单的,来看看吧。

print("Hello world")

等一下,这句代码拿到哪里执行呢?

你可以在 Terminl里输入python(有的可能要输入python3),然后你会看到下面这样的提示(prompt):

>>>

这就是交互模式,在这里输入代码吧!

输入quit()或者按 Ctrl+D 退出交互模式。

插一句:说到终端,Mac 下推荐使用 iTerm2

你还可以下载一个 IDE,推荐使用 PyCharmJupyter Notebook

x = 5 # 赋值5给变量 x,井号后面的是注释
x = x + 10

在 Python 里面不用定义类型(但是变量是有类型的),语句后面也不用分号,不需要写 main 函数,程序的入口就是第一句语句。

然后我们来看看怎么写函数吧。

def add(x):
    return x+10 # 返回 x+10

x = int(input()) # 从用户那里接收一个输入,转变为 int 类型。 
x = add(x) # 调用函数

看到了吗,def 然后是函数名,然后是圆括号和里面的参数,然后是冒号。

函数体没有花括号了,而是通过缩进,也就是用4个空格或者是 tab 键代表一层缩进,注意一个 Python 文件缩进要么都是4个空格(都用2个也可以),要么都是 tab 键。

那怎么实现条件判断呢?

def add(x):
    res = 0

    if x < 10:
        res = x + 20
    else:
        res = x + 10

    return res

循环呢?

# 首先介绍的是 while 循环
i = 0
while i < 10:
    print('#', end='') #这里我们用 end='',告诉 print 函数不要换行
    i += 1 # python 里不能用 i++,但可以用 i+=1来表示让 i 增加 1(C++里面也可以)

# 接下来介绍的是 for 循环

for i in range(10): # range(10)表示的是从0到9。
    print('#', end='')

是不是很简单呢?

我们稍微看一眼 Python 里的数据结构吧

lst = [] # 这是一个空的列表,列表是存储多个数据的数据结构。

lst.append(1) # 增加一个数字 1
lst.append(True) #增加一个布尔值 True
lst.append('abc') #增加一个字符串'abc'

# 现在的 lst 是[1,True, 'abc']

print(lst[0]) # 通过索引取出第1个元素,注意是从0开始的哦
lst.pop() # pop 操作会弹出最后一个元素,也就是 'abc',现在的 lst 是[1,True]

好啦,你已经入门 Python 啦~

Java 10分钟入门

不知道你看到这里会不会有些累了,如果还是很有精神就和我继续学习吧。

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

Java 是一门面向对象编程语言,所以最外面一层是个 class Main,表示一个名字是 Main 的类,它有一个函数叫做 main。

这个 main 函数前面的 public static void 是干嘛的呢?

public是说这个 main 函数对于 Main 类外面的人来说是可见、可调用的。

static 是说你不需要一个 Main 类的对象就可以调用 main 函数。

void 是说 main 函数没有返回值。

Java 和 C++有点像,main 后面的圆括号里是参数,String[] argv 表示一个类型为字符串数组,名字是 argv的变量。

System.out.println是输出一句语句,并换行。

那么,Java 又要用什么 IDE 呢?

EclipseIDEA都是不错的选择。

Java 中函数又是怎么写呢?

import java.io.*; // 就像 C++里引入头文件一样,将 java.io 库中的类都引入进来
import java.util.*;

class Main {
    // 这就是一个函数,参数是 int 类型,返回值也是 int 类型。
    public static int add(int x){
        return x+10;
    }
    public static void main(String[] args) {
        // 定义一个Scanner 类的变量,叫做 keyboard。
        // 注意到我们用了 new 来创建一个变量,System.in作为Scanner 初始化的参数传进去了。
        Scanner keyboard = new Scanner(System.in); 
        int x = keyboard.nextInt(); //调用 nextInt 方法来获取用户的下一个输入
        x = add(x); //调用add 函数
        System.out.println("x = " + x); // 输出 x = 15,注意这里用加号+把"x = "这个字符串和 x 这个变量连接起来。
    }
}

Java 的 for 和 if 语句和 C++的类似:

import java.io.*;
import java.util.*;

class Main {
    public static int add(int x){
        int res = 0;
        if (x < 10){
            res = x + 20;
        } else {
            res = x + 10;
        }
        return res;
    }
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int x = keyboard.nextInt();
        x = add(x);
        System.out.println("x = " + x);

        // 循环输出10个井号
        for(int i=0; i<10; i++){
            System.out.print("#");
        }
    }
}

好啦,是不是觉得和 C++很像呢?我们也入门完 Java 了呢~

R 语言10分钟入门

R 语言是一个适合做数据分析和数据可视化的编程语言。

IDE 我强烈推荐Rstudio,好看好用还免费。

同样,R有交互模式,你可以在终端输入R(一定要大写才行呢!),回车。然后看见这样的 prompt:

>

因为 R 的使用者更多的是非计算机专业人士,所以使用体验非常友好。

记住一个有用的命令:help(),在交互模式下,你可以快速用它来查找一个函数怎么用,比如:

> help(solve)

也可以这样

> ?solve

我们了看看 R 语言具体怎么用吧:


print("hello world") # 井号后面是注释

x <- c(100, 3.3, 21) # 函数 c() 可以由任意多个参数,它返回一个这些参数组成的向量

# =,<-或者->都可以拿来赋值
5 -> y
z = x*y # 向量和数字相乘,会将向量中每个值都乘上这个数字
min(z) # 返回向量 z 中最小的元素
z = sort(z) #将 z 排序后赋值给 z

s1 <- seq(-5, 5, by=.2)  #生成序列-0.5, -4.8, ..., 4.8, 5.0
s2 <- 1:100 # 得到序列1,2,3,...,100
s3 <- rep(1:3, each=5) # 得到1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
s4 <- rep(1:3, 5) #得到1 2 3 1 2 3 1 2 3 1 2 3 1 2 3

# 函数
# 函数名字为twosam,用来计算双样本的t-统计量(这是一个统计学的名词)
# 接收的参数为 y1, y2两个向量
twosam <- function(y1, y2) {
      # n1为y1的长度,n2为y2的长度,两句之间用分号;分隔开
      n1  <- length(y1); n2  <- length(y2)
      # 计算各自的均值
      yb1 <- mean(y1);   yb2 <- mean(y2)
      # 计算方差
      s1  <- var(y1);    s2  <- var(y2)
      # 计算双样本的t-统计量
      s <- ((n1-1)*s1 + (n2-1)*s2)/(n1+n2-2)
      tst <- (yb1 - yb2)/sqrt(s*(1/n1 + 1/n2))
      # 函数最后一句会作为函数的返回值,你也可以写 return(tst)
      tst
}

# 调用函数,假设 data 是个已在内存中的变量
tstat <- twosam(data$male, data$female)

R的基本运算符包括+-*/和做幂运算用的^。 还有常用的数学函数,如log,exp,sin,cos,tan,sqrt 等等。

在上面例子里你也可以发现,R 提供了大量的函数,为我们实现了许多统计量的计算,如 sum、mean、var等。

不用 IDE 也可以!

只要在终端执行命令 就可以,也超级简单的。

javac hello.java #编译
java hello #运行

也许你要说,那 C++呢?也可以哦!

g++ hello.cpp -o hello # 编译
./hello #运行

那 Python 呢!?Python 是解释型语言,不需要编译,所以只要运行就可以

python hello.py

R 也是解释型语言,不过你需要在交互模式下输入:

> source("hello.r")

Blog Comments powered by Disqus.

Next Post