编程思想
程序设计通俗地说就是完成一件事情时对步骤的安排。人们平时做每一件事情,其实都使用了程序设计的思想。比如要举行一次会议就要有筹划、安排会议的步骤,这就是程序设计。程序设计思想就是这样的,而计算机程序设计则是指在计算机上完成一件事情的过程。通常人们说完成一件事情,就是解决问题。这里所说的问题,不是平时所说的问题,而是指要解决的一个任务,要完成的一件事情。也就是说,计算机程序设计就是通过计算机解决问题的过程。这里面实际上有两个层面的问题,首先是解决问题的方法和步骤;其次是如何把解决问题的方法和步骤通过计算机实现。要想在计算机上完成这个任务,得用计算机语言来完成,就如同和英国人说话要用英语,和日本人说话要用日语一样,和计算机说话要用计算机语言。
有一个著名的计算机程序设计(以后简称程序设计)的公式:
程序设计 = 算法+数据结构+计算机语言
其实,初学者要想更容易上手的话,可以从算法和计算机语言两个方面来掌握程序设计。也就是说,初学者只要了解算法和计算机语言,就可以进行程序设计工作了。
1.1 程序设计思想
程序设计(programming)是指设计、编制、调试程序的方法和过程。上面已经说过,对于初学者,了解程序设计可以把解决问题的方法与步骤和在计算机上实现这个过程分开来考虑。解决问题的方法与步骤就是人们所说的算法。把算法在计算机上实现也就完成了程序设计的过程。从这个过程来看,算法是程序的核心,是程序设计要完成的任务的“灵魂”。初学者可以只考虑这样的公式:
程序设计=算法+计算机语言
1.1.1 程序设计的基本步骤
程序设计最终要利用计算机来解决问题,完成任务,其基本步骤如下。
(1)设计完成解决问题的方法与步骤,即完成算法设计。
(2)在计算机上用计算机语言把算法中的方法与步骤实现。
(3)调试编辑好的程序。这也是程序设计思想之一,人们完成的程序设计不可能一次成功,就是再天才的人,思维再缜密的人,也不可能保证自己编的程序没有错误。
1.1.2 程序设计的学习方法
从程序设计的基本步骤上可以看出,要想学好程序设计,首先要了解和掌握算法的概念,然后再学习一门计算机语言,这样,才可以初步完成在计算机上进行程序设计的工作。本章主要介绍算法的概念和思想。从第2章开始详细介绍C语言(计算机语言)的基本知识,通过学习并使用C语言来完成计算机程序设计的工作。学习计算机语言的最终目的是要进行程序设计,而学习计算机语言的语法、规则的目的是为了更好地掌握计算机语言。
目前的计算机语言已经从低级语言发展成为高级语言了,高级语言更方便用户使用,它的源代码都是文本型的,但是,计算机本身只能接受二进制编码的程序,不能直接运行这种文本型的代码,因此需要通过翻译把高级语言源程序代码转换成计算机能识别的二进制代码,这样计算机才能执行,而这个翻译,在这里把它称做编译系统,也可以看成是计算机语言的编程界面。
本章接下来首先介绍算法的概念和思想,然后再介绍计算机语言的上机环境,也就是C语言的编译系统。目前大家比较喜欢使用的C语言编译系统有Turbo C和VC++两种上机环境。Turbo C简单灵活,适合初学者掌握,VC++是Windows系统下的编程环境,界面友好。
1.2 算法
算法是解决问题的方法与步骤,比人们平时理解的数学中算法的概念要广义一些。算法是程序的核心,是程序设计要完成的任务的“灵魂”。不论是简单还是复杂的程序,都是由算法组成的。算法不仅构成了程序运行的要素,更是推动程序正确运行、实现程序设计目标的关键。
1.2.1 算法的概念
当人们要买东西时,就会先设定目标,然后到合适的商店挑选想要的物品,最后结账、拿发票(收据)、离开商店;当要理发时,就会先到一家理发店与理发师商量好发型,然后理发、结账;当要使用计算机时,就会先打开显示器、开机、输入密码,然后使用。不论人们做什么事情,都有一定的步骤。算法(algorithm),简单来说就是解题的步骤,可以把算法
定义成解决某一特定类型问题的任意一种特殊的方法。算法是程序设计的“灵魂”,它独立于任何具体的程序设计语言,一个算法可以用多种编程语言来实现。算法是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算,是对解题方案准确、完整的描述。在程序设计中,算法要用计算机算法语言描述出来,算法代表用计算机解决某一类问题的精确、有效的方法。
【例1.1】 输入3个互不相同的数,求其中的最小值。
首先设置一个变量min,用于存放最小值。当输入a、b、c 3个不相同的数后,先将a与b进行比较,把相对小的数放入min,再把c与min进行比较,若c小于min,则将c的值放入min替换min中的原值,若c大于min,则min值保持不变,最后min中就是3个数中的最小值。详细步骤如下。
① 先将a与b进行比较,若a<b,则a→min,否则b→min;
② 再将c与min进行比较,若c<min,则c→min。
这样,min中存放的就是3个数中的最小值。
求解一个给定的、可计算或可解的问题,不同的人可以编写出不同的算法来解决同一个问题。例如计算1999+2999+3999+…+9999,也许有的人会选择一个一个加起来,当然也有人会选择(2000–1)+(3000–1)+…+(10000–1)的算法。理论上,不论使用哪种算法,只要逻辑正确并能够得出正确的结论就可以,但是,为了节约时间、运算资源等,当然提倡简单易行的算法。制定一个算法,一般要经过设计、确认、分析、编码、测试、调试、计时等阶段。
对算法的研究主要包括5个方面的内容。
(1)设计算法。算法设计工作的完全自动化是不现实的,算法的设计最终还是要人们自己来完成,应学习和了解已经被实践证明可行的一些基本的算法设计方法,这些基本的设计方法不仅适用于计算机科学,而且适用于电气工程、运筹学等任何算法相关的其他 领域。
(2)表示算法。算法的类型不同、解决的问题不同、解决问题的步骤不同,表示算法的方法也自然有很多种形式,例如自然语言、图形、算法语言等。这些表示方式各有特,也分别有适用的环境和特点。
(3)认证算法。算法认证其实就是确认这种算法是否能够正确的工作,是否达到解决问题的目的,即确认该算法具有可行性。正确的算法用计算机算法语言描述,构成计算机程序,计算机程序在计算机上运行,得到算法运算的结果。
(4)分析算法。对算法进行分析,确认这个算法解决问题所需要的计算时间和存储空间,并对其进行定量分析。对一个算法的分析可以很好地预测一种算法适合的运行环境,从而判断出其适合解决的问题。
(5)验证算法。用计算机语言将算法描述出来,进行运行、测试、调试,客观地判断算法的实际应用性、合理性。
1.2.2 算法的特性
一个算法应当具有以下5方面性质。
(1)确定性。与我们日常的行为不同,算法绝对不能有含糊其辞的步骤,像“请把那天的书带来!”,这种无法明确哪一天、哪一本书、带到哪里的语句是不能够出现在算法中的,否则,算法的运行将变得无所适从。算法的每一步都应当是意义明确、毫不模糊的。
(2)可行性。算法的基本目的是解决问题,所以要求算法至少是可以运行并能够得到确定的结果的,不能存在违反基本逻辑的步骤。
(3)输入。一个算法有0个或多个输入,在算法运算开始之前给出算法所需数据的初值,这些输入取自特定的对象集合。
(4)输出。作为算法运算的结果,一个算法产生一个或多个输出,输出是同输入有某种特定关系的量。
(5)有穷性。一个算法应包含有限个操作步骤,而不能是无限的。一个算法总是在执行了有穷步的运算后终止,即该算法是可达的。
满足前4个特性的一组规则不能称为算法,只能称为计算过程。操作系统是计算过程的一个例子,操作系统用来管理计算机资源、控制作业的运行,没有作业运行时,计算过程并不停止,而是处于等待状态。
1.2.3 算法的表示
由于算法的步骤繁简不同、解决的问题不同,算法的表示方法也有许多种,一般可以归纳为以下几种。
1.自然语言表示
自然语言,简单来说就是人们日常生活中应用的语言。相对于计算机语言来说,自然语言更容易被接受,也更容易学习和表达,但是自然语言往往冗长烦琐,而且容易产生歧义。例如:“他看到我很高兴。”便不清楚是他高兴,还是我高兴。尤其是在描述分支、循环算法时,用自然语言十分不方便。所以,除了一些十分简单的算法外,我们一般不采用自然语言来表示算法。
2.图形表示
用图形表示算法即用一些有特殊意义的几何图形来表示算法的各个步骤和功能。使用图形表示算法是一种很好的方法,因为千言万语不如一张图明了易懂,图形的表示方法比较直观、清晰,易于掌握,有利于检查程序错误,在表达上也克服了产生歧义的可能。一般我们使用得比较多的有传统流程图、N-S流程图、PAD流程图等。本书只介绍传统流程图,其他流程图请参看其他程序设计书籍。
传统的流程图一般由图1.1所示的几种基本图形组成。
开始或结束框 处 理 框 输入/输出框 判 断 框 连接点 流程线
图1.1 流程图的基本图形
【例1.2】 输入两个整数给变量x和y,交换x和y的值后再输出x和y的值。
分析:完成本题需要3个步骤,首先输入两个整数给低级编程语言x和y;之后交换x和y的值;最后输出x和y。
根据以上分析,画出程序的流程图(见图1.2),并根据流程图写出程序:
main()
{ int w,x,y;
printf("请输入两个整数:");
scanf("%d%d",&x,&y);
w=x;
x=y;
y=w;
printf("交换后:x=%dy=%d\n",x,y);
}
说明:
① scanf()函数为输入函数,可以用来输入数据;输出数据可以使用printf()函数。
② 引入第3个变量w,先把变量x的值赋给w,再把变量y的值赋给x,最后把变量w的值赋给y,最终达到交换变量x和y的值的目的。引入w的作用是交换变量x和y的值。交换x和y的值不
能简单地用x=y;和y=x;这两个语句,如果没有把x的值保存到其他变量就执行x=y;语句,把y的值赋给x,将使x和y具有相同的值,丢失x原来的值,也就无法实现两个值的交换。
假如输入3和9,运行程序时,屏幕可能显示如下信息:
请输入两个整数:3 9
交换后:x=9 y=3
【例1.3】 输入a、b、c 共3个数,把最小的值输出,流程图如图1.3所示。
图1.2 例1.2流程图 图1.3 例1.3流程图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论