C语言程序设计教学探讨,《C语言程序设计》教学方法探讨

2023-10-09 16:20

本文主要是介绍C语言程序设计教学探讨,《C语言程序设计》教学方法探讨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

41528d3028836879cd698677c3999917.gif《C语言程序设计》教学方法探讨

《C语言程序设计》教学方法探讨 【摘要】针对目前《C语言程序设计》教学效果不理想的问题,结合教学实际,分析教学过程中存在的问题,针对计算机专业新生的教学方法进行探讨,提出需要做好第一堂课的引导,启发式教学,理论课与实验课有机结合以及改革传统的考核方式等建议。 【关键词】C语言程序设计;计算机;教学方法;启发式教学 C语言是一种结构化的程序设计语言,是后续学习《数据结构》《操作系统》等专业课程的基础。它入门简单,特别适合于初学者学习。目前很多院校都将《C语言程序设计》课程作为计算机专业大一新生的第一门程序设计语言课程。 随着计算机的普及,目前刚入学的新生可以熟练的操作计算机,但对于计算机的原理等理论知识的了解几乎为零。《C语言程序设计》课程是他们接触到的第一门专业课,如何进行教学将直接影响学生的学习兴趣。目前C语言的教学没有得到很好的教学效果,学生往往是到了大二、大三阶段,随着计算机专业知识的学习才慢慢理解程序设计的真谛,才真正学会使用C语言编写程序。 《C语言程序设计》课程教学效果不理想的状况普遍存在,很多专业课教师对其教学体系、教学方法等进行研究和讨论[1-4],期望找到提高教学质量的途径。 1 C语言教学中存在的问题 笔者为《C语言程序设计》课程教师,主要针对计算机专业大一新生进行讲授。面临C语言教学效果不理想的问题,在教学过程中不断探索适合的教学方法和手段。首先结合教学实际,分析目前C语言教学中存在的主要问题。 1.1 教学过程中过分注重语法 大多数教师往往在简单介绍C语言特点后,就开始就讲解C语言的基本数据类型、基本运算符与表达式。对于初学者来说,接受这些内容很困难,即使是有些学生记住了,但也不是真正理解了这些内容在程序设计语言中的作用。这将导致初学者感觉C语言是很难学、很枯燥的一门课程,一开始就无法理解。同时也忽略了学生程序设计思维方式和编程能力的培养。 1.2 教学方法以教师讲解为主 C语言目前的教学方法主要是板书结合幻灯片演示,以教师的“教”为主体,主要讲授C语言的基本语法及基本编程思想。这种教学方式下,学生主要以听为主,被动学习,枯燥的内容无法吸引学生注意力,也无法调动学生积极性,得不到良好的教学效果。 1.3 教学课时少,教学内容多 C语言程序设计入门容易,深入难。三种基本程序设计之后还包括数组、指针、结构体等内容。而《C语言程序设计》的课程往往是32理论学时,在有限的学时内完成所有C语言程序设计的内容,就出现课时少、教学内容多的情况,无法定期的对前面内容进行总结和练习,令学生无法透彻理解所学内容。 1.4 课堂教学与实验教学脱离 由于教学条件的限制,大多数高等院校的C语言课程都是将理论课与实践课分开进行。理论课所讲的内容,学生听过之后,没有亲手实验,导致记忆不深,理解不到位。到实验课时,已记不清理论课所讲的内容和注意事项,教师需要在实验课上将关键知识点再重复一遍。这种情况减少了学生的练习时间、增加了教师工作量,也反映了这种教学方式的不合理,课堂教学没有起到应有的作用。 1.5 考试方式古板 目前的C语言考试方式主要是闭卷考试。考试题目通常包括选择、填空、阅读程序等题目,这些题目考核的只是C语言程序的基本语法,而忽略考核学生的程序设计思维方式和编程能力。 2 C语言教学方式探讨 针对C语言教学中出现的问题,我们就如何对大一新生开展C语言程序教学进行探讨。使初学者能够真正理解程序设计的本质,认识到程序设计语言的重要性,提高学习积极性,主动学习,从而培养学生程序设计思维方式以及编程能力,为后续学习打下基础。 2.1第一堂课的引导 《C语言程序设计》是计算机专业新生接触到的第一门专业课,也是第一门程序设计语言课程。第一堂课的内容至关重要,它决定着学生是否对此门课程感兴趣,也决定着后续的学习质量。笔者在实际教学中发现,第一堂课的引导必不可少。引导的内容如表1所示,主要向学生介绍程序、程序设计语言、程序设计的概念,以及程序设计语言的发展历程。介绍三个概念时,从学生的角度出发,从他们熟悉的软件着手进行讲解。让学生从总体上了解到本门课程的大致作用以及意识到本门课程学习的必要性。 在学生已经对本门课程有了大概的了解,对程序设计语言有了总体的认识之后,再去从计算机的发展历程和当时的实际需要出发介绍程序设计语言的发展,让学生了解C语言所处的位置及基本特点。理清学生思路,同时也激发了学生的学习兴趣。这时可以以学习外语的过程为类比,告诉学生接下来要学习“单词――数据类型”。 2.2有效选取教学内容,启发式教学 C语言课程,教师主要的教学目的是培养学生的编程思维以及编程能力,而不是将C语言的所有语法及知识点都传授给学生。所以教师应该选取基本的教学内容,采用启发式教学,这样既解决了课时少的问题,同时也培养了学生的自学能力。 以C语言中的构造数据类型为例,当给学生讲解数组时,启发学生自行思考,让学生掌握学习方法,并通过反复的练习培养思维方式和编程能力。学生在掌握数组使用方法的同时,也了解了整个学习过程。而后续的结构体内容将不在课堂上讲授,而是鼓励学生自行学习,抽出时间为学生答疑,培养学生自学能力。 2.3理论课与实验课的有机结合 理论课与实验课的分离导致理论课无法起到应有的效果。对于《C语言程序设计》课程最佳的上课方式应是将二者合二为一。老师讲解基本理论之后,学生可以马上对所学知识进行实验,加深理解。然而并不是所有的院校都具备这样的教学条件,当不具备条件时,教师应该在理论课上让学生自己动手写程序,调动学生积极性,打破被动学习的局面。而在实验课上,教师应重复理论课中的重要知识点,同时教师需要设计好实验方案,使学生循序渐进的对所学内容进行练习。实验课内容应以学生的创新为主,而不应该是让学生机械的验证教科书后的程序。 2.4改革期末考核方式 C语言的考核方式也不利于培养学生的思维方式以及编程能力。教学过程中无论是教师的“教”还是学生的“学”暂时还无法脱离最终的期末考核。而目前的考核方式往往会令学生,甚至包括教师偏离最终的教学目的。因此需要对目前C语言程序设计的考核方式进行变革,可以用上机考核代替笔试,这样可以充分体现学生的编程能力。或者将最终的期末考核变换为类似毕业设计的小型课程设计。我们最终的目的是为考核学生的思维方式和编程能力,具体形式还要根据各个院校的要求以及学生的特点决定。 3 结语 作者针对目前C语言程序设计教学效果不理想的状况,分析了目前此门课程教学过程中存在的问题,并结合自身的教学经验,对计算机专业新生的《C语言程序设计》课程的教学方法提出了几点建议,作者将会在后续的工作中验证这些教学方法的效果,并不断进行改革和完善。 参考文献: [1]赵钦,郝丽珍,郭鲜凤.高级程序设计语言教与学切入点探析[J].太原大学学报,2012(13):114-116. [2]鲁红英,肖思和,孙淑霞.“C/C++程序设计”课程教学改革与实

这篇关于C语言程序设计教学探讨,《C语言程序设计》教学方法探讨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174083

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return