Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

XuetangX

C程序设计

Northwestern Polytechnical University via XuetangX

Overview

课程基于专业融合教学理念,以领域需求及特征创建,应用特色突出,适应了信息技术发展新趋势。课程围绕“技能提升、思维训练、系统培养、价值塑造”目标重构课程体系,内容全面、系统,进度安排科学、规范。配套的系列教学软件和能力评价、成效分析,覆盖了教学全过程,学习效果可观测。课程大量的在线练习、学习研讨提高了学生实践强度,自主研发的学习功能使课程共享范围广泛,应用模式多样,形成了资源型、功能型、服务型在线课程。

学习编程包括语言工具、问题求解、实现方法、算法思想、编程抽象、编程范式、设计模式等内容,涉及算法设计、程序实现、计算科学、软件工程、系统开发、学科交叉等方面。本质上,程序是逻辑演绎的形式化表达,反映的是人类对这个世界的数字化理解。因此,提高编程能力可从两点出发:一是以思维训练为中心的编程技能,二是以学科融合为核心的领域知识。

那么,如何学习编程呢?

1.按“双线索”学习程序语言

任何程序语言,包括C语言,都是一个标准化的、具有庞大知识内容的形式语言体系。因此以语言知识为学习线索必然是整体凌乱、抓不住主次,容易迷失学编程的方向。

须知,计算机的基本工作原理决定了计算机问题求解是“计算数据”的过程,编程就是去解决“如何表示数据”和“如何实现计算”。将“数据表示”和“程序实现”作为学习程序语言的两条主线索,抓住语言对此所起的作用,螺旋上升,交叉推进,如下图:

这时,你会发现程序语言是服务编程的工具而不是目标。

2.有“节奏感”推进编程实践

学习程序语言时需要快节奏,学习编程方法和编程技术时需要慢节奏,即使是敲代码也要有节奏,快慢使得学习者“抓大”(设计方法)“放小”(语言知识),得到最大化的“饱满感”编程训练。

学编程需要完成大量练习,称为“刷题”。编程实践过程中的灵感、技术、习惯、动机、反思以及畅想,将会把程序设计的知识逐一转化成技能,形成编程思维。对编程有激情是一件很美妙的事情,但同时也必须培养自己对于编程周边所有事情的热情。在节奏引领下可以更有效地与计算机对话,从而赋予我们将创意变成原型的能力。

这时,你会发现编程是帮助人们与计算机沟通的工具。

3.从“多维度”进行思维训练

计算科学思维是多维度的,例如基于计算技术的普适思维,特点是抽象和构造;基于算法思想的数学思维,特点是形式化和自动化;基于数据技术的逻辑思维,特点是因果关系和相关关系;基于系统结构的应用思维,特点是整体性和结构性。

程序最重要的两个基本要素是算法和数据结构,编程的难点不是算法或者数据结构本身,而是如何理解和分解问题,并将其映射到最合适的算法或数据结构上,这个映射本身不是程序要解决的问题,是人脑在思维,是构造性思维、逆向思维、猜想与试验、设计思维等全脑思维的艺术。

这时,你会发现编程是思维的体操。

4.用“系统观”拓展编程视野

衡量编程有两个重要指标:编程累计行数(TLOC)和单个程序行数(SLOC)。以解题为主的编程训练能提高TLOC,但却止步于SLOC。即使将小规模、数学型问题做成百上千,TLOC指标上去了,但SLOC却不见长。一般的,SLOC小于300行时很难让人体会到“开发的感觉”,这时编程局限在“数学工具”视野里。显然,单纯的思维训练和仅仅摄取知识信息无法形成系统观。

实际上,计算方法(数值计算、非数值计算)仅是程序设计方法的一种,程序方法学中还有诸如操作系统、人机界面、图形图像、多媒体、网络通信、数据库、硬件接口等技术领域,每个领域都有独特的编程技术和精巧的解决方法。通过引入高级编程技术的学习,融合各类学科专业的领域知识,拓展求解问题的专业覆盖面、问题复杂度和数量,可以改变编程的广度、深度和力度,形成编程核心模式及对它们不断运用所形成的思维方式的系统观,这是优秀程序员最重要的素质。

这时,你会发现编程是全方位的创新实践。

5.以“跨领域”塑造核心价值

掌握知识和能力是大学学业的价值,但仅仅是这些就可能掩盖了大学学业的核心价值和潜质,即通过知识内化为思维、通过能力提升到创造,最终拥有终身享用不尽的、可持续发展的知识发现、知识获取、知识建构的科学素养。

学会了编程就等于掌握了信息时代的听说读写能力,学习编程形成的心理技能对于我们生活的其他方面都极其有用。通过跨学科、跨领域的延伸,编程将提高问题求解的能力,提升对世界的理解力和改善解决问题的决策能力,建立起批判性思维、系统性思维、创造性思维。通过增加挑战式内容,强化在专业学科研究上表现出很强的发展潜力,形成学业核心价值。

这时,你会发现编程教会人们如何思考。


归纳起来,就是“技能提升、思维训练、系统培养、价值塑造”。


Syllabus

  • 第1章 程序设计基础
    • 第1讲 了解计算机的工作原理
    • 第2讲 信息在计算机中的表示
    • 第3讲 编程的理论基础
    • 第4讲 编写第一个C程序
  • 第2章 数据类型与表达式
    • 第5讲 将简单数据引入C程序中
    • 第6讲 数值数据的运算与处理
    • 第7讲 逻辑数据的运算与处理
    • 第8讲 赋值和类型转换
  • 第3章 程序控制结构
    • 第9讲 编写程序语句
    • 第10讲 编程实现简单数据的输出
    • 第11讲 编程实现简单数据的输入
    • 第12讲 编程实现选择分支
    • 第13讲 编程实现嵌套的选择分支
    • 第14讲 编程实现循环
    • 第15讲 循环的终止、加快和嵌套
    • 第16讲 编程实现枚举算法
  • 第4章函数
    • 第17讲 调用函数-返回与参数传递
    • 第18讲 调用函数-原型与声明
    • 第19讲 调用函数-调用形式
    • 第20讲 设计函数-函数间的数据传递(1)
    • 第21讲 设计函数-函数间的数据传递(2)
    • 第22讲 设计函数-接口与实现分离
    • 第23讲 编写规模化程序
  • 第5章 预处理命令
    • 第24讲 编程任务的自动化工具
    • 第25讲 编程任务的接口与版本控制
    • 第26讲 配置开发环境
  • 第6章 数组
    • 第27讲 批量数据的表示与处理
    • 第28讲 批量数据的遍历与访问
    • 第29讲 函数之间实现批量数据传递
    • 第30讲 构建大数和高精度类型
    • 第31讲 文字信息的表示与处理
    • 第32讲 实现排序算法
    • 第33讲 用空间换取时间编程方法
  • 第7章 指针
    • 第34讲 探究指针的本质与使用
    • 第35讲 指针运用的风险控制
    • 第36讲 数组元素的简洁表示
    • 第37讲 大批量数据的简洁表示
    • 第38讲 完美实现函数之间的数据交换
    • 第39讲 字符串查找与匹配
    • 第40讲 回调函数
    • 第41讲 使用动态内存
  • 第8章 自定义数据类型
    • 第42讲 复杂数据在C程序中的表示
    • 第43讲 编程使用复杂数据
    • 第44讲 构建数据类型体系
  • 第9章 链表和常用算法
    • 第44讲 构建数据类型体系
    • 第45讲 链表的运算
    • 第46讲 常用算法及策略
  • 第10章 文件
    • 第47讲 编程操作永久性数据
    • 第48讲 编程读写文件
  • 期末考试

    Taught by

    Xuefeng Jiang, Junrui Liu, and Fang Wang

    Tags

    Reviews

    Start your review of C程序设计

    Never Stop Learning.

    Get personalized course recommendations, track subjects and courses with reminders, and more.

    Someone learning on their laptop while sitting on the floor.