学了C语言真的能开发出很多东西吗?

 2024-03-19 01:05:23  阅读 0

c语言发送数据_数据文件c语言_如何把c语言发给别人运行

当马里奥触摸一朵花时就会变形。

马里奥是什么? 一个矩形,包含 16 × 32 个小色块,其中一些色块填充有颜色,一些色块没有填充。 什么是花? 一个 16 × 16 的正方形。 什么是“转变”? 将马里奥盒子中代表衣服的棕色更改为红色,并将代表工作服的红色更改为白色。 什么是棕色? 假设是这个数字。 什么是“相遇”? 马里奥的矩形与花的正方形重叠。 什么是“重叠”? 假设马里奥的方块在屏幕上占据X方向101到116、Y方向21到52之间的区域(什么是屏幕?可以容纳256×240个小色块的矩形),那么只要有如果一个或多个点也被花朵占据(例如,花朵位于 X 116 至 131 和 Y 21 至 36 之间的区域),我们认为两者重叠。

如果给定两个由八个数值表示的矩形区域,请编写一个C语言程序来判断这两个区域是否重叠。 如果你能写出来,恭喜你。 如果有一天你想自己用C语言制作NES版的《超级马里奥》,你至少知道需要做什么才能让他变形。

是的,C语言可能“只”解决数学问题。 然而大多数游戏的运行过程就是不断做数学题,而所谓游戏的编写就是将游戏的规则和效果转化为数学问题。 计算机已经知道如何解决许多这样的问题——其他程序员提前告诉了它——比如“找到一堆分散在三维直角坐标系中 8(x−3)−10(y +1) 处的多面体” −11(z−1)=0 诸如“在该平面上给定范围内的投影”或“给定一些相互连接的顶点,求任意两点之间的最短路径”之类的数学问题,它只需要十万分之一一秒给你解答,这个能力有什么用呢?电脑上FPS游戏的本质活动就是不断求一个多面体在三维坐标系变换后在二维平面上的投影,不断判断两个多面体是否互相重叠,不断寻找两个顶点的差值,你们之间的最短路径,最终达到让怪物冲到你面前咬你的目的。不仅是游戏,其他也一样。软件都是类似的,每一个细节都是某种数学问题——比如知乎页面顶部的蓝色导航栏背景是CSS描述的从浅蓝色到深蓝色的渐变——渐变是如何工作的? 这是怎么回事? 给定分别代表两种颜色的两个数字,以及代表距离的第三个数字,找到一系列颜色的值和顺序,使该距离内任意两个相邻颜色之间的变化最小。 数学题。 别说C语言,所有的编程语言最终都只能做数学题。 根据给定的数据,计算其他数据,计算更多的数据,然后存储、发送或呈现计算出的数据。 总而言之,因为数学可以解释现实世界,所以它可以用来创建虚拟世界。 现实世界中的炮弹会按照近似抛物线的轨迹下落,所以如果你在游戏中不断地把炮弹画成抛物线,就会显得非常真实。

但我能理解你的困惑。 花了很多时间看了教程,只能在黑盒子里输出一串数字。 这是学习编程还是向 70 年代致敬? 难道编程就是这样一种不给人成就感的活动吗? 是和不是。 从你的说法来看,好像不是小孩子,因为小孩子在学习编程时,不会因为能做的事情很少而感到成就感。 也就是说,孩子如果觉得这样做没有成就感,就根本不会继续学习。 学习编程最初的成就感仅仅来自于“我实际上可以命令机器做某事”。 至少我小时候就是这么感觉的,用语文学习机写了一个程序来帮我算暑假作业的四道算术题。 虽然编写这些程序并用它们来解决问题比自己编写问题要耗时得多,但仍然很有趣。 那时我并不知道像马里奥变花这样的事情实际上是编程的,所以我并没有通过学习编程来思考“你不能做什么”。

遗憾的是,到了一定年龄之后,大多数人很难依靠“我可以指挥机器”这种简单原始的快乐来驱动自己学习编程了。 见过世面,听过传闻,欲望和野心变得复杂而巨大。 您需要图形界面、音乐和音效、人工智能和云同步。 然而,您已经学习了一些课程,但仍然只学会了如何在黑盒子中显示某些内容。 一串数字。 你怀疑这是学习C语言的错误,所以你去知乎问了这个问题。

你的怀疑是有道理的。

如果你能继续学习编程,以后你就会明白任何程序都是冰山。 最终用户能看到的界面和功能只是漂浮在水面上的程序的十分之一。 知乎网站实际上是一个运行在某台计算机上的程序。 你能看到用来写字的十分之一是多少? HTML、CSS 或 -C。 你看不到的十分之九是用什么写的? 。 这些您无法直接观察到的程序正在世界上某个地方的某些计算机上运行,​​通过光缆、双绞线和无线基站,为您面前或手掌中的用户界面注入活力。

c语言发送数据_如何把c语言发给别人运行_数据文件c语言

(xkcd:)

……但是它是用什么写的呢? C语言(当然这个不严谨,理论上用其他任何语言都可以实现,实际上很多其他语言都已经实现了,但这不是重点)。 任何编程语言都是实现某种功能的工具。 它实现了知乎网站的大部分功能,C实现了“写程序”的功能。 为什么是C?

C 语言笨拙且有缺陷,但却非常成功。 虽然有历史的巧合促成了这种情况,但也是因为它能够满足这样一种系统实现语言的需要:它取代汇编语言的效率相当高,并且足够抽象和流畅,可以用来描述各种类型。的系统。 这样的环境中的算法和交互。

C 是 、 和 。 的,它需要一个到,然而,到和在一个广泛的。

——C语言之父,M.

C 是第一代程序员使用的语言。 当时,硬件非常昂贵,软件必须高效。 计算机使用者都是专业程序员,对硬件有足够的了解。 C 与硬件的紧密性意味着它很容易翻译成机器可以理解的语言,并且它的设计者不需要担心普通人可能很难学习它——而且,说实话,这并不难根本不。 然而这么多年过去了,软件的规模已经越来越大。 C就像一把锤子和一把手锯。 它擅长修理小屋,但不擅长建造摩天大楼; 但是C语言可以用来创建其他更适合建造摩天大楼的工具。 ,甚至连组成摩天大楼的预制件都像用锤子和手锯建造挖掘机和起重机、混凝土板和集成门窗(当然,这个类比不是很恰当。但没有任何类比可以充分描述软件工程) ,因为软件工程就像许多事情一样,又像什么都没有)。

那么,回到你的问题,是的,学习C计算机语言确实可以开发很多东西,但是除非你内功深厚,场合合适,而且很自由,否则大多数人不会使用C或者只使用C C. 开发太大的东西。 如果你只是想要一种可以让你“编辑游戏或软件”的语言并且你使用它,那么我建议你学习C#。 它看起来和C很相似,但是它可以快速编写至少有图形界面的程序。 使用起来也非常方便。 只需点击一下鼠标,您就可以更直观地了解您的程序是什么样子的。 印象。 另外,C#教材在中国很容易找到。 当然这也是一个不错的选择。

如何把c语言发给别人运行_c语言发送数据_数据文件c语言

另外,有一点你必须明白:现代所谓的编程活动,实际上大多是“将别人已经实现的功能合理地堆叠起来,以实现新的功能”。 C语言也不例外,比如这个东西。 就是别人做的“将一些数据以指定的格式输出到屏幕上”的功能。 其他人还做了很多其他的功能,比如“当发现用户按下鼠标两次并在短时间内松开时,调用你编写的函数”。 学习如何使用 C 或任何其他编程语言中的这些现有函数也是学习编程的重要组成部分。 当你弄清楚这一点时,你就会找到问题的答案。

尾注1:有问题的图片是错误的。 Mario 应该是 16 像素宽,所以我将其设为 17 像素宽。

尾注2:NES上的超级马里奥是使用6502而不是C编译的,并且碰撞检测不是像素级的。

尾注3:我不是彝语的发明者。

标签: 编程 重叠 变身

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码