第一篇:浅谈C#程序设计课程的创新教学方法
浅谈C#程序设计课程的创新教学方法
【摘要】本文主要讨论高职软件技术专业C#程序设计课程的教学方法,拟将创新学习的理论和实践应用于课程教学中,分析了接受性学习和创新学习各自的特点和适用知识的范围。并对课堂教学模式、课后作业布置模式等教学环节提出了一些创新性的看法。
【关键词】教学方法主动学习创新学习课件开发教师学习
【中图分类号】G71 【文献标识码】A 【文章编号】2095-3089(2014)06-0249-01
1.序言
现在很多高职院校的软件技术专业一般都开设了微软公司开发的C#程序设计这门课程。学生对C#程序设计课程的学习都存在一定的问题。这门课程和那些传统的知识型课程对比,有很多不一样的创新思维过程在里面。因此这门课程的教学肯定不能像其它知识型课程那样教学,我们必须另想办法来解决。笔者先后多次担任《C#程序设计》课程的教学,在教学过程中积累了一些实际的教学心得体会。
2.创新教学的理论
对于C#程序设计课程而言,其语法格式、变量、方法、属性、封装、继承、多态等基本的程序设计技巧和方法都属于可以采用接受性学习方式的概念性知识。而程序设计实例则是一项典型的创新活动,其主要的知识内涵是如何在现有的知识和方法论的基础上设计出不存在的知识作品(程序)。这就需要创新教学方法来使学生跟随你的教学方式。
所谓创新教学并不是与把学生接受性学习绝对对立的,它必须以接受性学习为基础和前提。创新教学的主要特征就是让学生以掌握知识的全部内涵为目的,运用逻辑思维,通过再创新教学内容的方式进行,将知识的学习过程变为知识的创新过程。
3.创新教学的实际应用
笔者在实际教学过程中,对于那些理论性的知识,如语法结构、程序结构、触发事件服务等,笔者采用大量真实有趣的生活实例进行案例教学方法。最后用一个综合性的简单程序实例来联系整门课程的大部分理论和实践知识,并且将这个实例程序的编写过程录制成屏幕录像形式的动画文件,在动画中用注解的方式将教师的讲解融入其中,程序设计中的注意事项,要掌握的组件属性、方法和事件以及其中蕴含的编程技巧、程序的扩展思路和思考问题都在动画中得以体现。教师上课时可以播放动画并作针对性讲解,这样就完全避免了这类课程在教学时教师边操作、边讲解的手足无措的现象。更重要的是,有些学生在上课时经常开小差或请假,下课又搞不懂,他就可以通过下载动画课件文件在课后反复观看,就把老师在课堂上的讲解重现出来方便学习。这样就可以将课堂教学直接延伸到了课堂之外,使得教师的知识教学和学生的自主学习可以达到高效而持续的教学目的。笔者的演示课件一般是课堂主要实例的编制全过程录像加上文字解说,采用的屏幕录像软件是由天狼星软件工作室开发的《屏幕录像专家》。《屏幕录像专家》和一般屏幕录像软件的最大区别是给制作者更大的灵活性,可以全过程录制也可以手动选择重点知识需要的画面进行录制,录制完后还可以很方便地任意剪辑、添加帧以及加入有趣的注解形式,并且在后期还可以适当加入部分配音。更难得的是《屏幕录像专家》可以生成Flash格式的动画文件,使得课件文件存储空间大大减小,一般一个45分钟的屏幕录像课件不到5MB。而其他AVI格式的屏幕录像软件制作出来的动画文件则动辄几十MB甚至一百多BM。
对于软件技术专业的当代大学生来说,自学是获取知识的另一次要途径,它的重要性有时甚至超过课堂学习。笔者指导学生自学主要采用的是专业学习网站和图书馆资料。很多专业教学网站上都包括教材全部的知识点和实例的讲解、源代码甚至习题,学生可以通过这个网站完成初步自学的过程,这就大大减轻了教师课堂教学的压力。另外通过兴趣教学和扩展性很强的课后作业可以督促学生充分地利用互联网和图书馆等多种途径去学习课程中所没有的知识点、方法和技巧,使学生的创新学习能力得到很大的培养。
在最后两周的实训教学中,笔者采用的是一种模块化的教学方式,将最后的那个程序项目分为若干个有序而独立的子模块让学生自己思考,解决了一个子模块的同学可以上讲台演示和讲解,然后在此基础上进入下一个子模块,直至问题全部解决,完整的可执行的软件应用程序项目也就呈现出来。最后,教师对整个过程进行点评。在此过程中,每一个解决模块的学生必须根据上一个学生的思路来进行,也可以修正上一个同学的不合理的编码,台下的同学可以自由参与讨论或借鉴别人的经验,最终目的是让每个学生完成一个完整的程序作品并上交教师,让学生觉得心理有很大的满足感和成就感。
再探索过程是通过课后作业环节来实现的。作业的选题主要包含课程的知识点且有时要高于知识点,其中作业要求也是分层次的,学生能够做什么就做什么层次的作业。这些层次都是循序渐进、环环相扣的,既体现了程序设计的趣味性又将面向对象的编程思想融入到作业中,更重要的是学生从这些作业的创新编程过程中体会到编程的乐趣和成就感,加深了他们对于程序设计的热爱,提高了他们的创新思维能力。在笔者的教学实施过程中,课后作业这一环节是非常重要的,它是培养学生学习能力和解决问题能力最主要的教学环节。
4.教师的创新学习
教师的智能结构包括知识结构和能力结构两方面。创造型教师的知识结构是一种三维立体结构模式,它由知识的广度、深度和获取知识的方法三个维度变量组成。知识的广度意味着创造型教师要具备广博的科学基础知识,特别是新兴的或边缘学科知识,能从多角度对自己的专业知识进行审视分析、类比演绎,并且能在多学科交叉的“无人区”发现新问题,开拓新领域。知识的深度意味着创造型教师要具备精深的专业知识,对本专业的新动向和新成果有清晰的了解,并对本专业的课题有一定深度的见解,引导学生进行科学研究与发明创造。获取知识的方法意味着教师不仅教给学生固定的知识,而且主要的是要教会学生获得知识的方法。创新型教师就应当具备科学的方法论知识,让学生更快更有效地学习好科学文化知识。
笔者在任课程教学的之余,经常加强学习,从软件工程、UML、软件测试等到各种程序设计语言的各个领域,除此之外,还多次利用暑假的时间深入软件公司进行真实项目开发,有效拓宽了自己的知识面和研究创新能力,形成扎实的技术功底,在课堂面对学生时才能自信而游刃有余,也才有能力带领学生进入深入的创新学习的思维中。同时在自己的学习过程中尝试运用创新方法,使创新方法在课堂的实践可以循着一条可行的思路,做到有据可依。
5.结论
知识是教师教学和学生学习的共同载体,将知识划分为理论性知识和程序性知识而采取不同的学习和教学方法,是创新教学法在高职教育中的重要应用原则。接受性学习和创新教学各自适用于不同的知识内涵,而创新教学和教师的创造能力是教学中培养学生创新能力的重要因素。
第二篇:C#程序设计实验报告
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。
实验报告书写说明
实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
金陵科技学院实验报告
实验项目名称: C#基础编程 实验学时: 6 同组学生姓名: 实验地点: 1318 实验日期: 10月5日-10月19日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验1 C#基础编程
一、实验目的
1、熟悉Visual Studio.NET开发环境。
2、掌握C#应用程序的基本操作过程。
3、掌握C#的数据类型,运算符以及表达式的使用。
4、掌握分支和循环语句的使用方法。
5、掌握一维数组,二维数组及数组型数组的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意。
2、根据题目要求,新建项目。
3、编写并输入相关的程序代码。
5、运行与调试项目。
6、保存项目。
五、实验内容
1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace one.first {
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(“我叫王蕾!”);
}
} }
2、编写一个简单的Windows应用程序,在窗体Load事件中书写代码,标签中显示你的姓名。
using System;using System.Collections.Generic;using System.ComponentModel;
金陵科技学院实验报告
using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace one.second {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = “Windows 程序”;
Label lblShow = new Label();
lblShow.Location = new Point(20, 30);
lblShow.AutoSize = true;
lblShow.Text = “王蕾!”;
this.Controls.Add(lblShow);
}
} }
3、编写一个一个程序,用来判断输入的是大写字母,小写字母,数字还是其他的字符。
using System;using System.Collections.Generic;using System.Text;
namespace one.third {
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“请输入一个字符:”);
char c = Convert.ToChar(Console.ReadLine());
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
Console.WriteLine(“这是一个字母”);
if(char.IsDigit(c))
Console.WriteLine(“这是一个数字”);
金陵科技学院实验报告
}
} }
4、分别用while,do-while,for循环求1到100的和。
using System;using System.Collections.Generic;using System.Text;
namespace one.forth.one {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
while(i <= 100)
{
sum = sum + i;
i++;
}
Console.WriteLine(“1到100的自然数之和为:” + sum);
}
} } using System;using System.Collections.Generic;using System.Text;
namespace one.forth.two {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
do
{
sum = sum + i;
i++;
}
while(i <= 100);
Console.WriteLine(“1到100的自然数的和为:” + sum);
}
}
金陵科技学院实验报告
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.three {
class Program
{
static void Main(string[] args)
{
int i , sum = 0;
for(i = 1;i <= 100;i++)
{
sum = sum + i;
}
Console.WriteLine(“1到100的自然数的和为:” + sum);
}
} }
5、定义一个一维数组,用随机数为此赋值,用foreach循环输出其中的内容。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.five {
class Program
{
static void Main(string[] args)
{
int[] a = {0,1,2,3,4};
foreach(int i in a)
{
Console.WriteLine(a[i]);
}
}
} }
6、实现二维数组的输入和输出。
using System;using System.Collections.Generic;using System.Linq;
金陵科技学院实验报告
using System.Text;
namespace first.six {
class Program
{
static void Main(string[] args)
{
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
{
for(int i = 0;i < 2;i++)
{
for(int j = 0;j < 3;j++)
{ Console.WriteLine(a[i, j]);}
}
}
}
} }
7、实现数组型数组的输入和输出。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.seven {
class Program
{
static void Main(string[] args)
{
int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
for(int i = 0;i < a.Length;i++)
{
for(int j = 0;j < a[i].Length;j++)
{
Console.WriteLine(a[i][j]);
}
}
}
} }
六、实验体会(遇到问题及解决办法,编程后的心得体会)
刚开始编程的时候觉得无从下手,尽管我们已经学了好几种高级编程语言,但每个都
金陵科技学院实验报告
有其独特的地方,稍不留神就会混淆。
通过这次实验,我体会到课后复习巩固的重要性。在编程的时候,很多内容都不记得,需要去翻书。不得不说,实验是巩固课程的好方法!本次实验,我熟悉Visual Studio.NET开发环境;掌握了C#应用程序的基本操作过程;掌握了C#的数据类型,运算符以及表达式的使用;掌握了分支和循环语句的使用方法以及一维数组,二维数组及数组型数组的使用。
金陵科技学院实验报告
实验项目名称: 类与对象 实验学时: 6 同组学生姓名: 实验地点: 1318 实验日期: 10月26日-11月9日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验2 类与对象
一、实验目的、要求
(1)掌握类的定义和使用;
(2)掌握类的数据成员,属性的定义和使用;
(3)掌握方法的定义,调用和重载以及方法参数的传递;(4)掌握构造函数的定义和使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意;
2、根据题目要求,新建项目;
3、编写并输入相关的程序代码;
5、运行与调试项目;
6、保存项目。
五、实验内容
1、定义一个方法,实现两个数的交换(分别把参数按值传递和按引用传递)。
using System;using System.Collections.Generic;using System.Text;
namespace second.one {
class Program
{
static void Main(string[] args)
{
Swaper s = new Swaper();
Console.WriteLine(“输入x的值:”);
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“输入y的值:”);
int b=Convert.ToInt32(Console.ReadLine());
金陵科技学院实验报告
Console.WriteLine(s.Swap(a, b));
Console.WriteLine(s.Swap(ref a,ref b));
}
class Swaper
{
public string Swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return 后:x={0},y={1}“,x,y);
}
public string Swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(”按引用传参交换之后:x={0},y={1}“, x, y);
}
}
} }
2、定义一个方法,实现数组的排序。using System;using System.Collections.Generic;using System.Text;
namespace second.two {
class Program
{
string.Format(”
按
值
传
参
交
换
之
金陵科技学院实验报告
public class sort
{
public void change(int[] a)
{
Console.WriteLine(“排序前,数组顺序为:”);
show(a);
int i, j, m;
for(i = 0;i < 10;i++)
{
m = a[i];
j = ib;
}
}
static void Main(string[] args)
{
sum s = new sum();
int a = 10;
int b = 3;
int m, n;
s.ab(out m, out n, a, b);
Console.WriteLine(“{0}+{1}={2};{0}-{1}={3}”,a,b,m,n);
金陵科技学院实验报告
}
} }
5、用构造函数重载,实现矩形的面积,圆的面积,梯形的面积;
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace secong.five {
class Program
{
public class square
{
public double area;
public square(){ }
public square(double a)
{
area = a * a * 3.14;
}
public square(double a, double b)
{
area = a * b;
}
public square(double a, double b, double h)
{
area =(a + b)/ 2 * h;
}
}
static void Main(string[] args)
{
double a, b, h,area;
a = 2;b = 5;h = 3;
金陵科技学院实验报告
square s = new square(a,b);
Console.WriteLine(“求矩形面积,长为a={0},宽为b={1},面积area={2}”,a,b,s.area);
square i = new square(a);
Console.WriteLine(“求圆形面积,半径a={0},面积area={1}”, a, i.area);
square j = new square(a, b, h);
Console.WriteLine(“求梯形面积,上底为a={0},下底为b={1},高为h={2}面积area={3}”, a, b,h, j.area);
}
} }
6、设计一个windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号,姓名,语文,数学和英语成绩,要求:
1)能查询每个学生的总成绩。2)能显示全班前三名的名单。
3)能显示单科成绩最高分和不及格的学生名单。4)能统计全班学生的平均成绩。
5)能显示各科成绩不同分数段的学生人数的百分比。
Student类: using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class Student
{
public string stuNo;
public string name;
public double chinese;
public double math;
public double english;
public double sumScore
{
金陵科技学院实验报告
get { return chinese + math + english;}
}
} } StudentList类: using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class StudentList:Student
{
int snums;
public Student[] stu=new Student[50];
public StudentList()
{
snums = 0;
}
public void addstu(Student s)
{
stu[snums] = s;
snums++;
}
public int searchstu(string name)
{
int i;
for(i = 0;i < snums;i++)
{
if(stu[i].name == name)break;
}
if(i == snums)return-1;
else return i;
}
//给所有成绩排序,用后面实现前三名的排名
金陵科技学院实验报告
public void ProThree()
{
for(int i = 0;i < snums;i++)
{
int k = i;
for(int j = i + 1;j < snums;j++)
if(stu[j].sumScore > stu[k].sumScore)k = j;
if(k!= i)
{
Student temp;
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
}
//显示单科成绩的最高分
public int HighScore(int k)
{
int p = 0;
if(k == 0)
{
for(int i = 1;i < snums;i++)
if(stu[i].math > stu[p].math)p = i;
}
else if(k == 1)
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
else
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
金陵科技学院实验报告
}
return p;
}
//显示不及格名单
public string BuhgName(int k)
{
string name=“ ”;
if(k == 0)
{
for(int i = 0;i < snums;i++)
if(stu[i].math < 60)name +=stu[i].name+“n”;
}
else if(k == 1)
{
for(int i = 0;i < snums;i++)
if(stu[i].chinese < 60)name += stu[i].name + “n”;
}
else
{
for(int i = 0;i < snums;i++)
if(stu[i].english < 60)name += stu[i].name + “n”;
}
return name;
}
public string getHL()
{
string Maxer = “ ”, Loser = “ ”;
Maxer += “单科数学最高:” + stu[HighScore(0)].name + “n”;
Maxer += “ 单科语文最高:” + stu[HighScore(1)].name + “n”;
Maxer += “ 单科英语最高:” + stu[HighScore(2)].name + “n”;
Loser += “单科数学挂科名单:” +BuhgName(0)+ “n”;
Loser += “单科语文挂科名单:” + BuhgName(1)+ “n”;
Loser += “单科英语挂科名单:” + BuhgName(2)+ “n”;
金陵科技学院实验报告
return Maxer + “n” + Loser;
}
//全班的平均成绩
public string SumScore()
{
double sum = 0;
double avg=0;
for(int i = 0;i < snums;i++)
{
sum = sum + stu[i].sumScore;
}
avg = sum / snums;
return “班级总分平均分:”+avg;
}
//各科成绩不同分数段的学生百分比
//英语成绩各分数段百分比
public string PerC()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].chinese > 90)&&(stu[i].chinese <= 100))
{
sumC1++;
}
else if((80 <= stu[i].chinese)&&(stu[i].chinese < 90))
{
sumC2++;
}
金陵科技学院实验报告
else if((70<=stu[i].chinese)&&(stu[i].chinese < 80))
{
sumC3++;
}
else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))
{
sumC4++;
}
else
{sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return “语文成绩百分比:”+“n”+“90~100:”+per1+“ 80~90:”+per2+“ 80~70:”+per3+“ 70~60:”+per4+“ 60以下的:”+per5;
}
//数学成绩各分数段百分比
public string PerM()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].math> 90)&&(stu[i].math <= 100))
{
sumC1++;
}
else if((80 <= stu[i].math)&&(stu[i].math < 90))
{
金陵科技学院实验报告
sumC2++;
}
else if((70 <= stu[i].math)&&(stu[i].math < 80))
{
sumC3++;
}
else if((60 <= stu[i].math)&&(stu[i].math < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “ 80~90:” + per2 + “ 80~70:” + per3 + “ 70~60:” + per4 + “ 60以下的:” + per5);
}
//英语成绩各分数段百分比
public string PerE()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].english > 90)&&(stu[i].english <= 100))
{
sumC1++;
金陵科技学院实验报告
}
else if((80 <= stu[i].english)&&(stu[i].english < 90))
{
sumC2++;
}
else if((70 <= stu[i].english)&&(stu[i].english < 80))
{
sumC3++;
}
else if((60 <= stu[i].english)&&(stu[i].english < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “ 80~90:” + per2 + “ 80~70:” + per3 + “ 70~60:” + per4 + “ 60以下的:” + per5);
}
} } From窗体代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;
金陵科技学院实验报告
using System.Windows.Forms;namespace Test2_6 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public StudentList sl = new StudentList();
private void btnAdd_Click(object sender, EventArgs e)
{
Student s = new Student();
s.stuNo = txtStuNo.Text;
s.name = txtName.Text;
s.chinese = Convert.ToDouble(txtChina.Text);
s.math = Convert.ToDouble(txtMath.Text);
s.english = Convert.ToDouble(txtEng.Text);
sl.addstu(s);
MessageBox.Show(“添加成功”);
}
private void btnSearch_Click(object sender, EventArgs e)
{
int pos = sl.searchstu(this.textBox1.Text);
if(pos!=-1)
{
label7.Text = this.textBox1.Text + “的总成绩:sl.stu[pos].sumScore;
}
else { MessageBox.Show(”不存在这个人!“);}
}
private void btnFinish_Click(object sender, EventArgs e)
{
label7.Text = ”前3名:“+”n“;
” + 金陵科技学院实验报告
for(int i = 0;i < 3;i++)
{
sl.ProThree();
label7.Text+= sl.stu[i].name+“n”;
}
label7.Text += sl.getHL()+“n”;
label7.Text += Convert.ToString(sl.SumScore())+“n”;
label7.Text += sl.PerC()+“n”;
label7.Text += sl.PerM()+“n”;
label7.Text += sl.PerE()+“n”;
}
} }
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我掌握了类的定义与使用;掌握了类的数据成员,属性的定义和使用;掌握了方法的定义,调用和重载以及方法参数的传递以及构造函数的定义和使用。值得注意的是:本次实验中return的使用以及所在的位置,类型转换时也经常用到
金陵科技学院实验报告
实验项目名称: 继承与多态 实验学时: 6 同组学生姓名: 实验地点: 1318 实验日期: 11月16日-11月30日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验3 继承与多态
一、实验目的、要求
(1)掌握类的继承性与多态性;
(2)掌握虚方法的定义以及如何使用虚方法实现多态;(3)掌握抽象类的定义以及如何使用抽象方法实现多态;
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意;
2、根据题目要求,新建项目;
3、编写并输入相关的程序代码;
5、运行与调试项目;
6、保存项目。
五、实验内容
1、设计一个Windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生派生类,当输入相关数据,单击不用的按钮时,将分别创建不同的学生类对象,并输出当前学生的总人数,该学生的姓名,学生类型,平均成绩。
Student类: using System;using System.Collections.Generic;using System.Text;namespace Test3_1 {
public abstract class Student
{
protected string name;
protected int age;
public static int number;
public Student(string name, int age)
{
this.name = name;
this.age = age;
金陵科技学院实验报告
number++;
}
public string Name
{
get { return name;}
}
public abstract double Average();
}
public class Pupil : Student
{
protected double chinese;
protected double math;
public Pupil(string name, int age, double chinese, double math)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
}
public override double Average()
{
return(chinese + math)/ 2;
}
}
public class Middle : Student
{
protected double chinese;
protected double math;
protected double english;
public Middle(string name, int age, double chinese, double math, double english)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
金陵科技学院实验报告
this.english = english;
}
public override double Average()
{
return(chinese + math + english)/ 3;
}
}
public class College : Student
{
protected double required;
protected double elective;
public College(string name, int age, double required, double elective)
: base(name, age)
{
this.required = required;
this.elective = elective;
}
public override double Average()
{
return(required + elective)/ 2;
}
} } Form窗体内的代码:
using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_1 {
public partial class Form1 : Form
{
金陵科技学院实验报告
public Form1()
{
InitializeComponent();
}
private void btnSmall_Click(object sender, EventArgs e)
{
Pupil),Convert.ToDouble(txtMath.Text));
lblShow.Text += “总人数:” +Convert.ToString(Student.number)+ “,” + “姓名:” + p.Name + “,” + “小学生” + “,” + “平均成绩为:” + p.Average()+“n”;
}
private void btnMiddle_Click(object sender, EventArgs e)
{
Middle Convert.ToInt32(txtAge.Text),m
=
new
Middle(txtName.Text,Convert.ToDouble(txtChinese.Text), p
=
new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.TextConvert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));
lblShow.Text += “总人数:” + Convert.ToString(Student.number)+ “,” + “姓名:” + m.Name + “,” + “中学生” + “,” + “平均成绩为:” + m.Average()+ “n”;
}
private void btnBig_Click(object sender, EventArgs e)
{
College Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtMath.Text));
lblShow.Text += “总人数:” + Convert.ToString(Student.number)+ “,” + “姓名:” + c.Name + “,” + “大学生” + “,” + “平均成绩为:” + c.Average()+ “n”;
}
}
c
=
new
College(txtName.Text,Convert.ToDouble(txtChinese.Text),金陵科技学院实验报告
}
2、设计一个Windows应用程序,在该程序中定义平面图形抽象类和派生类圆,矩形和三角形。
Figure类代码: using System;using System.Collections.Generic;using System.Text;namespace Test3_2 {
public abstract class Figure
{
public abstract double Area();
}
public class Circle:Figure
{
double radius;
public Circle(double r)
{
radius = r;
}
public override double Area()
{
return radius * radius * 3.14;
}
}
public class JUxing:Figure
{
double chang;
double kuan;
public JUxing(double c, double k)
{
this.chang = c;
this.kuan = k;
}
金陵科技学院实验报告
public override double Area()
{
return chang * kuan;
}
}
public class San:Figure
{
double bian;
double heigth;
public San(double b, double h)
{
this.bian = b;
this.heigth = h;
}
public override double Area()
{
return bian * heigth / 2;
}
} } Form窗体代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_2 {
public partial class Form1 : Form
{
public Form1()
{
金陵科技学院实验报告
InitializeComponent();
}
private void btnCircle_Click(object sender, EventArgs e)
{
Circle c=new Circle(Convert.ToInt32(TxtChang.Text));
lblShow.Text = “圆的面积为:” + c.Area();
}
private void btnJu_Click(object sender, EventArgs e)
{
JUxing
j
=
new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “矩形的面积为:” + j.Area();
}
private void btnSan_Click(object sender, EventArgs e)
{
San
s
=
new
San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “三角形的面积为:” + s.Area();
}
} }
3、定义一个Person类,包含姓名字段和一个方法,早上8:30学生开始上课,教师开始讲课。分别用new关键字,虚方法,抽象类实现多态性。
New关键字: using System;using System.Collections.Generic;using System.Text;
namespace third.three {
class Program
{
static void Main(string[] args)
金陵科技学院实验报告
{
Student s=new Student(“学生”);
Teacher t=new Teacher(“教师”);
Console.WriteLine(s.name+s.work());
Console.WriteLine(t.name+t.work());
Console.ReadLine();
}
}
public class Person
{
public string name;
public interface method
{ string work();}
}
public class Student:Person
{
public Student(string name)
{ this.name = name;}
public string work()
{ return “早上8:30开始上课”;}
}
public class Teacher:Person
{
public Teacher(string name)
{ this.name = name;}
public string work()
{ return “开始讲课”;}
} } 虚方法: using System;using System.Collections.Generic;using System.Text;
金陵科技学院实验报告
namespace third.three.two {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
PersonWork(s);
Teacher t=new Teacher(“李斯”,“教师”);
PersonWork(t);
}
private static void PersonWork(Person Person)
{ Console.WriteLine(Person.Work());}
}
public class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public virtual string Work()
{ return string.Format(“Person{0}:早上8:30开始”,name);}
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:早上8:30开始上课”, name);
}
}
public class Teacher : Person
金陵科技学院实验报告
{
private string type;
public Teacher(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
} }
抽象类: using System;using System.Collections.Generic;using System.Text;
namespace third.three.three {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”, “学生”);
PersonWork(s);
Teacher t = new Teacher(“李斯”, “教师”);
PersonWork(t);
}
private static void PersonWork(Person person)
{
Console.WriteLine(person.Work());
}
}
public abstract class Person
金陵科技学院实验报告
{
public string name;
public Person(string name)
{ this.name = name;}
public abstract string Work();
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:早上8:30开始上课”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
} }
金陵科技学院实验报告
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我理解了类的继承性与多态性;掌握了虚方法的定义以及如何用虚方法来实现多态;掌握了抽象类的定义以及如何用抽象方法来实现多态。这次实验与前两次不同,采用Windows应用程序,既涉及到代码段也涉及到界面的设计。所以,勉强通过实验。
金陵科技学院实验报告
实验项目名称: 接口、文件和流 实验学时: 6 同组学生姓名: 实验地点: A205 实验日期: 12月7日-12月21日 实验成绩: 批改教师: 批改时间:
金陵科技学院实验报告
实验4 接口、文件和流
一、实验目的
(1)掌握接口的定义及使用方法;
(2)掌握流,序列化和反序列化的概念和使用方法;(3)掌握流文件的读写操作类及其使用方法;
(4)掌握OpenFileDialog,SaveFileDialog等控件的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有Visual Studio.NET软件。
四、实验步骤
1、分析题意;
2、根据题目要求,新建项目;
3、编写并输入相关的程序代码;
5、运行与调试项目;
6、保存项目。
五、实验内容
1、定义一个Person类,包含姓名字段和一个方法,早上8:30学生开始上课,教师开始讲课。用接口来实现。
using System;using System.Collections.Generic;using System.Text;namespace Test4_1 {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
Console.WriteLine(s.Work());
Teacher t = new Teacher(“李四”,“老师”);
Console.WriteLine(t.Work());
}
金陵科技学院实验报告
public abstract class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
interface IPerson
{
string type { get;}
string Work();
}
public class Student :Person, IPerson
{
public string type
{
get { return string.Format(“老师”);}
}
public Student(string name, string type)
: base(name)
{
this.name=name;
}
public string Work()
{
return string.Format(“Person{0}:早上8:30开始上课”, name);
}
}
public class Teacher :Person, IPerson
{
public string type
{
金陵科技学院实验报告
get { return string.Format(“学生”);}
}
public Teacher(string name, string type)
: base(name)
{
this.name = name;
}
public string Work()
{
return string.Format(“Person{0}:早上8:30开始讲课”, name);
}
}
} }
2、声明一个接口Iplayer,包含5个接口方法:播放,停止,暂停,上一首和下一首。在该程序中定义一个MP3播放器类和一个AVI播放器类,以实现该接口。
MP3类(包含Iplayer接口,AVI类): using System;using System.Collections.Generic;using System.Text;namespace Test4_2 {
interface IPlayer
{
string Play();
string Stop();
string Pause();
string Pre();
string Next();
}
public class MP3:IPlayer
{
public string Play()
金陵科技学院实验报告
{
return “正在播放MP3歌曲!”;
}
public string Stop()
{
return “停止播放MP3歌曲!”;
}
public string Pause()
{
return “暂停播放MP3歌曲!”;
}
public string Pre()
{
return “播放上一首MP3歌曲!”;
}
public string Next()
{
return “播放下一首MP3歌曲!”;
}
}
public class AVI : IPlayer
{
public string Play()
{
return “正在播放AVI歌曲!”;
}
public string Stop()
{
return “停止播放AVI歌曲!”;
}
public string Pause()
{
return “暂停播放AVI歌曲!”;
}
金陵科技学院实验报告
public string Pre()
{
return “播放上一首AVI歌曲!”;
}
public string Next()
{
return “播放下一首AVI歌曲!”;
}
} } Form窗体里代码: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test4_2 {
public partial class Form1 : Form
{
IPlayer iplayer;
MP3 mp3;
AVI avi;
public Form1()
{
InitializeComponent();
}
private void btnMp3_Click(object sender, EventArgs e)
{
mp3 = new MP3();
iplayer =(IPlayer)mp3;
}
金陵科技学院实验报告
private void btnPlay_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Play();
}
private void btnUp_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Pre();
}
private void btnStop_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Stop();
}
private void btnPause_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Pause();
}
private void btnNext_Click(object sender, EventArgs e)
{
label1.Text = iplayer.Next();
}
private void btnAvi_Click(object sender, EventArgs e)
{
avi = new AVI();
iplayer =(IPlayer)avi;
}
} }
3、实现对文本文件的读写操作,用文件操作控件打开和保存文件。
using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace Test4_3
金陵科技学院实验报告
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
StreamWriter
sw = StreamWriter(saveFileDialog1.FileName,true);
sw.WriteLine(DateTime.Now.ToString());
sw.WriteLine(txtSource.Text);
sw.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
StreamReader sr = StreamReader(saveFileDialog1.FileName);
txtShow.Text = sr.ReadToEnd();
sr.Close();
}
} }
4、实现对二进制文件的读写操作。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;
new
new
金陵科技学院实验报告
namespace Test4_4 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
FileStream
fs
= FileStream(@“d:Datastudent.dat”,FileMode.Append,FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(Int32.Parse(txtStuNo.Text));
bw.Write(TxtName.Text);
bool isMale;
if(rdoMan.Checked)
isMale = true;
else
isMale = false;
bw.Write(isMale);
fs.Close();
bw.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
lstShow.Items.Clear();
lstShow.Items.Add(“学号t姓名t性别”);
FileStream
fs
= FileStream(@“d:Datastudent.dat”,FileMode.Open,FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
fs.Position = 0;
while(fs.Position!= fs.Length)
{
new
new
金陵科技学院实验报告
int s_no = br.ReadInt32();
string name = br.ReadString();
string sex = “";
if(br.ReadBoolean())
sex = ”男“;
else
sex = ”女“;
string
result String.Format(”{0}t{1}t{2}“,s_no,name,sex);
lstShow.Items.Add(result);
}
br.Close();
fs.Close();
}
} }
5、实现对象序列化和反序化。
Student类: using System;using System.Collections.Generic;using System.Text;namespace Test4_5 {
[Serializable]
public class Student
{
public int sno;
public string name;
public bool sex;
public Student(int s_no, string name, bool isMale)
{
this.sno = s_no;
this.name = name;
this.sex = isMale;
=
金陵科技学院实验报告
}
} } StudentList类: using System;using System.Collections.Generic;using System.Text;namespace Test4_5 {
[Serializable]
public class StudentList
{
private Student[] list = new Student[100];
public Student this[int index]
{
get
{
if(index < 0 || index >= 100)
return list[0];
else
return list[index];
}
set
{
if(!(index < 0 || index >=100))
list[index] = value;
}
}
} } Form下的代码: using System;using System.Collections.Generic;using System.ComponentModel;
金陵科技学院实验报告
using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace Test4_5 {
public partial class Test9_32 : Form
{
private StudentList list = new StudentList();
private int i = 0;
public Test9_32()
{
InitializeComponent();
}
private void Test9_32_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
string file = @”d:datastudent.dat";
Stream
stream
= FileStream(file,FileMode.OpenOrCreate,FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(stream,list);
stream.Close();
}
private void btnAdd_Click(object sender, EventArgs e)
{
int sno = Int32.Parse(txtStuNo.Text);
bool isMale;
if(rdoMan.Checked)
isMale = true;
new
第三篇:程序设计课程教学方法的探讨和实践
程序设计课程教学方法的探讨和实践
高等学校的根本任务是培养人才,人才培养是办学的核心问题。在高等教育大众化、国际化的趋势中,高等学校办学的竞争日益加剧。教学质量将决定着一所学校的生存和发展。因此,教学质量是教育者、管理者不可不思、不可不谋、不可不为的重要任务。
随着经济的发展和科技的进步,对人才素质提出了更高的要求,在人才培养上,各高校都在夯实基础的同时重视能力的培养,开始实施理论教学和实践的配套改革,进一步加强实践教学,加强学生实践能力、创新能力的培养。但是,对不同层次的高校而言,教育培养的对象虽然都是大学生,但各校均有自己的特性,在教学方法上,有其共性,也具有特殊性,互相之间,只能借鉴,不能照搬,而需要根据自己的情况来制定切合实际的教学方法。本文是以某高校计算机专业的“程序设计”课程为对象,探讨教学方法的改进和实践。
科学的教学方法是通向成功的桥梁。古人曰:“授之以鱼,供一饭之需;教之以渔,终身受用不尽。”授之以方法,培养学生的自学能力,是实现“教是为了不教”的正确途径。教学方法的改进,首先要改传统的单纯灌输式教学法为启发式和探究式的教学法,教师提出问题,激发学生积极思维,主动思考,发现未知,发展智力,达到由此及彼、由表及里、闻一知
十、举一反三的目的。教师不仅要注意培养学生的“智商”,更要发展学生的“情商”,即非智力因素,充分调动学生学习的需要、兴趣、动机,引导学生进行科学的思维,包括形式逻辑思维、形象思维、灵感思维等,以培养学生独立思考问题、提出问题和解决问题的能力,即所谓“既要授之以鱼,更要授之以渔”。教师可以假设一种以案例和问题为核心的情景和背景,激发学生探究问题的兴趣,通过选择与确定问题,讨论与提出设想,实践与寻求结果,验证与得出结论,培养学生独立思考能力、研究能力和创新能力,形成一种讨论式、开放式的现代教学方法,这就体现了大学教学的创新精神和平等合作精神,这种方法称为程序案例教学法或程序驱动教学法。这种方法要求教师精心备课,根据学生的知识水平和能力,创设实用的程序案例,引导过程中的问题情境,帮助学生激发创新意识,促进学生质疑,培养学习兴趣。在课堂上,要努力营造民主、宽松、和谐的学习环境。
现今普遍的程序设计教学方法都是从语法入手,详细地讲解各种编程语言的语法,而涉及的程序案例却很少,虽然有一些例题,但很简单,距离解决实际问题的复杂度相差甚远,学生在学习之后,常常缺乏动手能力和解决问题的能力,无法构建程序设计的思维,而且机械式的记忆语法规则往往是枯燥无味的,很难激发学习的兴趣。以“C++程序设计”为例,针对各种语法规则,创建16个实用的程序案例:1)库存清单应用程序(变量,输入);2)工资计算应用程序(算法,伪代码);3)牙科付费应用程序(逻辑运算符,字符串);4)购车还贷应用程序(WHILE循环语句);5)计算班级平均成绩应用程序(标记控制循环);6)利息计算应用程序(FOR循环语句和数学函数);7)计算个人所得税应用程序(多分支选择语句SWITCH);8)捐款管理应用程序(作用域与函数原型);9)游戏应用程序(生成随机数和枚举);10)薪金统计应用程序(一维数组);11)学生成绩统计应用程序(二维数组);12)数字时钟应用程序(自定义类和对象);13)购物清单管理应用程序(指针,引用及动态数据结构);14)工资表应用程序(继承与多态性);15)便笺信息应用程序(顺序访问文件);16)屏幕抓取应用程序(字符串处理)。
首先教师给出程序案例的框架结构,学生经过思考,选择合适的算法和指令语句,经互相讨论,完善和丰富程序案例,然后上机调试,通过运行来检验结果。程序案例的教学法是从兴趣入手,首先给人们编程的乐趣,继而带领学生进入程序的天地,提高探索的欲望,使学习编程变得生动而有趣。经过对计算机科学专业198名学生的问卷调查表明,其中194人赞成这种教学方法,在反馈的意见中,认为这种方法效果很好,能够很容易接受。在教学过程中既学到应得的知识,又感受到编程的快乐;既感受到成功的喜悦,又得到探索的乐趣。考核的成绩表明,85%的学生达到预期的效果,其中有20%的学生达到优秀的水平,虽然,教学实践取得明显的效果,但仍有15%的学生寻求适合的解决方法。尚未达到预期的效果,这表明仍有一些问题尚待解决,今后将进一步研究不足之处。
(作者单位:山东省潍坊科技学院)
第四篇:C#程序设计案例评语
C#程序设计案例评语:
优秀:该生在课程实习过程中,能够按照实习任务书的要求,完整的开发记事本及计算器程序,设计过程中能主动查阅资料,独立完成程序开发,软件设计界面良好,功能完整,实习报告内容详细。实习过程中表现突出。
良好:该生在课程实习过程中,能够按照实习任务书的要求,完整的开发记事本及计算器程序,设计过程中能独立完成程序开发,软件设计界面良好,功能完整,实习报告内容详细。实习过程中表现良好。
中等:该生在课程实习过程中,能够按照实习任务书的要求,比较完整的开发记事本及计算器程序,设计过程中能在老师的指导下完成程序开发,功能完整,实习报告内容完整。实习过程中表现一般。
及格:该生在课程实习过程中,基本能够按照实习任务书的要求,比较完整的开发记事本及计算器程序,设计过程中能在老师和同学的指导下完成程序开发,功能基本完整,实习报告内容完整。实习过程中表现一般。
第五篇:浅谈中职学校计算机程序设计课程教学方法探讨
浅谈中职学校计算机程序设计课程教学
方法探讨
〔论文关键词」中职学校 计算机 程序设计 教学方法
〔论文摘要」计算机程序设计课程是中职学校计算机专业的主要课程之一,曾受到各中职学校的高度重视。但程序设计课程教学设计、教学目标及教学方法远远跟不上形势,怎样调动中职学生对程序设计语言的学习兴趣与提高他们的学习效率成为中职计算机教师们的共同关注的焦点。
程序设计课程作为计算机专业的一门基础课程,它有利于提高学生的思维能力,对学生深人学习计算机专业知识有很大的帮助。其目的就是通过学习程序设计语言的基本思想、语法知识和编程方法,提高学生的程序设计能力、分析解决实际问题的能力,并培养形成严密的逻辑思维能力。那么如何根据社会经济发展变化,对程序设计语言课程的教学内容、教学方法、考核方式进行相应的改革,实现培养高等技术应用型和高技能型计算机人才目标,已经成为广大中职教师普遍关注和重点研究的课题。
1程序设计语言教学中存在的问题
1.1教学课时少
目前我校计算机专业的学制2+1的模式,学校开设的程序设计语言课程的课时(包括理论课时和实践课时)较少,这就导致实际教学中存在理论课时和实践课时不够的情况,学生只能掌握最基础的程序设计知识,理解书本上现有的一些设计实例,而不能用该程序设计语言进行实际问题的处理。
1.2学生基础参差不齐,学习程序设计的信心、兴趣不足
因为学习程序设计需要较强的逻辑思维能力和较扎实的数学功底,而中职学校的学生普遍数学基础较薄弱,导致在学习程序设计时显得力不从心。由于缺乏对计算机本身解题的认识和了解,有些基础较差的学生还对计算机程序产生一种莫名其妙的神秘感和畏惧感,人为的给自己学习程序设计语言设置了一道门槛。学生对程序设计课程的学习兴趣不高,课堂教学中反常行为较多,如卜课睡觉、讲话、玩手机、不配合老师、不交作业等。学生普遍反映难学,提不起学习兴趣,感觉学不到知识或学的知识没用。
1.3学校对程序课程的重视程度不高
计算机程序设计课程注重对学生的思维能力的训练,这与图像处理,动画设计等培养学生动手能力的课程不同,不能立竿见影的看到学生的学习成果。这就导致一些领导对这门课程不够重视,从而使部分教师对这类课程的教学参与兴趣不浓厚,甚至有些学校以取消了程序设计语言的课程设置。
1.4教学方法落后
中职程序设计语言课程一般采用的教学方法是教师课上讲授加学生实验的形式,学生在上机实验时仅仅是对书本上现有的一些实例进行编辑调试,一旦调试成功就完成任务。这种教学方法实际上只是让学生掌握了一些程序设计的语法知识和调试技巧,而达不到培养学生利用该程序设计语言从一个实际问题人手分析问题、解决问题的能力。
1.5考核方式较简单不能全面检验学生的学习效果
目前的考试方式以试卷为主,无法全面检验学生的学习效果,对学生的实践能力考查无法体现学生的真正学习效果。
2间题分析
是什么原因造成了以上这些问题那?随着高中教育不断普及,中职生源及综合素质急剧下降。普遍特点是他们基础薄弱,尤其数学和英语,这是学好程序设计的最大障碍。教材不能适应中职教学的要求。现今中职程序设计语言教材存在的普遍问题是实践性教学和实训内容不足,没有体现教材的实用性和职业性,不能保证对学生实践能力的培养,不能体现技术应用型人才的培养要求,缺少中职教育特色。面对这些问题,我们不能望而却步,一味地去埋怨是起不到效果的,要真正想解决问题,最好就要去不断地摸索,寻找解决问题的突破点,探索适合学生发展的教学方法和教学内容,以充分调动他们的学生积极性和主观能动性。3解决间题的关键在于教育方法的创新
古人云:“知之者不如好之者,好之者不如乐之者。”兴趣对学生的学习有着神奇的内驱动作用,能变无效为有效,化低效为高效。充分激发学生的学习兴趣是当前开展素质教育,优化课堂教学,减负提质的最根本、最有效的途径之一。兴趣的产生来源于兴趣源,兴趣源必须由教师来创造,并贯穿于教师授课全过程的各个环节中。针对程序设计这门课程的特点教师可采用以下一些方法提高学生的对本课程的兴趣。
(1)基于问题的教学。提出问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。
(2)“项目驱动”教学。在理论教学中采用“项目驱动”教学法,整个课程教学围绕一个“工程项目”进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高,将知识点都溶化到一个个实训项目的程序编写中。
(3)讨论教学法。在教学过程中,充分发挥学生的积极性与主动性是非常重要的一环。程序设计有一个最大的特点,一题多解。针对这个特点,教师在习题课的教学中,可以采用讨论式教学方法。在此过程中,学生们通过提问、答辩、论证、反驳、判断等激烈的讨论,互相启发、相互协作去分析问题、发现问题、解决问题,总结经验。不仅可以让学生获得课外的知识,同时也利于充分挖掘学生的学习潜力。
(4)归纳教学法编程语言有很多的定义、概念、语法规则,它们使用灵活、难以记忆,也特别容易出错。如果能够引导学生进行归纳,将会起到事半功倍的效果。编程语言的定义、概念、语法规则有许多相似的地方,例如:FOR „„TO„„与DO„„W HILE等命令,有很多语法规则是一样的,对它们进行归纳之后,学生只要记住其中一个,另一个自然就会使用了。
(5)分组教学法。注重培养团队精神,以“竞”求进上机编程实践是学好程序设计语言的关键。但上机实践过程中如果“各自为战”,或在教师的统一“指挥”下以完成不同题型的任务为实践内容,对于中职学生而言很容易失去上机兴趣,也很难达到上机实践之目的。因此,不妨针对中职学生的特点,适当转变上机实践的形式。以组建团队的形式上机实践,事前分配给每个学习小组不同的实践任务。组长负责本组学生利用课余时间去思考、收集资料,上机时各组先分别完成相应任务,然后相互演示成果,评判优劣,最后再进行任务交换,讨论编程心得。在此过程中教师主要充当协调者的角色,对确有疑难的地方可适当加以指导,主要过程可由学生自行解决,则学习能力强的学生自然会成为教师的助手。
(6)案例分析教学。对程序设计语言的教学,不仅仅是教程序设计语言知识,更重要的是让学生学会如何利用程序设计语言知识去编程,去应用于实际需求中。采用案例教学,可以实现课堂内外的有机结合,实现理论与实践相结合。结合学生自学,让学生带着疑问进行案例分析,教师在分析过程中穿插讲授专业理论知识,学生在分析案例的时候,一方面增长知识视野,丰富分析应用技巧;另一方面,在探索思考如何把知识运用于实践,从而及时有效地促进学生对知识的消化吸收,真正达到理论与实践相结合的目的。当然在案例的选择上应结合学生的专业实践,让学生能学以致用。
4结语
对于职业中专的学生来说,学习语法不是学习程序设计语言的真正目的,应该在掌握语法的基础上,通过上机实践,真正的让学生学会使用程序设计语言来解决各种实际问题,学以致用。教师应在开学初就要让学生充分了解程序设计语言的学习并不难,然后在以后的教学过程中,要使学生在学习中得到快乐、尝试成功的喜悦,提高学习的积极性和主动性,让程序设计语言真正成为学生喜爱的课程。课堂教学创新性有助于促使教师的教育观点的转变,确立以学生为中心,以学生主体实践为主,以培养学生创新素质和健全人格、特别是创新精神和创新能力为基本价值取向的教育思想;学生的整体素质得到了有效提高,在教学的起始阶段得以顺利入门,在整个学习阶段保持对学习的高度兴趣,实际应用能力得到大大提高;教育教学的质量得到了稳步提升。