赋值语句与输入、输出语句
右侧的算法是否正确?如果不正确,问题出在何处,应该如何修改? 试题评析: 已知函数y= ,请设计其函数值的算法. 不可以忽视算法执行的顺序性,选择结构只对本语句有效,如果不使用“转”,或“结束”,则下一条语句必将继续执行. S1 输入x; S2 如果x>0,则y← , 否则转S3; S3 如果x=0,则y ←0, 否则y← ; S4 输出y . 右侧的算法是否正确?如果不正确,问题出在何处,应该如何修改? S2 如果x>0,则y← , 否则转S3; S2 如果x>0,则y← ,转S4;
计算机完成任何一项任务都需要算法,但是,用自然语言或程序框图描述的算法,计算机是无法“看得懂,听得见”的 计算机完成任何一项任务都需要算法,但是,用自然语言或程序框图描述的算法,计算机是无法“看得懂,听得见”的.因此还需要将算法用计算机能够理解的程序设计语言(programming language)翻译成计算机程序. 程序设计语言有很多种,如BASIC,Foxbase,C语言,C++, J++,VB等.各种语言的语法存在比较大的区别,因此我们教材 使用了一种介于自然语言和计算机语言之间的文字和符号,来表 表示算法.这种文字和符号,称为伪代码(pseudo code). 为了能更好的检验我们的算法,我们还要将伪代码转换为真正 的程序,我们使用的工具是一种称为VBA(Visual Basic for Application)的程序设计语言,它可以看成是VB程序设计语言的一种简化版本.
赋值号左边只能是变量,不能是表达式或常数; 赋值号左右两边不能调换; 赋值号左右两边可以出现同一个变量,但值可能不相同; 赋值语句: 值语句伪代码的一般格式:变量←表达式(公式或运算式)或变量. 如:“x←y” 表示:将y的值赋给x. 注意: 赋值号左边只能是变量,不能是表达式或常数; 赋值号左右两边不能调换; 赋值号左右两边可以出现同一个变量,但值可能不相同; 赋值号左右两边的量应该是同类型的.
引例:用伪代码写出求x=3时多项式 的值的算法. 伪代码: 虚线边框 10 x←3 20 y ←(x2+x/3)( -1)
输入语句伪代码的一般格式: Read a,b . 输入语句: 输入语句伪代码的一般格式: Read a,b . 输入语句也是赋值语句,只不过是从键盘等输入设备上接受数据,而且可以批量接受数据. 输出语句: 输出语句伪代码的一般格式: Print a,b . 注意使用输出语句输出字符串时,字符内容应加在括号内.
数学应用: 例1. “鸡兔同笼”是我国隋朝时期的数学著作《孙子算经》中的一个有趣而具有深远影响的题目:“今有雉兔同笼,上有三十五头,下有九十四足.问雉兔各几何.” 设有x只鸡,y只兔,则 下面我们设计一个解二元一次方程组的通用算法.
自然语言: 流程图: 开始 输入a1,b1, c1, a2,b2, c2 x←(b2c1-b1c2)/(a1b2-a2b1) y←(a1c2-a2c1)/(a1b2-a2b1) 输出x,y 结束 S1 输入a1,b1, c1, a2,b2, c2; S2 x←(b2c1-b1c2)/(a1b2-a2b1) ; S3 y←(a1c2-a2c1)/(a1b2-a2b1) ; S4 输出x,y. 伪代码: 10 Read a1,b1, c1, a2,b2, c2 20 x←(b2c1-b1c2)/(a1b2-a2b1); 30 y←(a1c2-a2c1)/(a1b2-a2b1) 40 Print x,y
10 Read a1,b1, c1, a2,b2, c2 20 x←(b2c1-b1c2)/(a1b2-a2b1) 30 y←(a1c2-a2c1)/(a1b2-a2b1) 40 Print x,y Sub 解二元一次方程组() Dim a1, b1, c1, a2, b2, c2, x, y As Single a1 = InputBox("输入a1", "输入二元一次方程组的系数") b1 = InputBox("输入b1", "输入二元一次方程组的系数") c1 = InputBox("输入c1", "输入二元一次方程组的系数") a2 = InputBox("输入a2", "输入二元一次方程组的系数") b2 = InputBox("输入b2", "输入二元一次方程组的系数") c2 = InputBox("输入c2", "输入二元一次方程组的系数") x = (b2 * c1 - b1 * c2) / (a1 * b2 - a2 * b1) y = (a1 * c2 - a2 * c1) / (a1 * b2 - a2 * b1) MsgBox "方程组的解为:x=" & x & ",y=" & y End Sub
在word工具菜单的宏子菜单下,打开 VBA编辑器. 在VBA编辑器中输入代码.
点击执行程序 输入方程组未知数系数 输出方程组的解
例2.求多项式函数 , 当x=5时的函数值? 10 x← 5 30 Print y 20 y ← 例2.求多项式函数 , 当x=5时的函数值? 10 x← 5 30 Print y 20 y ← 我们一共做了1+2+3+4+5=15次乘法运算,5次加法运算. 一共做了4+5=9次乘法运算,5次加法运算. 10 x← 5 20 a ←x * x 30 b ← a* x 40 c ← b* x 50 d← c * x 60 y ← 7d+6c+5b+4a+3x+1 70 Print y 有没有更简单的算法?
秦九韶算法,其算法特点是:通过一次式的反复计算,逐步得出高次多项式的值;对于一个n次多项式,只要做n次乘法和n次加法. 这种方法是我国南宋时期的数学家秦九韶在他的代表作《数书九章》中提出的,直到今天,这种算法仍是多项式求值比较先进的算法. 10 x← 5 20 y←7x+6 30 y ← y* x+5 40 y← y* x+4 50 y← y * x+3 60 y ← y*x+1 70 Print y
计算机的一个重要特点是运算速度很快,但即便如此,算法好坏的一个重要标志仍然是运算的次数.如果一个算法理论上需要超出计算机允许范围内的运算次数,那么这样的算法只能是一个理论算法.据说国际象棋一盘棋的可能下法有10^100种,比整个宇宙中的原子还多.因此,用枚举法穷尽国际象棋所有可能下法的算法永远不可能实现的.
课堂小结: 1、赋值语句: 注意: 赋值号左边只能是变量,不能是表达式或常数; 赋值号左右两边不能调换; 值语句伪代码的一般格式:变量←表达式(公式或运算式)或变量. 如:“x←y” 表示:将y的值赋给x. 注意: 赋值号左边只能是变量,不能是表达式或常数; 赋值号左右两边不能调换; 赋值号左右两边可以出现同一个变量,但值可能不相同; 赋值号左右两边的量应该是同类型的.
输入语句伪代码的一般格式: Read a,b . 输入语句: 输入语句伪代码的一般格式: Read a,b . 输入语句也是赋值语句,只不过是从键盘等输入设备上接受数据,而且可以批量接受数据. 输出语句: 输出语句伪代码的一般格式: Print a,b . 注意使用输出语句输出字符串时,字符内容应加在括号内.
课后作业: 课本 P17 练习 No.1、2、3.