程序设计基础
分享
课程详情
课程评价
spContent=C语言是当今世界最受追捧的第一门编程语言。半个世纪以来,C语言在嵌入式、自动化、机器人、物联网、人工智能、大数据、云计算领域具有无可替代的作用。本课程是零基础的编程入门课,是操作系统、编译原理、体系结构等课程的基石。也是学好Python、Java、JSP、C#、Java EE、Android等高级语言的基础。
—— 课程团队
课程概述

  欢迎您来到程序设计的世界!

  如果说人类用劳动创造了世界,造就了文明,那么计算机的发展就加剧了人类创造和改变世界的进程。人类发明了计算机,同样,人类也使用着计算机改变着自己的生活。如何让计算机为你所用呢?答案是:用计算机语言与之对话。这门课就是教会你如何与计算机对话的课程!

  《程序设计基础》是物联网工程学院江苏省品牌特色专业(物联网应用技术)重要的专业基础平台课程,必修课程。同时也是物联网工程学院各专业的重要专业基础平台课。该课程覆盖所有电子信息类专业人群,受益面广,为电子信息类各专业服务。全国每学年受益学生人数高达30万人。学好本课程为以后从事计算机软件设计、开发、维护工作,嵌入式产品设计、开发、维护工作,打下扎实的基础,是塑造电子信息大类各专业人才的重要基础保障。因此,该课程在电子信息类各专业的授课计划中占有重要的地位和作用。其重要性不仅仅体现在一般的编程能力,更体现在引导学生实现问题求解思维方式的转换——培养学生的计算思维能力。同时,《程序设计基础》还是一门实践性很强的课程,培养学生的实践能力是其核心目标。仅仅依靠教师讲授很难让学生学习好这门课程,需要通过大量的实践,训练学生的程序设计和程序调试能力。作为电子信息类各专业的第一门计算机基础课程,因此,它还肩负着培养学生对计算机学习兴趣的重任。

  C语言是程序设计语言中的常青树,它具备现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域具有无可替代的地位,在历年编程语言的排行榜中,她稳居前三甲。

  经高等教育出版社审核,2017年正式出版和本课程配套的新形态、一体化教材。与此同时,课程组还和“蓝墨云教材”合作,并达成一致意见,同步出版数字化云教材。数字化云教材与“高等教育出版社”出版的新形态一体化教材,配套爱课程”,交相辉映、相得益彰,共同打造文字+数字”双线并进,助推该课程建设的全面发展。

  在《程序设计基础》课程的学习领域中实现三大真实项目。

  (1)身高体型判定系统

  (2)考试系统

  (3)学生信息管理系统

  三个项目均源于真实的校企合作项目,以三个实际项目作为教学载体,由易到难,由简到繁,逐层深入,步步递进,展开教学。三个项目又相辅相成融为一个整体,既满足教学的基本要求,又将实际工作所要求的基本知识、技能都融入项目实施过程中。

  为了调用学生的积极性,在线开放课程充分注重教学活动的设计,包括学习任务、实时问题、拓展知识、过关斩将、高手过关、交流互动、互评环节、大显身手等方面,力争激发学生的学习兴趣,提高学生的参与度。

  在这里,您将接受项目驱动、信息化”教学,普及技能证书、提升技能水平;我们设计项目、闯关、实战”任务;培养基本、探索、创新”能力;采用理实一体、项目驱动、信息化”的教学模式;形成教、学、做”融合;建立过程化、阶段化、全方位、多角度”的评价模式;在线开放课程、新形态教材,数字化云教材、企业级项目伴您一同成长;

  您还等什么,快跟随我们一起学习C语言吧!让苍白的岁月从此变为激情,让流失的时光从此不再虚度,让我们主宰自己的青春,共同打造美好未来!

授课目标
《程序设计基础》是一门研究C语言基本知识与结构化程序设计方法,采用C语言进行结构化程序设计的基础课程。该课程以应用性、趣味性为背景。变应试为应用,改传统授课方式为现代信息化教学,重视在新形态下新方法、新思想的传授,着重培养学生灵活运用这些思想和方法分析和解决实际问题的能力。
课程大纲

  依据完成实际项目的流程,即依照项目开发的逻辑关系,来细化教学内容。该课程分为两大部分展开教学。第一部分为程序设计入门,第二部分为项目化教学部分。

  (1)程序设计入门部分

  主要讲述C语言概述以及算法的基本知识,为后续的项目化展开做好知识的积累和铺垫。第一部分的教学组织按照:提出问题 – 相关知识 – 解决问题 – 能力测试 – 知识拓展,五大环节展开。每一个单元由一个实际问题引出,为了解决这个问题,学习相关知识进行补充,之后用所学的知识点解决实际问题,接着通过能力测试监测学生的学习成果,最后是知识拓展提升学生的技能水平。

  (2)项目化教学部分

  第二部分为项目化教学部分,共计安排了三个项目,分别为:

  项目1:身高体型判定系统

  项目2:考试系统

  项目3:学生信息管理系统

  三个项目有易到难展开,即项目1难度系数最小,项目3难度系数最大。各项目又都是与大学生的学习生活息息相关的问题,具有趣味性和创新性。

  项目1:身高体型判定系统,涵盖第3单元至第5单元;项目2:考试系统,涵盖第6单元至第8单元;项目3:学生信息管理系统,涵盖第9、10单元。在讲述同一个项目的各单元之间具有递进关系,不断调整改进项目需求,直至完美。

  每个单元实现一个项目需求,依据项目需求分析,展开教学。每个单元均按照:项目需求 – 相关知识 – 解决问题 – 能力测试 – 项目实施,五大环节展开。通过项目需求,理解本单元要解决的实际问题;为了解决这一问题学习相关知识点,提升学生的知识水平;为了能够尽可能好的运用知识点,并能更好的完成项目实施,通过解决实际问题,首先提升学生的技能水平;知识和技能掌握的情况,通过能力测试环节来检测;最后是项目实施,由于知识和技能水平的提升,真正检验的阶段,就是解决一个单元开始时提出的项目需求,完成项目需求,实现实际项目。从而,知识、技能、素质得到进一步提升。

  《程序设计基础》课程教学内容的整体结构与安排如图所示。

  《程序设计基础》课程的具体教学内容、重点难点、学时安排以及相应知识、能力、素质目标如下表所示。

学习阶段

学习情境

教学内容

知识、技能、素质目标

程序设计入门

单元1

让我们和计算机对话吧

(4学时)

任务1 提出问题 如何与计算机交流?

任务2 相关知识

1.2.1 计算机语言

1.2.2 C语言的发展历史

任务3 解决问题 让我们来和计算机打招呼吧!

1.3.1 如何使用C语言

1.3.2 C语言程序的结构

1.3.3 运行C语言程序的方法与步骤

任务4 能力测试

任务5 知识拓展

1.5.1 程序设计的步骤

1.5.2 大显身手

知识目标:

了解C的基本历史和相关概念;

技能目标:

熟悉VC、C-Free运行环境,掌握开发环境的搭建方法,了解项目要求,提高操作能力和动手能力;

素质目标:

提高学习能力和团队合作能力。

单元2

算法——程序设计的灵魂

(6学时)

任务1 提出问题 什么是程序?

任务2 相关知识

2.2.1 算法

2.2.2 算法的特性

2.2.3 简单算法举例

2.2.4 如何表示算法

任务3 解决问题 让我们来设计算法吧!

2.3.1 用流程图设计算法

2.3.2 用N-S盒图设计算法

2.3.3 用伪代码设计算法

任务4 能力测试

任务5 知识拓展

2.5.1 结构化程序设计的方法

2.5.2 大显身手

知识目标:

掌握算法的相关概念,以及算法的设计方法,结构化程序设计的方法;

 

技能目标:

掌握结构化程序设计的方法,以及算法的设计步骤;

 

素质目标:

提高分析解决问题的能力,撰写简单文档的能力。

项目1:

身高体型判定系统

单元3

“身高体型判定系统”数据处理——顺序结构程序设计

(8学时)

任务1 项目需求 如何预测身高、判定体型?

任务2 相关知识

3.2.1 如何描述数据

3.2.2 如何操作数据

3.2.3 输入输出

任务3 解决问题 让我们来完成计算任务吧!

3.3.1 如何求一元二次方程的根

3.3.2 求摄氏温度

3.3.3 计算存款利息

任务4 能力测试

任务5 项目实施

3.5.1 大显身手

(1)身高预测系统

(2)体型判定系统

知识目标:

了解基本数据存错与基本数据操作的方法,细致掌握知识概念;

 

技能目标:

掌握顺序结构程序设计的基本技能;

 

素质目标:

提高分析问题、解决问题的学习能力,提高创新意识和团队协作意识。

单元4

“身高体型判定系统”决策判断——选择结构程序设计

(8学时)

任务1 项目需求 “身高体型判定系统”的改进需求

任务2 相关知识

4.2.1 if语句的一般形式

4.2.2 关系运算符与关系表达式

4.2.3 逻辑运算符与逻辑表达式

4.2.4 条件运算符与条件表达式

4.2.5 if语句的嵌套

4.2.6 用switch语句实现多分支选择结构

任务3 解决问题 交换如此有趣!

4.3.1 两个数的交换

4.3.2 三个数的交换

4.3.3 闰年的判断

4.3.4 再次求一元二次方程的根

4.3.5 我们的运输费用

任务4 能力测试

任务5 项目实施

4.5.1 大显身手 “身高

型判定系统”改进版

知识目标:

掌握if语句和switch语句,掌握关系运算、条件运算与逻辑运算的计算方法和技能。

 

技能目标:

掌握选择结构程序设计的基本技能和高级应用技能;

 

素质目标:

提高分析问题、解决问题、探究问题的学习能力,提高创新

识和团队协

意识。

单元5

“身高体型判定系统”完整版——循环结构程序设计

(10学时)

任务1 项目需求 “身高体型判定系统”的再次改进需求

任务2 相关知识

5.2.1 用while语句实现循环

5.2.2 用do…while语句实现循环

5.2.3 用for语句实现循环

5.2.4 循环的嵌套

5.2.5 几种循环的比较

5.2.6 改变循环的执行状态

任务3 解决问题 交换如此有趣!

5.3.1 初谈斐波那楔数列(Fibonacci)

5.3.2 素数问题

5.3.3 的近似值

5.3.4 数字游戏(1)

5.3.5 打印图形

任务4 能力测试

任务5 项目实施

5.5.1 大显身手 “身高体型判定系统”的完美版

知识目标:

掌握三大循环结构的概念和知识点,理解循环的嵌套以及改变循环执行状态的方法和技术;

 

技能目标:

掌握循环结构程序设计的基本技能,并能够灵活运用循环结构解决较复杂的问题;

 

素质目标:

提高分析问题、

决问题、探究问题的学习能力,提高创新意识和团队协作

识。

项目2:

考试系统

单元6

“考试系统”数据存储——数组

(10学时)

任务1 项目需求 “考试系统”——数据存储问题

任务2 相关知识

6.2.1 一维数组

6.2.2 二维数组

6.2.3 字符数组

任务3 解决问题 巧用数组

6.3.1 巧用一维数组

6.3.2 巧用二维数组

6.3.3 字符串处理

任务4 能力测试

任务5 项目实施

6.5.1 大显身手 考试系统(V1版)

知识目标:

掌握一维数组、二维数组、字符数据的基本概念和相关知识;

 

技能目标:

掌握巧用一维数组、二维数组、字符串数组操作处理数据的基本技能和高级技能;

 

素质目标:

提高分析问题、解决问题、探究问题的学习能力,提高创新意识和

队协作意识。

单元7

“考试系统”模块化设计——函数

(10学时)

任务1 项目需求 “考试系统”的模块化设计

任务2 相关知识

7.2.1 怎样定义函数

7.2.2 怎样调用函数

7.2.3 函数的额声明与函数原型

7.2.4 函数的嵌套调用

7.2.5 函数的递归调用

7.2.6 数组作为函数参数

7.2.7 局部变量和全局变量

7.2.8 变量的存储方式和生存期

7.2.9 变量的声明与定义

7.2.10 内部函数与外部函数

任务3 解决问题 模块化程序设计

7.3.1 改写我的成绩单

7.3.2 递归

任务4 能力测试

任务5 项目实施

7.5.1 大显身手 考试系统(V2版)

知识目标:

掌握函数定义、声明、调用的方法,理解递归算法,了解变量的存储方式和生存期;

 

技能目标:

掌握模块化程序设计的方法,能够灵活运用递归算法解决实际问题;

 

素质目标:

提高分析问题、

决问题、探究问题的学习能力,提高创新意识和

队协作意识。

单元8

“考试系统”的优化——指针

(10学时)

任务1 项目需求 “考试系统”的优化

任务2 相关知识

8.2.1 指针变量

8.2.2 通过指针引用数组

8.2.3 通过指针引用字符串

8.2.4 指向函数的指针

8.2.5 返回指针值的函数

8.2.6 指针数组和多重指针

8.2.7 动态内存分配与指向它的指针变量

任务3 解决问题 指针的妙用

8.3.1 10个数

8.3.2 使用指针对20个数的相关操作

8.3.3 用指针实现字符串的相关操作

任务4 能力测试

任务5 项目实施

8.5.1 大显身手 考试系统(V3版)

知识目标:

掌握指针的概念,能够活学活用指针处理数组、字符串、函数指针等具体的指针的使用方法。

 

技能目标:

掌握指针与函数、指针与数组、指针与字符串的应用技巧,并实现指针在项目开发中的高级应用;

 

素质目标:

提高分析问题、解决问题、探究问题的学习能力,提高创新意识和团队协作意识。

项目3:

学生信息管理系统

单元9

“学生信息管理系统”数据存储——用户自定义数据类型

(10学时)

任务1 项目需求 “学生信息管理系统”的数据存储问题

任务2 相关知识

9.2.1 定义和使用结构体变量

9.2.2 结构体数组

9.2.3 结构体指针

9.2.4 链表

9.2.5 共用体类型

9.2.6 使用枚举类型

9.2.7 使用typedef声明新类型名

任务3 解决问题 学生信息管理

9.3.1 链表的生成

9.3.2 链表的展示

9.3.3 学生信息处理

任务4 能力测试

任务5 项目实施

9.5.1 大显身手 学生信息管理系统(V1版)

知识目标:

掌握结构体、链表、共用体、枚举类型的概念;

 

技能目标:

掌握结构体与数组、结构体与指针、结构体与函数之间的使用技能,重点掌握链表的操作;

 

素质目标:

提高分析问题、解决问题、探究问题的学习能力,提高创新意识和团队协作意识。

单元10

“学生信息管理系统”数据保存——文件

(4学时)

任务1 项目需求 “学生信息管理系统”的数据保存问题

任务2 相关知识

10.2.1 打开与关闭文件

10.2.2 顺序读写数据文件

10.2.3 随机读写数据文件

10.2.4 文件读写的出错监测

任务3 解决问题 将学生信息存入文件

10.3.1 从文件中读取学生信息并展示

任务4 能力测试

任务5 项目实施

10.5.1 大显身手 学生信息管理系统(V2版)

知识目标:

掌握文件的概念,文件的打开与关闭,文件的顺序读写和随机读写的先关知识;

 

技能目标:

掌握使用文件长期保存系统数据的技能;

 

素质目标:

提高分析问题、解决问题、探究问题的学习能力,提高创新意识和团队协作意识。

 


预备知识

  作为第一门编程课,本课程可以零基础学习。《大学计算机基础》、《计算思维导论》等课程有助于深入了解本课程的部分内容,但这些课程的学习不是必须的。

证书要求

  教学评价应以学生为中心,通过考核正确、科学评判学生知识的掌握和能力的提高程度,同时在评价过程中注重挖掘学生的潜能,帮助学生认识自我并建立自信,推进其自主学习能力、创新能力、项目开发、测试与调试能力的不断提高。

  将课程考核分为平时、阶段和综合三部分。

  (1)平时考核

  平时考核分为在线考核在线互评组成。

  在线考核依据过关斩将能力测试完成的质量。过关斩将:学生在教师引导下完成相关知识的学习,该环节穿插过关斩将环节,每学完一个知识点,学生可以通过闯关模式完成练习,并由在线开放课程记录分数。能力测试:解决问题环节过后,为了能够更好地检验学生对知识、技能的掌握程度,安排了单元能力测试环节,学生通过完成能力测试题目由在线开放课程系统直接记录测试分数。

  在线互评依据老师点评、学生互评的结果。在相关知识、解决问题、能力测试环节,均有互评环节。在线开放课程将根据学生微课的学习情况,学生积分,即给予学生评价;解决问题环节给学生提供了趣味性的问题,能准确地反映出学生知识、技能掌握情况,学生可以对完成解决问题的情况,通过学生自评、学生间互评、教师评价的方式给每一个学生恰如其分的评价,并记录为平时成绩。

  (2)阶段考核

  阶段考核依据项目实施环节完成的质量,兼顾原有水平。项目实施环节,能够较好地反映学生自主学习、协作学习的能力,较好地体现了学生知识综合运用、拓展创新的能力。学生完成项目后都要撰写制作文档,然后提交作品和制作文档,由教师根据每个项目考核要求进行评价。

  (3)综合评价

  综合评价主要根据学生的参与程度、学习质量、讨论情况等进行。

  《程序设计基础》在线开放课程考核分值建议如下表所示。

考核类型

评价主体

考核内容

比例

平时考核

任课教师、学生

完成过关斩将、解决问题、能力测试的质量

40%

阶段考核

任课教师、学生

完成高手闯关、项目实施环节中实际项目的质量,兼顾原有水平

40%

综合评价

任课教师、学生

参与程度、学习质量、讨论情况协作能力、实战能力等

20%

  通过视频学习,完成过关斩将、能力测试、高手闯关、拓展项目,参与课程讨论和拓展知识的学习,达到课程要求后,可以获得课程主讲教师签名颁发的合格证书或优秀证书。总成绩由各分项成绩汇总后评定

  6084分:合格证书

  85100分:优秀证书

  学完该课程可顺利通过全国计算机二级C语言考试。

参考资料

(1)经高等教育出版社审核,2017年正式出版和本课程配套的“新形态一体化教材”。

  与在线开放课程相匹配的相关资源建设正在有序开展,并于2016年年底完成。2016年,经过团队成员的共同努力,本课程编写的教材经过“高等教育出版社”认可,经过高教社指导,预计2017年7月,与“高等教育出版社”正式公开出版发行在线开放课程配套的新形态一体化教材图中所示的是处于排版中的新形态一体化教材,其中批注部分标识对应的教学资源。经高等教育出版社审核,该教材上将以二维码的形式呈现“爱课程”网上本门课程涉及到的全部资源。

(2)课程教学团队2012年8月编著了课程配套教材《C语言程序设计》(江苏教育出版社)(ISBN:9787549918270)

(3)2014年1月编著了课程配套教材《C语言程序设计精编教程》(人民邮电出版社)(ISBN:9787115332042)正式出版。

(4)历经20多年的撰写,谭浩强的经典著作《C语言程序设计(第四版)》,累计发行量超过1250万册,这本经久不衰的C语言教材,有着让人神往的魔力,指引着无数最随着前进。

  教材是对本课程改革与建设的重要成果,目前该教材已在全国18个省、市、自治区50多家高校的教学中使用。

常见问题

Q:我需要特殊版本的计算机吗?

A:任何计算机都可以用于C语言编程,包括但不限于各个版本的MS Windows、各个版本的Mac OS X、各种发行版本的Linux。有的手机有APP也能实现C语言编程,不过我们不推荐那么小的屏幕。

Q:我需要安装特定的软件才能做这门课的作业吗?

A:任何C语言的开发工具都可以。课程演示会使用Dev C++及命令行环境,但是你使用任何其他开发工具都不会影响做作业的正确性。可以使用的其他工具包括但不限于MS Visual StudioC-Free等。

Q:每周会发布多少时间的视频?我需要花多少时间来学习?

A:我们按照每周90分钟的授课时间来设计课程。但是发布的视频每个一般在3-8分钟,一周一般在5070分钟左右。因为在线下上课时,一般我们设计课程需要1:1.51:2的课后学习时间,这包括预习、作业、闯关、测验、交流和复习的时间,所以每周大约需要花费三到五小时的时间。

Q:有的课件内容前面有个*号是什么意思?

A:这是拓展资源、参考资料,还有拓展知识点,不是你必须看必须学的。比如,各种名人轶事等,百科知识等,或者针对计算机专业学生对某些问题的深入解释的。对这些问题的理解不会影响你的课程学习。

Q:学习过程中可能出现的问题有哪些?

A:注重理论学习,忽视上机编程实践;入门时以为难度大,产生畏难情绪;太注重学习语句的语法规则,忽视了对编程思路和方法的训练;急于求成,总想编写综合性的程序,忽视基本概念,忽视基本功的训练。

Q:学好C语言的关键是什么?

A:上机编程是学好C语言的关键,多上机,多练习,提高动手能力。

Q:整个学习过程是什么样的?

A:整个学习过程分为两个部分。程序设计入门:主要讲述C语言概述以及算法的基本知识,为后续的项目化展开做好知识的积累和铺垫。项目化教学:重点掌握编程思路和基本算法;学会分析问题;开始进行算法设计,根据项目需求,完成、完善项目。