美章网 精品范文 程序设计的基本结构范文

程序设计的基本结构范文

前言:我们精心挑选了数篇优质程序设计的基本结构文章,供您阅读参考。期待这些文章能为您带来启发,助您在写作的道路上更上一层楼。

程序设计的基本结构

第1篇

关键词:C语言;程序设计;循环结构;教学方法

中图分类号:G642文献标识码:A

1引言

“C语言程序设计”是计算机系各专业的必修课程,属专业主干课,是一门学位课程。也是各高校部分非计算机专业开设的程序设计课程之一。本课程开设的目的是使学生掌握面向过程的程序设计的基本概念,逐步形成正确的程序设计思想,理解结构化程序设计方法;掌握程序设计的基本技术,程序设计的基本组织方法即函数(模块)程序设计;具备调试程序的能力。因为C语言功能强大,程序编写灵活,具有较强的实践性,是一门高级语言中的“低级语言”,既可以用来编写系统软件,又可以用来开发应用软件,因此对学生以后参与专业领域的应用软件的开发和使用会有极大的帮助。C语言是结构化的语言,学好C语言程序设计,能为后续课程(数据结构、编译原理、操作系统、C++、Java等)及其他程序设计课程的学习打下基础。同时,C语言程序设计也是计算机类各种考试所要求的重点课程之一。

2循环结构程序设计

结构化程序设计中包含三种基本技术:顺序结构、选择结构和循环结构。循环结构的程序设计是学生学习了结构化程序设计的前两种基本技术之后的第三种基本技术,是结构化程序设计技术中最重要也是最难的部分。这门课程一般都是学生学习程序设计的入门课程,第一次学习循环,可能难于理解“循环”的含义,在设计程序时正确使用循环也就更困难了。针对这些特点,循环结构程序设计的教学方法和教学手段也就值得探讨。

3循环结构程序设计的教学方法

3.1教学重点和难点

要想学生能够轻松理解和掌握循环结构的程序设计,首先得确定本部分内容的重点和难点。

本部分的重点主要是:(1)循环控制结构及其设计。(2)循环控制语句的应用。教学重点是循环控制语句中的while语句,只要把while语句的使用讲解清楚了,后面的for语句和do-while语句就容易多了。

本部分的难点是循环控制结构及其设计。

3.2突出教学重点与分散难点的方法

为了突出教学中的重点并分散难点,可以从三方面入手:

(1) 从分析问题的重复性入手。学生在日常的生活、学习中能看到、体会到重复这种行为。精心设计实例,给学生一个比较实际的切入点,通过教师的引导,使学生能体查、归纳“重复行为”,从而理解和掌握循环的主要特点:有规律地重复操作。在教师的启发、引导下,使学生在课堂上真正地成为“主体”,教师扮演“主导”角色。在整个过程中,紧紧抓住循环程序设计的思想,采用“自顶向下,逐步求精”的结构化程序设计方法,把重点突出出来,并把难点进行分散,使学生容易理解和接受。

(2) 难点内容,提前做好铺垫。在前面内容适当的地方安排出现循环程序,但不讲它的功能,为讲解现在的内容做好铺垫,打下伏笔。这使得学生的每一步学习都有基础,是一个循序渐进的过程,使学生的学习是在“走台阶”,而不是“三级跳”,效果很好。

(3) 在循环程序设计的应用中,可以从简单公式化的循环入手到复杂非公式化的循环的处理。讲解过程中,通过黑板进行详细分析和讲解,使学生加深学习和理解。适当的地方进行提问,教师引导学生积极参与到分析问题,解决问题的过程中,写出程序后,放到实际的环境下运行,让学生来分析程序的正确性,改正程序的错误,有利于学生理解难点、掌握重点。

3.3教学过程的设计与组织

(1) 提出问题

本部分的内容是循环程序设计,体现在两个方面,一是循环结构程序设计的算法表示;二是循环结构程序的C语言表示。循环程序设计是结构化程序设计中最难、最复杂的部分,而授课对象是初次接触程序设计和循环结构,因此循环的引入就至关重要。例如:通过引入求5!这个简单的例子,运用已经学过的顺序结构程序设计就可以实现;但是求复杂的阶乘,比如20!,任意自然数n!,用已经学过的顺序结构程序设计和选择结构程序设计就难于解决,要用简单的方法解决这样的问题,就必须使用结构化程序设计中的第三种基本技术:循环结构的程序设计。这样就轻松地引入了循环结构程序设计。在引入的过程中,要注重调动学生的积极性,采用互动教学法带动学生的积极性。

(2) 解决问题的方法及讲授新内容

在用问题引入了循环后,第一步,分析用循环控制结构求20!的算法的自然语言和流程图表示。第二步,为了实现这种循环控制行为,C语言提供了多种循环控制语句,while语句就是其中的一种,介绍while语句的一般形式和功能。第三步,讲解while循环语句的应用。在讲解的过程中,为了提高学生的学习效果,达到预期的目标,除了采用常用的教学方法和手段外,还可以采用以下一些教学方法和手段:

① 注重启发、引导学生。教师在讲解分析时,注重启发、引导学生主动分析问题、解决问题。

② 注重采用任务驱动的教学模式。通过提出问题,分析问题,引入新知识,解决问题,总结提高,一步步实现教学的目标。

③ 采用国际上惯用的解析教学法。

④ 把编写的程序放到实际环境下运行。让学生来分析程序的正确性,改正程序的错误,有利于学生掌握好重点、难点知识。

⑤ 应用现代化多媒体教学手段,有利于提高教学效率,便于学生理解。充分利用黑板和投影相结合的方式;分析过程用黑板进行教学,以便体现思维过程。

4结束语

要使学生轻松容易地理解和掌握C语言中的循环结构程序设计方法和技巧,必须在教学的所有环节上都进行认真研究和精心设计。通过对循环结构程序设计的教学,使学生提高综合应用的能力,为今后的后续课程及软件的设计和开发打下坚实的基础。

参考文献:

[1] 徐庆生.C语言程序设计[M].北京:科学普及出版社,2007.

[2] 高牧,杨志强,许兰兰,等. C/C++教学改革的探索与实践[J]. 计算机时代,2005(11).

The Design and Discussion of Programming Course of Iteration Structure Pedagogical

in C Programming Language

SUN Ying, XU Shun-qiong, LI Xing-mei

(Department of Computer Science, Chuxiong Normal University, Chuxiong 675000, China)

第2篇

论文摘要:该文分析了程序设计在计算机学科中的地位以及程序设计有关的知识和能力构成,结合自己多年的计算机专业教学实践,探讨了在计算机教学中培养学生程序设计能力的有效策略。

计算机科学是一种创造性思维活动,其教育必须面向设计。计算机的本质是“程序的机器”, 只有懂得程序设计,才能懂得计算机,真正了解计算机是怎样工作的。培养学生程序设计能力对计算机专业的学生来说不仅是培养职业技能的需要,也是培养大学生创造性思维的重要途径。学习程序设计语言可以培养学生运用算法来解决实际问题的能力,这种解决问题的方式是计算机所独有的,也只有通过对计算机的程序设计语言和程序设计方法的学习才有可能获得这种解决问题的能力。

1 程序设计在计算机学科中的地位

程序设计是利用某种计算机语言,编制完成某一特定功能的程序的过程,是涉及描述、开发及有效实现求解的一系列活动,是利用计算机实现自动化的重要手段。

计算机学科主要是系统地研究信息描述和变换的算法过程,包括它们的理论、分析、设计、效率、实现和应用。可以这样说,一切算法的基本问题是“什么能被自动化”以及“如何有效地自动化”。这个自动化的过程就是程序设计的过程。

程序设计语言是人们学习计算机的最基本的工具,也是人们学习计算机基础与应用知识的基本课程。通过学习,使学生掌握程序设计的基本概念、基本知识和基本方法,养成良好的程序设计风格,得到一定的程序设计训练,具备初步编写程序解决实际问题的能力。程序设计也正是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,是理论、抽象、设计和应用的综合能力培养过程。因此程序设计是计算机学科教学的重要内容之一,对计算机专业人才素质的培养至关重要。

2 程序设计的知识和能力构成

根据循序渐进的原则,与程序设计有关的教学内容主要有:计算机基础知识和操作、程序设计语言和基本的程序设计方法、最基本的数据结构及其基本算法、常用的算法设计方法等。在学习这些知识的同时,必须与能力的训练有机地结合起来。程序设计能力表现在以下几个方面:

1)自然语言能力。要有较强的运用自然语言描述现实事物的能力,只有运用背景知识正确且清晰地陈述问题及其求解目标,才能确定程序的功能。

2)数学描述能力。程序设计是为了告诉计算机做什么和如何做。这就需要利用定义、定理、公式、函数等数学工具把问题形式化,建立数学模型。

3)数据结构设计能力。选择合理的存储结构,在计算机中表示数学模型,是程序设计的一个重要方面。

4)算法构造能力。好的程序由精心构造的、好的算法构成。给出问题求解的离散化计算过程,是程序设计中最具有创造性的工作。

5)程序编码能力。用某种程序设计语言表达算法,尽管这种能力往往被认为技术含量不高,但也需要对程序设计语言的熟练掌握和对算法设计的深刻理解。

6)程序调试能力。程序调试能力是一种专业综合技能,需要对程序设计语言和程序结构有深刻的理解,需要熟练的操作技能,需要会设置测试数据和设置程序断点,这些都有待于学生在实践中逐步积累经验。

可以说,程序设计能力的高低很大程度上反映在驾驭自然语言、数学语言和计算机语言的能力上。这3种语言是人们毕生有用的3种通用智能工具。前两者是后者的基础,良好的英语和数学训练是学好程序设计语言和培养程序设计能力的重要基础。

3 培养程序设计能力的有效策略

知识的价值在于运用,知识的运用需要技能,而技能的形成则依赖训练。程序设计知识的学习和能力的培养需要各方面的知识基础,它是一个系统的教育训练过程,需要多个教学环节的紧密配合才能完成。

1)明确教学要求

程序设计语言课程一般是为应用性教学而设置的,因此,课程的教学不仅仅是传授知识,而且应该强调应用性,应该以培养学生的能力为主。程序设计语言的内容比较丰富,在教学中如果面面俱到,必会耗费较多课时,而且教学效果不一定好。因为过分强调程序设计语言的系统性和完整性就可能会转移学生对课程重点的注意力,关键在于教会学生如何正确运用程序设计语言编写程序,训练实用编程能力。所以必须突出重点,突出应用性,侧重教思想,即把程序设计语言的基本思想、基本环境、基本概念、基本知识和基本方法教给学生,使他们在学习中对硬件、软件环境、程序设计的基本思想和基本技巧,所学程序设计语言的基本概念和使用方法以及编程技术有一个比较全面的感性认识,从而提高解决实际问题的能力。

2)打好数学基础。严格的数学训练是程序设计能力的基础,学习和加强排列与组合、数列、数学归纳法等离散系统的数学方法对提高程序设计能力尤为重要。问题描述和建立数学模型是程序设计的前奏,数学归纳法、穷举法、构造证明法等证明技巧是算法设计方法的基础。

3)强化英语水平。程序设计语言的符号系统以英语为基础,程序设计文档语言首选英语。英文资料是计算机最新和最大的技术资料来源,英语水平是我国软件产业发展和参与国际竞争的制约因素。

4)重视阅读训练。从某种意义上来说,程序设计是用程序设计语言和方法进行的一种写作。可以想象,如果学生没有阅读过一份完整、规范、有实用价值的标准程序,即使记住了有关语言的语法规则,也不可能写出像样的程序。所以,大量阅读、分析、修改和扩充典型的算法和程序,是提高程序写作能力的有效途径。而这个重要学习环节往往未得到应有的重视,缺乏配套的程序设计阅读分析教材。教师应经常指导学生阅读程序,理解程序,提高学生分析程序的能力。

5)注重算法设计,突出数据结构内容。瑞士科学家、PASCAL语言和MODULA-2语言的发明者沃思(Wirth)教授提出了著名的公式:程序=算法+数据结构。这个公式表达了程序的实质,说明对于一个程序设计问题来讲,算法与程序设计是紧密联系的,绝不能脱离数据结构去讲解算法设计。程序设计语言的教学应该结合数据结构的基本内容。对于同一个计算问题,选用不同的数据结构,其算法大不一样,算法的优劣程度也不同。因此,要教会学生对不同的问题选择合适的数据结构。在整个程序设计课程中,必须强调算法设计方法,通过不断的算法设计训练,使学生切实掌握迭代、枚举、递归、分类等常用算法设计方法。

6)更新教学内容。计算机学科是一门综合性学科,而且程序设计语言的应用领域在不断扩大和发展。因此,在教学中应结合专业的特点和教学的要求,将软件工程的思想方法贯穿于整个教学过程,介绍程序设计语言的最新发展和应用,重视面向对象程序设计方法的引入,搞好教材内容的更新。如图形程序设计、下拉式或弹出式菜单、计算机病毒防治等等。这样不仅能把最新的知识和最新发展动态充实到教学上来,大大丰富了教学内容,而且使学生加深对程序设计语言的理解和掌握,保持对信息技术和专业的兴趣,及时跟上信息技术日新月异的发展趋势,在今后工作中保持领先地位。

7)采用先进教学手段。用传统的课堂教学方法讲授动态的算法和数据结构是十分低效的,像排序、递归等抽象动态的内容讲解就常常是费力不讨好。应该根据课程特点,采用先进的现代教学方法,如直观教学方法:利用挂图、教具等讲解,以及计算机辅助教学(CAI)和计算机辅助学习(Computer Aided Learning,简称CAL)进行教学,通常开发利用与课程内容与教学特点相适应的多媒体课件进行教学。它们是讲解算法和进行程序设计训练的最佳教学平台,既能增加学习的趣味性,又可利用图形的直观性帮助抽象和动态过程的理解。

8)加强实践环节,强化创造性思维能力培养。在教学中,常常听到学生提出这样的问题:“程序设计语言有什么用?”,有的学生还反映:“程序设计语言并不难学,就是不知道如何应用?”一些学生学到了一定的科学知识,但上机动手水平低。这种现象与普遍忽视实践环节有关。为了扭转这一局面,在整个教学过程中,必须强调实践环节的重要性,充分安排上机实践时间,加强系统训练和实践能力的培养,强化创造性思维能力培养。根据课程特点,在教学中,采用案例驱动教学,进行兴趣引导;在实践中,可以精心组织一系列由易到难、由浅入深、配套衔接、结合学科学习、有一定设计技巧的程序设计作业,最后再安排一次综合性强、有一定难度的课程设计实践,对学生进行项目训练,提高学生应用能力。通过上机作业和课程设计的完成,使学生独立思考,各显才干,总结经验,培养他们的动手能力和编程能力,以及分析问题和解决问题的能力。

4 结论

总之,培养学生计算机程序设计能力的方法和途径很多,但是编程序不难,编好程序不易。作为教师,必须从培养学生编程思维的角度出发,按照以上策略认真进行编程知识的教学和技能的培养,加强实践,提高学生科学思维的能力,真正学会程序设计的真本领。

参考文献:

[1] ,王楠.浅谈程序设计语言课程教学方法[J].吉林大学学报(信息科学版),2005(S2).

[2] 徐进华.提高学生程序设计能力的几个措施[J].计算机时代,2005(11).

[3] 李凌.浅谈高级语言程序设计课堂教学方法[J].淮北职业技术学院学报,2005(04).

第3篇

关键词:程序设计;数据结构;算法;编码;调试

中图分类号:G642文献标识码:A文章编号:1009-3044(2009)33-9490-02

The Effective Strategy of Raises the Student Programming Ability

XIAO Han-peng

(The Secondary School of Nanyang, Nanyang 473000, China)

Abstract: This paper analyzes the design disciplines in the computer programming of the status and the knowledge and ability, combined with their many years of computer science teaching practice of teaching computer programming students an effective strategy.

Key words: program design; data structure; algorithm; coding; debugging

计算机科学是一种创造性思维活动,其教育必须面向设计。计算机的本质是“程序的机器”, 只有懂得程序设计,才能懂得计算机,真正了解计算机是怎样工作的。培养学生程序设计能力对计算机专业的学生来说不仅是培养职业技能的需要,也是培养大学生创造性思维的重要途径。学习程序设计语言可以培养学生运用算法来解决实际问题的能力,这种解决问题的方式是计算机所独有的,也只有通过对计算机的程序设计语言和程序设计方法的学习才有可能获得这种解决问题的能力。

1 程序设计在计算机学科中的地位

程序设计是利用某种计算机语言,编制完成某一特定功能的程序的过程,是涉及描述、开发及有效实现求解的一系列活动,是利用计算机实现自动化的重要手段。

计算机学科主要是系统地研究信息描述和变换的算法过程,包括它们的理论、分析、设计、效率、实现和应用。可以这样说,一切算法的基本问题是“什么能被自动化”以及“如何有效地自动化”。这个自动化的过程就是程序设计的过程。

程序设计语言是人们学习计算机的最基本的工具,也是人们学习计算机基础与应用知识的基本课程。通过学习,使学生掌握程序设计的基本概念、基本知识和基本方法,养成良好的程序设计风格,得到一定的程序设计训练,具备初步编写程序解决实际问题的能力。程序设计也正是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,是理论、抽象、设计和应用的综合能力培养过程。因此程序设计是计算机学科教学的重要内容之一,对计算机专业人才素质的培养至关重要。

2 程序设计的知识和能力构成

根据循序渐进的原则,与程序设计有关的教学内容主要有:计算机基础知识和操作、程序设计语言和基本的程序设计方法、最基本的数据结构及其基本算法、常用的算法设计方法等。在学习这些知识的同时,必须与能力的训练有机地结合起来。程序设计能力表现在以下几个方面:

1)自然语言能力。要有较强的运用自然语言描述现实事物的能力,只有运用背景知识正确且清晰地陈述问题及其求解目标,才能确定程序的功能。

2)数学描述能力。程序设计是为了告诉计算机做什么和如何做。这就需要利用定义、定理、公式、函数等数学工具把问题形式化,建立数学模型。

3)数据结构设计能力。选择合理的存储结构,在计算机中表示数学模型,是程序设计的一个重要方面。

4)算法构造能力。好的程序由精心构造的、好的算法构成。给出问题求解的离散化计算过程,是程序设计中最具有创造性的工作。

5)程序编码能力。用某种程序设计语言表达算法,尽管这种能力往往被认为技术含量不高,但也需要对程序设计语言的熟练掌握和对算法设计的深刻理解。

6)程序调试能力。程序调试能力是一种专业综合技能,需要对程序设计语言和程序结构有深刻的理解,需要熟练的操作技能,需要会设置测试数据和设置程序断点,这些都有待于学生在实践中逐步积累经验。

可以说,程序设计能力的高低很大程度上反映在驾驭自然语言、数学语言和计算机语言的能力上。这3种语言是人们毕生有用的3种通用智能工具。前两者是后者的基础,良好的英语和数学训练是学好程序设计语言和培养程序设计能力的重要基础。

3 培养程序设计能力的有效策略

知识的价值在于运用,知识的运用需要技能,而技能的形成则依赖训练。程序设计知识的学习和能力的培养需要各方面的知识基础,它是一个系统的教育训练过程,需要多个教学环节的紧密配合才能完成。

1)明确教学要求

程序设计语言课程一般是为应用性教学而设置的,因此,课程的教学不仅仅是传授知识,而且应该强调应用性,应该以培养学生的能力为主。程序设计语言的内容比较丰富,在教学中如果面面俱到,必会耗费较多课时,而且教学效果不一定好。因为过分强调程序设计语言的系统性和完整性就可能会转移学生对课程重点的注意力,关键在于教会学生如何正确运用程序设计语言编写程序,训练实用编程能力。所以必须突出重点,突出应用性,侧重教思想,即把程序设计语言的基本思想、基本环境、基本概念、基本知识和基本方法教给学生,使他们在学习中对硬件、软件环境、程序设计的基本思想和基本技巧,所学程序设计语言的基本概念和使用方法以及编程技术有一个比较全面的感性认识,从而提高解决实际问题的能力。

2)打好数学基础。严格的数学训练是程序设计能力的基础,学习和加强排列与组合、数列、数学归纳法等离散系统的数学方法对提高程序设计能力尤为重要。问题描述和建立数学模型是程序设计的前奏,数学归纳法、穷举法、构造证明法等证明技巧是算法设计方法的基础。

3)强化英语水平。程序设计语言的符号系统以英语为基础,程序设计文档语言首选英语。英文资料是计算机最新和最大的技术资料来源,英语水平是我国软件产业发展和参与国际竞争的制约因素。

4)重视阅读训练。从某种意义上来说,程序设计是用程序设计语言和方法进行的一种写作。可以想象,如果学生没有阅读过一份完整、规范、有实用价值的标准程序,即使记住了有关语言的语法规则,也不可能写出像样的程序。所以,大量阅读、分析、修改和扩充典型的算法和程序,是提高程序写作能力的有效途径。而这个重要学习环节往往未得到应有的重视,缺乏配套的程序设计阅读分析教材。教师应经常指导学生阅读程序,理解程序,提高学生分析程序的能力。

5)注重算法设计,突出数据结构内容。瑞士科学家、PASCAL语言和MODULA-2语言的发明者沃思(Wirth)教授提出了著名的公式:程序=算法+数据结构。这个公式表达了程序的实质,说明对于一个程序设计问题来讲,算法与程序设计是紧密联系的,绝不能脱离数据结构去讲解算法设计。程序设计语言的教学应该结合数据结构的基本内容。对于同一个计算问题,选用不同的数据结构,其算法大不一样,算法的优劣程度也不同。因此,要教会学生对不同的问题选择合适的数据结构。在整个程序设计课程中,必须强调算法设计方法,通过不断的算法设计训练,使学生切实掌握迭代、枚举、递归、分类等常用算法设计方法。

6)更新教学内容。计算机学科是一门综合性学科,而且程序设计语言的应用领域在不断扩大和发展。因此,在教学中应结合专业的特点和教学的要求,将软件工程的思想方法贯穿于整个教学过程,介绍程序设计语言的最新发展和应用,重视面向对象程序设计方法的引入,搞好教材内容的更新。如图形程序设计、下拉式或弹出式菜单、计算机病毒防治等等。这样不仅能把最新的知识和最新发展动态充实到教学上来,大大丰富了教学内容,而且使学生加深对程序设计语言的理解和掌握,保持对信息技术和专业的兴趣,及时跟上信息技术日新月异的发展趋势,在今后工作中保持领先地位。

7)采用先进教学手段。用传统的课堂教学方法讲授动态的算法和数据结构是十分低效的,像排序、递归等抽象动态的内容讲解就常常是费力不讨好。应该根据课程特点,采用先进的现代教学方法,如直观教学方法:利用挂图、教具等讲解,以及计算机辅助教学(CAI)和计算机辅助学习(Computer Aided Learning,简称CAL)进行教学,通常开发利用与课程内容与教学特点相适应的多媒体课件进行教学。它们是讲解算法和进行程序设计训练的最佳教学平台,既能增加学习的趣味性,又可利用图形的直观性帮助抽象和动态过程的理解。

8)加强实践环节,强化创造性思维能力培养。在教学中,常常听到学生提出这样的问题:“程序设计语言有什么用?”,有的学生还反映:“程序设计语言并不难学,就是不知道如何应用?”一些学生学到了一定的科学知识,但上机动手水平低。这种现象与普遍忽视实践环节有关。为了扭转这一局面,在整个教学过程中,必须强调实践环节的重要性,充分安排上机实践时间,加强系统训练和实践能力的培养,强化创造性思维能力培养。根据课程特点,在教学中,采用案例驱动教学,进行兴趣引导;在实践中,可以精心组织一系列由易到难、由浅入深、配套衔接、结合学科学习、有一定设计技巧的程序设计作业,最后再安排一次综合性强、有一定难度的课程设计实践,对学生进行项目训练,提高学生应用能力。通过上机作业和课程设计的完成,使学生独立思考,各显才干,总结经验,培养他们的动手能力和编程能力,以及分析问题和解决问题的能力。

4 结论

总之,培养学生计算机程序设计能力的方法和途径很多,但是编程序不难,编好程序不易。作为教师,必须从培养学生编程思维的角度出发,按照以上策略认真进行编程知识的教学和技能的培养,加强实践,提高学生科学思维的能力,真正学会程序设计的真本领。

参考文献:

[1] ,王楠.浅谈程序设计语言课程教学方法[J].吉林大学学报(信息科学版),2005(S2).

[2] 徐进华.提高学生程序设计能力的几个措施[J].计算机时代,2005(11).

[3] 李凌.浅谈高级语言程序设计课堂教学方法[J].淮北职业技术学院学报,2005(04).