好啦好啦。
不就是打回重造吗。
学一遍C#吧。
之前,我都是在B站上看别人翻译的视频。然后,我灵光一闪,在Microsoft Imagine 中 ,似乎也有提供学习C#的内容。而且还是我们的亲爱的Bob讲师授课!
不废话了,开始吧。
[hermit auto="0" loop="0" unexpand="0" fullheight="0"]netease_songs#:33316493[/hermit]
01
由于这个课程面向的年龄比较广,上至80岁,下到12、13岁。所以,Bob在讲授的时候比较细。
第一节课,当然就是概述、以及对今后发展的希望了。
(有点像小学的开学典礼啊)
Bob自己说,这是从2005年来他教授的第六版了,在这几年间,有数千万学员学习了他的课程。可以说,没有他,世界上就少了这么多学习编程的人。
总之,开始吧。
02
第一节课,当然就是要我们体会一下编程的乐趣了。
不过,我们学C#,要创建的是控制台应用。(话说回来,好像除了VB AI2,其他都是这样的啊)
国际惯例,第一节课当然是Hello World了。
(当然,高手们肯定是嗤之以鼻的)
Bob要求我们,一个一个字的打上去,别管Vs的任何提示,直接硬打。
这有点像信息技术课的时候,我们第一次学习VB时候的场景。
“老师!电脑说我找不到对象!”
“老师!电脑哭了!”
“……”
幸好VB还不区分大小写,要是区分还更麻烦了。
于是,代码是这样的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace First
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("来者可是……?");
Console.ReadLine();
}
}
}
(看着这么多,其实就两行)
总之,打完了之后,按F5,结果是这样的:
来者可是……?
(第二行按任意键+回车退出)
接下来,Bob阐述了几类容易出现的问题。这里就不赘述了。
03-04
这之后,就是解析时间了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//(这里以上,就是.Net 运行库的内容(总觉得MVA翻译成运行时不恰当),所谓的.Net 运行库,据Bob说,就是相当于一个嫁接层,用来链接,以及与系统之间交互。这可以增强安全性。)
namespace First
//namespace,也就是命名空间,Bob说他现在不想涉及太深奥的概念,所以就简单提一下,命名空间就是来容纳类(即下方的Class)用的。
{
class Program
//Class,就是类,也就是来包含代码块的东西。
{
static void Main(string[] args)
//在这里,Bob仍然不想多讲,他说,什么Static、void,甚至string、args他都准备以后再说
{
Console.WriteLine("来者可是……?");
Console.ReadLine();//这里总算到了,最最基本的一层,代码,语句。Console就是对象,WriteLine就是方法,而后面的是调用的
//参数。
//什么是方法呢?方法就是微软工程师们预先写好的代码块,也就是有名字的类。Bob说,就好比你到图书馆
//(namespace)去,想找一本书(Class),在目录的(Main)某一章(某个语句)的第几行(对象.方法)找
//到了参考资料。
}
}
}
05
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 变量
{
class Program
{
static void Main(string[] args)
{
int x;
int y;x = 7;
y = x + 3;
Console.WriteLine(y);
Console.ReadLine();}
}
}
老样子,还是先打代码。
首先,我们需要明白的是,int变量类型(integer,即整型),是只能取整的,(这像Pascal),包含小数都不行。
还有,C#中的表达式像数学公式一样,但又不完全是。所谓 X=3X-2,你一看就知道X=1.但是在C#中,假设你没进行其他操作,那么,X就会等于-2。
为什么呢?
用文字翻译一下,大概是这样的:
数学中的X=3X-2,代表的意思是,“存在一个数,使得该数的三倍减二是他本身”,也就是一个“问题”。
而C#中,他代表一种操作。“你要让计算机帮你做什么?”也就是说,翻译过来是这样的:“请你把X乘三,再减一个2。”
这之后,Bob又打了一段代码(当然我加工了一下)。
Console.WriteLine("来者可是?");
Console.Write("贵姓?");
string xing;
xing=Console.ReadLine();Console.Write("大名?");
string ming;
ming = Console.ReadLine();Console.WriteLine(xing + ming + "村夫……" + "你敢……");
Console.ReadLine();
这里出现了一个新的变量类型:字符型(String)。即,文字。
这里的加(+)的意义和上面不一样,是连接字符串的意思。
还有要注意的是WriteLine和Write的区别。(类似于Pascal中的Writeln 和 Write)。一个换行,另外一个不换行。
06
注意:这集超级强!
(前后略)
Console.WriteLine("人参赢家");
Console.Write("是1号,还是2号,还是3号门呢?");
string Choice=Console.ReadLine();
string hint = "";
if (Choice == "1")
hint = "天呐!12450万元的车!";
else if (Choice == "2")
hint = "哦!我的上帝!一辆闪闪发光的船!";
else if (Choice == "3")
hint = "太棒了!一抔黄土!";
else
{
hint = "弄啥玩意儿嘞?俺是乡下的,听不懂你们城里人说话!";//hint += "hint += "老子弄死你!!!";";
}
Console.WriteLine(hint);
Console.ReadLine();
如上图,是三次修改的后的代码。
第一次的代码是每个if语句中都初始化一遍Hint变量,再输出。后来,Bob指出,可以用全局变量,把hint放在顶部,这样可以节约代码。
第二次我是没看清,结果每次都输出一遍ReadLine,蠢得要死。
第三次,Bob提出了,他有一个新的运算符"+="要提出。这个运算符号基本和hint=hint+"老子弄死你!!!"等效。
然后,最终版,Bob说,当我们只有一个条件要判断的时候,往往用这样的语句:
变量类型 变量名 = (判定条件) ? 条件为真时变量取得值 : 条件为假时取的值;
(斜体部分可省略)
用这个程序来解释,可以是这样:
string hint = (Choice=="1") ? "一辆闪闪发光的船" : "一卷纱布";
还有,在输出的时候,还有一种语句可以使用:
Console.WriteLine("文本{0}{1}{2}",变量1,变量2,变量3);
放在这里,就是:
Console.WriteLine("天哪!聪明的你输入了{0},赢了{1}!",Choice, hint);
注意:{0},{1}等有固定顺序!代表着逗号后面的变量顺序!
所以,完整代码是:
Console.WriteLine("人参赢家");
Console.Write("是1号,还是2号,还是3号门呢?");
string Choice = Console.ReadLine();string hint = (Choice == "1") ? "一辆闪闪发光的船" : "一卷纱布";
//Console.WriteLine("天哪!你赢了" + hint + "!");
Console.WriteLine("天哪!聪明的你输入了{0},赢了{1}!",Choice, hint);
Console.ReadLine();
重点提示:
课后习题有错!
else 怎么能放在 else if 前面呢?
07
这集讲的是概念,顺便复习了一下。
主要有两个操作符:
&&与运算
||或运算
以及前面讲过的那个“一步判断”。
下节课讲循环。