SPOC学校专有课程
程序设计基础
第1次开课
开课时间: 2021年09月12日 ~ 2021年12月31日
学时安排: 3-5小时每周
当前开课已结束 已有 854 人参加
老师已关闭该学期,无法查看
spContent=​学习程序设计是一件充满挑战、更充满乐趣的事情,然而学习之初,它之所以给你枯燥乏味的感觉,那是因为没有发掘出它的趣味来。本课程力图用最简明的语言、最典型的实例及最通俗的解释将这种趣味性挖掘出来,带给你全新的学习体验,和你一起欣赏程序设计之美,领悟程序设计之妙,体会学习程序设计之无穷乐趣。
​学习程序设计是一件充满挑战、更充满乐趣的事情,然而学习之初,它之所以给你枯燥乏味的感觉,那是因为没有发掘出它的趣味来。本课程力图用最简明的语言、最典型的实例及最通俗的解释将这种趣味性挖掘出来,带给你全新的学习体验,和你一起欣赏程序设计之美,领悟程序设计之妙,体会学习程序设计之无穷乐趣。
—— 课程团队
课程概述

   对于这个地球上大多数人来说,真正的数字化革命还没有开始。在接下来的10年里,变化将无处不在,让我们一起来给这个世界编码吧!   

   在过去30年90%的时间里,C语言独领风骚,仅偶尔被 Java 超越,可见其魅力。C语言作为一种高级语言,其实并不高级,但正是这种“低级”给我们更多思考的机会。期望通过本课程的学习,你不只是简单地能够掌握一种语言的语法,还能理解隐含在语法背后的思想,并初步具备灵活使用这些思想进行编写程序解决实际问题的能力。如果你掌握了这些,你会发现,迈向成功的最后一步不过是选择一种合适的编程工具而已。 

   你想从“菜鸟”升级为“程序猿”吗?那就加入“柚子”的行列,和我们一起踏上程序设计之旅。

授课目标

以学生知识、能力、素质协调发展为目标,以学生为主体,融入匠人精神加强课程思政,注重能力培养,重视学生思想政治素质培养和创新能力培养。基于MOOC,开展混合式教学,通过做中学,以讨论交流的方式实现对课程中重要技术的分析和掌握,培养学生自我学习和解决问题的能力。基于大量的实际问题案例,通过做中学培养学生以计算思维的方式分析、设计、解决复杂问题的能力。具体课程具体目标如下:

目标1:掌握程序设计的基本数据类型和程序设计的基本结构,通过对问题的分析,形成基本的计算思维能力,映射成计算机的求解模型,完成问题的求解。

目标2:通过数组、指针、字符串的学习理解较为复杂的数据结构,并通过问题分析,设计较为合理的数据结构,并根据数据结构进行算法设计,能通过模块化的编程实现问题的设计与实现。

目标3:基于基本类型、基本结构,能通过对问题的分析,运用结构体完成复杂问题的设计,并结合逻辑思维和计算思维以及工程思想解决实际问题。

成绩 要求

课程大纲
第一章 C语言的结构
课时目标:了解C语言的发展历程;程序的构成、MAIN函数和其他函数;掌握C语言的基本结构及集成开发环境
第一节 C语言的发展历程及作用;
1.1 了解C语言的发展历史;
1.2 了解C语言的作用;
第二节 C语言的基本构成
2.1理解C语言的程序结构;
2.2掌握main函数的定义方法;
第三节 集成开发环境
3.1了解C语言的常用编程环境;
3.2熟悉IDE的主要功能及菜单结构;
3.3初步掌握一个简单程序的编辑、编译、连接、调试及运行过程
数据类型及其运算
课时目标:理解C的数据类型,掌握其定义方法;理解C运算符的种类、运算优先级和结合性;掌握不同类型数据间的转换与运算;熟悉C表达式类型和求值规则。
第一节 基本数据类型
1.1 理解数据类型的作用和区别;理解不同数据类型在计算机中的表示和范围;
1.2 掌握几种基本数据类型(int;float;char)的定义方法及应用场合;
第二节 常量与变量
2.1掌握常量的作用及表示方法;
2.2掌握变量的作用及定义方法;
2.3理解变量和常量的区别;
第三节 运算符及表达式
3.1掌握赋值语句的作用及用法;
3.2掌握常用算术运算符及运算顺序;
3.3掌握表达式的构成及语法规则;
3.4了解数据类型间的转换规则;
3.5了解常用标准数学函数及使用方法。
键盘输入和屏幕输出
课时目标:掌握数据的输入与输出,输入输出函数的调用。
第一节 格式化输出函数
1.1掌握printf函数调用方法及参数结构;
1.2掌握格式控制字符的作用及输出效果;
1.3 了解转义字符的作用。
第二节 格式化输入函数
2.1掌握scanf函数的调用方法及参数结构;
2.2理解输入列表中’&’符号的意义;
2.3理解字符输入时存在的特殊问题。
选择控制结构
课时目标:掌握关系运算符和关系表达式;熟悉if语句;熟悉switch语句;掌握选择结构的嵌套。
第一节 算法概念及描述方法
1.1 理解算法的基本概念及算法设计的重要性;
1.2 掌握程序流程图的基本符号及含义;
1.3 理解程序的三种基本控制结构;
1.4 了解程序流程图的绘制方法。
第二节 关系运算符及关系表达式
2.1理解关系运算符的含义、表示符号及运算顺序;
2.2掌握关系表达式语法;
2.3理解‘真’、’假’的概念及在c语言中的表示;
第三节 逻辑运算符及逻辑表达式
3.1理解“逻辑与”、“逻辑或”、“逻辑非”的概念;
3.2掌握逻辑表达式的语法;
第四节 if条件选择结构
4.1理解if语句的作用;
4.2掌握if语句的语法格式;
第五节 switch选择结构
5.1理解switch语句的作用;
5.2掌握switch语句的语法格式;
5.3理解在switch语句中break语句的作用。
循环控制结构
课时目标:熟悉for循环结构;熟悉while和DO while循环结构;掌握continue语句和break语句;掌握循环的嵌套。
第一节 循环结构类型
1.1 理解循环的概念
1.2 了解三种基本循环语句及应用场合
第二节 while和dowhile循环结构
2.1掌握while语句及 do while语句的语法格式;
2.2掌握while语句及 do while语句的使用方法;
2.3理解循环体的概念,理解while语句及 do while语句的区别;
2.4理解循环终止条件的作用;
第三节 for循环结构
3.1掌握for语句的语法格式;
3.2掌握for语句的使用方法;
3.3理解循环变量的作用及用法;
第四节 continue语句和break语句
4.1理解continue语句和break语句的作用及区别;
4.2掌握continue语句和break语句的语法
;第五节 循环嵌套
5.1理解多重循环的概念及作用;
5.2掌握三种循环结构的嵌套语法;
函数
课时目标:掌握函数的定义方法;理解函数的类型和返回值;掌握库函数的正确调用; 熟悉形式参数与实在参数,参数值的传递;掌握函数的正确调用,嵌套调用,递归调用;理解局部变量和全局变量;理解变量的存储类别,变量的作用域和生存期。
第一节 函数定义
1.1 理解函数类型、函数名、形式参数、函数体等概念;
1.2 掌握函数的定义方法;
1.3 理解函数原型的作用;
第二节 函数调用及参数传递
2.1掌握函数调用的方法;
2.2理解虚实结合的概念;
2.3掌握函数返回值的使用;
2.4 递归函数;
第三节 变量的作用域与存储类型
3.1理解局部变量及全局变量的作用域概念,理解各种存储类型的概念及区别;
3.2掌握局部变量及全局变量的定义方法和使用方法;
3.3了解静态变量的使用;
第四节 模块化程序设计方法
4.1了解结构化程序设计方法;
4.2了解模块的概念及作用;
数组
课时目标:熟悉一维数组和多维数组的定义、初始化和引用;掌握数组参数传递。
第一节 数组的定义、初始化和引用
1.1 理解数组、数组元素、数组在计算机中的存放方式等基本概念;
1.2 掌握数组定义的语法格式;
1.3 掌握数组初始化的方法;
1.4 掌握数组的引用方法;
第二节 数组参数传递
2.1掌握一、二数组作为函数参数的定义方法;
2.2理解数组的虚实结合
指针
课时目标:理解指针与指针变量的概念,指针与地址运算符。
第一节 指针变量的定义及初始化
1.1 理解指针的作用,理解指针变量与普通变量的区别;
1.2 掌握指针变量的定义格式;
1.3 掌握指针变量的初始化方法;
1.4 理解空指针的概念;
第二节 指针变量的使用
2.1理解间接寻址运算符的作用,理解取地址运算符的作用;
2.2掌握间接寻址运算符的使用方法;
2.3掌握取地址运算符的使用方法;
2.4掌握指针变量的引用方法;
2.5理解指向数组的指针;
第三节 指针变量作函数参数
3.1理解指针变量作为函数参数的作用;
3.2掌握指针变量作为函数参数的调用方法;
字符串
课时目标:理解字符串常量概念,掌握字符串的表示和存储,访问和输入输出;掌握字符串处理函数的使用。
第一节 字符串常量
1.1 理解字符串常量概念,理解字符串与字符的关系,理解字符串结束标志’\0’的作用;
1.2 理解字符串常量与字符数组的关系;
1.3 理解字符串常量与字符指针的关系;
第二节 字符串的访问和输入输出
2.1掌握利用scanf、gets函数输入字符串的方法及区别
;2.2掌握利用printf、puts函数输出字符串的方法及区别
;第三节 字符串处理函数
3.1理解字符串处理过程;
3.2掌握几种基本字符串处理函数的用法;
第四节 向函数传递字符串
4.1掌握字符指针作为形式参数的定义方法及引用方法
4.2掌握在调用函数时传递字符串的方法;
结构体
课时目标:掌握结构体类型的定义,掌握结构体类型变量、数组、指针的定义,初始化和应用,掌握typedef定义类型。
第一节 结构体定义
1.1 结构体类型的定义
1.2 结构体变量的定义、引用、初始化
1.3 结构体嵌套
第二节 结构体应用
2.1结构体变量作为函数参数
2.2结构体指针
2.3结构体数组
2.4结构体数组作为函数参数
2.5 typedef定义类型
展开全部
预备知识

本门课程的基本内容是面向零基础的学生。

参考资料

1. 参考教材

1)苏小红,赵玲玲,孙志岗,王宇颖,《C语言程序设计(第4版)》,高等教育出版社,2019年8月,购书网址:京东

2)苏小红,王甜甜等,《C语言程序设计学习指导(第4版)》,高等教育出版社,2019年9月,购书网址:京东

3)苏小红,孙志岗,陈惠鹏,《C语言大学实用教程(第4版)》,电子工业出版社,2017年1月,购书网址:亚马逊

4)苏小红,孙志岗等,《C语言大学实用教程学习指导(第4版)》,电子工业出版社,2017年3月,购书网址:亚马逊

5)苏小红等,《程序设计基础》,高等教育出版社,待出版

2.相关链接

爱课程国家精品资源共享课https://www.icourses.cn/coursestatic/course_3153.html

相关MOOC课程:程序设计基础https://www.icourse163.org/course/hit-56001#/info

带gcc编译器和gdb调试器的code::blocks集成开发环境的官网下载地址:https://www.codeblocks.org/downloads/26

(例如codeblocks-17.12mingw-setup.exe,一定要带mingw哦),安装注意事项见《C语言程序设计学习指导(第4版)》。

安装软件的完整步骤可参考:https://jingyan.baidu.com/article/b24f6c822756b886bfe5da90.html 


https://www.jianshu.com/p/1e7f0e6b99d0 大牛给计算机专业学生的7个建议,告诉你为什么毕业前要学好C语言)


常见问题

Q:如何提问,能得到快速的解答?

A:

1)标题:撰写标题时,要注意把要问的问题的出处和核心词写出来,最好用【】标出来,比如【第1周编程题在线测试的第1题】求解。

2)内容:内容上要把你不懂的地方说出来,最好详细点,把自己尝试修改的过程也说一下。

3)附源代码:把源码贴到讨论区(不要使用图片,因为图片看不清,也不能拷贝),这样大家可以通过你贴出的源码帮你分析错在哪里。

4)附错误提示:把编译出错的提示也贴出来(一般是英文形式),这样大家不用拷贝粘贴和调试程序也能帮你分析出错原因了。


Q:常见的运行结果错误的原因有哪些?

A:程序提交后通常显示三类错误:格式错误、结果错误、运行超时。

对于格式错误,请检查你的程序的输入输出信息是否和题目要求的完全一致。

对于结果错误,请检查你的程序使用的算法和计算公式是否正确,如果涉及浮点运算,可以尝试将float换成double或者反之。

对于运行超时错误,请检查你的程序是否存在死循环,死循环通常由永真的循环控制条件或者while后面添加了不必要的分号引起。注意在本网站提交程序进行测试时,不要使用flush()函数清除缓冲区,输入字符串也不要使用fgets(),原因详见视频讲解 。

注意事项如下:

1)数据输入输出的格式没有严格按照题目的要求写,直接拷贝粘贴题目中给的格式字符串和提示信息,是最简单和不易出现格式错误的方法

2)输入输出字符串中的字符大小写有错误,或者空格数量和位置与题目中的要求不一致,或者缺少换行等。

3)仔细审题,例如题目要求计算半圆的周长,就不要加上直径,更不要计算整个圆的周长。

4)如果只有几个测试用例通过,还有没有通过的测试用例,那么说明你没有考虑所有的可能性,甚至是非法输入的情况。

5)检查是否为英文输入,切记切换成英文状态再输入。一些同学误用了中文作为输入法,就会出现不能编译的问题,例如中文状态下输入的分号和英文状态下输入的分号是完全不同的,语句的末尾使用的分号一定要在英文状态下输入。

Q:如果无法正常观看视频,我该怎么办?

A:如果无法正常观看视频,请尝试进行如下操作:

1.确认你使用了支持视频播放的浏览器。切换到flash播放器无法调整播放速度,切换到HTML5播放器可以调整播放速度。建议都切换到HTML5播放器。

2.清除浏览器的浏览数据及缓存。

3.关闭硬件加速。请在浏览器的 设置 - 显示高级设置 中,将“使用硬件加速模式”(如果可用)一项取消勾选,并重新启动浏览器。

4.检查你的网速。你可以尝试在其他视频网站播放视频(如优酷、土豆等),如果你在其他网站仍无法观看视频,那么你的网络连接很可能有问题。你需要重新连接你的网络或者切换至网速更快的网络以实现流畅的视频播放。

Q:我想考二级,学完这个课程可以考吗? 

A:二级考试题考查语言的语法细节较多,所以能否通过二级考试,要看你的应试水平如何。本课侧重于讲解程序设计的方法以及错误程序的排错方法,更关注实战能力,因此应该说本课程对学生的要求是高于二级考试的要求的。


Q:上机编写C语言程序使用什么软件好?

A:课程演示会使用Code::Blocks+gcc+gdb集成开发环境,但是你使用任何其他C语言开发工具也都可以。不过,我们推荐使用Code::Blocks,在教材网站(https://book.sunner.cn)上有软件下载的网址链接,《C语言程序设计学习指导(第4版)》上有关于如何使用这个软件的详细介绍,它是一个开源的跨平台的C/C++集成开发环境,它安装简单,比Visual C 6.0等其他集成开发环境更简单易学。

 

Q:使用codeblocks在sources中新建一个file,也就是不在原来默认的main.c里面写代码,那么应该如何调试才能使运行的时候直接运行新建的里面的程序呢?

A:给工程添加完新的文件后,移出旧的文件main.c再重新编译即可,移出文件的方法和添加的方法类似。

 

Q:为什么安装好软件后创建新项目的时候软件总是说:could not save project<invalid path> maybe the file is write-protected 呢?

A:codeblocks要求软件安装的目录最好不要带空格或汉字,不要按默认设置安装到program file目录下,卸载后再选择安装到根目录下试试。更多注意事项,参见高等教育出版社的《C语言程序设计学习指导(第3版)》


Q:请问为什么我在Code::Blocks里面点开Debug中的watch里面是空白的?

A按照视频1.2讲的方法新建一个控制台应用程序,不要直接新建一个C文件,直接新建或者打开一个 C文件是无法使用调试功能的。

检查一下是不是将CB安装到默认的program files目录下了,CB不能安装到中文或者有空格的目录下,请卸载软件,重新安装到根目录下,再试试。

此外,全速运行程序时,是看不到watch窗口内的内容的,必须在单步运行的时候才能看到watch窗口内的内容。


Q:为什么我的程序编译不了?

A:一种可能是你安装了不带编译器和调试器的版本,重新安装带编译器和调试器的版本。免费开源的C 语言集成开发环境Code::Blocks+gcc+gdb的官方下载网址:https://www.codeblocks.org/downloads/26(目前最新版本是codeblocks-17.12mingw-setup.exe)。请下载带gcc编译器和gdb调试器的code::blocks(下载软件名中务必包含mingw),否则程序无法编译。无法从官方下载软件的,也可以从百度云盘上下载:链接: 链接: https://pan.baidu.com/s/1q7iVuo8qjFVVW9YLf3BDvQ 提取码: f2n7

C 语言集成开发环境code::blocks的安装和使用方法见教材《C语言程序设计学习指导(第3版)》

如果不想重装系统,可参考

https://zhidao.baidu.com/link?url=T8WrKoa6dHXfZdTIOFex4uWais6SaTY2VbmNnLyKL77fb62LdzxrdJxBT_-UVf48AA9Z14K8l_nyueKFxD_q4Rh3BH0UMZvx5Kvxjx8o1MG重新设置编译器和调试器。

安装软件的完整步骤可参考:https://jingyan.baidu.com/article/b24f6c822756b886bfe5da90.html 

另一种可能是你用的系统自带了迈克菲杀毒软件,请卸载迈克菲上毒软件即可。


Q:为什么我的程序无法运行,显示cannot open output file bin\Debug\election.exe Permission denied.

A:可能是你的文件正在别的程序中使用,或者还有程序的副本正在执行(或者你上次运行没有关闭),因此不能写入election.exe,把副本关闭或者结束election.exe任务应该就能够纠正这个问题。另外,请检查一下你的IDE是不是是不是安装到C盘的默认目录下了,请将IDE安装到D盘,并将你的程序也保存到D盘,不要保存到C盘。


Q:为什么我的程序与网站上的程序运行结果中的小数点最后一位存在差异?

A: 这是因为网站的OJ使用的操作系统和编译器与我们自己使用的操作系统和编译器不一样,从而导致浮点运算的精度不一致。

此外,使用float和double定义变量得到的计算结果也可能在结果的最后一位小数上有所不同。

显示全部
源课程

该SPOC课程部分内容来自以上源课程,在源基础上老师进一步增加了新的课程内容

西南石油大学
9 位授课老师
肖斌

肖斌

副教授

刘忠慧

刘忠慧

副教授

温柳英

温柳英

副教授

下载
下载

下载App