课程详情
课程评价
spContent=本课程适合没有编程基础或者学习了C或者C++语言,仍然不能根据问题独立编写程序的初学者。从理论到实践,从分析问题,寻找解题思路,到编程、调试、运行,都借助于实际案例进行展示。特别是初期的编译错误,后期的运行错误,通过视频一步步的演示学会编程方法与调试技术。
—— 课程团队
课程概述

本课程是程序设计C语言和C++语言的入门课程。兼顾基础理论和编程实践。基础理论浅显易懂,编程案例趣味性强。视频使用当下流行的集成开发环境visual studio 2015(vs2008-VS2019各版本皆适用)进行编程与调试工具。从分析问题,寻找解题思路,到编程、调试、运行,都借助于实际案例进行展示。特别是初期的编译错误的定位与解决策略,后面的运行错误借助调试工具进行查错、纠错等,通过一系列事例一一展开,很容易通过视频一步步的演示学会编程方法与调试技术。而调试技术的掌握是初学者的难点之一。完整的编程过程解决了初学者看教材明白,上机却无从下手的问题。

    不少同学学习C语言的难点在指针与函数。而随后的随处可见的C++的成员函数很自然的就解除函数方面的困惑。指针的难点在于和数组、函数等结合下的变化多端,加上指针使用非常容易出错,这种结合下的错误更多且难以解决。本课程先进行理论讲解,通过指针对内存的实际操作情况进行演示与分析,然后通过由浅入深的编程例题和作业逐渐掌握指针。

学习C语言后,再学习C++,存在面向过程思想向面向对象思想转变的困难,造成学完C++还不能理解C++特点,也不能正确使用C++进行程序设计。本课程通过用C++语言改写前面C语言案例,对比理解二者的区别,体会C++的优势。然后用一个简单的图形界面游戏逐渐扩展功能,使其具有可玩性,功能的增加,使得C语言完成难度增加,而C++的类、继承、派生等面向对象技术却轻松实现这个游戏。通过编程实战掌握C++语言的优势,通过实际案例掌握面向对象思想,解决学而不知何用的困惑。


更新提示: 1. 2018年9月后,上线的视频是全部重新录制,解决了以前视频声音有杂音的问题。2. 解决了教师授课声音问题。3. 根据同学们的反馈,本次所有视频和作业,测验,都一次性发布,供同学们自由选择时间学习。开学初期同学们时间比较充分,可以多学习内容,尽快完成作业,测验和考试。也方便后期才加入课程的同学不能参加作业,测验的问题。4. 首页的评价请参考2018年9月之后的评价,这个是新录制视频的评价,其他评价是以前声音比较差的视频的评价。5. 我们另外提供QQ群进行实时答疑,码图(电子科技大学的在线OJ)辅助同学们进行编程训练。

授课目标

本课程将使学生掌握程序设计基本思想,掌握自顶向下设计和面向对象开发技术,能够熟练应用C和C++语言进行程序设计。了解计算机及其技术基础,具有良好的程序开发组织管理、协作能力;掌握计算机科学基本思维与基本方法;初步具备应用计算机进行软件开发的能力。

课程大纲
预备知识

计算机的数据存储方式及进制转换

参考资料

《C与C++程序设计语言》

戴波 陈文宇 丘志杰 卢光辉

北京大学出版社,2019.5

注:有同学咨询教材哪里可以买,查询到京东有售

本教材2018年1月出版,2019年5月修订后重印,欢迎购买新版教材。也请同学们能够及时反馈教材的问题和不足,共同将教材建设的更好!


常见问题
  1. 提醒1:本课程老师的普通话不够标准,对于普通话要求比较高的同学,建议不要选择本课程。
  2. 提醒2:期末同学们都很忙,因此我们的结束时间提前到2024年12月15日,请同学们尽早完成各章的作业和考试。
  3. 提醒3:同学们如果在上课时间内没有时间学习,可以先加入课程,假期学习。我们课程只要加入就可以随时回看学习。但如果没有在开课期间加入,则只有等下次开课才能够加入观看视频了。我们的开课时间是一年2次:春节一次,秋季一次。
  4. 提醒4:我们课程是认证课程,任何人都可以学习,但是只有认证学员才能够拿到证书。请需要证书的同学在课程结课之前先认证,成为认证学员之后,才能够保证课程结课拿到证书。
  5. 一般的开发环境使用scanf,visual studio 2015-visual studio 2022都要求使用scanf_s函数,目的是为了增加安全性。scanf_s在很多开发环境当中并不支持,同学们需要注意使用其他开发环境,包括我们mooc的作业和考试提交平台,都需要使用scanf。采用Visual studio 开发环境的最重要原因是因为是商业工具,调试功能特别强大好用,对于后续windows开发也具有衔接性。同学们可以使用宏定义解决scanf在vs开发环境下报错的问题。
  6. c,c++的函数返回类型可以任意,但main函数比较特殊,建议返回int,虽然vs2015开发环境可以返回void类型,且编程也更方便,但从安全性考虑和可移植性考虑,使用int main(...)比较好。
  7. 开发工具devc++也挺好用,还有大量的各种开发工具。我们课程以vs2015为例,我们的代码在visual studio各种版本都能够正常运行,但vs系列功能繁多,占用空间多,同学们可以自由选择不同版本。而我们作业系统采用爱课程网提供的在线编辑系统,可以实时得到分数,这个系统不是vs开发环境,如果是C语言,选用的是GCC编译器,如果是C++,选用的是G++编译器。因此还请同学们采用标准c或者C++函数。
  8. 本课程的环境噪声问题是否解决?已经全部重新录制,包括源代码编程演示和基础理论内容,都全部进行了重新录制更新,欢迎提出意见便于进一步改进。
  9. 有任何问题欢迎讨论区或者QQ群提问,老师和助教有空就会答疑。
  10. Q : 《程序设计基础》课程为什么要一次性分布,而不是按周发布?

A :  第一次开课是按周分布,发现这种发布方式的最大优点是强迫同学们按照老师的进度要求进行学习,同时也是最大的缺点,原因如下:

(1). 开学时间比较多,学习较轻松,很多同学想用更多时间学习慕课课程,但由于慕课课程按周分布,不能根据自己的时间灵活安排学习进度,所以前期的空余时间不能得到有效利用。从半期开始,功课难度加大,作业比较多,时间非常紧张,因此不少同学逐渐放弃慕课的学习。所以,我们开学一次性把所有内容分布出来,您可以根据自己的时间灵活安排学习进度,对于时间管理困难的同学,可以参考我们教学大纲中每章的学习时间建议进行学习。

(2). 我们课程是半开放的,也就是只要加入课程,哪怕课程已经结束,您还可以回看视频,但不能在讨论区提问和做作业及参加考试。但您可以加入我们QQ群继续提问,同学们和老师都在线的,有空都会答疑。加上我们的课程(视频,作业,考试)都是提前一次性分布,所以您可以灵活的利用开学和假期时间进行学习及复习。