李晓昀 阳小华 刘志明 马淑萍 余颖
摘要:大学计算机作为现代大学通识教育基础性课程之一,是培养大学生信息素养和科学思维方式的入门课程。文章从多样性、相关性、一体性、结构性、有序性和动态性思维培养的角度出发。一一说明针对非计算机专业学生的程序设计课程教学内容如何设计,如何将思维训练融合到知识教学每个环节,潜移默化地对学生进行思维意识及思维技能的培养与训练。
关键词:程序设计;系统思维;思维训练;多样性;相关性;一体性
引言
现代教育是以培养具有自主思维、独立解决问题能力及创新能力的人才为目标。培养人的科学思维能力已成为教育的核心内容。知识教学转向思维教学已成必然之势。系统思维作为科学思维中的一种重要思维方式,一直以来都受到各类学科的重视。CNKI检索显示,近十年来,有关系统思维培养的文献高达35万篇,涵盖了经济、哲学、医学、语言学、建筑学等多个学科,平均每个学科有数千甚至上万篇相关文献。系统思维是将对象视为一个系统来思考,关键是要运用系统的概念。中国人民大学苗东升教授发表了一系列论文论述系统思维。他指出系统是由多个组成部分相互联系形成的一个统一体,具有多样性、相关性和一体性3个基本属性,同时派生出整体性、有序性、动态性及不确定性等其他属性。例如,交通控制系统是一个典型的复杂系统,以其中红绿灯时长的设置为例,红绿灯的时长并非每一个路口都一样。交通灯时长设置不仅要考虑该路口各方向车流量,更要考虑整个大的系统内不同时间点的车流量、周边路况,甚至节假日、气象条件等要素。
当然,非计算机专业学生不必开发如此复杂的系统,但即使是求解一个简单实际问题,运用系统概念来分析、求解问题的思维方式却是一样的。程序设计课程的教学方式就是有意识地设计教学内容,将思维训练融合到知识教学的每个环节中,潜移默化地对学生进行思维意识及思维技能的培养与训练。由于程序设计自身的特殊性,它对系统思维中多样性、相关性、一体性、结构性、有序性和动态性这几个方面的思维训练有极大的帮助。
1多样性思维培养
多样性是系统思维的基本要求。系统多样性包含两个要素,一是应有多个组成元素,二是元素之间应有差异性。如果仅仅只有多个组成元素,彼此没有明显差异,则无法体现系统思维的价值。对学生多样性思维的培养,要求所开设课程必须具备这两个基本要素,而程序设计课程则恰恰完全符合多样性的两个要求。
以C语言程序设计为例。C语言有许多基本知识点,例如数据类型、程序结构、算法等,均从不同的角度体现了多样性原则。C语言中最基本的概念是变量。变量根据存储数据的不同定义为不同数据类型。生活中数据多种多样,如整数、小数、字符,还有一些具有复杂的对象,例如学生个人信息、考试成绩等,为处理这些不同类型的数据,C语言提供了多样数据类型,如整型、实型、字符型、结构体、指针、数组及枚举型等。在求解实际问题时,除了要分析清楚数据对象特征,还要了解各种数据类型之间的差异及其使用方法,并通过大量练习,掌握并灵活应用这些数据类型,这对于训练学生多样性思维有极大帮助。
另外,多样性还体现在求解问题的算法设计中。通常解决同一个问题会有不同算法。算法设计是程序设计的核心。讲解循环结构时,以求解1至100的和为例,引导学生思考不同算法。如直接求和:1+2+3+…+100;采用高斯计算法,即:(0+100)+(1+99)+(2+98)+…+(49+51)+50=(50×100)+50;采用等差数列求和公式,即:100(1+100)/2。分析三个算法的特点,引导学生学会利用已有知识,学会从多个角度分析问题。教学过程中,鼓励学生打开思路、从不同的角度思考,采用不同的类型、结构实现,都能解决问题。同时,引导学生进一步分析各个算法的差异,不仅能够巩固知识点学习,也能够加深学生对不同数据类型、程序结构优缺点的认识,这有助于学生提高独立思考能力、培养多样性思维。
2相关性思维培养
系统的相关性是指系统中的多个元素必然是相互关联、相互作用、相互交往的。考察各个组成部分之间、变量之间的相互关系,这是系统思维的基本要求。
C语言是一门模块化程序设计语言。在求解一个复杂问题时,一般采用逐步分解、分而治之的方法,即将一个大问题分解成若干相对较易求解的小问题,再分别进行求解。学生在编写一个复杂程序时,是将整个程序的功能划分为若干功能较为单一的程序模块,即用函数实现每个单一功能。然后再将所有的函数模块像搭积木一般,组合起来。因此,C语言程序中,函数才是程序的基本组成单位,也是相关性在程序设计中的典型体现。
函数有其独立性,但却不是孤立的。只有被其他程序调用的函数才具有生命力,这使得在学习函数时,不仅要分析函数功能的实现过程,更要着眼于函数与程序其他部分之间的调用、。被调用关系。对于调用函数而言,无须了解函数功能实现细节,但应了解如何使用函数的返回类型、函数名称、形参的个数和类型。对于被调用函数而言,实参所有传递过来值(地址)的所有可能性,都应予以考虑,并定义有相应的反馈。由此可见,教学中,鼓励学生理解这些相关知识、正确编写调用与被调用函数,不仅是保证函数之间相互交往、相互作用达到预期效果最基本的要求;.同时,通过大量函数运用的练习,能够很好地训练学生在分析问题时运用系统思维中的相关性来思考、解决问题。
3一体性思维培养
系统思维中最重要的是每个系统所涵盖的多个部分如何统一运行,服从统一规律,呈现出怎样的“个性”。系统囊括对象多、却无法构成统一体,则称不上系统。只有按照特定方式关联起来而形成统一体的才可称之为系统。
程序设计课程中每一个程序的编写。都是对一体性思维训练的强化。同样以函数为例,函数是c语言程序的基本单位,任何一个函数都有其独立的功能。学生在编写程序过程中,为了实现程序自身的整体性功能,或多或少都要用到函数,这要求学生必须遵循函数使用的统一规则,却又根据不同函数的特点采用不同的函数调用方法;另外,同一函数在不同程序中又能呈现出不同的个性或作用。每一次程序编写都要求学生具。有一个一体性层面的思维,来整体把握程序中各类函数的定义与调用,从而实现统一的目标。
4结构性思维培养
系统思维中的结构性是指系统内部各组成要素之间的相互联系、相互作用的方式或秩序,即各要素在时间或空间上排列和组合的具体形式。生活中的实际问题多种多样,求解问题的方法亦不相同。
C语言提供了3种不同的程序结构来满足求解问题所需,即顺序结构、选择结构和循环结构。3种结构体现了在求解问题时所需的各类方法特点。C语言中包含大量知识点,能够训练学生结构化思维方式。例如函数的使用,只有在对程序整体结构清晰、求解方法明确的前提之下,才能正确地完成函数的定义与调用,又如构造数据类型的学习。结构体是一种典型的构造数据类型,结构体中包含不同成员,这种方式能够将各种不同类型的数据关联起来,形成一种特殊的结构,能够解决生活中许多现实问题。不具备程序整体结构性思维及相应的知识,就无法正确地编写程序,无法完成课程任务。由此可见,在C语言的学习过程中,能够不断强化学生的结构化思维训练。
5有序性思维培养
有序性是指系统中各要素之间有秩序的联系。它是保证一个系统的基本特征,并维持一个系统生存与发展的关键。在现实系统中,系统有序性的表现多种多样,不同系统的各要素之间也可能具有不同的关系,遵循不同的秩序。因此,对学生系统有序性思维的培养,体现在程序设计中,即要求学生能够根据不同的现实问题,合理组织、使用程序设计语言中的各个要素。
事实上,有序性概念贯穿程序设计课程的整个教学过程,对许多知识点的学习以及每一次程序设计练习,都是对有序性思维的强化。首先,程序设计语言中最基础的一个概念就是变量,对变量的学习就要求学生能够理解变量的值在计算机内存空间中的有序存储。之后所学的数组、指针等,都在不断地强化学生对数据存储有序的概念。其次,对学生有序思维的培养不仅局限在直观的物理有序上,更体现在逻辑有序的学习上。因为数据存储不仅有物理有序,也包括逻辑有序。在学习结构体链表时,对链表的插入、删除等操作,能够让学生加深对逻辑有序的理解。另外,任何一个程序,无论是简单的还是复杂的,该程序都是按照一定秩序有序执行的。当学生为解决不同问题而采用不同要素、结构来组织程序时,程序的执行顺序也会相应不同。
6动态性思维培养
动态性思维是用一种运动的、调整性的、不断择优化的思维方式来求解问题。这种思维方式是根据不断变化的环境、条件来改变自己的思维程序、思维方向,对事物进行调整、控制,从而达到优化的思维目标。
在程序设计中,有大量概念体现了动态思维。例如,根据运算对象的类型设定不同类型的变量,内存相应分配不同大小存储空间。如char型分配1个字节,int型分配4个字节,double型分配8个字节,在多种类型数值进行混合运算时,其结果又能根据精度需求动态地向高精度类型转换。又如循环结构中,循环变量值的变化是程序动态性的最佳体现。学生在单步调试时,能够清楚地观察到循环变量及相关变量值的每一步变化。如求解1至100的和,设循环变量为i,i的值将从起始值1逐一变化到100,同时,求和变量sum的值也将随着i的变化而动态变化。再如在函数定义中形参的设定亦是训练学生动态思维的重要知识点。每次调用函数时,函数所接收到的实参都是不同的。只有具有了动态性思维,才是真正理解了函数的实参和形参的概念。另外,指针类型的变量,能够存储不同地址数据,根据其值的不同,能够动态地指向不同的地址等。由此可见,程序设计语言中存在大量的知识点,蕴含了动态性思维的需求,对学生动态性思维能力的提高具有极大激励作用。
7结语
文中所举之例仅是程序设计语言中较小部分,仍有大量知识点及算法设计思想蕴含着系统思维的应用。非计算机专业学生虽无须在程序设计能力上达到一个较高水平,但在学习过程中,算法设计及程序编写的训练,都在一定程度上培养了学生应用系统思维的能力。
理工、医学、文法等各个学科对系统思维能力都提出了较高要求,大学计算机作为一门必修课,在教学方式、教学内容等方面都应打破传统的灌输填鸭式教学模式,代之以思维教学为核心,以培养学生专业修读所需系统思维能力为目标,同述还需要计算机基础教师进一步探究,使