吉林大学

图片
课程概述

       荷兰著名计算机学家Edsger W. Dijkstra曾说过,“我们所使用的工具深刻地影响着我们的思维方式和思维习惯,进而也将深刻地影响着我们的思维能力”。 计算机技术的普及已经深刻影响了现代人类生活的各个方面。“计算思维”就如同读、写、算能力一样,是所有人必须具备的思维能力。

       本课程目标是使您具有初步的计算思维和程序设计能力,从零基础到能编写小规模程序。课程以实际应用为背景,面向编程实践和求解问题能力的培养,以“案例驱动”不断引入相关知识点,随着案例的不断深入,将程序设计各相关知识点展现在读者面前,形成一条完整的知识链条。在任务驱动式的叙述过程中,由浅及深、循序渐进启发读者逐渐编写规模逐渐增大的程序,并将程序设计思想和方法在不知不觉中融入程序编写过程中,培养“计算思维”能力。

       本课程注重思维训练,强调对思维过程的描述。课程中所配大量例题都使用PAD图描述程序逻辑结构,而非直接使用代码讲解。相比传统的流程图和NS图等,PAD图具有可见性好、结构唯一、易于编制、易于检查和易于修改等优点,更适合讲述程序设计;同时也避免了直接使用代码讲解算法的呆板和枯燥。使用PAD图可以帮助您理解程序设计的思维方式、培养计算思维能力;最终达到举一反三,融会贯通,掌握程序设计的思想和方法。

       C语言作为当代最优秀的程序设计语言之一,它的优点远远超过了它的缺点。经验表明,程序设计人员一旦学会使用C语言之后,就会对它爱不释手;而且很多语言都是在它的基础上发展起来的;所以C语言当之无愧地成为思想交流的首选载体语言。

       本课程以C语言作为载体语言,介绍计算思维方法和程序设计基本思想,但并不拘泥于C语言本身的语法,对C语言本身采取了“有所取、有所不取”的策略。对于那些常用的语言成分,直接与讲述程序设计方法有关的语言成分,穿插在程序设计过程中详细准确的介绍。对于那些与程序设计方法联系不太紧要,但是还常用的部分,放在最后简单介绍。对于那些与讲述程序设计方法关系不太大,也不常用的部分则根本不涉及。这样做的目的是使您在学习程序设计之后,不受编程语言限制,灵活应用这些思想和方法。

       综上,经过本课程的学习后,您会掌握基本的程序设计思想和方法,具有初步的计算思维能力;举一反三,不受语言限制,编写小规模程序。

授课目标
您会掌握基本的程序设计思想和方法,具有初步的计算思维能力;举一反三,不受语言限制,编写小规模程序。
证书要求

评分按照单元测验、单元作业、期末考试和课堂活跃度的情况进行,所占比例分别是30%、40%、20%、10%。

‍评分高于 60 分颁发普通证书;高于85分颁发优秀证书。


预备知识

授课大纲

第1周课程:绪论&顺序程序设计(1/2)

    第一章  绪论 

        1.1  鸡兔同笼—计算

        1.2  算法

        1.3  程序

    第二章  顺序程序设计

        2.1  求绿化带宽度——简单程序

        2.2  基本符号

第2周课程:顺序程序设计(2/2)

         2.3  数据

         2.4  语句

         2.5 表达式

         2.6  顺序控制结构

        2.7  数据类型

        2.8  输入输出

第3周课程:分支程序设计&循环程序设计(1/2)

    第三章  分支程序设计

        3.1  判断成绩是否及格——双分支程序设计

        3.2  成绩加上获奖信息——单分支程序设计

        3.3  逻辑判断——布尔类型

        3.4  获奖分等级——多分支程序设计

    第四章 循环程序设计

        4.1  计算平均成绩——循环程序

第4周课程:循环程序设计(2/2)

        4.2  计算全班每人平均成绩—多重循环

        4.3  程序设计实例

第5周课程;函数&数组(1/3)

    第五章  模块化程序设计——函数

        5.1  求给定三角形重心——模块化程序设计

        5.2  函数

    第六章  批量数据组织——数组

        6.1  成绩统计——数组类型

        6.2  统计多科成绩——多维数组

        6.3  程序设计实例

第6周课程:数组(2/3)

        6.4  线性表——分类与检索

        6.5  带学号的成绩排序——数组初值

        6.6  表示姓名——字符串

第7周课程:数组(3/3)&指针(1/2)

        6.7  类型定义

        6.8  线性表-栈和队列

    第七章  指针

        7.1  指针与变量

第8周课程:指针(2/2)&结构体

        7.2  指针操作

        7.3  指针与数组

        7.4  指针与字符串

    第八章   表单数据组织——结构体

        8.1  成绩单管理

        8.2  保存成绩单——结构体

        8.3  程序设计实例

第9周课程:再论函数 & 递归程序设计

    第九章  再论函数

        9.1  参数

        9.2  函数值

    第十章 递归程序设计

        10.1 递归程序设计

        10.2 程序设计实例

第10周课程:文件

    第十一章 外部数据组织——文件

        11.1  重新考虑户籍管理问题——文件

        11.2  文件概述

        11.3  打开、关闭文件

        11.4  I/O 操作

第11周课程:程序开发&动态数据结构(1/2)

    第十二章  程序开发

        12.1 自顶向下逐步求精

        12.2 原则

        12.3 风格

    第十三章  动态数据组织

        13.1  保存实数序列——动态数据结构

        13.2  动态变量 

第12周课程:动态数据结构(2/2)

        13.3  链表

        13.4  程序设计实例

第13-15周:复习与期末考试

参考资料

课程网站:http://cc.jlu.edu.cn/programming.html

教材:《程序设计基础》(第二版)张长海、陈娟,2013年9月 北京 高等教育出版社

习题练习: 《程序设计基础习题集》 张长海、陈娟、兰书梅, 2008年7月 北京 清华大学出版社 

常见问题
  • Q1:如何学好该课程?

  • A1:“程序设计基础”是实践性极强的课程,想要学好就必须上机实践。首先通过视频学习,在开发环境中演练课堂中的例题;然后,练习编写作业中的习题,最后,根据自己的喜好,选取主讲教材和习题练习册中的题目进行练习。如果您还有参加ACM程序设计大赛的打算,还可以去网上各类ACM在线评测系统刷题,得到进一步的提高。有关ACM程序设计大赛的内容,请查看百度百科。

  • Q2:使用什么样的C语言开发环境?

  • A2:Turbo C、VC++、DEV C++、Code::Blocks 都可以。本课程所涉及的都是基本的程序设计思想和方法,对开发环境并没有太多的依赖。本课程主讲教材,采用的是微软VC++6.0开发环境。大家可以很方便地通过百度(www.baidu.com )或谷歌(www.google.com.hk) 搜索到所需开发环境的软件。