English中文

光速学会AI编程

本文提供了5种主流编程语言 - Java、Kotlin、Python、TypeScript 和 C#。我们将探讨这些语言中的三个基本概念 - 变量、函数和类与包。

  • 什么是 AI编程?
    • 简单来说,就是"你最好的朋友AI 将辅佐你 跟你一起编程"
  • 今天我们将学习什么(<60分钟)?
    • 5大主流编程语言 结构性概念
      • Python
      • Java
      • Kotlin
      • TypeScript
      • C#
    • 指挥你的AI小伙伴为你编程
    • 最重要的一件事 - 庆祝 !🎉
  • 学历要求
    • 小学毕业

大纲 - 3大模块

我们将在一个小时内学习3个模块,每个模块都适用于所有编程语言:变量、函数和类。
mindmap
  root((AI coding))
    变量 variable
    函数 function
    类 class

目的 - Have Fun

我们将探索Java、Kotlin、Python、TypeScript和C#中的变量、函数和类。

记住,我们课程的目标 不是记住每个细节,也不是成为编程大师,而是理解结构化概念,从而能够构建软件产品,在现实中创造收益$$$。

目标不是什么?

目标是什么?

变量

基本数据类型

  • 数字
  • 文字 -> 我们称之为"String"
  • True / False -> 我们称之为"Boolean"
  • 集合 -> 我们称之为"Collection" (此处只需要知道有这么个名字即可 不必深究)
    • 列表 / List 或者 数组 / Array
    • 字典 / Dictionary / Map
"如果我连这些数据类型都记不住怎么办?"
  • 没问题!只需问ChatGPT或KimiChat或者豆包等 你最喜欢的AI,"所有流行编程语言中的基本数据类型是什么?"
  • 作业:试一试吧!

定义和使用变量

就像在数学中我们也需要变量(x, y, z等)并计算数学公式。现在让我们用编程的方法做道小学1年级的数学题:

首先让我们看这个问题 - 它是个什么样的问题呢? 这是给了两个数字而求一个结果,所以是3个数字对吧?那么有请我们的好朋友AI, 来回答这个问题:

这次我们使用字节的豆包来尝尝鲜:
# 学习编程语言
## 我正在尝试用Python解决一个数学问题 "1 + 1 = ?"
- 请定义3个变量,然后计算加和的结果并显示出来哦

现在让我们看看结果:

varInPy

就是这样!你懂了吗?🎉不要忘记庆祝哦!我们也会在最后一个模块的结尾帮你庆祝,非常重要! 😄

现在让我们尝试另几种语言,Java、Kotlin、TypeScript和C#

varInJava
varInKt
varInTs
很好 再试试用C#写
varInCs
varInSwift

所以你懂了吗?我猜你肯定看懂了!现在让我们庆祝吧!🎉

函数

什么是函数?

函数,也称为"方法(method)", 其实也是一种"程序(Program)",就像一个公式:你给它一些输入(input),它会给你一些输出(output)(action去执行任务也算一种输出)

为啥需要函数?

因为人性皆懒 😂,但我们可以说"我懒我自豪" 哈哈哈😆

我猜你脑子里是这么想的:

# python代码

# 1 + 1
a = 1
b = 1
result = a + b
print(f"{a} + {b} = {result}")

# 2 + 2
c = 2
d = 2
result2 = c + d
print(f"{c} + {d} = {result2}")

# 3 + 3
e = 3
f = 3
result3 = e + f
print(f"{e} + {f} = {result3}")

# 4 + 4
g = 4
h = 4
result4 = g + h
print(f"{g} + {h} = {result4}")

# 5 + 5
i = 5
j = 5
result5 = i + j
print(f"{i} + {j} = {result5}")

# 6 + 6
k = 6
l = 6
result6 = k + l
print(f"{k} + {l} = {result6}")

# 统计一下:从上到下一共大约~40行代码

累不累? 我猜你肯定累! 如果还不累的话, 想一想从1到100走一遍, 肿么办?

想成为一个"我懒我自豪"的人类程序员吗?我打赌你想!

好的, 我们来看看AI如何帮助我们解决这个问题:

这次我们使用另一个AI工具来尝尝鲜 - KimiChat:
funSumPy

所以用Python写的函数就是:

def calculate_sum(a, b):
    sum_result = a + b
    print(f"{a}+{b}={sum_result}")
python里以#开头的都是给观众看的注释 不是程序的正文 你可以理解为电影的旁白
  • 函数的名称calculate_sum并不重要,你可以随意起名, 比如, 咱们创作一个新的函数(function)叫做sum 只计算并返回求和的结果 不打印"a+b=?"?
    • 还记得函数可以输出一些数据, 对吧?所以我们的sum就是仅仅返回加和的结果
funSumPurePy
  • 所以 sum 函数就是这样的:
def sum(a, b):
    return a + b

懂了吗?我猜你懂了!这就是一个基础的函数!

函数是最重要的概念, 好, 现在让我们深入玩一下:

  1. 函数可以调用另一个函数,就像你的数学公式可以调用一个数学公式一样,对吧?
    1. 首先, 我们更新calculate_sum以调用sum函数获取结果并显示它,所以这个"输出(output)"实际上是一个动作,也就是显示结果在电脑屏幕上。
    2. 咱们看看你的AI兄弟怎么做到的:
funCallFunPy
  1. 此外,让我们再玩一会儿Boolean和字符串String:
    1. 让我们在calculate_sum中检查a和b是否相等:通过使用新的Boolean变量显示"a和b是(不是)相等"。
    2. 再定义一个String字符串类型的变量来存储这一部分信息, 即"{a} + {b} = {result}",然后显示它。
    3. 咱们再看看你的好朋友AI 如何做到这一点:
funCallFunBoolStrPy
  1. 所以 如果我们想计算从1+1=?一直到10+10=?怎么办?我猜 聪明如你 是这么想的:
calculate_sum(1, 1)
calculate_sum(2, 2)
calculate_sum(3, 3)
calculate_sum(4, 4)
calculate_sum(5, 5)
calculate_sum(6, 6)
calculate_sum(7, 7)
calculate_sum(8, 8)
calculate_sum(9, 9)
calculate_sum(10, 10)
# 统计一下: 从上到下一共6+10=16行代码
  1. 没毛病! 只是 还想再懒一点不?可以的! 这次我们使用"循环语句":🚀
funCallFunLoop10Py
  • 对的 这就是"for循环":
for i in range(1, 11):
    calculate_sum(i, i)
  • 好事成双, 还有一种循环类型叫做 "while循环":
funCallFunWhile10Py
  • 所以 这段就是while循环:
i = 1
while i <= 10:
    calculate_sum(i, i)
    i += 1
  • 好了!"循环"是不是看起来更简单了?我相信你已经懂了!😎
    • 通常来说, for循环用于已知次数的情况,如10,
    • 而while循环用于未知次数但已知条件的情况,如i <= 10。
    • 你已经在Python中学会了for循环和while循环的玩法啦! 相信我,你的AI兄弟肯定可以随时帮你写出它们,只要你提到"for/while loop/循环"即可 😎
  1. 我们的课程是要贯通5大主流高级语言, 现在咱们一起尝试下其他编程语言:
点击查看Java、Kotlin、TypeScript、C#和Swift代码

funCallFunJava funCallFunKt funCallFunTs funCallFunCs funCallFunSwift

类

什么是类?

类就像一个模具或模板 比如说汽车🚗 想象一下你在做玩具汽车:

  • 每辆玩具汽车都有轮子、车身和颜色,对吧?🛞🏎️🎨
  • 但你不能每次制作新车都从头开始。你需要一个模具,这样每辆车都可以用它轻松制作出来。
  • 这个模具就是我们所说的类 (class)。

在编程中,类就是这个模具:

  • 它帮助你定义一个对象(比如汽车)应该具有什么特性(属性)以及它能做什么(函数)。
  • 然后你可以使用这个模具制作许多"汽车"(这些汽车是"对象" - 此处"对象"指的是类的实例 即新生产出来的车, 而不是你的"另一半"哈)。
  • 每辆车都有相同的基本设计,但可以有不同的细节,比如不同的颜色, 发动机, 加速能力, 等等

使用这个类(模具),你可以方便地重用设计并节省时间。⏱️

例如,"Car"的class(类)可能包括:

  • 属性:颜色、型号、速度
  • 函数:启动、加速、刹车

这样的话,当你想在程序中创建一辆新车时,你可以使用这个"Car"类模具。这是一种重用代码的懒人方式,使你更容易在写程序的过程中少写好几行代码 哈哈哈。🚙🚗🚕

为什么我们需要这个 Class/类?

嗯,再说一次,因为"人性皆懒",我们尊重人性, 所以其实, 你还想变得更懒一点 哈哈哈 真实真的 😂
  • 类 可以帮助你以结构化的方式组织你的变量和函数
  • 类 可以帮助你重复用你自己编写的代码,以及他人的代码
  • 类 可以帮助你隐藏细节,只暴露代码的必要部分
  • 类 因此可以帮助你少写很多的代码
---
title: Car Class
---
classDiagram
    class Car {
        -int speed
        -String color
        -String model

        +Car(String model, String color)
        +void start()
        +void accelerate(int increment)
        +void brake(int decrement)
        +void showDetails()
    }
    note for Car "speed is initialized to 0min the constructor"
点击查看Java代码
public class Car {
    // 汽车的属性
    private int speed;
    private String color;
    private String model;

    // 构造函数,用于初始化汽车的属性
    public Car(String model, String color) {
        this.model = model;
        this.color = color;
        this.speed = 0; // 创建汽车时初始速度为0
    }

    // 启动汽车的方法
    public void start() {
        // 设置默认速度为50
        speed = 50;
        System.out.println("汽车已启动。");
    }

    // 加速汽车的方法
    public void accelerate(int increment) {
        if (increment > 0) {
            speed += increment;
            System.out.println("汽车已加速。当前速度:" + speed + " km/h");
        } else {
            System.out.println("无效的加速值。");
        }
    }

    // 刹车并减速的方法
    public void brake(int decrement) {
        if (decrement > 0 && decrement <= speed) {
            speed -= decrement;
            System.out.println("汽车已减速。当前速度:" + speed + " km/h");
        } else if (decrement > speed) {
            speed = 0;
            System.out.println("汽车已完全停止。");
        } else {
            System.out.println("无效的刹车值。");
        }
    }

    // 显示汽车详细信息的方法
    public void showDetails() {
        System.out.println("汽车型号:" + model);
        System.out.println("汽车颜色:" + color);
        System.out.println("当前速度:" + speed + " km/h");
    }

    // 使用Car类的主方法,演示如何使用Car类
    public static void main(String[] args) {
        // 创建一个新的汽车对象
        Car myCar = new Car("特斯拉Model 3", "红色");
        // 启动汽车
        myCar.start();
        // 显示汽车详细信息
        myCar.showDetails();
        // 加速汽车
        myCar.accelerate(30);
        // 显示当前详细信息
        myCar.showDetails();
        // 减速汽车
        myCar.brake(10);
        // 进一步加速
        myCar.accelerate(50);
        // 刹车直到完全停止
        myCar.brake(80);
        // 显示最终详细信息
        myCar.showDetails();
    }
}
不要偷懒哦 等你有了结果再点这看

Python

class Car:
    def __init__(self, model, color):
        self.speed = 0
        self.color = color
        self.model = model

    def start(self):
        self.speed = 50
        print("汽车已启动。")

    def accelerate(self, increment):
        if increment > 0:
            self.speed += increment
            print(f"汽车已加速。当前速度:{self.speed} km/h")
        else:
            print("无效的加速值。")

    def brake(self, decrement):
        if decrement > 0 and decrement <= self.speed:
            self.speed -= decrement
            print(f"汽车已减速。当前速度:{self.speed} km/h")
        elif decrement > self.speed:
            self.speed = 0
            print("汽车已完全停止。")
        else:
            print("无效的刹车值。")

    def show_details(self):
        print(f"汽车型号:{self.model}")
        print(f"汽车颜色:{self.color}")
        print(f"当前速度:{self.speed} km/h")


my_car = Car("特斯拉Model 3", "红色")
my_car.start()
my_car.show_details()
my_car.accelerate(30)
my_car.brake(10)
my_car.accelerate(50)
my_car.brake(80)
my_car.show_details()

Kotlin

class Car(val model: String, val color: String) {
    var speed = 0

    fun start() {
        speed = 50
        println("汽车已启动。")
    }

    fun accelerate(increment: Int) {
        if (increment > 0) {
            speed += increment
            println("汽车已加速。当前速度:$speed km/h")
        } else {
            println("无效的加速值。")
        }
    }

    fun brake(decrement: Int) {
        if (decrement > 0 && decrement <= speed) {
            speed -= decrement
            println("汽车已减速。当前速度:$speed km/h")
        } else if (decrement > speed) {
            speed = 0
            println("汽车已完全停止。")
        } else {
            println("无效的刹车值。")
        }
    }

    fun showDetails() {
        println("汽车型号:$model")
        println("汽车颜色:$color")
        println("当前速度:$speed km/h")
    }
}

fun main() {
    val myCar = Car("特斯拉Model 3", "红色")
    myCar.start()
    myCar.showDetails()
    myCar.accelerate(30)
    myCar.brake(10)
    myCar.accelerate(50)
    myCar.brake(80)
    myCar.showDetails()
}

TypeScript

class Car {
    private speed: number;
    private color: string;
    private model: string;

    constructor(model: string, color: string) {
        this.speed = 0;
        this.color = color;
        this.model = model;
    }

    start(): void {
        this.speed = 50;
        console.log("汽车已启动。");
    }

    accelerate(increment: number): void {
        if (increment > 0) {
            this.speed += increment;
            console.log(`汽车已加速。当前速度:${this.speed} km/h`);
        } else {
            console.log("无效的加速值。");
        }
    }

    brake(decrement: number): void {
        if (decrement > 0 && decrement <= this.speed) {
            this.speed -= decrement;
            console.log(`汽车已减速。当前速度:${this.speed} km/h`);
        } else if (decrement > this.speed) {
            this.speed = 0;
            console.log("汽车已完全停止。");
        } else {
            console.log("无效的刹车值。");
        }
    }

    showDetails(): void {
        console.log(`汽车型号:${this.model}`);
        console.log(`汽车颜色:${this.color}`);
        console.log(`当前速度:${this.speed} km/h`);
    }
}

const myCar = new Car("特斯拉Model 3", "红色");
myCar.start();
myCar.showDetails();
myCar.accelerate(30);
myCar.brake(10);
myCar.accelerate(50);
myCar.brake(80);
myCar.showDetails();

C#

using System;

class Car {
    private int speed;
    private string color;
    private string model;

    public Car(string model, string color) {
        this.speed = 0;
        this.color = color;
        this.model = model;
    }

    public void Start() {
        speed = 50;
        Console.WriteLine("汽车已启动。");
    }

    public void Accelerate(int increment) {
        if (increment > 0) {
            speed += increment;
            Console.WriteLine($"汽车已加速。当前速度:{speed} km/h");
        } else {
            Console.WriteLine("无效的加速值。");
        }
    }

    public void Brake(int decrement) {
        if (decrement > 0 && decrement <= speed) {
            speed -= decrement;
            Console.WriteLine($"汽车已减速。当前速度:{speed} km/h");
        } else if (decrement > speed) {
            speed = 0;
            Console.WriteLine("汽车已完全停止。");
        } else {
            Console.WriteLine("无效的刹车值。");
        }
    }

    public void ShowDetails() {
        Console.WriteLine($"汽车型号:{model}");
        Console.WriteLine($"汽车颜色:{color}");
        Console.WriteLine($"当前速度:{speed} km/h");
    }
}

class Program {
    static void Main() {
        Car myCar = new Car("特斯拉Model 3", "红色");
        myCar.Start();
        myCar.ShowDetails();
        myCar.Accelerate(30);
        myCar.Brake(10);
        myCar.Accelerate(50);
        myCar.Brake(80);
        myCar.ShowDetails();
    }
}

Swift

    class Car {
        var speed: Int
        var color: String
        var model: String

        init(model: String, color: String) {
            self.speed = 0
            self.model = model
            self.color = color
        }

        func start() {
            self.speed = 50
            print("汽车已启动。")
        }

        func accelerate(increment: Int) {
            if increment > 0 {
                self.speed += increment
                print("汽车已加速。当前速度:\(self.speed) km/h")
            } else {
                print("无效的加速值。")
            }
        }

        func brake(decrement: Int) {
            if decrement > 0 && decrement <= self.speed {
                self.speed -= decrement
                print("汽车已减速。当前速度:\(self.speed) km/h")
            } else if decrement > self.speed {
                self.speed = 0
                print("汽车已完全停止。")
            } else {
                print("无效的刹车值。")
            }
        }

        func showDetails() {
            print("汽车型号:\(self.model)")
            print("汽车颜色:\(self.color)")
            print("当前速度:\(self.speed) km/h")
        }
    }

    let myCar = Car(model: "特斯拉Model 3", color: "红色")
    myCar.start()
    myCar.showDetails()
    myCar.accelerate(increment: 30)
    myCar.brake(decrement: 10)
    myCar.accelerate(increment: 50)
    myCar.brake(decrement: 80)
    myCar.showDetails()

附加题 - 包 package

毕业啦