浅谈结构化程序设计与GOTO语

浅谈结构化程序设计与GOTO语
浅谈结构化程序设计与GOTO语

浅谈结构化程序设计与GOT O语句

魏为民

摘要:本文讨论了结构化程序的基本特征,提出了goto语句在某些特殊情况下的程序设计中的一些用处。

关键词:结构化程序;goto语句;程序设计优化;程序可读性;程序加密。

荷兰学者Dijkstra提出了“结构化程序设计”的思想,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性,这种方法要求程序设计者不能随心所欲地编写程序,而要按照一定的结构形式来设计和编写程序,它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率。在Djakstra的时代,goto语句曾经引发了一场规模不小的争议,从那以后,goto就不被程序员青睐了。虽然到了最后,人们并没有把goto 语句处以极刑,然而亦鲜有人撰文提及goto 语句的用处,我们只能读到关于goto语句弊病的文章。在各种程序设计教科书上几乎都提到了goto ,并且青一色地建议其读者在编程时不用goto语句,因为:“可以证明,任何一个程序都可以使用三种基本的结构来构成,goto语句是多余的”。很可能再过几年人们就将忘记当今各种程序设计语言中几乎都具备的goto 语句了。在本文中,结合本人的一些编程经验,谈谈 goto 语句在某些特殊情况下的程序设计中的用处。

一、结构化程序设计的基本特征

结构化程序设计(Structured Programming)是荷兰学者E.W.Dijkstra等人在研究的人的智力局限性随着程序规模的增大而表现出来的不适应之后,于1969年提出的一种程序设计方法,这是一种复杂任务时避免混乱的技术。提出了把程序结构规范化的主张,要求对复杂问题的求解过程应按我们大脑容易理解的方式进行组织,而不是强迫我们的大脑去接受难以忍受的冲击。具体来说,结构化程序设计的思想包括以下三方面的内容:

(1)程序由一些基本结构组成。任何一个大型的程序都由三种基本结构所组成,由这些基本结构顺序地构成了一个结构化的程序。这三种基本结构为:顺序结构(如下图(1)所示),选择结构(亦称分支结构,如下图(2)所示)和循环结构(如下图(3)所示)。

图1 顺序结构图图2 选择结构图图3 循环结构图

同时结构化定理还进一步表明,任何一个复杂问题的程序设计都可以用顺序、选择和循环这三种基本结构组成,且它们都具有以下特点:只有一个入口;只有一个出口;结构中无死循环,程序中三种基本结构之间形成顺序执行关系。

(2)一个大型程序应按功能分割成一些功能模块,并把这些模块按层次关系进行组织。

(3)在程序设计时应采用自顶向下逐步细化的实施方法。

按结构化程序设计方法设计出的程序优点是:结构良好、各模块间的关系清晰简单、每一模块内都由基本单元组成。这样设计出的程序清晰易读,可理解性好,容易设计,容易验证其正确性,也容易维护。同时,由于采用了“自顶向下、逐步细化”的实施方法,能有效地组织人们的智力,有利于软件的工程化开发。

二、Goto语句与程序设计优化

任何一个结构化程序在编译以后都是需要用机器语言中的直接转移指令语句(同goto完全是一回事)来实现其结构的。在编译时,编译系统常常为了对程序进行优化而加入直接转移指令。其实,在使用高级语言编写程序的阶段,在不影响程序可读性的前提下,我们仍然有可能使用goto语句优化程序,提高程序的运行效率,减少代码的冗余。

我们可以举出很多使用goto 优化程序的例子,比如以下的case结构中经常使用的一种模型:

程序模型A:

switch (Variable)

{

case Value1:

Do specific Value1 here;

goto CommonCaseProcess;

case Value2:

Do Value2 here;

break;

case Value3:

Do specific Value3 here;

goto CommonCaseProcess;

case Value4:

Do specific Value4 here;

CommonCaseProcess:

Do Common Process here;

break;

}

这样写程序是由于case Value1, case Value3, case Value4的处理代码中最后阶段要做相同的事情。如果不使用goto 语句,则有如下两种等效的解决办法:

程序模型B:

switch (Variable)

{

case Value1:

Do specific Value1 here;

Do Common Process here;

break;

case Value2:

Do Value2 here;

break;

case Value3:

Do specific Value3 here;

Do Common Process here;

break;

case Value4:

Do specific Value4 here;

Do Common Process here; break;

}

程序模型C:

void CommonProcess(parameters) {

Do common process here; return;

}

switch (Variable)

{

case Value1:

Do specific Value1 here; CommonProcess(parameters); break;

case Value2:

Do Value2 here;

break;

case Value3:

Do specific Value3 here; CommonProcess(parameters); break;

case Value4:

Do specific Value4 here;

CommonProcess(parameters);

break;

}

不难看出,从结构化程序设计的观点上看,程序模型B和程序模型C都具有优良的可读性。但是,程序B存在代码冗余,如果要更改case Value1, case Value3 和case Value4 的共同处理的部分,需要同时改变三处相同的代码段,这在程序设计中是很忌讳的。程序模型C使用一个函数调用解决了代码冗余的问题,然而,增加了函数调用的程序运行时间开销和堆栈空间开销,在效率上不如程序模型B。

程序模型A的风格稍差,但从优化程序的角度上看,它结合了程序模型B

和程序模型C的优点。由于使用了goto语句,省去了函数调用,没有函数调用的时间开销和空间开销,最多只存在执行直接转移指令所带来的可忽略不计的时间开销(实际上编译系统均会对类似于程序模型B的程序段进行优化,结果会同程序模型A一模一样,这样程序模型A的效率同程序模型B的效率是相同的);并且只使用一段代码解决case Value1, case Value3, case Value4的共同部分,没有代码冗余。程序模型A所付出的代价是使用了goto 语句。不过,基于如下的理由,可以认为这个goto 语句的使用不会对程序的可读性造成致命的破坏:

(1) goto 语句被严格限制在case结构内。

首先,case 结构是很灵活的一个结构,它可以有多个出口,我们也常常使用如下的技巧来实现需要使得两个不同的case有相同的处理的情况:

case a:

case b:

do something here;

break;

这样,作为case 结构的多出口的补充,我们实现了使case a 与 case b有相同的出口。而程序模型A使用的goto语句,是对这种相同出口技巧进一步的补充;

其次,goto 语句只在case 结构内使用,所跳转到的位置也在case 结构内,它不会照成大面积的跳转,使程序的阅读者晕头转向;

于是,我们可以认为,在程序模型A中的goto 语句,增加了case 结构的功能。

(2) goto 语句都跳某一共同程序段,并且都是往case结构的出口方向前进。这就保证了带goto 语句的程序的可读性。

以此例可看出,goto 语句能提高程序的效率,但未必必须付出破坏程序可读性的代价。

三、Goto语句与提高程序可读性

用goto语句还能提高程序可读性?回答是肯定的。滥用goto是会破坏程序的可读性,但合理地使用goto语句,除了能提高程序的效率外,还是有可能增加程序的可读性的。

比如,我们经常会遇到类似这样的程序设计问题:要求用户输入一个整数,如果用户输入的整数的值在0到9之间,则让程序完成某个功能,否则要求用户重新输入。如果不用goto语句,任何人都会把程序写成如下的样子:

程序A:

int iInput;

do

{

scanf(“%d”,&iInput);

} while (iInput < 0 || iInput > 9);

这段程序用了循环结构,从而避免了goto 语句。

如果可以使用goto 语句,则可将程序写成这样:

程序B:

int iInput;

GetUserInput:

scanf(“%d”,&iInput);

if (iInput < 0 || iInput > 9) goto GetUserInput;

显然,第二段程序是在现今的程序设计教科书中见不到的,因为它不是结构化的。

用结构化程序设计风格设计的程序具有良好的可读性,但这并不代表风格好的程序都是用了结构化的方法。

对于程序A,直观地说,它的意思是:程序开始后进入一个循环,循环结束的条件是变量iInput的值在0与9之间,而在循环体内要求用户输入iInput

的值;而程序B的直观意义是:要用户输入iInput,如果iInput的值小于0或者大于9,则跳回原先要用户输入iInput的程序段,否则程序继续运行。这两段程序的执行结果完全一样,但显然使用了goto语句的非结构化的程序B同题目的要求在描述上更为一致。

为了获得结构化的程序,我们不得不对原先的描述进行转化:

从描述(1):“要求用户输入一个整数,如果用户输入的整数的值在0到9

之间,则程序继续运行,否则要求用户重新输入。”

转化到

描述(2):“一直做这样的一件事:要求用户输入一个整数,除非用户输入的数在0到9之间。”

这样的转化使得计算机语言同人类语言之间又多了一层隔阂。因为,描述(1)是人类语言最自然的表达方法,却不是结构化程序设计方法所能表达的;描述(2)是用人类语言描述的结构化方法所能接受的直接表达,但对人类来说其含义不如描述(1)直观,不容易理解。在人类阅读上面的两段程序时,程序A

给人传达的是描述(2),程序B传达给人的是描述(1),也就是说,程序B 更容易被人类理解,非结构化的、用了goto语句的程序B更具可读性。

计算机科学家们一直在努力,使计算机语言接近人类的语言。但在实现这样的梦想以前,如果goto 语句在某些场合能使计算机程序更接近人类语言,我们何不用它!

再举个例子:

这是微软的MFC类库中的一段源程序(稍微做了简化),其作用是做MFC应用程序的初始化工作,如果所有的初始化工作成功,则进入线程的运行,否则,只要在初始化过程中有一步失败,就直接退出。其中所用的goto 语句不仅提高了程序的可读性,也简化了程序的编写。

int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPTSTR lpCmdLine, int nCmdShow)

{

int nReturnCode = -1;

CWinThread* pThread = AfxGetThread();

CWinApp* pApp = AfxGetApp();

if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))

goto InitFailure;

if (pApp != NULL && !pApp->InitApplication())

goto InitFailure;

if (!pThread->InitInstance())

{

if (pThread->m_pMainWnd != NULL)

pThread->m_pMainWnd->DestroyWindow();

nReturnCode = pThread->ExitInstance();

goto InitFailure;

}

nReturnCode = pThread->Run();

InitFailure:

AfxWinTerm();

return nReturnCode;

}

不难发现,对于这段程序中复杂的判断与处理间的逻辑联系,如果不使用goto 语句来写程序,而非要拘泥于结构化的理论,则写出来的程序是相当费解的:

if (AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow)

&& (pApp == NULL || pApp->InitApplication())

{

if (pThread->InitInstance())

nReturnCode = pThread->Run();

else

{

if (pThread->m_pMainWnd != NULL)

pThread->m_pMainWnd->DestroyWindow();

nReturnCode = pThread->ExitInstance();

}

}

AfxWinTerm();

return nReturnCode;

这样写的程序看上去似乎有很好的风格,但实质上它所带来的弊病是明显的:

(1)它完全失去了初始化工作中清晰的条理和步骤。原先清晰的分开的步骤被混合在if语句的判断条件中,使得读者需要花更多的时间去理解if的条件;

(2) if 语句中所带的判断条件是个很复杂的逻辑组合,不仅不好理解,而且在编程时容易出错;

(3)对于“如果某一初始化工作失败,则直接退出”这样的简单语意的表达复杂化。

四、Goto 语句与程序加密

事物总是有其两面性,甚至对于滥用goto 语句写程序所造成的程序难读性也不例外。提倡良好的程序设计风格是为了使他人能看懂自己的源程序,但在有些时候,我们不需要或者根本不愿意别人看懂我们的程序的时候,goto 语句是可以派很大的用场的。只要在关键的加密程序段中多用一些goto 语句(如果能够把if语句同goto 语句结合在一起使用那就更好了)上下无规律地跳转,经过编译以后,再高明的解密者对于机器语言写成的如此“天书”也会显得束手无策,起码也得晕头转向。现在有很多的软件加密程序在加密段中均采用了这样的方法以防止解密者跟踪解密,取得了良好的效果。

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

综合大作业(记事本)可视化程序设计

郑州轻工业学院实验报告 实验课程:可视化程序设计基础实验名称: Windows窗体设计 班级:计算机科学与技术01—1班学号: 541007010157 姓名:郑峰弓实验日期: 2011年11月24日 一、实验目的 1.掌握窗体设计步骤、窗体调用。 2.根据自己所做的实验内容可适当增加条目。 3.熟悉本学期学习的各种控件,上交作业。 二、实验内容 2. 仿MS word (或Windows 系统记事本) ,实现一个文本编辑系统: 读取的文件类型可以是txt、rtf等自定义格式 ,不一定用doc格式 实现文本字体、颜色等格式的设置 实现文件保存、打开、新建等功能 实现有关菜单的设计、工具栏的设计和状态 栏的设计(状态栏显示光标所在行、列等) 三、程序开发操作步骤 1. 启动Visual Studio 2008 。 2. 创建项目。设置项目名为“记事本可视化程序设计”。 3. 添加控件。创建过,出现设计界面,此时会出现一窗体Form1,此时窗体时空的,不包含任何控件的。单击“工具箱”的公共控件选项卡,选择MenuStrip控件,将其放在窗口上,创建两个MenuStrip1,MenuStri2,再选择RichTextBox 控件,将其放在窗口上,调整大小及其位置。再工具箱中的所有Window窗体中选择OpenFileDialog,SaveFileDialog,ColorDialog,FontDialog,StatusStrip控件,将其放在窗口上。 4. 设置控件属性。点击窗口,在属性中的text设置为‘记事本’,将Startposition 设置成Centerscreen。点击MenuStrip1,在窗体上加菜单栏,分别为文件,格式,查看,编辑,在文件,格式,查看,编辑,下又建立子菜单,如下图所示。在子菜单下各自设置各自的热键和快捷键,在MenuStri2上添加8个button,分

结构化系统设计方法的基本思想及方法要点

结构化系统设计方法的基本思想是以系统的逻辑功能设计和数据流关系为基础,根据数据流程图和数据字典,借助于标推的设计淮则和图表工具,通过“自上而下”和“自下而上”的反复,逐层把系统划分为多个大小适当,功能明确,具有一定独立性,并容易实现的模块,从而把复杂系统的设计转变为多个简单模块的设计。 从目前大多数信息系统的开发现状来看,结构化系统设计方法是运用最为普遍,同时也是最为成熟的一种开发方式。简单地说,结构化系统设计方法可以用三句话进行概括;自上而下;逐步求精;模块化设计。 首先,自上而下,就是在管理信息系统的设计与系统分析阶段,必须采用整体大于局部、上级优于下级的设计思路。优先考虑如何满足领导层的管理需求,其次才考虑中层与底层的管理需求。 其次,对客户的需求分析应做到逐步求精。在深入调研的基础上力图在编写程序之前就清晰地了解客户的实际运作过程,从而制定出切实可行的开发方案,并且为将来可能的功能扩展留有充分的余地。 最后阶段才进入程序编写阶段。在进行软件设计时采用模块化的设计思路,并且采用自下而上的实施方法,即先开发一些能够独立运行并完成某些功能的小型程序模块,而后将这些模块进行组合。采用这种设计方法,在所有功能模块开发完成之后,只需将所有模块进行有机组合,就能够获得一个完善的系统。 二、结构化系统设计方法的由来与发展 在数据处理领域,“结构化”…词最早出现于程序设计,即结构化程序设计。“结构化”的含义是指用一组标准的准则和工具从事某项工作。在结构化程序设计之前,每一个程序员都按照各自的习惯和思路编写程序,没有统一的标准,也没有统一曲技术方法,因此,程序的调试、维护都很困难,这是造成软件危机的主要原因之一。1966年,Bohn和Jacopinl提出了有关程序设计的新理论.即结构化程序设计理论。这个理论认为,任何——个程序都可以用三种基本逻辑结构来编制,而且只需这三种结构。这三种结构分别是顺序结构、判断结构和循环结构,其特点是每种结构只有一个入口点和一个出口点。程序设计的新理论,促使人们采用模块化编制程序,把一个程序分成若干个功能模块,这些模块之间尽量被此独立,用作业控制语句或程序内部的过程调用语句将这些模块连接起来,形成—‘个完整的程序。一般来说,结构化程序设计方法不仅大大改进了程序的质量和程序员的工作效率,而且还增强了程序的可读性和可修改性。 显然,结构化程序设计是一种成功的方法。但是,它并不能够解决所有的问题,特别是系统开发过程中的系统分析和系统设计问题。程序设计员不可能对一个系统产生整体的印象,结构化程序设计方法也不能解决系统的结构问题,更不能解决系统战略模型的表达问题。 但是,结构化程序设计的思想启发了人们对系统设计产生了新的想法。既然可以用…组标准的方法来构造一个程序,为什么不可以用—‘组标准的准则和工具进行系统设计呢?于是,结构化程序设计中的模块化思想越引入到了系统设计工作中。一个系统由层次化的程序模块构成,每一个模块只有一个入口和一个出口,每一个模块只归其上一级模块调用,并且

可视化程序设计试卷(含答案)

2014年春季学期 《可视化程序设计》试卷A 一.选择(每道小题2分,共20道小题,合计40分) 1.在C++语言的if 语句中,用作判断的表达式为( )。 A 、关系表达式 B 、逻辑表达式 C 、算术表达式 D 、任意表达式 2.设i 和k 都是int 类型,则以下for 循环语句( )。 for(i=0,k=-1;k=1;i++,k++) cout << "****\n"; A 、判断循环结束的条件不合法 B 、是无限循环 C 、循环体一次也不执行 D 、循环体只执行一次 3.下列关于this 指针的说法正确的是( ) A 、this 指针存在于每个函数之中 B 、在类的非静态函数中this 指针指向调用该函数的对象 C 、this 指针是指向虚函数表的指针 D 、this 指针是指向类的函数成员的指针 4.若给出以下程序,其输出为( )。 #include void main(void) { int a=4,b=7; cout << (a=a+1,b+a,b+1) << endl; } A 、5 B 、8 C 、11 D 、程序有错误,无法运行 5.若给定条件表达式(m)?(a++):(a--),则其中表达式m ( )。 A 、和(m==0)等价 B 、和(m==1)等价 C 、和(m!=0)等价 D 、和(m!=1)等价 6. 对二维数组的正确说明是( )。 A 、 int a[ ][ ]={1,2,3,4,5,6}; B 、 int a[2][ ]={1,2,3,4,5,6}; C 、 int a[ ][3]={1,2,3,4,5,6}; D 、 int a[2, 3]={1,2,3,4,5,6}; 7. 定义一个函数实现交换x 和y 的值,并将结果正确返回。能够实现此功能的是( )。 A 、 swap(int x, int y){ int t; t=x; x=y; y=t; } B 、 swap(int *x, int *y){ int t; t=x; x=y; y=t; } C 、 swap(int *x, int *y){ int t; t= *x; *x = *y; *y=t; } D 、 swap(int *x, int *y){ int *t; t=x; x=y; y=t; } 8. 下面函数的功能是( )。 void fun(char s1[ ], char s2[ ]) { while(*s2++=*s1++); } A 、 字符串比较 B 、 字符串复制 C 、 字符串连接 D 、 字符串反向 9. 以下叙述不正确的是( )。 A 、 在C++程序中,严格区分大小写字母 B 、 一个C++源程序有且仅有一个main 函数 C 、 在C++程序中,注释只能位于一条语句的后面 D 、 一个C++程序总是从main 函数开始执行 10. 下列叙述中,不正确的是( )。 A 、 this 指针是指向当前调用成员函数的对象的指针 B 、 this 指针可用于类中非静态的数据成员和函数成员 C 、 this 指针破坏了类的封装性 D 、 this 指针的类型与所指对象的类型相同 11.如有定义:int a[10],*p=a;以下正确的使用是( )。 A 、a[10]=5 B 、a=5 C 、*(p+1)=5 D 、p[5]=&a[5] 12. 如有以下定义:static int a[10]; static char b[10]; float c[10]; 关于数组a ,b ,c 中各元素的值,下列说法中不正确的是( )。 A 、数组a ,b ,c 中各元素都没有被赋值,因而他们的值均为随机数据。 B 、数组a 中各元素的值均为0。 C 、数组b 中各元素的值均为’\0’。 D 、数组c 中各元素的值均为随机数据。 13.已知小写字母a 的ASCII 码值是97,则字符E 的ASCII 码值是( )。 A 、101 B 、65 C 、69 D 、67 14.以下有关宏替换的叙述不正确的是( )。 A 、宏替换不占用运行时间。 B 、宏名无类型。 C 、宏替换只是字符替换。 D 、宏名必须用大写字母表示。 15.为了避免嵌套条件语句的二义性,C/C++语言规定else 总是与( )配对使用。 A 、同一行上的if B 、缩排位置相同的if C 、其之前最近的未配对的if D 、其之后最近的未配对的if 16. 设有二维数组定义:int a[3][3]={{1,2},{0},{0,6}}; 数组元素a[0][1]、a[1][2]和a[2][2]的值分别是( )。 A 、 1,0,6 B 、 2,0,0 C 、 1,0,0 D 、 2,0,6 17.若已定义 char s[10];则在下面表达式中不表示s[1]的地址的是( )。 A 、s+1 B 、s++ C 、&s+1 D 、&s[1] 班级: 学号: 姓名: ………………………………密…………………………………………封…………………………………………线……………………………………………

1、C语言是一种结构化程序设计语言

一、判断题 1、C语言是一种结构化程序设计语言。() 2、C语言允许直接访问物理地址。() 3、一个算法应该具备有穷性、确定性、输入、输出和有效性。() 4、常量是在整个程序运行过程中不能改变的量。() 5、“A”是一个字符常量。() 6、标准C中并没有提供定义常量的方法。() 7、在程序运行过程中其值可以改变的量称为变量。() 8、在标准C中并不区分英文字符的大小写。() 9、在标准C中,数据在内存中是以二进制形式表示的。() 10、在标准C中,变量可以先使用再定义。() 11、在标准C中,整型变量与字符变量是可以通用的。() 12、“%”运算两侧的数据可以是任意类型的数据。() 13、在求C语言的表达式时,只需考虑运算符的优先级。() 14、在标准C中,参与运算的数据类型必须完全一致。() 15、“++”运算符的优先级比“+”运算符的优先低。() 16、逗号运算符的求值顺序是从左到右的,逗号表达式的值为第一个表达式的值。() 17、在标准C中,语句是用来完成一定的操作的,故声明部份不是语句。() 18、一个C程序可以有若干个C源程序组成,而C源程序可以由若干个函数和预处理组成。() 19、在标准C中,语句必须以“;”结束。() 20、在标准C中,变量定义一定要出现在函数开始部分。() 21、在标准C中,“=”是判断两个数是否相等。() 22、在标准C中,赋值表达式可以出现在表达式的任何位置。() 23、C语言本身并不提供输入输出语句。但可以通过输入输出函数来实现数据的输入输出。() 24、在标准C中,使用所有输入输出函数必须包含“stdio.h”文件。() 25、在标准C中,在函数printf格式说明部分的字符都是以转义字符处理。() 26、在标准C中,以“%f”形式输出的所有数字都是有效数字。() 27、在C语言中输入数据时可以指定数据的精度。() 28、在标准C中,在使用函数scanf输入数据时必须同函数中输入格式一致。() 29、在标准C中,没有逻辑型数据,故不能使用逻辑表达式。() 30、在标准C中,所有关系运算符的优先级都相同。() 31、在if语句中,else前一个语句可不加“;”。() 32、在标准C中,逻辑表达式中只允许出现逻辑型数据。() 33、在if——else语句中,配对规则是else总是与最近的未配对的if配对。() 34、在标准C中,所有的if——else语句都可以用条件语句替换。() 35、在switch语句中,case后可不加“{、}”。() 36、在标准C中,while和do_while的功能完全相同。() 37、在标准C中,while后表达式只能是逻辑或关系表达式。() 38、在标准C中,for语句后的三个表达式必须都出现。() 39、在标准C中,for语句后的三个表达式是按其先后次序执行的。() 40、在标准C中,for语句后的三个表达式可以是任意类型的表达式。() 41、在C语言中操作系统是以文件为单位对数据进行管理的。()

结构化程序设计习题答案

第三章结构化程序设计部分习题 一、选择题 1、设有程序段 int k=10; while(k=0) k=k-1; 则下面叙述中正确的是( ) (A) while循环执行10次 (B) 循环是无限循环 (C) 循环体语句一次也不执行 (D) 循环体语句执行一次 2、设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; cout<

while(n++<=2); cout< void main() { int a,b,t; cin>>a>>b; while( ①) { if(a>b) {t=a; a=b; b=t } cout<>a>>b; } } (A) !a=b (B) a!=b (C) a==b (D) a=b 9、下面程序的运行结果是( ) #include void main() { int i,j,x=0; for(i=0;i<2;i++)

结构化程序设计方法

结构化程序设计方法 设计方法的产生 结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件打下了良好的基础。 基本要点 1.采用自顶向下,逐步求精的程序设计方法 在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。 2.使用三种基本控制结构构造程序 任何程序都可由顺序、选择、重复三种基本控制结构构造。 (1)用顺序方式对过程分解,确定各部分的执行顺序。 (2)用选择方式对过程分解,确定某个部分的执行条件。 (3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。

(4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。 3. 主程序员组的组织形式指开发程序的人员组织方式应采用由一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据,文档资料管理等)三个为核心,再加上一些专家(如通信专家、数据库专家)、其他技术人员组成小组。 设计语言 C,FORTRAN,PASCAL,Ada,BASIC 设计方法的原则 自顶向下

程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 逐步细化 对复杂问题,应设计一些子目标作为过渡,逐步细化。 模块化设计 一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。 限制使用goto语句 结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。

浅谈结构化程序设计与GOTO语

浅谈结构化程序设计与GOT O语句 魏为民 摘要:本文讨论了结构化程序的基本特征,提出了goto语句在某些特殊情况下的程序设计中的一些用处。 关键词:结构化程序;goto语句;程序设计优化;程序可读性;程序加密。 荷兰学者Dijkstra提出了“结构化程序设计”的思想,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性,这种方法要求程序设计者不能随心所欲地编写程序,而要按照一定的结构形式来设计和编写程序,它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率。在Djakstra的时代,goto语句曾经引发了一场规模不小的争议,从那以后,goto就不被程序员青睐了。虽然到了最后,人们并没有把goto 语句处以极刑,然而亦鲜有人撰文提及goto 语句的用处,我们只能读到关于goto语句弊病的文章。在各种程序设计教科书上几乎都提到了goto ,并且青一色地建议其读者在编程时不用goto语句,因为:“可以证明,任何一个程序都可以使用三种基本的结构来构成,goto语句是多余的”。很可能再过几年人们就将忘记当今各种程序设计语言中几乎都具备的goto 语句了。在本文中,结合本人的一些编程经验,谈谈 goto 语句在某些特殊情况下的程序设计中的用处。 一、结构化程序设计的基本特征 结构化程序设计(Structured Programming)是荷兰学者E.W.Dijkstra等人在研究的人的智力局限性随着程序规模的增大而表现出来的不适应之后,于1969年提出的一种程序设计方法,这是一种复杂任务时避免混乱的技术。提出了把程序结构规范化的主张,要求对复杂问题的求解过程应按我们大脑容易理解的方式进行组织,而不是强迫我们的大脑去接受难以忍受的冲击。具体来说,结构化程序设计的思想包括以下三方面的内容: (1)程序由一些基本结构组成。任何一个大型的程序都由三种基本结构所组成,由这些基本结构顺序地构成了一个结构化的程序。这三种基本结构为:顺序结构(如下图(1)所示),选择结构(亦称分支结构,如下图(2)所示)和循环结构(如下图(3)所示)。 图1 顺序结构图图2 选择结构图图3 循环结构图

2-1 结构化程序设计基础

《2.1 结构化程序设计基础》 1. 目标概述[3分钟] (2) 2. 回顾[5分钟] (2) 3. 课程知识点讲解 (2) 3.1. 算法[60分钟] (2) 3.2. 结构化程序设计思想[20分钟] (8) 4. 小结[2分钟] (9) 5. 考核点 (9) 6. 作业答案 (9) 7. 扩展练习 (10) 8. 学生问题汇总 (10) 9. 教学后记 (10)

本节目标 ?本节中将讲述如下主要内容: ?算法的概念 ?常用流程图符号的介绍 ?顺序结构、选择结构、循环结构的图形描述 ?结构化程序设计思想 ?通过教学使学生理解结构化程序设计思想、掌握逻辑流程图的使用。 本节重点 ?算法的概念 ?常用流程图符号的介绍 ?顺序结构、选择结构、循环结构的图形描述 ?结构化程序设计思想 本节难点 ?逻辑流程图的使用 授课课时 ?2课时 教法建议 1.目标概述 [3分钟] 本章主要讲述结构化程序设计基础概念、运用。 本节主要讲述结构化程序设计思想、逻辑流程图的使用。 2.回顾 [5分钟] 回顾上一章的相关内容。 3.课程知识点讲解 3.1.算法[60分钟] 引入: 什么是算法? 主题: 从第一章的学习中,我们已经看到编制一个程序,我们不仅要解决“做什么”的问题,更重要的是要明确指明具体的步骤,也就是“怎么做”的问题,同时还需要保证其正确性和高效性,这是程序设计方法学中“算法”要解决的问题。

在古代,人们把采用算术的方法求解未知问题的运算过程称为算法。 在近代,人们把采用科学的方法完成某项事务的执行过程称为算法。 在现代,特别是计算机诞生之后,人们把计算机解题步骤称为计算机算法。 [算法的描述] 对于算法,需要选择一种合适的表达方式进行描述,现在常用的描述工具有:自然语言、流程图、伪代码、N-S图、PAD图等。 1. 用自然语言描述算法 描述算法人们首先想到就是某种自然语言(如:汉语)。使用自然语言描述算法的优点是描述自然、灵活和多样,其缺点是易产生二义性。因此,在算法设计中应少用或不用自然语言描述算法。有时在设计初步算法时可适当采用自然语言描述,然后用其它描述工具细化算法描述。下面给出几个用自然语言描述的算法例子。 示例讲解: 示例2.1.1接受一个数并使它加1,显示其结果,用自然语言描述其过程。 示例2.1.2到图书馆借书,用自然语言描述其过程。 示例2.1.3泡一杯茶,设计并用自然语言描述其过程。 示例2.1.4计算并输出1+2+3+ … +100之和,设计并用自然语言描述其算法。 [通过示例简单讲述用自然语言描述算法的使用] 2.用流程图描述算法 流程图是采用图形的方法来描述算法的一种算法描述工具,通常称框图。流程图是目前使用较为普遍的算法描述工具,其优点是描述简洁、清晰、直观,缺点是由于转移箭头的无限制使用,影响算法的可靠性。通过规范图形符号和对转移箭头的限制使用可削弱流程图的缺点,提高算法的可靠性。由于流程图优点突出,所以至今仍是程序设计人员普遍采用的算法描述工具。本书的后续章节均将采用流程图来描述问题的解决过程,以帮助大家熟悉流程图的使用。 使用流程图描述工具,应采用比较标准的图形符号,最好采用国家或国际标准。下面我们将介绍一些常用的流程图符号。

C语言程序设计(结构化程序设计)

在程序设计发展过程中,特别是在70年代初期,各种大型、复杂的软件系统陆续问世,随着软件系统规模的扩大和复杂性的增加,软件的开销(编写程序耗费的大量的人力、财力)惊人地增加,而产品的可靠性和可维护性却明显地降低了,人们把程序设计的这种困境叫做"软件危机"。 上述问题促使人们开始对程序设计方法进行研究,1969年Dijkstra首先提出了结构化程序设计的思想与概念,强调从程序结构上来研究与改变传统的设计方法,经计算机科学工作者的实践,结构化程序设计得到了普遍应用,程序设计也逐步走向规范化和工程化。面向对象程序设计是在结构化程序设计基础上发展起来的一种新的程序设计方法。在本章中主要介绍结构化程序设计方法,面向对象程序设计将在第9-12章进行讲解。 1.2.1结构化程序设计基本思想 结构化程序设计(面向过程程序设计)支持自顶向下、逐步细化和模块化的结构化分析方法。 在求解一个问题时一般不能立即写出详细的算法或程序,但可以很容易写出一级算法,即求问题解的轮廓,然后对一级算法逐步求精,把它的某些步骤扩展成更详细的步骤。细化过程中,一方面加入详细算法,一方面明确数据,直到根据这个算法可以写出程序为止。自顶向下、逐步求精的方法符合人类解决复杂问题的思维方式,用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序层次结构清晰,容易阅读、理解和测试。 程序设计中还常采用模块化的设计方法,当任务比较复杂,往往按问题的需要,将其分解为若干个子任务,这些子任务还可以划分为更小、更简单的子任务。这样,对于大程序将其化整为零编写,由多个人共同进行程序的开发,或者是对那些重复使用的程序段,将其进行独立设计,使其达到计算机可以重复执行,而设计人员又不必重复去编写的目的,避免重复设计,消除因交叉设计而产生的错误。这样划分的程序段落被称为程序模块。这种程序设计的方式被称为模块化程序设计。以这种方式设计的程序,可以使其达到层次分明、结构简洁而又严谨的目的,从而提高程序设计的速度和质量。 程序中的子模块在C语言中通常用函数来实现。一个子模块用一个函数实现,完成一个功能。每个子模块的大小要适度。 1.2.2三种基本结构 结构化程序设计用三种基本结构,通过组合和嵌套就能实现任何单入口单出口的程序。这三种基本结构是顺序结构、选择结构和循环结构。 1. 顺序结构 按照顺序依次执行A,B程序块。顺序结构是最简单的一种基本结构。见图1-1。 2. 选择结构 又称分支结构,见图1-2,根据给定的条件P进行判断,由判断的结果决定执行两个分支中的一个分支。当P为真时执行A程序块,否则执行B程序块。无论条件P是否成立,A和B程序块只能有一个被执行到,执行之后就离开了该选择结构。当B为空时,条件P为假时不执行任何操作。 3. 循环结构 又称为重复结构,给定条件成立时反复执行某一程序段。在图1-3中,当P为真时反复执行A程序块,每执行一次测试一次P,直到P为假,跳出循环结构。 虽然从理论上讲只用上述三种基本控制结构就可以实现任何单入口、单出口的程序,但是为了实际使用方便起见,常常还允许使用"直到型"循环和多分支结构:

Java结构化程序设计

. 昆明理工大学信息工程与自动化学院学生实验报告 ( 2012—2013学年 第 一 学期 ) 课程名称:Java 程序设计 开课实验室:442 2012年 11月 7 日 一、实验目的及内容 目的:掌握和巩固Java 结构化程序设计的概念、方法。 内容: 1. (使用&&、||、^运算符)编写一个程序,该程序让用户输入一个整数,然后判断该整数是否能 同时被5和6整除;是否能被5或6整除;是否能被5或6整除,但不能同时被5和6整除。 例如:在命令行模式下该程序运行可呈现如下结果(注,也可以图形界面方式实现) Enter an integer: 10 Is 10 divisible by 5 and 6? false Is 10 divisible by 5 or 6? true Is 10 divisible by 5 or 6, but not both? true 2. 编写一个程序(利用循环)计算下面式子: 3. 写一个函数,该函数返回一个数组中值最小的元素的索引值,若该数组中值最小的元素多于一 个,则返回索引最小的那个,该函数的声明如下所示,在main 函数中调用并测该函数。 public static int indexOfSmallestElement(int[] list) 二、要求 1. 给出上述程序的流程图、代码和测试结果。 100 999998...433221+++++

内容一: 流程图: .

实验代码 import java.util.Scanner; public class Class1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print("Enter an integer:"); int numble=input.nextInt(); boolean numble1=(numble%5==0)&&(numble%6==0); boolean numble2=(numble%5==0)||(numble%6==0); boolean numble3=(numble%5==0)^(numble%6==0); System.out.println("is "+numble+" divisible by 5 and 6?"+numble1); System.out.println("is "+numble+" divisible by 5 or 6?"+numble2); System.out.println("is "+numble+" divisible by 5 or 6,but not both?"+numble3); } } 运行结果: .

可视化程序设计基础

上海工程技术大学 2009年硕士研究生入学考试《可视化程序设计基础》考试大纲 报考专业:服装设计与工程 考试科目:可视化程序设计基础 考试代码:806 考试参考书:向珏良.可视化程序设计基础.上海交通大学出版社,2003. 考试总分:150分 考试时间:3小时 一、考试目的与要求 可视化程序设计基础是服装设计与工程设计的工具,利用计算机软件技术为设计人员提供了良好的设计平台和编程工具。 要求学生系统掌握程序设计方法及可视化技术,养成良好的编程习惯。精通一种可视化平台及其软件开发技术,能按服装设计与工程设计要求进行具体的软件编码和设计。要求考生学会可视化程序设计工具的使用,掌握面向对象的程序设计方法、事件驱动的编程方式,能够设计、编制、调试实用的可视化程序。 二、考试内容 第一章 VB基本知识 的特点 (1)面向对象的程序设计方法 (2)程序界面的可视化设计 (3)事件驱动的程序设计机制 的集成开发环境 了解Visual Basic的启动与退出,环境界面 中对象的概念及对象的属性、事件和方法 VB中的基本概念:对象、对象的属性、对象的事件及其事件过程、对象的方法、

工程。 复习重点: ●理解VB程序的基本特点,VB与其他可视化程序的区别; ●掌握和了解VB的开发环境; ●理解对象的概念,知道对象的三要素,了解事件驱动的程序设计思想和面向 对象的程序设计方法。 第二章基本控件的可视化设计 1.标签、命令按钮、文本框 标签控件的属性、方法和事件;命令按钮控件的属性、方法和事件;文本框控件的属性、方法和事件。 2.复选框、单选框、框架 复选框、单选框、框架的主要属性、使用方法、所响应的事件,可视化的设计工具设计程序界面。 3.组合框、列表框、滚动条 组合框、列表框、滚动条主要属性及方法的运用。 复习重点: ●一些常用的基本控件相关的属性、方法和事件。标签、命令按钮、文本框的主要属性及使用方法,掌握用可视化的设计工具设计程序界面; ●复选框、单选框、框架的主要属性、使用方法及所响应的事件; ●组合框、列表框、滚动条主要属性及方法的运用。 第三章程序设计基础 1.基本语法 (1)基本数据类型 数据类型:数值型数据、字符串型数据、布尔型数据、对象型数据以及变体类型。 (2)常量与变量 两种形式的常量,即直接常量和符号常量;变量的命名规则、变量定义时应注

程序设计基础(一) (1)模拟题

[模拟] 程序设计基础(一) 一、选择题(每小题2分,共70分) 下列各题[A]、[B]、[C]、[D] 四个选项中,只有一个选项是正确的。 第1题: 结构化程序设计主要强调程序的 ______。 A.效率 B.速度 C.可读性 D.大小 参考答案:C 答案解析: 第2题: 结构化程序设计方法主要是为 ______ 服务的。 A.项目管理人员 B.程序员 C.系统分析员 D.用户 参考答案:B 答案解析: 第3题: 程序设计属于软件开发过程的 ______ 阶段。 A.分析 B.定义 C.实现 D.维护 参考答案:C 答案解析: 第4题: 信息隐蔽的概念与下述 ______ 概念直接相关。 A.软件结构定义 B.模块类型划分 C.模块独立性

D.模块耦合性 参考答案:C 答案解析: 第5题: 以下关于结构化程序的说法中,正确的是 ______。 A.结构化程序由单入口、单出口和循环3种结构组成 B.结构化程序由顺序、单入口和单出口3种结构组成 C.结构化程序由顺序、循环和goto3种结构组成 D.结构化程序由顺序、循环和分支3种结构组成 参考答案:D 答案解析: 第6题: 结构化程序设计方法特点大致可分为3点,下列选项中, ______ 不是其特点。 A.要求所有模块都使用单入口、单出口,顺序、选择和循环三种控制结构 B.由顶向下逐步求精的程序设计方法 C.采用模块化来实施具体开发 D.充分考虑模块间的相互联系 参考答案:D 答案解析: 第7题: 结构化程序设计理论认为,实现良好的程序结构要应用 ______ 的分析方法。 A.自顶向下 B.自底向上 C.面向对象 D.基于组件 参考答案:A 答案解析: 第8题: 下列各项中,不是结构化程序基本模块结构的是 ______。 A.处理单元 B.循环机制

可视化程序设计课程教学大纲资料

《可视化程序设计》课程教学大纲 课程简介 《可视化程序设计》课程是计算机专业的一门必修专业课。这门课程是以Visual C# .NET为语言背景,主要特点是采用面向对象与事件驱动的程序设计思想,使编程变得更加方便、快捷。使学生掌握一种Windows环境下的软件开发工具。通过本课程的学习,进一步提高学生的计算机应用能力,在掌握了结构化程序设计的基本方法、模块化结构思想及编程技术的基础上,较全面系统地掌握面向对象程序设计的基本概念及可视化程序设计开发思想、开发方法及开发过程。将所学理论知识应用于本专业及相关领域实际工作中,从而达到提高学生的实际动手能力、分析问题及综合处理能力的目的。 课程大纲 一、课程的性质与任务 VC#可视化程序设计是一门专业基础课或专业技术课。通过该课程的学习,使学生掌握MS .NET 框架的母语C#的基本语法、面向对象程序设计的原理和实现方法以及使用可视化开发工具进行事件驱动程序的基本原理和方法。初步掌握在VS开发环境下使用C#语言编写基于Windows Form的.NET 应用程序的有关知识和技能。 二、课程的基本要求 熟悉C#的有关语法以及面向对象的概念和设计方法;熟悉在VS开发环境下使用.NET窗体和常用控件类设计应用程序界面;掌握使用基本的https://www.360docs.net/doc/2216887355.html,类,设计简单的客户端数据库应用程序;初步掌握多媒体和图形图像程序设计技术 三、修读专业 信息管理与信息系统 四、先修课程:《C程序设计》、《数据结构》、《数据库管理系统》 五、本课程与其它课程的联系 先修课程:《C程序设计》、《数据结构》、《数据库管理系统》 后续课程:C#高级编程、Web Service、.NET frame work、软件设计实训等 六、教学内容安排、要求、学时分配及作业 主要内容: 第一章https://www.360docs.net/doc/2216887355.html,集成开发环境(1学时)

结构化程序设计

结构化程序设计 结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则。其概念最早由E.W.Dijikstra在1965年提出的。是软件发展的一个重要的里程碑,它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、重复三种基本控制结构构造。 详细描述处理过程常用三种工具:图形、表格和语言。 图形:程序流程图、N-S图、PAD图表格:判定表 语言:过程设计语言(PDL) 结构化程序设计曾被称为软件发展中的第三个里程碑。该方法的要点是: (1)没有GOTO语句;//在有资料里面说可以用,但要谨慎严格控制GOTO语句,仅在下列情形才可使用: ·用一个非结构化的程序设计语言去实现一个结构化的构造。 ·在某种可以改善而不是损害程序可读性的情况下。 (2)一个入口,一个出口; (3)自顶向下、逐步求精的分解; (4)主程序员组。 其中(1)、(2)是解决程序结构规范化问题;(3)是解决将大划小,将难化简的求解方法问题;(4)是解决软件开发的人员组织结构问题。 结构化程序设计的三种基本结构 结构化程序设计的三种基本结构是:顺序结构、选择结构、循环结构 结构化程序设计原则和方法的应用 基于结构化程序设计原则、方法以及结构化程序基本构成结构的掌握和了解,在结构化程序设计的具体实施中,要注意把握如下要素: 1. 使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑; 2. 选用的控制结构只准有一个入口和一个出口; 3. 程序语句组成容易识别的块,每块只有一个入口和一个出口; 4. 复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现; 5. 语言中没有的控制结构,应该采用前后一致的方法来模拟; 6. 严格控制 GOTO语句的使用。其意思是指: ( 1 )用一个非结构化的程序设计语言去实现一个结构化的构造; ( 2 )若不使用 GOTO 语句会使功能模糊; ( 3 )在某种可以改善而不是损害程序可读性的情况下。

可视化程序设计课程教案

可视化程序设计课程教学大纲

可视化程序设计课程教学大纲 (总学时数:56(38+18),学分数:3.5) 一、课程的性质、任务和目的 可视化程序设计课程是计算机科学与技术专业的专业课。 本课程以面向对象的可视化编程为核心,介绍Visual Basic程序设计中的基本概念、基本语法和编程方法,重点介绍了Visual Basic语言中程序的调试技术、文件访问技术、数据库访问技术等,要求学生通过理论学习和上机实习,深刻理解和领会Windows程序设计的特点和风格,掌握其方法和要领,学会可视化程序设计的通用方法和步骤。能够较快地掌握同类的编程语言,如:Delphi 等。 二、课程的基本内容和要求 (一)VB概述 教学内容: 1.VB的特点 2.VB的启动和退出 3.VB的集成开发环境 教学要求: 介绍Visual Basic的特点、熟悉Visual Basic的集成开发环境和定制系统集成开发环境的基本方法。 (二)VB编程基础 教学内容: 1.基本概念和术语 2.工程管理 3.创建一个简单的VB应用程序(应用程序设计、程序启动与 运行、编译应用程序)

教学要求: 掌握Visual Basic中面向对象程序设计的基本概念、VB中工程管理的基本方法,熟练掌握Visual Basic应用程序从界面设计到代码设计、程序编译和程序运行的全过程。 (三)Visual Basic程序设计基础 教学内容: 1.基本概念 2.常量、变量及数据类型 3.数组 4.枚举、自定义类型 5.顺序结构、选择结构和循环结构 6.过程 7.VB中的常用函数 教学要求: 熟练掌握Visual Basic语言的基本语法、Visual Basic语言中关于程序结构、数据类型、常用函数、过程的基本概念。 (四)用户界面设计 教学内容: 1.简介 2.标准控件 3.文本编辑处理常用方法 4.ActiveX控件简介 教学要求: 熟练掌握窗体的常用属性、事件和方法,明确各标准控件的功能,熟练使用【属性】窗口设置属性,能为控件的事件过程编写简单代码,学会使用剪贴板对象、键盘事件,了解一些常用的ActiveX控件的功能。 (五)窗体、菜单和对话框 教学内容: 1.用户界面简介

第5讲结构化程序设计之流程控制语句.

第5讲结构化程序设计之流程控制语句 教学过程设计 一新课引入 默认情况下程序是顺序执行的。 当程序员在编写程序时并不知道在一次具体执行中执行者会做些什么时,他可以建立一个执行者用以作出判定的标准。例如:“朋友来了,端出好酒;豺狼来了,拿出猎枪。”。 有时程序的某部分可能需要执行多次。例如:在中草药炮制过程中,对某种药材要经过“九蒸九晒”才符合要求,这种重复必须指明重复的次数。有时重复执行程序的某部分不一定有明确的次数,但可以以是否达到某个目标作为重复终止的判断依据。例如:在把假分数化成真分数时,可以从分子中不断地减去分母,直到分子小于分母为止。 操作之间的关系——操作流程包括:顺序、选择、循环、转向(语言表达所需要的)。其中顺序、选择、循环是三种基本结构,已经证明,由这三种基本结构组成的程序结构,可以解决任何复杂的问题。由基本结构所构成的程序是结构化的程序,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。软件工程提倡程序员书写结构化的程序。 C语言提供的流程控制语句有——描述“选择”的语句有:if语句、switch语句;描述“循环”的语句有:while语句、do-while语句、for语句;描述“转向”的语句有:goto语句、break语句、continue语句、return语句。为了达到直观形象、易于理解的效果,我们在进行结构化编程的同时可以辅助以一种图形工具——结构化的流程图。 本讲将主要介绍关于四种操作流程:顺序、选择、循环、转向的C语言描述、图形描述方法,以及由三种基本结构所构成的结构化的程序。 二讲授新课 1顺序 默认情况下程序是顺序执行的,所以C语言没有必要提供相关的描述语句来表示。 2选择 当程序员在编写程序时并不知道在一次具体执行中执行者会做些什么时,他可以建立一个执行者用以作出判定的标准。例如:“朋友来了,端出好酒;豺狼来了,拿出猎枪。”。 C语言提供的描述“选择”的语句有:if语句、switch语句。

相关文档
最新文档