作为C#的傻瓜教。 第一部分


记录1


我决定录音。 主要是因为我喜欢录制。 虽然没有。 其实我想讲一个故事。 编程很有趣的故事。 编程不仅可以是一种职业,而且可以是一种极大的业余爱好,例如摄影,国际象棋,绘画或弹吉他。 为了在任何行业中取得小而大的胜利,没有先天的才能,超能力或多年的特殊教育的事实。

这是一个学习乐趣的人的日记。 不是为了职业,不是为了生活。 我不住在带按钮电话的尼日利亚,也不处于绝境中。 我只是在工作和家庭事务的业余时间学习娱乐节目并为其编程。 实时显示。 分5期出版。

由于某种原因,既定的心态(我的和其他人)可以保护我们免受新事物的大胆尝试。 “我不知道如何”听起来像是该死的死刑判决。 我每天都在工作中看到这一点,当时同事们面临着陌生的任务。 不知道怎么办 程序结束。

我七岁的儿子害怕尝试不熟悉的活动。 因为他不知道如何。 但是我们必须了解,他的岁月不知道多少。

有时我会告诉他: “伙计,如果人们尽其所能,我们仍然会生活在山洞中,特别是您会整天在身上o,爬行和大便,而不是玩愤怒的小鸟。 尽管没有,但是您会不穿裤子而爬行,因为没人会缝制

我为什么 我不知道如何编程。 但是我要学习。 不是因为我想成为一名开发人员-我已经有专业。 但是因为我可以。 虽然实际上我有三个原因。

首先是伸展你的大脑。 我坚信,生活不能围绕任何一项活动建立。 有必要将精力放在不同的任务上。 而且它们越多样化,对头脑越有利。

第二个原因是可行的。 我要写一个游戏(老兄,是的),我们将玩这个游戏并玩得开心。我们已经有了一个主意-在上一次迭代中,我们试图做一个坚持,但是机制却太复杂了。

第三个原因是教育。 我将尝试改变社会对编程的态度。 人们普遍认为编程是专业人士的命运。 没有人将编程作为一种爱好。 “业余编程”(记住这个词)的概念根本不存在。

现在,读给我的专业人士中有一部分会发表评论,说我会贬低他们多年来获得的专业和技能。 不要着急。 现在,请相信我,事实并非如此,稍后我们将回到这个主题。

简而言之,我决定学习C#。 因为我的想法需要一个引擎,而且据我了解,Unity是最好的。 而Unity是C#。 这是第一。

我意识到的第二件事是,从Unity开始还为时过早。 几乎所有的教育材料都来自读者已经熟悉该语言的事实。 我对C#的了解只是说“ Sea Sharp”而不是“ Tse with a grid”是正确的。 因此,让我们从语言本身开始。

我意识到的第三件事是培训将是彻底的。 由于Sharpe对我来说是一门新语言,因此您需要“傻瓜”,但没有。

马丁·德雷尔(Martin Dreyer)有一本教科书“面向中小学生的C#”,但绝对不可能阅读。 首先,对编程的熟悉始于对类和对象的研究。 太复杂和难以理解。 其次,在本质的一个段落中,有三页来自现实世界的示例。 太多了 我还没有准备花太多时间来讲述一个荒岛上的女孩如何说服机器人外星人让大象采摘椰子的故事。

还有另一个极端。 来自mycsharp.ru的教程和位于metanit.com/sharp/tutorial的“ C#8.0编程语言和.NET Core 3平台的完整指南”

有一些代码示例可以重用某些内容,但是这些示例太抽象了,例如“让我们编写一个将对象a,b和c放入内存的程序,真是太令人兴奋了!”。 但这比大象和椰子要好一些,尤其是因为我有自己的教学方法。

通常,我决定可以处理它并着手安装Visual Studio。

记录2


一切都按计划进行。 第二天,我抓到了黑屏。 我不明白它是什么,但看起来视频驱动程序是在Windows之前更新的,并且证明与旧版本不兼容。

曾经我在这些事情上很整洁。 遇到任何问题,我只是从经过精心准备的映像中还原了OS分区,但这是很久以前的事了。 Windows变得更加稳定,我变得更加粗心。 等等。

我花了一个星期试图修复所有问题。 我尝试了所有食谱。 我找到了一种方法来启动命令行,获取古老的Far,传输文件,在第三次尝试中,我选择了一个合适的程序集(我使用自定义Windows)并安装了已安装有问题的更新。

在这里,我必须谈谈我的背景。 我不知道如何编程,但总的来说,我认为自己是一个计算机人。 大约8岁的时候,我生命中的第一台PC出现在我们的位置。 Packard Bell486。当时很酷。 它有两个程序-Lexicon和Info-accountant。



我玩过词典。

我用字符I,/和\绘制了赛道,并且光标是一辆汽车。 这些都是钉在地板上的玩具。 没有互联网,没有电脑朋友(一开始)。 我尽力了。

除了两个程序外,计算机还附带一整套成熟的MS-DOS,放在一堆软盘上,我经常尝试不同的团队。 我找到了一个叫做QBASIC的产品。

有一个基本的小手册,我了解了一些。 他学会了一个或两个命令,并且能够编写在屏幕上显示任何字母的程序。 太棒了

此外,高中还开设了计算机科学课程。 Turbo Pascal。 我们被教导要写真实的代码。 当然在笔记本上。 但是我有一台电脑(已经有奔腾电脑了)并且可以练习。

所以我遇到了最基本的东西。 If-then-else构造和循环。 我的技能达到顶峰的是轮盘计划。 轮盘赌是一种游戏。 您从0到10中选择一个数字并下注。 猜-奖金,不-下注。 因此,直到钱用完为止。 我感到非常自豪。

尽管如此,我还是一个完全的人文主义者,并没有开始将我的生活与计算机科学联系起来。 因此,经过学校实验,我已经19年没有考虑过编程了。

喔! Visual Studio安装似乎已完成。 真漂亮 全黑。 让我们弄清楚是什么。

记录3


实际上,这不是我第一次尝试编程。 大约一年前,我心中一时兴起,我尝试了VBA。 他能够掌握多个团队的语法,并编写了与当时学校相同的轮盘赌。 只有更好。 现在,我有了一个包含字段和按钮的图形界面,以及用于保存和加载游戏的功能(数据存储在excel表中)。

尽管如此,我还是迅速放弃了该案。 在很大程度上,是由于无法正常使用图像,也可能是由于懒惰。 我不记得了。 无论如何,我们将认为我的VBA经历是一种热身。 现在是时候成为真正的铁杆了。

我在Sharpe度过了4-5晚。 我从教科书中读了两章。 我能说什么 我根本不受基于编写毫无意义的程序进行抽象计算的学术方法的启发。 我不确定我会为考虑三角形面积的应用程序感到自豪。

所以我想出了自己的课程。 和二十一点......差不多。 我学习了一些最重要的命令:Console.WriteLine用于显示标签,Console.Readline用于键盘输入,算术运算,if-else条件构造,while循环,当然还有Random用于随机数。

您可能已经猜到了。 我再次写了控制台轮盘赌:)



感觉是一种喜悦。 她工作! 您可以输赢! 这是一个真实的程序-它包含68行难以理解的代码,其中包括多达5条被调用的方法。

有困难吗? 是的 我阅读手册,犯了错误,破坏了一切,花了数小时寻找缺陷,再次阅读了手册,对代码感到困惑,并多次重写了所有内容,简化了循环的构造并删除了不必要的变量。

但是结果值得。 我充满希望并继续前进。

记录4


第一个障碍。 我了解了类和对象的概念。 这个概念是完全无法理解的。 这个想法本身将如何明确,但是如何以及为什么要应用它? 为玩家,赌场和轮盘创建课程? 然后在其中拿出物体? 他们会怎么做? 太久了 看起来有些不自然,只会使程序混乱。

过几天我就想到了。 我和儿子一起在操场上散步,以面向对象的眼光看着周围的世界。

class  {string Name;}, class  {string Name; int Age;}   = new  ();   = new  (); 

...

然后我了解了一切。 我的轮盘赌程序太愚蠢和原始。 在那里根本不需要课程。 学习过程编程是一个很好的练习,但仅此而已。

有必要提出一个新的练习,以了解课程。 然后我想到了。 我在这里坐在长凳上,给自己写了一个谜题。 制作一个迷你RPG。 会有一个英雄拥有自己的力量和健康参数。 每转一圈,他都会进入一个新的洞穴,并在那里遇到一个带有自己参数的巨魔。 他们将通过掷骰子来战斗,如“无趣”。 在这里您可以找到武器和盔甲。

主要班级要求自己:

  • 英雄(力量,健康,金钱)
  • 项目(损坏,装甲,耐久性)
  • 怪物(力量,健康)

应该很有趣。 我可以处理吗? 很简单 走吧

记录5


很难解决。 我很快用字段草绘了课程。 我从教科书中找出设计师是谁,并冲淡了装甲和武器的设计师。 我制作了界面,弄清楚如何更改文本的颜色。

现在,我的屏幕上显示了问候语,玩家数据,武器和盔甲。 有一个菜单,您可以从中开始下一个动作或退出游戏。



甚至那都不容易。 我经常遇到错误。 在将代码移植到方法时特殊。 在任何情况下都不存在某些垃圾。 由于保护级别,无法使用其他垃圾...

我真的很想念关于如何构建代码的假人指南。 将生成项目的方法放在哪里? 要上课? 上课程序? 只是留在代码中? 您必须尝试,捕获并纠正错误。

分开的两天,我被一个随机数生成器折磨了,这给了我带有相同参数的盾牌和剑。 我意识到普通的解决方案尚不可行,因此在两代产品之间暂停了一秒钟。

然后兴高采烈结束,昏昏欲睡开始了。 我设法手动生成了两个项目,分别命名为Weapon1和Armor1。 但是我需要在每次移动之后执行此操作,将它们保存在清单中,然后进行更改...如何以编程方式创建对象? 如何生成其名称,以及如何选择更改其参数所需的参数?

VBA比较容易。 Internet上充满了每个特定任务的脚本示例。 找到并重用正确的对象不是问题。 我经常不完全理解所写的一半代码,但是它运行得很神奇,然后我必须弄清楚。

教科书无济于事。 他们已经在谈论lambda表达式和多线程,并且示例仍处于“在多个数字中查找所有偶数之和”的级别。 无聊 在Internet上进行搜索也不会给出答案,因为我不以这种方式提出问题。

我怀疑您需要连接数据库并在其中写入对象。 我必须学习SQL。

Source: https://habr.com/ru/post/zh-CN466641/


All Articles