搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 武大慧图 > 慧图小课堂——C语言基础篇

慧图小课堂——C语言基础篇

武大慧图 2018-10-29

C语言基础篇


    慧图社是个热爱学习的大家庭,国庆期间也不忘学习码代码~

    大一的同学们的国庆任务是C语言的一些相关练习,慧图社的第一次集体学习也是围绕着这些内容展开~



一、初学者常见代码问题



    编程是一门“水很深”的学问。要写出好的代码,需要长时间的经验积累和不断的探索,绝不仅仅是在点击调试后能够成功执行就功德圆满。

——慧图君


小课堂的第一位主讲人——16级地信大佬兼慧图组长韦瀚植学长在看过社员国庆假期提交的作业后,指出了新生们在编程过程中普遍存在的几个问题:



01

代码排版


代码的排版规范内容较多,初学者常犯的错误主要集中在缩进、行或块代码量等方面。

**每一行代码字符数不宜过多(通常不超过80)。

**同一屏可以显示的代码越多, 越容易理解程序的控制流。当然, 过于密集的代码块和过于疏松的代码块同样难看, 这取决于你的判断。但通常是垂直留白越少越好。

**代码的缩进有助于提升可读性,在一些编程语言中甚至有强制要求(如python),养成良好的缩进习惯十分重要。


错例

慧图小课堂——C语言基础篇

参考正例

慧图小课堂——C语言基础篇
慧图小课堂——C语言基础篇


慧图小贴士

    大家常用的IDE如Visual Studio,以及Matlab等包含编程环境的软件,其实都有自动缩进的功能~

    除了在写代码的过程中回车自动缩进,还可以使用一些快捷键调整缩进。

    如Visual Studio中,可以使用Ctrl + K + F来调整当前选中内容的缩进,使用Ctrl + K + D来调整全部内容的缩进哦~



命名

02


命名需要遵循一定的规则。

例如,有函数、变量、文件的命名应该有一定的描述性,并且尽量少使用拼音或是不常被使用(非约定俗成)的缩写等。此外,还有驼峰命名法等常用的命名法则。

(具体请可以参照Google的C++命名规范~)

错例:

int shuju[10] ;

参考正例:

int dataSet[10];



03

注释


    代码中的注释是非常重要的,对于代码的可读性提升较大,在需要合作的工程中作用尤为显著。例如:

    **函数声明处的注释描述函数功能; 

    **定义处的注释描述函数实现。

    **巧妙或复杂的代码段前要加注释。

    **比较隐晦的地方要在行尾空两格进行注释。




二、C语言之基础学习篇


    代码的应用范围非常广泛,从电脑软件到手机app,无不是许许多多的程序员许许多多的夜晚的结晶。对于初学者来说,很容易有我学的代码有何用的疑问。这一节,我们讲解了一些基础的排序和查找算法,这些算法非常经典和常用,让大家初步体会一下看似无趣的"for","while",可以组合出多么美妙的变幻~

——慧图君


01

排序篇


冒泡排序

 a) 原理:比较两个相邻的元素,将值大的元素交换至右端。

b) 描述:简单且稳定,但速度较慢。

冒泡排序


慧图小课堂——C语言基础篇



希尔排序

a) 原理:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

b)  描述:算法不稳定,但速度较快,元素的移动较少。

希尔排序


慧图小课堂——C语言基础篇



快速排序

a) 原理:在待排序列中,按照某种方式挑出一个元素,作为 "基准"。以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大递归地对两个序列进行快速排序,直到序列为空或者只有一个元素。

b) 描述:算法不稳定,但速度最快(大多数情况下)。




02

查找篇

二分查找

a) 原理:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

b) 描述:必须针对有序数列,但是查找的效率较高,实现也较为简单。

二分查找

慧图小课堂——C语言基础篇



插值查找

a) 原理:插值查找是对二分查找的改进,算法的原理和过程基本相同。但插值查找根据公式mid = low + (key - a[low]) / (a[high] - a[low]) * (high - low)来决定查找位置,而不是直接找中点。

b) 描述:同样必须针对有序数列,查找效率比二分查找更高,实现简单。

插值查找

慧图小课堂——C语言基础篇
慧图小课堂——C语言基础篇




三、小型应用篇


下面是社长金蕾学姐为大家讲解小游戏2048的算法~

2048小游戏介绍:

2048是一款非常受欢迎的小游戏,其身量小,但是游戏乐趣足。玩家每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会往滑动的方向靠拢外,系统也会在空白的地方乱数出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。不断的叠加最终拼凑出2048这个数字就算成功。

这个游戏大家都玩过,有没有思考过通过c语言,编写如上图的一个控制台版2048,通过键盘上的上下左右键来进行操控呢?

从这个小应用,我们可以学着去架构一个逻辑较为复杂的项目,对这个游戏的思考大概有以下几步:

a)从交互的方向入手,思考玩家对游戏进行的操作,如上下左右、退出等。分别以单独的函数进行处理。

b)从界面上看,需要记录当前成绩,最好成绩,并打印整个游戏界面。

c)此后,以较为复杂的上下左右操作为切入点,考虑其中的逻辑,再将其他操作补全


福利篇

什么?!

介绍太简洁了听不懂?!

没有源码还是不会动手?!

写了不知道对不对?!


没有关系!!

转发本条推文集齐五个赞

就可以兑换如下奖品


1.韦瀚植学长的讲解PPT~

多动图生动形象

还有新手入门教程和资源推荐哦~


2.排序搜索算法源码~

还包括部分算法的优化哦~

还附赠二叉树搜索等共五个排序算法

和五个搜索算法哦~


3.2048控制台版源码打包~


心动不如行动!

慧图君已经把代码洗白白等你了!




慧图君悄悄地透露一下,下一次的课堂由蔡忠亮教授的博士李伯钊学长主讲Android流行框架哦~

慧图君将在下一篇推文介绍主要内容和课堂时间~

记得关注慧图君获取最新课堂情报哦~

文字:金蕾

排版:喻韩

审核:黄逸轩

CARTOVISION

武大慧图



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《慧图小课堂——C语言基础篇》的版权归原作者「武大慧图」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注武大慧图微信公众号

武大慧图微信公众号:cartovision

武大慧图

手机扫描上方二维码即可关注武大慧图微信公众号

武大慧图最新文章

精品公众号随机推荐