《程序设计基础》教学大纲 课程名称(汉):《程序设计基础》 课程名称(英):Programming Fundamentals 课程代码:262101031 课程类型:专业基础课程模块 适用对象:自动化、机器人工程、人工智能专业大一年级本科生 学时/学分:80学时(理论48学时、实验32学时)/4学分 先修课程: 方案版本:2021版 一、课程简介 C语言有丰富灵活的数据类型与运算,方便构建实用的数据结构,其简洁高 效的语法表达,清晰的程序结构,能方便描述各类算法与编程思想,是现代很多 高级编程语言的基础,本课程是为自动化、机器人工程、人工智能专业等本科生 专业设计的一门学科基础教育课程,是学生掌握程序设计的必修课程。 通过本课程的学习,使学生掌握结构化的程序设计方法,模块化的分工机制, 软件编制的原理和流程;培养学生严谨的程序设计思想、灵活的计算思维方式及 较强的动手能力:并以此为基础,拓宽专业研究思路,让学生逐渐掌握其他软件 的开发使用方法。 二、课程的教学目标 课程目标1: (1)理解模块化、结构化程序设计思想: (2)掌握C语言的数据类型、语句格式、函数结构等基本内容; (3)熟悉C语言的环境和常规调试方法: 课程目标2: (1)能用C语言进行结构化的程序设计; (2)解决一些简单的应用问题: (3)以此为工具进一步研究一些控制手段和控制技术: 课程目标3: (1)初步具备辩证思维的能力: (2)具有热爱科学,实事求是的学风和创新意识、创新精神: (3)加强职业道德意识、安全规范意识
《程序设计基础》教学大纲 课程名称(汉):《程序设计基础》 课程名称(英):Programming Fundamentals 课程代码:262101031 课程类型:专业基础课程模块 适用对象:自动化、机器人工程、人工智能专业大一年级本科生 学时/学分:80 学时(理论 48 学时、 实验 32 学时)/4 学分 先修课程: 方案版本:2021 版 一、课程简介 C 语言有丰富灵活的数据类型与运算,方便构建实用的数据结构,其简洁高 效的语法表达,清晰的程序结构,能方便描述各类算法与编程思想,是现代很多 高级编程语言的基础,本课程是为自动化、机器人工程、人工智能专业等本科生 专业设计的一门学科基础教育课程,是学生掌握程序设计的必修课程。 通过本课程的学习,使学生掌握结构化的程序设计方法,模块化的分工机制, 软件编制的原理和流程;培养学生严谨的程序设计思想、灵活的计算思维方式及 较强的动手能力;并以此为基础,拓宽专业研究思路,让学生逐渐掌握其他软件 的开发使用方法。 二、课程的教学目标 课程目标 1: (1)理解模块化、结构化程序设计思想; (2)掌握 C 语言的数据类型、语句格式、函数结构等基本内容; (3)熟悉 C 语言的环境和常规调试方法; 课程目标 2: (1)能用 C 语言进行结构化的程序设计; (2)解决一些简单的应用问题; (3)以此为工具进一步研究一些控制手段和控制技术; 课程目标 3: (1)初步具备辩证思维的能力; (2)具有热爱科学,实事求是的学风和创新意识、创新精神; (3)加强职业道德意识、安全规范意识
三、课程目标对自动化专业毕业要求的支撑关系 毕业要求 毕业要求指标点 课程目标 支撑 权重 工程知识 1、2 使用现代化工具 1、2、3 0.08 四、教学内容及其基本要求 对应课程 序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 目标 【学习目的和要求】 1.知识掌握 理解学习C语言的意义,明确学习目的。 2.能力培养:软件设计的整个过程。 3.素质要求:黑客精神、网络道德、信息安全。 4.教学方法 兴趣驱动和案例驱动教学,演示“九九乘法 1 为什么要学C语言 表”、“猜数游戏”两个程序(游戏),通过演示, 课程目标1 调动学生的学习兴趣和主动性:结合实例,讲解 VC+6.0环境的使用方法:介绍编程的基础知识及 部分数据类型,以及整个软件开发的过程。 【重点】VC+6.0编程环境的使用。 【难点】如何带动学生的学习兴趣,让他们把该课 程当作玩游戏一样来学。 【学习目的和要求】 1.知识掌握:常量与变量、基本的数据类型、简单 的屏幕输出。 2.能力培养:培养学生的计算思维,计算机与人的 表达方式的不同。 2 C数据类型 课程目标1 3.素质要求:生活中的问题如何用计算机解决。 4.教学方法 赋值号的使用,与数学公式中的区别 在VC环境中编制小程序,完成交换两个变量的值
三、课程目标对自动化专业毕业要求的支撑关系 毕业要求 毕业要求指标点 课程目标 支撑 权重 工程知识 1、2 使用现代化工具 1、2、3 0.08 四、教学内容及其基本要求 序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 1 为什么要学 C 语言 【学习目的和要求】 1.知识掌握 理解学习 C 语言的意义,明确学习目的。 2.能力培养:软件设计的整个过程。 3.素质要求:黑客精神、网络道德、信息安全。 4.教学方法 兴趣驱动和案例驱动教学,演示“九九乘法 表”、“猜数游戏”两个程序(游戏),通过演示, 调动学生的学习兴趣和主动性;结合实例,讲解 VC++6.0 环境的使用方法;介绍编程的基础知识及 部分数据类型,以及整个软件开发的过程。 【重点】VC++6.0 编程环境的使用。 【难点】如何带动学生的学习兴趣,让他们把该课 程当作玩游戏一样来学。 课程目标 1 2 C 数据类型 【学习目的和要求】 1.知识掌握:常量与变量、基本的数据类型、简单 的屏幕输出。 2.能力培养:培养学生的计算思维,计算机与人的 表达方式的不同。 3.素质要求:生活中的问题如何用计算机解决。 4.教学方法 赋值号的使用,与数学公式中的区别 在 VC 环境中编制小程序,完成交换两个变量的值, 课程目标 1
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 从而理解C语言的计算过程。 【重点】计算规则与数学中的区别。 【难点】改变以往的思维习惯,按计算机思维解决 问题。 【学习目的和要求】 1.知识掌握:算数运算符的种类、算数表达式的计 算规则。 2.能力培养: 培养学生的计算思维,计算机与人的表达方式的不 同。 简单的算术运算 3 3.素质要求:理解数学计算中公式书写习惯与计算 课程目标1 和表达式 机表达习惯的不同。 4.教学方法 提问部分同学,回答预习题目: 【重点】计算规则与数学中的区别。 【难点】改变以往的思维习惯,按计算机思维解决 问题。 【学习目的和要求】 课程目标 1、2 1.知识掌握:键盘输入与结果输出。 2.能力培养:人机交流的互动式操作。 键盘输入和屏幕 4 输出 3素质要求:用固定格式输入输出,理解计算机的 严谨格式,何处必须遵守,何处可自己自由发挥。 4.教学方法:
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 从而理解 C 语言的计算过程。 【重点】计算规则与数学中的区别。 【难点】改变以往的思维习惯,按计算机思维解决 问题。 3 简单的算术运算 和表达式 【学习目的和要求】 1.知识掌握:算数运算符的种类、算数表达式的计 算规则。 2.能力培养: 培养学生的计算思维,计算机与人的表达方式的不 同。 3.素质要求:理解数学计算中公式书写习惯与计算 机表达习惯的不同。 4.教学方法 提问部分同学,回答预习题目; 【重点】计算规则与数学中的区别。 【难点】改变以往的思维习惯,按计算机思维解决 问题。 课程目标 1 4 键盘输入和屏幕 输出 【学习目的和要求】 1.知识掌握:键盘输入与结果输出。 2.能力培养:人机交流的互动式操作。 3.素质要求:用固定格式输入输出,理解计算机的 严谨格式,何处必须遵守,何处可自己自由发挥。 4.教学方法: 课 程 目 标 1、2
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 引入三个现实生活中的实例,说明三种结构的 特点: 【重点】输入输出格式的语法结构。 【难点】输入格式的设置。 【学习目的和要求】 课程目标 1、2、3 1.知识掌握: 熟练掌握if语句三种形式(if、if-else、if-else if)的特点及使用方法:掌握switch语句的结构、 特点及用法:掌握分支结构程序设计的基本方法, 能熟练设计分支结构程序。 2.能力培养: 5 选择控制结构 培养学生的选择思维,习惯计算机的表达方式。 3.素质要求:生活中的选择问题如何用计算机解 决。 4.教学方法 讲解“二者选一”的简单f结构的用法。 【重点】单边if:双边if:多边if:switch结构。 【难点】改变以往的思维习惯,按计算机的选择思 维和数学的算法解决问题。 【学习目的和要求】 课程目标 1、2、3 1.知识掌握:熟练掌握三种循环控制语句(while、 6 循环控制结构 do while、for)的结构特点及使用方法:掌握循 环程序设计方法,能利用三种循环控制语句设计循 环程序:掌握break和continue语句的用法:掌 握多重循环程序的结构特点,能设计简单的二重循
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 引入三个现实生活中的实例,说明三种结构的 特点: 【重点】输入输出格式的语法结构。 【难点】输入格式的设置。 5 选择控制结构 【学习目的和要求】 1.知识掌握: 熟练掌握 if 语句三种形式(if、if-else、if-else if)的特点及使用方法;掌握 switch 语句的结构、 特点及用法;掌握分支结构程序设计的基本方法, 能熟练设计分支结构程序。 2.能力培养: 培养学生的选择思维,习惯计算机的表达方式。 3.素质要求:生活中的选择问题如何用计算机解 决。 4.教学方法 讲解“二者选一”的简单 if 结构的用法。 【重点】单边 if;双边 if;多边 if;switch 结构。 【难点】改变以往的思维习惯,按计算机的选择思 维和数学的算法解决问题。 课程目标 1、2、3 6 循环控制结构 【学习目的和要求】 1.知识掌握:熟练掌握三种循环控制语句(while、 do while、for)的结构特点及使用方法;掌握循 环程序设计方法,能利用三种循环控制语句设计循 环程序;掌握 break 和 continue 语句的用法;掌 握多重循环程序的结构特点,能设计简单的二重循 课程目标 1、2、3
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 环程序。 2.能力培养:通过多次重复计算解决实际问题。 3.素质要求:计算机的优势在于运算速度快,反复 的重复计算只是消耗内存和时间,计算机性能许可 的范围内,循环均可实现。 4.教学方法 以1+2++10为案例,讲解while语句、for 语句、do.....while循环的语法结构和使用中需注 意的问题。 应用举例:穷举法、公式计算、素数问题等。 【重点】三种循环结构:for中三个表达式的计算 顺序:循环嵌套;break与continue。. 【难点】空语句的误用:复合语句的使用:素数问 题,变形的素数问题求解,实质是利用循环的语法 知识+break实现。 【学习目的和要求】 课程目标 1、2 1.知识掌握: 掌握自定义函数的一般结构及函数的定义方法:掌 握形参、实参、函数原型等重要概念。掌握函数声 明、函数调用的一般方法:了解局部变量、全局变 7 函数 量和变量的存储类型的概念,熟悉auto型和static 型局部变量的特点和用法:熟悉函数嵌套、函数递 归的概念。 2.能力培养: 学会模块化程序设计的思想
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 环程序。 2.能力培养:通过多次重复计算解决实际问题。 3.素质要求:计算机的优势在于运算速度快,反复 的重复计算只是消耗内存和时间,计算机性能许可 的范围内,循环均可实现。 4.教学方法 以 1+2+……+10 为案例,讲解 while 语句、for 语句、do……while 循环的语法结构和使用中需注 意的问题。 应用举例:穷举法、公式计算、素数问题等。 【重点】三种循环结构; for 中三个表达式的计算 顺序;循环嵌套;break 与 continue。 【难点】空语句的误用;复合语句的使用;素数问 题,变形的素数问题求解,实质是利用循环的语法 知识+break 实现。 7 函数 【学习目的和要求】 1.知识掌握: 掌握自定义函数的一般结构及函数的定义方法;掌 握形参、实参、函数原型等重要概念。掌握函数声 明、函数调用的一般方法;了解局部变量、全局变 量和变量的存储类型的概念,熟悉auto型和static 型局部变量的特点和用法;熟悉函数嵌套、函数递 归的概念。 2.能力培养: 学会模块化程序设计的思想。 课程目标 1、2
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 3.素质要求:大事化小、小事化了的思想(事无巨 细、事必躬亲如诸葛亮,是不可取的,借此引出模 块化的思想)。 4.教学方法 标准函数(例如:数学函数sqrt(x),由系 统提供,编程时写上#include(math.h>后就可以 直接使用: 局部变量、全局变量及其不同,动态存储变量 与静态存储变量以及它们的使用方法。 【重点】参数值传递和地址传递的区别及本质。 【难点】函数的嵌套和递归。 【学习目的和要求】 课程目标 1、2 1.知识掌握: 熟练掌握一维数组的定义、初始化及其使用方法: 掌握二维数组的定义、初始化及其使用方法:掌握 字符数组的定义、初始化及其使用方法:了解一维 数组和二维数组在计算机中的存储结构:掌握一维 数组的编程应用和二维数组的简单编程应用。 8 数组 2.能力培养:更加方便快捷的处理实际问题。 3.素质要求:生活中的排队问题,如何用计算机实 现在内存中相邻,并且能够顺利找到下一个元素? 循环+数组的解决方案。 4.教学方法: 以数字通讯录为例讲解一维数组和二维数组 的定义、数组元素的引用、数组的初始化及应用举
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 3.素质要求:大事化小、小事化了的思想(事无巨 细、事必躬亲如诸葛亮,是不可取的,借此引出模 块化的思想)。 4.教学方法 标准函数(例如:数学函数 sqrt(x)),由系 统提供,编程时写上#include 后就可以 直接使用; 局部变量、全局变量及其不同,动态存储变量 与静态存储变量以及它们的使用方法。 【重点】参数值传递和地址传递的区别及本质。 【难点】函数的嵌套和递归。 8 数组 【学习目的和要求】 1.知识掌握: 熟练掌握一维数组的定义、初始化及其使用方法; 掌握二维数组的定义、初始化及其使用方法;掌握 字符数组的定义、初始化及其使用方法;了解一维 数组和二维数组在计算机中的存储结构;掌握一维 数组的编程应用和二维数组的简单编程应用。 2.能力培养:更加方便快捷的处理实际问题。 3.素质要求:生活中的排队问题,如何用计算机实 现在内存中相邻,并且能够顺利找到下一个元素? 循环+数组的解决方案。 4.教学方法: 以数字通讯录为例讲解一维数组和二维数组 的定义、数组元素的引用、数组的初始化及应用举 课程目标 1、2
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 例: 【重点】函数传递的机制,地址传递和值传递的区 别:数组概念的理解和运用。 【难点】数组中的计算问题。 【学习目的和要求】 课程目标1 1.知识掌握: 掌握指针和指针变量的概念、掌握指针变量的定 义、赋值方法,熟练使用指针访问简单变量:掌握 指针与字符串的关系:掌握用简单指针变量作函数 参数及传递与调用方法 2.能力培养: 加深学生对内存存储机制的理解和运用。 9 指针 3.素质要求:内存地址的理解,地址如宾馆房间号, 内容如住在里面的客人。 4.教学方法 找学生回答预习题目,由预习题引出内存地址和指 针的概念。 【重点】指针的本质:按值传递与按地址传递的区 别:指针做参数的使用。 【难点】指针概念的理解和灵活运用。 【学习目的和要求】 课程目标1 1.知识掌握: 10 字符串 掌握C语言处理字符串的方法,一是用字符数组, 二是用字符指针
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 例; 【重点】函数传递的机制,地址传递和值传递的区 别;数组概念的理解和运用。 【难点】数组中的计算问题。 9 指针 【学习目的和要求】 1.知识掌握: 掌握指针和指针变量的概念、掌握指针变量的定 义、赋值方法,熟练使用指针访问简单变量;掌握 指针与字符串的关系;掌握用简单指针变量作函数 参数及传递与调用方法 2.能力培养: 加深学生对内存存储机制的理解和运用。 3.素质要求:内存地址的理解,地址如宾馆房间号, 内容如住在里面的客人。 4.教学方法 找学生回答预习题目,由预习题引出内存地址和指 针的概念。 【重点】指针的本质;按值传递与按地址传递的区 别;指针做参数的使用。 【难点】指针概念的理解和灵活运用。 课程目标 1 10 字符串 【学习目的和要求】 1.知识掌握: 掌握 C 语言处理字符串的方法,一是用字符数组, 二是用字符指针。 课程目标 1
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 2.能力培养: 利用字符串解决名字、图书等存储问题。 3.素质要求:姓名如何存储? 4.教学方法 以通讯录案例为切入点,引入字符串处理问题。 【重点】一个和多个串的存储与提取。 【难点】串的排序问题。 【学习目的和要求】 课程目标 1、2 1.知识掌握: 掌握指向一维数组的指针变量的定义方法,熟练使 用指针变量访问一维数组元素:了解指针和二维数 组的关系,掌握用指针表示二维数组元素的方法: 掌握指针数组,用以处理多个字符串:了解动态数 组的概念及使用。 2.能力培养: 11 指针和数组 培养学生灵活运用指针解决数组问题。 3.素质要求:一个问题可有不同解决方案,优劣对 比。 4.教学方法 围绕前面课程中同学己经熟悉的案例,讲解指针法 和下标法两种引用数组元素的区别和各自的优缺 点:利用前面的字符串排序案例,讲解指针数组的 使用及其优势。 【重点】指针法和下标法的区别:指针数组处理多
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 2.能力培养: 利用字符串解决名字、图书等存储问题。 3.素质要求:姓名如何存储? 4.教学方法 以通讯录案例为切入点,引入字符串处理问题。 【重点】一个和多个串的存储与提取。 【难点】串的排序问题。 11 指针和数组 【学习目的和要求】 1.知识掌握: 掌握指向一维数组的指针变量的定义方法,熟练使 用指针变量访问一维数组元素;了解指针和二维数 组的关系,掌握用指针表示二维数组元素的方法; 掌握指针数组,用以处理多个字符串;了解动态数 组的概念及使用。 2.能力培养: 培养学生灵活运用指针解决数组问题。 3.素质要求:一个问题可有不同解决方案,优劣对 比。 4.教学方法 围绕前面课程中同学已经熟悉的案例,讲解指针法 和下标法两种引用数组元素的区别和各自的优缺 点;利用前面的字符串排序案例,讲解指针数组的 使用及其优势。 【重点】指针法和下标法的区别;指针数组处理多 课程目标 1、2
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 个字符串的用法。 【难点】指针指向二维数组,行指针的概念理解, 动态数组。 【学习目的和要求】 课程目标 1、2、3 1.知识掌握: 掌握结构体的概念和特点:熟练定义结构体数据类 型,掌握结构体变量的定义及初始化方法:了解结 构体数组的特点,能使用结构体数组解决简单问 题:掌握结构体指针的特点;掌握共用体的概念, 熟悉共用体类型和共用体变量的定义和使用方法。 2.能力培养: 培养学生自己构造数据类型的能力,灵活解决实际 问题的能力。 12 结构体与共用体 3.素质要求:当没有现成的工具可以用时,学会自 己制作工具:自己构造适合问题处理的数据类型。 4.教学方法 以通讯录为例,进一步完善其表达数据的方式。围 绕表达一个人完整信息的问题,讲解自定义数据类 型,根据需要,创造一种新的数据类型。 【重点】结构体变量、结构体数组、结构体指针的 用法。 【难点】思维的转换,自己定义一种数据类型,而 不是变量! 【学习目的和要求】 课程目标 13 文件操作 1.知识掌握: 1、2
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 个字符串的用法。 【难点】指针指向二维数组,行指针的概念理解, 动态数组。 12 结构体与共用体 【学习目的和要求】 1.知识掌握: 掌握结构体的概念和特点;熟练定义结构体数据类 型,掌握结构体变量的定义及初始化方法;了解结 构体数组的特点,能使用结构体数组解决简单问 题;掌握结构体指针的特点;掌握共用体的概念, 熟悉共用体类型和共用体变量的定义和使用方法。 2.能力培养: 培养学生自己构造数据类型的能力,灵活解决实际 问题的能力。 3.素质要求:当没有现成的工具可以用时,学会自 己制作工具;自己构造适合问题处理的数据类型。 4.教学方法 以通讯录为例,进一步完善其表达数据的方式。围 绕表达一个人完整信息的问题,讲解自定义数据类 型,根据需要,创造一种新的数据类型。 【重点】结构体变量、结构体数组、结构体指针的 用法。 【难点】思维的转换,自己定义一种数据类型,而 不是变量! 课程目标 1、2、3 13 文件操作 【学习目的和要求】 1.知识掌握: 课程目标 1、2
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 了解文件的概念,了解ASCII码文件和二进制文件: 了解文件缓冲区的概念,熟悉文件数据类型和文件 指针的概念,熟悉文件指针的使用方法;熟悉文件 读写方式的概念,熟悉基本的文件操作函数:熟悉 文件数据块读写的概念及操作方法。对该门课程内 容总结重点知识,加深理解和运用。 2.能力培养: 培养学生灵活编程,能够用文件实现存储和数据提 取,更加灵活的使用已有数据并对更新数据进行保 存。 3.素质要求:如何长期保留程序的运行结果而不丢 失?依靠文件的输入和输出实现。 4.教学方法 找学生回答预习题目,从中引出流、文件的概念, 讲解二进制文件和文本文件的区别。使学生了解文 件的概念,ASCII码文件和二进制文件: 【重点】打开、关闭、读写函数的参数使用。 【难点】二进制存储的概念较为抽象,不容易理解。 五、各教学环节及学时分配 教学环节及学时 知识 讲 模块 教学内容 课 习题 讨论 实验(实践) 合计
序号 教学内容 教学要求(包括重点难点、教学方法、学生掌握的程度等) 对应课程 目标 了解文件的概念,了解 ASCII 码文件和二进制文件; 了解文件缓冲区的概念,熟悉文件数据类型和文件 指针的概念,熟悉文件指针的使用方法;熟悉文件 读写方式的概念,熟悉基本的文件操作函数;熟悉 文件数据块读写的概念及操作方法。对该门课程内 容总结重点知识,加深理解和运用。 2.能力培养: 培养学生灵活编程,能够用文件实现存储和数据提 取,更加灵活的使用已有数据并对更新数据进行保 存。 3.素质要求:如何长期保留程序的运行结果而不丢 失?依靠文件的输入和输出实现。 4.教学方法 找学生回答预习题目,从中引出流、文件的概念, 讲解二进制文件和文本文件的区别。使学生了解文 件的概念,ASCII 码文件和二进制文件; 【重点】打开、关闭、读写函数的参数使用。 【难点】二进制存储的概念较为抽象,不容易理解。 五、各教学环节及学时分配 知识 模块 教学内容 教学环节及学时 讲 授 课 习 题 课 讨 论 课 实 验 ( 实 践 ) 合 计