结构化编程书
① 学习函数式编程的推荐书籍
1、关于书籍的选择
1)、选择好学习的函数式编程语言后,可以根据自己的情况去一些书店、网上商城(比京东、当当)选择相应编程语言的书籍资料。
2)、如果从思想入手,并且希望学的更深入,个人建议从SICP(《计算机程序的构造和解释》)入手,Scheme语言是思想的锤炼。
3)、如果用户是java程序员,建议看看clojure,这是个极具生产力的语言工具,它运行于java平台上的lisp。twitter的storm就是用它写的。clojure现在已经是黑客领域最耀眼的明星了。最重要的是clojure已经出版了很多本中文教材,可以入手学习了。顺带加上SICP可以加快学习进度。以项目为中心可以选择《Clojure经典实例 功能性编程全面指南》、没有基础的可以选择《LivingClojure》(中文版)、老程序员可以参考《Clojure编程乐趣》中文版 。
4)、如果不为作项目,只是为了提升个人的能力或者编程思想,可以选择haskell语言,这个资料也比较多,无论书籍还是视频、文档等等 。
2、简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式:
(1+2)*3-4
传统的过程式编程,可能这样写:
vara=1+2;
varb=a*3;
varc=b-4;
函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:
varresult=subtract(multiply(add(1,2),3),4);
这就是函数式编程。
3、函数编程的特点:
函数式编程具有五个鲜明的特点。
1)、 函数是"第一等公民"
所谓"第一等公民"(first class),指的是函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。
举例来说,下面代码中的print变量就是一个函数,可以作为另一个函数的参数。
varprint=function(i){console.log(i);};
[1,2,3].forEach(print);
2)、只用"表达式",不用"语句"
"表达式"(expression)是一个单纯的运算过程,总是有返回值;"语句"(statement)是执行某种操作,没有返回值。函数式编程要求,只使用表达式,不使用语句。也就是说,每一步都是单纯的运算,而且都有返回值。
原因是函数式编程的开发动机,一开始就是为了处理运算(computation),不考虑系统的读写(I/O)。"语句"属于对系统的读写操作,所以就被排斥在外。
当然,实际应用中,不做I/O是不可能的。因此,编程过程中,函数式编程只要求把I/O限制到最小,不要有不必要的读写行为,保持计算过程的单纯性。
3)、没有"副作用"
所谓"副作用"(side effect),指的是函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果。
函数式编程强调没有"副作用",意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。
4)、不修改状态
上一点已经提到,函数式编程只是返回新的值,不修改系统变量。因此,不修改变量,也是它的一个重要特点。
在其他类型的语言中,变量往往用来保存"状态"(state)。不修改变量,意味着状态不能保存在变量中。函数式编程使用参数保存状态,最好的例子就是递归。下面的代码是一个将字符串逆序排列的函数,它演示了不同的参数如何决定了运算所处的"状态"。
functionreverse(string){
if(string.length==0){
returnstring;
}else{
returnreverse(string.substring(1,string.length))+string.substring(0,1);
}
}
由于使用了递归,函数式语言的运行速度比较慢,这是它长期不能在业界推广的主要原因。
5)、引用透明
引用透明(Referential transparency),指的是函数的运行不依赖于外部变量或"状态",只依赖于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的。
有了前面的第三点和第四点,这点是很显然的。其他类型的语言,函数的返回值往往与系统状态有关,不同的状态之下,返回值是不一样的。这就叫"引用不透明",很不利于观察和理解程序的行为。
② 谭浩强c语言入门书籍
C程序设计(第四版)
【作 者】:谭浩强
【出 版 社】:清华大学出版社
【出版日期】:2012-5-1
【 ISBN 号】:9787302224464
C程序设计(第四版)学习辅导
【图书定价】:28元
【作者】: 谭浩强
【丛书名】: 中国高等院校计算机基础教育课程体系规划教材
【出版社】:清华大学出版社
【ISBN】:9787302226727
【出版日期】:2013 年1月
【开本】:16开
【页码】:268
《c程序设计(第四版)》
第1章程序设计和c语言1
1.1什么是计算机程序1
1.2什么是计算机语言1
1.3c语言的发展及其特点3
1.4最简单的c语言程序5
1.4.1最简单的c语言程序举例6
1.4.2c语言程序的结构10
1.5运行c程序的步骤与方法12
1.6程序设计的任务14
习题15
第2章算法——程序的灵魂16
2.1什么是算法16
2.2简单的算法举例17
2.3算法的特性21
2.4怎样表示一个算法22
2.4.1用自然语言表示算法22
2.4.2用流程图表示算法22
2.4.3三种基本结构和改进的流程图26
2.4.4用ns流程图表示算法28
.2.4.5用伪代码表示算法31
2.4.6用计算机语言表示算法32
2.5结构化程序设计方法34
习题36
第3章最简单的c程序设计——顺序程序设计37
3.1顺序程序设计举例37
3.2数据的表现形式及其运算39
3.2.1常量和变量39
3.2.2数据类型42
3.2.3整型数据44
3.2.4字符型数据47
3.2.5浮点型数据49
3.2.6怎样确定常量的类型51
3.2.7运算符和表达式52
3.3c语句57
3.3.1c语句的作用和分类57
3.3.2最基本的语句——赋值语句59
3.4数据的输入输出65
3.4.1输入输出举例65
3.4.2有关数据输入输出的概念67
3.4.3用printf函数输出数据68
3.4.4用scanf函数输入数据75
3.4.5字符数据的输入输出78
习题82
第4章选择结构程序设计85
4.1选择结构和条件判断85
4.2用if语句实现选择结构87
4.2.1用if语句处理选择结构举例87
4.2.2if语句的一般形式 89
4.3关系运算符和关系表达式91
4.3.1关系运算符及其优先次序91
4.3.2关系表达式92
4.4逻辑运算符和逻辑表达式92
4.4.1逻辑运算符及其优先次序93
4.4.2逻辑表达式94
4.4.3逻辑型变量96
4.5条件运算符和条件表达式97
4.6选择结构的嵌套99
4.7用switch语句实现多分支选择结构102
4.8选择结构程序综合举例105
习题111
第5章循环结构程序设计114
5.1为什么需要循环控制114
5.2用while语句实现循环115
5.3用do…while语句实现循环117
5.4用for 语句实现循环120
5.5循环的嵌套124
5.6几种循环的比较125
5.7改变循环执行的状态125
5.7.1用break语句提前终止循环126
5.7.2用continue语句提前结束本次循环127
5.7.3break语句和continue语句的区别128
5.8循环程序举例131
习题140
第6章利用数组处理批量数据142
6.1怎样定义和引用一维数组142
6.1.1怎样定义一维数组143
6.1.2怎样引用一维数组元素144
6.1.3一维数组的初始化145
6.1.4一维数组程序举例146
6.2怎样定义和引用二维数组148
6.2.1怎样定义二维数组149
6.2.2怎样引用二维数组的元素150
6.2.3二维数组的初始化151
6.2.4二维数组程序举例152
6.3字符数组154
6.3.1怎样定义字符数组154
6.3.2字符数组的初始化155
6.3.3怎样引用字符数组中的元素155
6.3.4字符串和字符串结束标志156
6.3.5字符数组的输入输出159
6.3.6使用字符串处理函数161
6.3.7字符数组应用举例165
习题168
第7章用函数实现模块化程序设计170
7.1为什么要用函数170
7.2怎样定义函数172
7.2.1为什么要定义函数172
7.2.2定义函数的方法173
7.3调用函数174
7.3.1函数调用的形式174
7.3.2函数调用时的数据传递175
7.3.3函数调用的过程177
7.3.4函数的返回值178
7.4对被调用函数的声明和函数原型179
7.5函数的嵌套调用182
7.6函数的递归调用184
7.7数组作为函数参数192
7.7.1数组元素作函数实参193
7.7.2数组名作函数参数194
7.7.3多维数组名作函数参数197
7.8局部变量和全局变量199
7.8.1局部变量199
7.8.2全局变量200
7.9变量的存储方式和生存期204
7.9.1动态存储方式与静态存储方式204
7.9.2局部变量的存储类别205
7.9.3全局变量的存储类别208
7.9.4存储类别小结212
7.10关于变量的声明和定义214
7.11内部函数和外部函数215
7.11.1内部函数215
7.11.2外部函数215
习题218
第8章善于利用指针220
8.1指针是什么220
8.2指针变量222
8.2.1使用指针变量的例子222
8.2.2怎样定义指针变量223
8.2.3怎样引用指针变量224
8.2.4指针变量作为函数参数226
8.3通过指针引用数组230
8.3.1数组元素的指针230
8.3.2在引用数组元素时指针的运算231
8.3.3通过指针引用数组元素233
8.3.4用数组名作函数参数237
8.3.5通过指针引用多维数组245
8.4通过指针引用字符串255
8.4.1字符串的引用方式 255
8.4.2字符指针作函数参数259
8.4.3使用字符指针变量和字符数组的比较263
8.5指向函数的指针266
8.5.1什么是函数指针266
8.5.2用函数指针变量调用函数266
8.5.3怎样定义和使用指向函数的指针变量268
8.5.4用指向函数的指针作函数参数270
8.6返回指针值的函数274
8.7指针数组和多重指针277
8.7.1什么是指针数组 277
8.7.2指向指针数据的指针280
8.7.3指针数组作main函数的形参282
8.8动态内存分配与指向它的指针变量285
8.8.1什么是内存的动态分配285
8.8.2怎样建立内存的动态分配285
8.8.3void指针类型 287
8.9有关指针的小结288
习题291
第9章用户自己建立数据类型293
9.1定义和使用结构体变量293
9.1.1自己建立结构体类型293
9.1.2定义结构体类型变量 295
9.1.3结构体变量的初始化和引用297
9.2使用结构体数组300
9.2.1定义结构体数组300
9.2.2结构体数组的应用举例301
9.3结构体指针303
9.3.1指向结构体变量的指针303
9.3.2指向结构体数组的指针304
9.3.3用结构体变量和结构体变量的指针作函数参数306
9.4用指针处理链表309
9.4.1什么是链表 309
9.4.2建立简单的静态链表310
9.4.3建立动态链表311
9.4.4输出链表315
9.5共用体类型317
9.5.1什么是共用体类型317
9.5.2引用共用体变量的方式318
9.5.3共用体类型数据的特点319
9.6使用枚举类型323
9.7用typedef声明新类型名326
习题330
第10章对文件的输入输出331
10.1c文件的有关基本知识331
10.1.1什么是文件331
10.1.2文件名332
10.1.3文件的分类332
10.1.4文件缓冲区333
10.1.5文件类型指针333
10.2打开与关闭文件335
10.2.1用fopen函数打开数据文件335
10.2.2用fclose函数关闭数据文件337
10.3顺序读写数据文件338
10.3.1怎样向文件读写字符338
10.3.2怎样向文件读写一个字符串341
10.3.3用格式化的方式读写文件344
10.3.4用二进制方式向文件读写一组数据345
10.4随机读写数据文件349
10.4.1文件位置标记及其定位349
10.4.2随机读写 352
10.5文件读写的出错检测353
习题354
第11章常见错误分析355
附录370
附录a在visual c++ 6.0环境下运行c程序的方法370
附录b常用字符与ascii代码对照表377
附录cc语言中的关键字378
附录d运算符和结合性378
附录ec语言常用语法提要380
附录fc库函数384
参考文献390
③ 《C程序设计》学完了往后想学C++推荐几本书
没想到楼主和我的学习路程差不多。。
数据结构推荐你看这本:
http://proct.dangdang.com/proct.aspx?proct_id=9258224
这本书讲得之好简直旷古绝今,前面说了很多c++、c++ STL的历史,中间说了数据结构的基础理论,然后用c++实现了各种数据结构,最后还讲了该数据结构在STL中的应用,最后还有综合应用,非常之好,不过推荐有一定c++功底之后再看。
因为你有C语言基础了,所以推荐你看这本:
http://proct.dangdang.com/proct.aspx?proct_id=9268172
这是非常经典的数据结构教材,缺陷就是理论多,实践太少,所以最好是配备一本习题集,习题集上面有该数据结构的实现。
学习c++强烈推荐你看这本:
http://proct.dangdang.com/proct.aspx?proct_id=9258259
记得当年我就是看这本书学会的,这本书前面讲的c++基础理论,后半部分讲Visual c++ 2005 环境下的Windows编程,涉及面非常之广,而且你还可以接触到.net下面的c++:C++/CLI。
这本书不但可以让你学会c++基础语法规范,而且还可以学会Visual Studio 2005这一当前第二新的开发平台,最新的是Visual Studio 2008,但是还没有教材,刚出。
我个人主要攻的是游戏设计,这本书彻底教会了我DirectX 3D游戏编程:
http://proct.dangdang.com/proct.aspx?proct_id=9297813
我对这本书的评价:现在其貌不扬,但是多年之后会有国人称之为经典,因为它的内容之广泛,内容之详尽无人可出其左右,但是这本书主要涉及到游戏编程,已经不是c++的基础东西了,所以需要较为熟练掌握c++和VIsual c++开发平台之后才能看懂。。
再推荐一本游戏编程入门书:
Visual C++游戏编程基础(附CD-ROM光盘一张)——游戏学院经典书丛
http://proct.dangdang.com/proct.aspx?proct_id=8991383
这本书从Window GDI开始讲到了DX游戏编程,是游戏编程的入门好书,非常好。。
另外Windows游戏编程大师技巧也不错,但是内容太多,怕你看不过来,而且这本书的内容也太老了。。
Visual Basic 2005从入门到精通
如果你要学习.net下面的VB的话我推荐你看这本
http://proct.dangdang.com/proct.aspx?proct_id=9243118
优势:最新的平台
内容详尽,1000多页,作者写得非常之好,例子非常之多。。
如果你要学习VB6.0,那么我推荐你选择这本:
http://proct.dangdang.com/proct.aspx?proct_id=9266082
因为我看过这本,这简直就是VB6.0的网络全书,而且实例非常多,特别适合新手,讲得也很通俗易懂。
你选择学c++是对的,c++真的很好哈,另外再推荐两本于c++有关的书:
http://proct.dangdang.com/proct.aspx?proct_id=9157098
C++ Primer中文第四版,这本书非常出名,页非常经典,但是第四版加入了不少STL的内容,反倒不适合初学者了,第三版适合初学者,非常只好。
C++STL开发技术导引
http://proct.dangdang.com/proct.aspx?proct_id=9316375
这本书详细介绍了c++ STL方方面面的应用,非常之经典,而且还分析了STL的部分源码,对提高编程能力有质的提升。
最后推荐一本不能不看的书:
Effective C++改善程序与设计的55个具体做法(中文第三版)
http://proct.dangdang.com/proct.aspx?proct_id=9190688
这本书在c++的历史上的地位我都不用多说了,如果你想成为一个真正的c++程序员,一定不要忘了看这本书。
④ 自学c语言 零基础 看什么书 该怎么学
现在,市面上的
C语言书籍多的数不过来,但是很多不适合你这种初学者使用,作为一名老程序员,我给你推荐几本我看过认为还不错的书:
1)
《C语言小白变怪兽》:既适合对计算机一窍不通的小白,也适合有编程基础的读者,还可以用来进阶。同时,最重要的是,这本书的作者还在不断地更新这本书,我认为最大的特点是通俗易懂,深入浅出,只要认真看,就一定能看懂,我认为这是C语言入门的首选教材,吐血推荐,经典中的经典!!!
2)
《啊哈C语言》:适合对计算机一窍不通的纯小白,有编程基础的读者请忽略。这本书语言幽默,生动形象,通俗易懂,给人耳目一新的感觉,但是这本书非常浅显,并不深入,所以适合纯小白入门,找到门以后也就扔了。这本书着重于语言艺术,针对纯小白下足了功夫,小学生坐在马桶上都能学会编程。说实话,我非常欣赏作者的创意和用心,国内像这样写书的少之又少,入门的书就应该是这个样子。
上边这两本书是我推荐给你用于C语言入门的,我不建议你使用谭浩强的《C语言程序设计》这本书入门,虽然这本书的知名度很高,因为很多大学把它作为C语言的授课教材,然而,这本书被吐槽最多,不但代码不标准,而且有很多错误,据说可以找出几十个错误,这样很容易误导你这种小白。
等你有一定的C语言基础了,可以看下面的这几本书,进一步提升你的编程水平:
1)
《C
Primer
Plus》:畅销
30
余年的C语言入门经典书籍,至今无人能撼动它的地位,它是最符合C语言标准的书籍,作为一名C语言程序员,不收藏一本都觉得自己很水。
2)
《C程序设计语言,The
C
Programming
Language》:C语言创始人丹尼斯·里奇(Dennis
MacAlistair
Ritchie)的着作,和《C
Primer
Plus》并驾齐驱,很难分出伯仲,这两本书都是一样的优秀,都是C语言程序员必须收藏的。
3)
《C专家编程》:适合已经具备C语言基础、想进阶的读者。这貌似是一本吐槽C语言的书,基本上介绍了大多数C语言的坑,有不少精髓,在C语言界久负盛名,进阶时一定要看。
4)
《C陷阱与缺陷》:和《C专家编程》类似,也是给C语言挑刺的,阐述了很多容易让人误解的语法细节,重在帮助C程序员绕过编程过程中的陷阱和障碍。
5)
《程序员的自我修养
--
链接、装载与库》:这真是一本深入骨髓的书,让你彻底明白程序的编译、链接、装载和运行的全过程,你会从此上天,拉开和别人的差距,看任何问题都有了深度和高度。重点推荐!
所有的这些书我都有电子版,需要可以找我要!
⑤ c++的入门书籍介绍几本..
一般来说,清华大学出版社的计算机书是最好的,主要有
1.《C++语言基础教程(第2版)》
出版社:清华大学出版社
作者:吕凤翥
书中全面、系统地讲述了 C++语言的基本概念、基本语法和编程方法,较详尽地讲述了 C++语言面向对象的重要特征: 类和对象、继承和派生类、多态性、虚函数、函数模块和类模板等内容。本书具有丰富的例题,每章后面均备有相当数量的练习题和作业题。 全书通俗易懂,由浅入深,突出重点,偏重应用。本书不仅可作为高等学校 C++语言课程的教材,还可作为 C++语言的自学教材
2.《面向对象程序设计与C++语言(第二版)》
出版社:人民邮电出版社
作者:杨庚/王汝传/叶晓国
本书系统地介绍了面向对象技术及C++语言的相关知识。内容包括面向对象技术的概念和特征、C++语言基础、类和对象、派生与继承、虚函数与多态性、模板、运算符重载、输入/输出流库、异常处理等。 本书注重基本概念,从实际应用出发,突出重点,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的特征,又能掌握C++语言的...
3.《C++语言程序设计教程》
出版社:清华大学出版社
作者:杨进才/沈显君/刘蓉
C++语言是目前最为流行的程序设计语言,它既支持面向过程的结构化程序设计,也支持基于对象的面向对象程序设计。本书依据ANSI C++标准,从面向过程的编程到面向对象的编程方法展开,形成一条自然流畅的主线,同时两个部分又自成体系,以满足不同基础与需求的学习者。内容包括:C++编程简介、数据类型与表达式、控制结构、函数、构造数据类型、C++程序的结构、类与对象、继承
4.《C/C++程序设计教程》
出版社:机械工业出版社
作者:秦维佳/伞宏力/侯春光/孟艳红
本书是《C/C++程序设计教程》的配套学习辅导用书。. 全书共分12章,内容包括C/C++语言程序设计初步,C语言的数据类型及表达式,结构化程序设计,数组、函数与指针的概念和实例,结构体与共用体,位运算与文件的概念,面向对象程序设计,类的继承与多态,C++的I/O流。每章包括知识体系、学习要点、上机实训、习题和参考答案。.. 本书可供初学者学习C语言,也可供...
5.《C++程序设计基础导学》
出版社:科学出版社
作者:赵海廷/严运国
本书为是实践训练环节必不可少的辅助教材。本书按照《C++程序设计基础》的顺序组织编撰,由基本要求、内容小结、典型例题分析、习题、实验及习题参考答案组成。本书的目的是通过典型例题剖析、习题和实验环节来巩固所学的理论知识,提高学生的实践操作水平。 本书适用高职高专的理工科学生,也适合于C++语言的初学者,还可供普通高校理...
⑥ 0基础自学python,有入门书籍推荐下么
AlphaGo 都在使用的 Python 语言,是最接近 AI 的编程语言。
教育部考试中心近日发布了“关于全国计算机等级(NCRE)体系调整”的通知,决定自2018年3月起,在全国计算机二级考试中加入了“Python语言程序设计”科目。
9个月前,浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术教材,从2018年起浙江省信息技术教材编程语言将会从vb更换为Python。
小学生都开始学Python了,天呐撸,学习Python看完这些准没错。
安利一波书单
Python入门
Python数据分析》
作者: 【印尼】Ivan Idris
Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式。Python已经成为数据科学家进行数据分析、可视化以及机器学习的一种理想编程语言,它能帮助你快速提升工作效率。
本书将会带领新手熟悉Python数据分析相关领域的方方面面,从数据检索、清洗、操作、可视化、存储到高级分析和建模。同时,本书着重讲解一系列开源的Python模块,诸如NumPy、SciPy、matplotlib、pandas、IPython、 Cython、scikit-learn和NLTK等。此外,本书还介绍了数据可视化、信号处理、时间序列分析、数据库、预测性分析和机器学习等主题。通过阅读本书,你将华丽变身数据分析高手。