免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

垃圾代码分析——C语言二维数组范例 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
191 [报告]
发表于 2012-04-11 13:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
192 [报告]
发表于 2012-04-11 13:18 |只看该作者
回复 188# 陈良乔


    如果我写C语言书,我根本就不会提出二维数组这么一章。我会先写个总则,介绍C的静态类型模型和求值模型,说明C的编译模型,然后说明C的实际执行过程,比如说C写GUI是个什么原理。第一章起到一个总纲的作用,要求是看完第一章至少可以用C写代码,知道C代码怎么个执行法儿了。第二章介绍C的语言,分为词法结构、表达式、声明、语句和顶层结构,这时候会介绍顺序点、转换,整形提升等等概念,基本上要映射C的求值模型来讲。第三章介绍C类型系统,这个时候介绍二维数组,但只是介绍而已,第四章介绍C的具体类型,这取决于第三章的介绍,说明结构体和共用体还有枚举等等,这章说明C的聚集数据类型,这时可以正式开始介绍多维数组了,这一章基本上可以引入很多例子了。第五章介绍C的实际执行的方式,堆栈,栈帧,详细介绍C的代码组织和编译模型,详细介绍C的定义的特点和链接性等概念。第六章覆盖C的标准库,第七章给一些实际的项目模型,说明GUI、服务器等等程序的构架,C语言在应用层和内核层占据了什么样的位置,进行一下进一步的引导就可以了。C的大体语法很简单,第一章总则就可以介绍完,关键还是C的求值模型,要说明C是一种状态机语言。早期的例子一定要非常非常简单才行。最好别涉及到编程习惯这些会转移注意力的地方。从第五章就可以写一些讲解编码规则的代码了。注意编码规范要穿插进去,讲一个知识点说明这个知识点的实际编码规范。

不过目前似乎没看到以这种“哲学”的眼光去讲解C的例子……

论坛徽章:
0
193 [报告]
发表于 2012-04-11 13:21 |只看该作者
starwing83 发表于 2012-04-11 13:18
回复 188# 陈良乔


这样写太考验作者功力了,对于市场最大的快速入门类图书就更难写到这种程度了

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
194 [报告]
发表于 2012-04-11 13:26 |只看该作者
回复 166# starwing83

我觉得那个不算closure……
首先closure这个术语本身就没有良好定义……  最开始我也被吓了一跳……  这术语与数学上那个完全没关系好吗……
只是这种相同术语在不同领域有不同定义的事见多了也就习惯了……
终于,SICP吐槽了……

即使是computer science那个定义,我觉得至少也要包含:
1. 嵌套函数 —— 即使不是匿名的
2. 嵌套函数能访问外层函数的局部定义


1是C语言不提供的。
只实现2的话,我觉得准确的术语是partial application,或者bind。 后者也是有很多含义, 而且很土……  前者那个application可是流行词汇……
最终在明知道currying不准确的情况下还是用了……  感觉它要帅气一点……  理智败了……

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
195 [报告]
发表于 2012-04-11 13:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
196 [报告]
发表于 2012-04-11 13:33 |只看该作者
回复 168# starwing83

SICP我还没看完……    清明各种事……
目前data directed与message passing所在的第2章看了,但里面用到的那个table其实在第3章,正在看……
看完再去回原来那个帖……


>> 我觉得国内对OO理解的纯粹的人不多

于是你想感召他们?
我觉得只对一小部分人有用……
大部分人其实并不想真的知道XXOO的准确定义是什么,他们只是想有个可以聊的东西。



最后,关于出书赚钱啊、不会逼着你朝九晚五啊什么的……  你还是打探清楚……   怎么与我的印象彻底不符呢……

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
197 [报告]
发表于 2012-04-11 13:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
198 [报告]
发表于 2012-04-11 13:37 |只看该作者
回复 196# OwnWaterloo


    我说着玩的………………

论坛徽章:
0
199 [报告]
发表于 2012-04-11 13:47 |只看该作者
pmerofc 发表于 2012-04-11 12:59
回复 188# 陈良乔

首先我觉得很好地设计输入的话

实现的方法当然有很多

这个例子,只是为了展示二维数组的使用,所以用了数组

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
200 [报告]
发表于 2012-04-11 13:48 |只看该作者
本帖最后由 starwing83 于 2012-04-11 13:52 编辑

回复 197# pmerofc


    我可以向你保证,普通人也可以看的很轻松。这是我看SICP的最大感受。其实根本就没有多少很深的内容,但是却感觉很深刻,有种豁然开朗的感觉,直接告诉你“是什么”而不是“怎么用”,我觉得初学者也可以很轻松地知道是什么。要不我写一小段你看看:

C语言之所以这么流行,就是因为它实际上和计算机完成任务的方式是一一对应的。计算机通过对照一个步骤去修改一些状态的方法来完成任务。被完成的任务其实都是状态的组合,比如屏幕上的图像,或者PI的前100位的值,他们其实都可以被看作是某种状态。计算机就是利用你的程序即前面说的“步骤”去操作这些状态的机器。而C就是这样一种语言,它可以很方便的用来描述对状态的操作的步骤。所以C会在计算机上流行,并且可以一直流行下去。如果计算机是一个绅士,那么C就是这个绅士的衬衣。它不是汇编,不会贴肉,也不是西服,不会让人一眼看见。但是它承上启下,让人更有魅力。

C语言最基础的状态就是“变量”,所谓变量,自然是可以改变的量。你可以认为它是算盘上的一个格子,可以放一颗或者两颗或者三颗珠子。不过变量能存放的状态就多多了。一个C程序执行到某一时刻,就是靠它所有变量的值、和其他的一些“环境”来决定的。理解了变量的状态转换、存放规则,你也就对C驾轻就熟了。就如同你了解了衬衣内袋的结构,你想装什么东西进去就随心所欲了。

比C层次更低的语言的变量是没有区别的,大家都一样。C之所以是衬衣,就是它的口袋可以不一样,可以贴身,可以在胸前。C的变量有一个让C这件衬衣也可以穿在外面的特性,即类型。类型是指你对这个变量所有的了解。比如你觉得一个人很好,很可爱。当然觉得这个人好和可以指挥这个人做事是两回事。我们对一个人脾气的了解可以更有利于指挥他去做事,而实际做的事情又是另外一方面了。类型就是你对变量的全部了解:变量可以放哪儿、变量可以存多少状态、变量占多大的体积、可以用什么方式去改变变量的状态等等。C对“类型”做了组织,规定了如何去表达、操作、识别一个类型,这就是C的类型系统。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP