• C程序设计:基于应用导向与任务驱动的学习方法
21年品牌 40万+商家 超1.5亿件商品

C程序设计:基于应用导向与任务驱动的学习方法

正版保障 假一赔十 可开发票

49.23 5.5折 89 全新

库存7件

广东广州
认证卖家担保交易快速发货售后保障

作者贺细平

出版社电子工业出版社

ISBN9787121332326

出版时间2018-01

装帧平装

开本16开

定价89元

货号25215413

上书时间2024-10-27

兴文书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言
前    言

当您眼见到这本书,一定诧异于它的厚度,但只要您翻开阅读,我想,您一定不会觉得这是一本难啃的“大部头”,而像是一本娓娓道来的程序设计“故事书”。

当我想要编写一本关于程序设计的教材时,难抑内心的激动。我的门程序设计语言是BASIC,然后学习C语言,后来学过C  、Java、Python等程序设计语言。多数学过程序设计的人,对门程序设计语言的印象大抵是艰难而晦涩的。一些人秉承对程序设计的执着和热爱,从这种艰难中走过来了,并且从此爱上了程序设计,享受程序设计在解决现实生活的实际应用问题后带来的快乐和成就感。但更多的人对编程望而生畏,面对堪如天书的代码,始终难解心中诸多困惑:这些代码是如何写出来的?为什么要写成这样?必须写成这样吗?为什么我这样写就不对呢?解决此问题还有其他写法吗?为何当我面对实际应用问题时总感到无从下手呢?怎样才能创造出属于自己的程序呢?

我尽努力,使程序设计的每个细节变得简单清晰。为了让您理解程序的来龙去脉,对于每次需要解决的编程任务,不是一次性地抛出终程序代码,而是必须对解决此问题的思路、方法进行详尽分析。并且遵循“由简单到复杂,由低级到高级”的设计过程,尽可能完整地展示“程序是怎样炼成的”。对于同一编程任务,提供尽可能多的设计思路和不同的算法以及实现代码,帮助您打开程序设计思维的匣子。

本书侧重于培养您作为程序设计者必须具备的计算思维。所谓的计算思维,就是以计算机的方式去思考问题的求解过程。作为机器的“计算机”思考问题的方式与作为万物之灵的“人”的思考问题方式是不同的。“人”通过学习程序设计去理解并掌握“计算机”思考问题的方式,这个过程就是培养计算思维的过程。因此,本书以求解具体应用问题为目标,驱动相关程序设计知识的应用。

本书强调,程序设计语言是求解问题的工具,程序设计语言是为求解问题服务的。本书对语法的讲解以够用为准,不提倡代码中应用古怪、费解的语法。当然,程序设计必须掌握相关语法,有语法错误的程序过不了“编译关”。掌握C语言语法不是程序设计学习的重点,更不是学习目的。培养计算思维,能利用程序设计语言解决实际应用问题才是终目的,学习程序设计必须过实际“运行关”。

C语言具有语法简洁、概念清晰、底层控制力强等优点,是值得程序设计初学者的语言。C语言虽是面向过程的程序设计语言,但是学好C语言将为面向对象的程序设计语言(如C  、Java、C#、Python等)的学习打下坚实基础。

学好编程没有捷径,上机练习、独立思考、保持兴趣、学用结合、日积月累、持之以恒是成为编程高手的秘籍。关于如何学习程序设计的建议请参见附录“10.1关于程序设计的学习方法”(扫描前言中的二维码)。

本书特色:

一、本书贯彻以求解应用问题(实际应用问题的一部分或实际应用问题的简化问题)为导向,以具体“编程任务”为驱动的程序设计学习方法,将每个知识点融入实际编程任务中。因此,展现在您面前的代码是一个完整的、可运行的、有输入/输出的、实现了一定功能的应用程序,而不是仅仅为了讲解某个知识点的片段的、不完整的代码。

二、作为例题的编程任务生动有趣。每个编程任务力求有现实生活应用背景,让您时刻不忘学习程序设计的目的是能运用计算机程序解决现实生活中或大或小的实际问题,体会计算机是如何按您的意图行动的,体会计算机给我们生活带来的方便,体会计算机的威力与魅力。编程不再是单纯地学习C语言语法,也不是纯粹为了实现数学的数值计算。

三、图表丰富。本书秉承“能用图和表表达的,一定画图做表”的思想。因此,书中配有大量图解、表格,大量地运用了类比、对比、小贴士、小问答等形式,尽量用直观的形式帮助您理解程序设计的概念、原理、机制等方面。

四、讲解深入浅出。本书融入了我多年程序设计教学经验、教学成果、应用软件开发经验和对程序设计的体会与理解。对程序中诸多概念的理解,需要程序设计者(以后简称为程序员)对操作系统的有关原理有一定的理解。因此,本书在讲解程序的同时,尽量对发生在程序运行背后的机制—特别是操作系统中与编程相关的机制进行了深入剖析。对操作系统和计算机原理的介绍,能帮助程序员深入地理解程序在底层的运行机制,使程序员在编程时做到“知其然”且“知其所以然”。

五、程序代码“箭指”代码解释,阅读代码一目了然、易读易懂。对于程序代码中每个重要语句,均引出箭头指向相应的代码解释,代码和对应的解释是左邻右舍、如影相随的,方便阅读。此外,在排版上,也尽量将一个完整程序或函数模块的代码排在同一页中,确保代码的形式整体性。

六、本书站在程序员的角度来看待和学习C语言,而不是站在C语言的角度罗列C语言知识本身。站在程序员的角度,面对编程任务时,我们应该思考的是如何运用C语言为“我”(即程序员)的设计目标服务。从这个角度出发,您就更容易理解和接受C语言的知识了。

本书的例题全部采用编程任务的形式给出。每个编程任务由8部分构成:标题、任务描述、输入、输出、输入举例、输出举例、分析,以及参考代码。本书例题采用此形式是基于以下四点考虑的。

其一,这种方式对要解决的任务有清晰、准确的编程描述,因此每个程序代码需要达到的目标和需要实现的功能非常明确。学习程序设计是为了能用自己设计的程序解决实际问题,因此,我们将本书读者的角色定为软件开发者。软件开发是软件开发者按照用户提出的需求进行软件设计的过程。设计得到的软件必须达到指定功能,满足软件用户的需求。描述清晰、准确的软件需求对软件开发至关重要。因为需求的小变化,可能导致软件设计的巨大改变,甚至从头重新设计。

其二,有利于独立思考和寻求解决问题的多种方法,培养计算思维。在达到既定软件开发目标的情况下,鼓励读者学会分析问题,开动脑筋独立思考,尝试用不同思路、不同算法或不同的代码去完成同一个任务,对比不同实现方式之间的优缺点。对于每个编程任务,本书代码仅供参考。本书绝不鼓励读者仅满足于将本书代码照抄照搬,死记硬背。

其三,对C语言知识点均采用融入具体编程任务的方式讲解,使我们对每个C语言知识要素所适用的实际应用场合有感性的认识。

其四,方便使用OJ作为程序设计在线练习平台。本书的编程任务便于自动裁判(可简单地将“裁判”理解为教师批改学生所交的程序设计作业这一过程)。国内外有许多大学和组织提供了开放式的在线裁判系统(Online Judge,OJ),它能对提交的程序源代码进行自动裁判。OJ系统24小时在线练习资源丰富,裁判结果公正客观。OJ系统原本为程序设计竞赛所用,但是好的工具为什么不能用于学习呢?参加过信息学竞赛(IOI,NOI)或大学生程序设计竞赛(CPC)的读者一定对这种编程任务的形式不陌生,因为竞赛题采用此形式。希望本书读者不要对此表示疑惑,学习程序设计当然不是为了参加比赛。在此,只是取其长而用之,更好地服务于学习程序设计这一目标。我早在2009年就开始将OJ系统作为练习平台引入到信息类本科专业的“C程序设计”课程教学中,得到了学生和同行的好评与认可。目前,将OJ作为程序设计教学练习平台的做法在越来越多的学校的程序设计教学中得到运用。

本书提供所有编程任务的描述、测试用例数据和标程,并且不断补充高质量的编程任务作为练习或测试用。读者(包括教师或学生)可在OJ上练习、实验、测试和上机考试。如果您所在学校尚未建立OJ系统,可自主开发OJ,也可利用开源系统部署自己的OJ,或者直接利用互联网上开放的OJ系统。如果OJ上没有想要练习的编程任务,则需要先在OJ上添加它。欢迎使用湖南农业大学程序设计在线练习系统(http://210.43.224.19/oj)。

本书适合作为本科低年级程序设计课程教材,也非常适合程序设计初学者自学使用。对参加奥林匹克信息学竞赛的队员和参加ACM/ICPC大学生程序设计竞赛的队员来说,也是一本非常好的入门教材。对于有一定程序设计基础的读者,本书也不失参考价值。书中有许多对程序深入的剖析很有启发意义,值得一读。

众所周知,C程序设计课程是计算机类专业、信息类专业极其重要的专业基础课。我从事本科程序设计专业基础课一线教学十余年,希望能有一本读起来不那么枯燥,同时又不失专业性和系统性的面向程序设计初学者的C语言图书,这是我写本书的意图。如何利用本书,各位见仁见智。

希望通过本书带给读者更多愉悦的程序设计经历,提振编程信心,激发编程的兴趣,为今后的学习、工作、科研培养良好的计算思维和软件设计基础。

本书的写作是我将头脑中纷繁的思绪变成有条理文字的过程,既艰辛又充满快乐。常常为了设计一个恰到好处的编程任务或为了更好地表述某个概念,灵感突现,即使是已卧床或半夜醒来,也立刻记录,唯恐遗漏。本书力求知识更加系统、表述更加准确、语言更加通俗、例子更加贴近生活,这使写作过程充满挑战性,字句斟酌,直到自己满意为止,以致成书过程如此漫长。对本书内容安排、章节设置、设置每个例子代码甚至每段表述,都经过反复琢磨和权衡,力求语言描述精准、思想表达透彻。漫长的成书过程,让我体会到了写书的不易,不过,本书写作过程带给我更多的是快乐。在写作期间,不仅有将存在于脑海的点滴心得随着键盘的敲击变成文字的快感,而且,在此期间我的儿子不经意间长成了帅小伙,陪伴他的时间总是短暂而欢快的。我的妻子虽常常担心因长时伏案而有腰椎疾病的我,但她送来键盘旁的一杯热茶、一碟水果,顿时让我满血复活。特别感谢我的妻子陈海燕女士包容我无数个日夜以计算机为伴而少有陪伴她,家务操持多劳她费心,虽偶有抱怨,但忍韧而坚强。谨以此书献给我的家人。

感谢电子工业出版社高等教育分社谭海平社长和冉哲编辑对我蜗牛般写稿进度的容忍。

感谢我的学生卢晨曦、邵振宇、王舒心、王鹏、陈慧、张洋、唐朝宇、廖颜勤、姚沛丰、熊嘉奇、唐航、周子翔、沈煜恒为本书的校对付出了辛勤劳动。

 

虽然我对本书写作用心尽力,但由于学识水平有限,错误与不足之处在所难免,恳请批评指正(我的邮箱:390199309@qq.com)。

限于篇幅,本书第1章至第9章的综合应用实例和知识拓展部分以及附录部分,以扫描二维码下载相应文档的形式提供。

 

附录: 

 

 

贺细平



导语摘要
本书采用以解决实际应用问题为导向、以具体编程任务为驱动的模式,将C语言的知识无缝融入每个实际应用程序中。作者精心设计了100多个应用案例,每个案例均有实现特定功能的、完整的、可运行的程序代码。本书图表丰富,对程序设计的概念、求解问题的思路和方法、程序背后的原理和机制进行了深入剖析。全书共9章。第1章从简单程序入手,将程序设计相关的基础性概念融入案例,使读者对C程序设计有一个整体的、直观的、感性的认识。第2章阐述表达复杂逻辑的分支和循环语句的用法,使读者对应用问题中的逻辑具有较好的表达能力。第3章阐述了利用数组处理批量数据。第4章阐述了如何存储和处理文本型数据。第5章全面地阐述了函数这一模块化程序设计利器。第6章对具有内存间接访问能力的指针进行了深入阐述。第7章讲解如何利用结构体类型创建用户所需新数据类型。第8章阐述了如何利用文件实现数据持久化。第9章讲解了位运算的规则和用法。

作者简介
博士,国防科技大学计算机学院计算机应用专业。湖南农业大学信息科学技术学院电商系主任,副教授。中国计算机学会会员,湖南省高教学会计算机教育专业委员会会员。出版教材:现代计算机网络系统原理及技术研究,中国商务出版社,2013年。

目录
目    录
第1章  邂逅程序设计—初识C语言1
1.1  个程序—我会算加法2
1.2  人机交互—输入和输出函数的基本用法10
1.3  条件与判断—随机应变17
1.3.1  二叉分支的表达—基本的if-else语句17
1.3.2  复合条件的表达22
1.4  利用库函数—拿来主义25
1.5  机器擅长之“算术运算”—计算机的老本行28
1.6  变量—数据的栖身之所34
1.6.1  变量的概念34
1.6.2  变量的数据类型37
1.6.3  程序中的常量40
1.7  赋值运算—改变变量的值42
1.8  程序设计的一般过程47
本章小结48
第2章  程序逻辑之关键—分支与循环51
2.1  机器智能与决策之基石—分支结构52
2.1.1  决策与分支结构52
2.1.2  基本分支结构及其连接方式60
2.1.3  逻辑运算与复合条件表达71
2.1.4  if条件表达典型错误分析75
2.2  机器擅长之“循环”—不厌其烦地重复77
2.2.1  for循环的引入78
2.2.2  剖析for循环86
2.2.3  必须应用循环结构的场合90
2.2.4  循环的初步运用93
2.2.5  for循环常见错误分析96
2.3  程序逻辑进阶—多分支和多重循环98
2.3.1  深入理解循环98
2.3.2  循环的连接100
2.3.3  双重循环与多重循环107
2.3.4  break和continue的运用110
2.3.5  分支与循环的串联和嵌套120
2.4  其他形式分支与循环121
2.4.1  switch-case分支结构121
2.4.2  while与do...while循环128
本章小结130
第3章  批量数据存储与处理—数组134
3.1  何时需要数组134
3.2  序列数据的处理—一维数组135
3.2.1  一维数组的定义135
3.2.2  数组与内存分配137
3.2.3  数组操作之演练140
3.2.4  一维数组的运用141
3.2.5  巧用数组下标149
3.3  表格型数据的处理—二维数组154
3.3.1  二维数组的定义154
3.3.2  访问二维数组的元素155
3.3.3  二维数组操作演练155
3.3.4  二维数组的应用159
3.4  其他164
3.4.1  数组的拓展—多维数组164
3.4.2  二维数组与一维数组的关系165
3.4.3  数组下标越界165
3.4.4  数组定义时的大小能否为变量167
本章小结168
第4章  文本数据处理—字符串169
4.1  字符数据存储和处理169
4.1.1  字符的编码169
4.1.2  字符数据的存储173
4.1.3  字符数据的运算173
4.2  字符串数据存储和处理176
4.2.1  字符串的存储176
4.2.2  文本型数据输入/输出177
4.2.3  字符串处理与库函数180
4.3  文本型数据处理之演练190
4.4  其他193
4.4.1  空字符'\0'的作用193
4.4.2  字符和字符串的区别与联系194
本章小结195
第5章  模块化设计之利器—函数196
5.1  初识函数设计197
5.2  函数的概念200
5.2.1  函数的概念剖析200
5.2.2  模块化设计思想在函数中的体现203
5.3  新函数是如何炼成的206
5.4  函数的设计207
5.4.1  发掘任务中的模块207
5.4.2  函数的定义207
5.4.3  设计函数的方法论209
5.4.4  设计函数的要点详解211
5.5  函数的测试220
5.6  函数的交付使用221
5.6.1  函数的调用形式223
5.6.2  函数调用过程详解224
5.6.3  函数参数的传递230
5.6.4  函数的声明234
5.7  函数设计实践236
5.8  函数的递归—自相似之美249
5.8.1  初识递归函数250
5.8.2  递归函数设计的关键点253
5.8.3  递归调用的执行过程262
5.8.4  二分法与递归264
5.8.5  递归与非递归273
5.8.6  提高递归效率281
5.9  函数相关主题287
5.9.1  局部变量与全局变量287
5.9.2  函数的嵌套定义的应用289
5.9.3  如何生成随机数289
5.9.4  库函数295
5.9.5  初谈提高程序效率295
本章小结299
第6章  内存间接访问之神器—指针301
6.1  深入理解内存地址302
6.1.1  内存是什么302
6.1.2  什么是内存地址302
6.2  间接访问与直接访问305
6.3  指针变量与普通变量309
6.3.1  指针变量的概念309
6.3.2  揭秘“指针”的由来310
6.3.3  普通变量与指针变量的对比311
6.4  指针与数组的天然联系312
6.4.1  数组名与数组起始地址312
6.4.2  揭秘访问数组的更多细节313
6.5  指针的移动319
6.6  地址值在函数调用中的特殊作用331
6.6.1  函数调用过程详解331
6.6.2  指针作为函数参数334
6.6.3  数组名作为函数实参341
6.6.4  可接受地址值的形参类型探究349
6.7  指针与动态内存分配352
6.7.1  一维数组的动态内存分配354
6.7.2  二维及多维数组与指针357
6.7.3  多阶指针370
6.7.4  返回值为指向动态分配空间的指针370
6.8  变量的存储区、作用范围与生命期371
6.8.1  静态变量和全局变量372
6.8.2  进程内存地址空间布局376
6.8.3  变量的作用范围、生命期和存储区379
6.8.4  extern的用法382
6.9  函数也可作为参数—函数指针与应用384
6.9.1  函数指针的概念384
6.9.2  函数指针数组的运用387
6.9.3  函数指针与qsort( )函数的应用388
本章小结396
第7章  创造新数据类型—结构体类型399
7.1  为何引入结构体类型399
7.2  结构体类型的定义和基本用法402
7.2.1  结构体类型的定义402
7.2.2  结构体类型的基本用法406
7.3  结构体类型数组的用法409
7.4  结构体类型在函数中的运用411
7.4.1  结构体类型在函数中的一般用法411
7.4.2  结构体类型数组的排序420
7.5  结构体类型与链表431
7.5.1  链表的概念和用途431
7.5.2  链表432
7.5.3  为什么需要链表439
7.5.4  循环单链表及其应用440
本章小结447
第8章  数据持久化—文件448
8.1  文件的基本概念449
8.1.1  文件的“纸带模型”449
8.1.2  缓冲文件读/写过程模型451
8.1.3  读/写文件基本流程与文件指针452
8.1.4  文件打开方式454
8.2  文件的读/写454
8.2.1  文本文件的读/写454
8.2.2  二进制文件读/写459
8.3  文件读/写位置的定位466
8.4  文本文件与二进制文件的对比470
8.5  其他主题475
8.5.1  关于stdin、stdout、stderr475
8.5.2  标准输入、输出的重定向476
8.5.3  理解和运用stderr与stdout478
8.5.4  fflush( )函数的用法479
8.5.5  EOF的运用481
8.5.6  容易被误解的feof( )函数482
8.5.7  fgets( )与gets( )的区别484
本章小结485
第9章  深入到bit的运算—位运算487
9.1  位运算的运算符487
9.2  初识位运算488
9.3  位运算的应用489
9.4  位运算的注意事项505
9.4.1  右移的补位方式505
9.4.2  移位量的取模特性506
9.4.3  位运算的数据类型507
9.5  位域509
本章小结510

内容摘要
本书采用以解决实际应用问题为导向、以具体编程任务为驱动的模式,将C语言的知识无缝融入每个实际应用程序中。作者精心设计了1

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP