算法与程序设计 周少品.

Slides:



Advertisements
Similar presentations
编程加工 信息的. 趣味导入拓展提升大显身手总结反思学以致用 传说古代印度有个国王叫舍罕,他很迷恋棋类,而 宰相达依尔是个聪明的大臣,发明了国际象棋。国王玩 得爱不释手,决定奖赏宰相。达依尔说:陛下,我别无 他求,请你在这张棋盘的第一个格子里赏我 1 粒麦子; 在第二个格子里赏我 2 粒麦子;在第三个格子里赏我.
Advertisements

Visual Basic 程序设计 第四讲.
第2章 Visual Basic 6.0编程基础 (第一部分)
第四章 控制结构.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
三、课后练习1: p.24练习第一题程序 程序: INPUT “F= ”;F C=(F-32)*5/9 PRINT “C= ”;C END
算法和程序设计 第4课 分支结构的算法设计 •.
第五章 数组.
Visual Basic程序设计.
BLANK overview.
VB內建函數與應用.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
課程名稱:程式設計 授課老師:________
第二章 Visual Basic语言基础.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
程式語言 -Visual Basic 變數、常數與資料型態.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
初识Visual Basic.
算法与程序设计.
Visual Basic程序设计基础 计算机科学学院.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
计算机程序设计强化复习 Visual Basic 6.0.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
Visual Basic 程序设计 教师:王 杨 电话:
第3章 Visual Basic语言基础 郭清溥.
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
第12章 VBA模块设计.
RWM600 (13.56MHz) Reader Antenna.
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
新觀念的 VB6 教本 第 6 章 資料型別.
第5章 Visual Basic控制结构 之 常用算法举例
第 8 章 过程.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
Visual Basic程序设计.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
第三章 VB语言基础 本章重点和难点 3.1 Visual Basic 程序代码的组织方式 3.2 代码行的书写规则
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
VB语言程序设计教程.
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数.
小结 郭清溥.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
1位选手参加了歌唱比赛,评委们的评分如下:
Print方法和函数 2019/5/19.
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
7.2 正弦公式 附加例題 1 附加例題 2.
解析算法与枚举算法.
随机数、数组、解析、枚举.
算法与Visual Basic程序基础(二)
信息的加工 Word中查找和替换、自动更正、批注、修订 Excel中公式和函数、排序和筛选、图表的建立和编辑 字符识别OCR.
VB语言基础 一、 常量 1 定义:在程序运行过程中不能发生改变的量 2 分类 整型常量: 整数 不带小数点的数 数值常量
程序调试与错误处理.
Presentation transcript:

算法与程序设计 周少品

算法及算法的特征 算法是对解题方法的精确而完整的描述,即解决 问题的方法和步骤。 算法的特征: 有穷性。一个算法必须保证它的执行步骤是有限的, 即它是能终止的。 确定性。算法中的每个步骤必须有确切的含义,不能有 二义性。 能行性。算法中的每一个步骤都能实际操作的,而且能 在有限的时间内完成。 有0个或多个输入。算法常需要对数据进行处理,因此 算法常常需要数据输入。如果初始数据已经存在,则不 再需要从外部输入数据。 有一个或多个输出。算法的目的是用来解决问题的,它 必须向人们提供最终的结果。

算法的表示 自然语言 有序地用简洁的自然语言(汉语、英语等语言)和 数学符号来描述算法。其特点是通俗易懂,但容易 出现歧义。 流程图 用一些图框、流程线以及文字说明来表示算法,直 观、形象、容易理解。 程序设计语言 用计算机语言来表示算法,如Visual Basic。

流程图中各种框图的名称及作用 符号名称 图形 功能 开始/结束框 表示算法的开始与结束 输入/输出框 表示算法的输入/输出操作 处理框 表示算法的各种处理操作 判断框 表示算法的条件判断操作

算法的三种基本模式 顺序结构:算法的每个指令按先后顺序依次执行。 不会出现If、For…Next、do While…Loop语句 指令1 指令2 顺序模式 指令1 指令2 条件 选择模式 Y N Y N 条件 指令 循环模式 顺序结构:算法的每个指令按先后顺序依次执行。 不会出现If、For…Next、do While…Loop语句 选择(分支)结构:判断条件是否成立,并选择某一条路径中的指令执行 肯定会出现IF语句,但不会出现For…Next、do While…Loop语句。 循环结构:首先判断条件是否成立,如果不成立则跳出循环体,如果条件 成立则执行循环体内的指令,然后再次判断条件是否成立,如果条件成立 则再次执行循环体内的指令,直至条件不成立跳出循环体为止。 肯定会For…Next或do While…Loop语句

面向对象程序设计的几个概念 对象:客观存在的事物或概念 属性:描述对象的状态 方法:对属性进行操作和处理的方法 窗体、文本框、标签、命令按钮等都是对象 它由若干属性和若干方法组成 属性:描述对象的状态 如name、Caption、Text等属性 方法:对属性进行操作和处理的方法 类:对相同性质的对象的一种抽象 一个对象是类的一个“实例” 事件:在对象上激发的一种动作。 程序被打开、单击鼠标、键盘上按下一个键等。 事件处理过程:对象上一个或多个方法的执行

Visual Basic 6.0界面 工程窗口 事件 过程 代码窗口 属性窗口 控件工具箱 VB常用的事件过程 事件名 说明 Command1_Click 单击按钮事件 Form_Load 加载窗体事件 Timer1_Timer 定时器事件 工程窗口 事件 过程 工程名 标签 Label 文本框 TextBox 代码窗口 窗体名 命令按钮 CommandButton 对象类型 窗体 对象名 属性窗口 列表框 ListBox 控件工具箱 属性名 属性值 常用控件的属性 属性名 说明 备注 Name 对象变量的名称 所有控件共有 Caption 对象显示的标题   Text 对象显示的文本内容 文本框特有 对象

对象名 对象类型 属性名 属性值

基本数据类型 数据类型 关键字 取值范围 数值型 Integer -32768~32767范围内的整数 Long (整型) -32768~32767范围内的整数 Long (长整型) -2147483648~2147483647范围内的整数 Single (单精度实数型) 有效数字约6~7位的实数 Double (双精度实数型) 有效数字约14~15位的实数 字符串型 String 一段文字或符号 逻辑型 Boolean 真(True)或假(False) 日期型 Date 日期和时间 数值型

常量与变量 常量和变量指的是数据的存储区。 在程序执行过程中,常量的值是不变的,变量 的值是可以改变的。 常量与变量的命名规则: 以字母开头 由字母、数字和下划线等字符组成 不能使用VB的保留字(即VB专用的关键字) 例如:合法变量名:A_1 ABC A A1 非法变量名:1A 1_A A#1 true

3 常量与变量的声明 E 常量声明语句 变量的声明 变量的赋值 Const 常量名 As 数据类型 = 值 Const 常量名 = 值 例如:Const A1 As String = “173cm” Const 常量名 = 值 例如:Const B1 = 173 变量的声明 Dim 变量名 As 数据类型 例如:Dim E As Long 变量的赋值 例如:E = 3 在程序代码中,字符串型变量的值需要用双引号进行表示。 例如A = True和B = "True" 变量A的数据类型为逻辑型 变量B为字符串型。 例如C = 123和D = "123“ 变量C的数据类型为数值型 变量D为字符串型。 E 3

常用函数(学考部分) 求x的算术平方根 36 1. Abs(-3.6) * Sqr(100)的值是____________________。 函数名 函数的功能 Val(x) 数字字符串x转换为数值 Str(x) 数值x转换为字符串 Int(x) 求不大于x的最大整数 Abs(x) 求x的绝对值 Sqr(x) 求x的算术平方根 Len(x) 计算字符串x的长度 Mid(x,n,k) 取字符串x中第n个字符起长度为k的子串 Rnd()或Rnd 产生一个大于等于0且小于1的随机数 36 1. Abs(-3.6) * Sqr(100)的值是____________________。 Int(Rnd * 6 + 1) 2. 随机产生一个1-6之间的整数的VB表达式是____________________ 。

常用函数(选考部分) e=2.71828 函数名 函数的功能 Fix(x) 截掉数值型数字的小数部分 Asc(x) 获得字符的ASCII码值 Chr(x) 将ASCII码值转换为字符 Exp(x) 求e的x次方(即ex) Log(x) 求以e为底的x的对数(即Logex) Sin(x) 求x的正弦值 Cos(x) 求x的余弦值 Tan(x) 求x的正切值 e=2.71828

自定义函数 注意:函数必须有返回值,且通过对函数名的赋值来完成。 赋值方法:函数名=表达式 闰年判断的VB程序 Private Sub Command1_Click() Dim yyyy As Integer yyyy = Val(Text1.Text) Label2.Caption = L (yyyy) End Sub Function L (y As Integer) As String If y Mod 4 = 0 And y Mod 100 <> 0 Or y Mod 400 = 0 Then L = "闰年,366天" Else L = "平年,365天" End If End Function 注意:函数必须有返回值,且通过对函数名的赋值来完成。 赋值方法:函数名=表达式

基本运算符 √ “School” √ 1.下列运算结果中,值最大的是 A.3\4 B.3/4 C.4 mod 3 D.3 mod 4 运算名称 运算符 优先级 示例 算术 乘幂 ^ 1 7 ^ 2计算结果为49 取负 - 2 -7表示负7 乘法 * 3 7 * 2计算结果为14 实数除法 / 7 / 2计算结果为3.5 整数除法 \ 4 7 \ 2计算结果为3 求余数 Mod 5 7 mod 2计算结果为1 加法 + 6 7 + 2计算结果为9 减法 7 - 2计算结果为5 字符连接 + 或 & "7“ + "2"计算结果"72" 关系 相等 = 7 7 = 2结果为False 不相等 <>  7 <> 2结果为True 小于 <  7 < 2结果为False 大于 >  7 > 2结果为True 小于等于 <= 7 <= 2结果为False 大于等于 >= 7 >= 2结果为True 逻辑 非 Not 8 Not(7 > 2) 结果为False 与 And 9 (7>2) and (7<2) 结果为False 或 Or 10 (7>2) or (7<2) 结果为True 1.下列运算结果中,值最大的是 A.3\4 B.3/4 C.4 mod 3 D.3 mod 4 √ 2.如下程序段运行后,变量s的值为 m = "sch" n = Mid("tools", 2, 3) s = m + n “School” 3.如果a=3,b=4,c=6,那么下 列表达式值为真的是 A.(a>b) And (b>c) B.(a>c) And (b>a) C.(a>b) Or (b>c) D.(a>c) Or (b>a) √

表达式 (-b + Sqr(b ^ 2 – 4 * a * c)) / (2 * a) 4 True 表达式由变量、常量、运算符、函数和圆括号等按一定 的规则组合而成的。 表达式的运算过程中,运算级别最高的先执行;同级别 自左向右顺序执行;遇到括号,先执行括号内的运算。 VB中只使用一种括号“()”,它可以多次嵌套,按由内 向外的顺序执行。 【练习】写出 −𝑏+ 𝑏 2 −4𝑎𝑐 2𝑎 的VB表达式 【练习】表达式3 + 27 \ 2 mod 3 * 2的值是______ 【练习】已知A = 5,B = 4,C = 3,则表达式 A>B And C<A Or Not C>B And A<C的值是____ (-b + Sqr(b ^ 2 – 4 * a * c)) / (2 * a) 4 True

赋值语句的格式 变量名 = 表达式 对象名.属性名=表达式 两条语句写在同一行用 : 分开 在语句后可以用 ‘开头进行注释 例1:a = 3 b = b + 1 d = (-b + Sqr(b ^ 2 – 4 * a * c)) / (2 * a) 例2:k = Text1.Text h = Text1.Text + Text2.Text 对象名.属性名=表达式 例:Text1.Text = d Label1.Caption = “确定” 两条语句写在同一行用 : 分开 在语句后可以用 ‘开头进行注释

54 54 8 3 有如下VB程序段: a = 12 : b = 54 : a = b : b = a 该程序段执行后,变量a、b的值分别是 x = 3 : y = 8 : x = x + y : y = x – y : x = x – y 该程序段执行后,变量x、y的值分别是 两个数的交换:z = x : x = y : y = z 开始 a←12 b←54 a←b b←a 输出a,b 结束 54 54 开始 x←3 y←8 x←x+y y←x-y x←x-y 输出x,y 结束 8 3

选择结构 (书本P76) If <条件> Then <语句块1> Else <语句块2> End if 条件? Y N If <条件> Then <语句块> End if 行IF语句:If <条件> Then <语句块> If <条件> Then <语句块1> Else <语句块2> End if 行If语句: 1.必须在一行上写完,不得换行 2.不能写End if 语句块1 语句块2 条件? Y N 行IF语句:If <条件> Then <语句块1> Else <语句块2> If <条件1> Then <语句块1> ElseIf <条件2> Then <语句块2> Else <语句块3> End if 语句块1 条件1? Y N 条件2? 语句块2 语句块3

已知三角形的三边长a、b、c,求三角形面积。 a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a + b > c and a + c > b and b + c > a then p = (a + b + c) / 2 s = Sqr(p * (p - a) * (p - b) * (p - c)) Text4.Text = Str(s) End If a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If a + b > c and a + c > b and b + c > a then p = (a + b + c) / 2 s = Sqr(p * (p - a) * (p - b) * (p - c)) Text4.Text = Str(s) Else Text4.Text = “三角形不成立!” End If

Private Sub Command1_Click() a=Val(Text1.Text) If a mod 2=0 Then Text2.Text=“偶数” Else Text2.Text=“奇数” End If End sub 开始 输入数字a Y A mod 2 = 0 ? N A 为偶数 A 为奇数 结束 Private Sub Command1_Click() a=Val(Text1.Text) If a mod 2=0 Then Text2.Text=“偶数” Else Text2.Text=“奇数” End sub VB程序

某商场进行年末促销活动,买200元以上打9折,400 元以上8折,800元以上6 某商场进行年末促销活动,买200元以上打9折,400 元以上8折,800元以上6.5折。某女士买了一件价值 N元的皮衣,请帮她计算实际需要付多少钱! If Buy>=200 and Buy<400 Then Pay=Buy*0.9 ElseIf Buy>=400 and Buy<800 Then Pay=Buy*0.8 ElseIf Buy >= 800 then Pay=Buy*0.65 Else Pay=Buy End if

在列表框上显示1000个字母a List1.AddItem "a" … 1000个 开始 结束 List1.AddItem “a” 开始 C ← 1 Y C>1000? N List1.addItem “a” C ← C + 1 结束

For C = 1 to 1000 step 1 List1.addItem “a” Next C 循环变量 初值 终值 步长(增量) 开始 C>1000? C ← 1 结束 N Y List1.addItem “a” C ← C + 1 循环变量 初值 终值 步长(增量) For C = 1 to 1000 step 1 List1.addItem “a” Next C 循环变量

显示1至1000之间所有的奇数 For C = ① to ② step ③ ④ Next C List1.addItem C Next C 当Step的值为1时, 可以省略不写 For C = 1 to 1000 step 1 if C Mod 2 = 1 then List1.addItem C Next C 显示1至1000之间所有3的倍数 For C = 3 to 1000 step 3 List1.addItem C Next C For C = ① to ② step ③ ④ Next C For C = 1 to 1000 step 1 if C Mod 3 = 0 then List1.addItem C Next C

打印1至1000之间所有3的倍数 升序 For C = 1 to 1000 step 1 If C Mod 3 = 0 then List1.addItem C End If Next C 降序 For C = 1000 to 1 step -1 If C Mod 3 = 0 then List1.addItem C End If Next C

那么如何计算S=13+33+…+93呢? 思考:计算S=1+2+3+…+100的结果 S = 0 S = 0 程序 思路: S=0 i=1 S=S+1=1 i=2 S=S+2=3 i=3 S=S+3=6 i=4 S=S+4=10 …… …… i=100 S=S+100=5050 S = 0 For i = ① to ② Step ③ ④ Next i Text2.Text=Str(S) S = 0 For i = 1 to 100 Step 1 S = S + i Next i Text2.Text=Str(S) 那么如何计算S=13+33+…+93呢?

读程序写结果 k=0 For g=10 To 19 Step 3 k=k+1 Next g X=1 Text1.Text=Str(k) ① X=1 Y=1 For i=1 To 3 F=X+Y X=Y Y=F Next i Text1.Text=Str(F) ③ 4 x = 2 For y = 1 To 8 Step 3 x = x + y Next y Text1.Text=Str(x) ② ② 5 14

在屏幕上打印1000个a的字母序列 For C = 1 to 1000 step 1 List1.addItem “a” Next C 开始 C = 1 Y C>1000? C = 1 Do While C <= 1000 List1.addItem “a” C = C + 1 Loop N List1.addItem “a” Print “a” C = C + 1 结束

Do while 条件表达式 Loop [执行过程] 循环体 Loop [执行过程] 先计算条件表达式的值,如果值为True,则 执行一次循环体中的语句块,遇到Loop语句 后,再次计算条件表达式的值,若仍为True, 继续执行循环体中的语句块,如此不断重复, 直到条件表达式的值为False时,才终止Do 语句的执行。

T = 0 : n = 0 Do While T < 100 n = n + 1 T = T + n Loop 已知T=1+2+3+…+N,求T>100的最小值, 并输出N的值。 T = 0 : n = 0 Do While T < 100 n = n + 1 T = T + n Loop Label1.Caption = Str(T) Label2.Caption = Str(n)

读程序写结果 K = 0 : X=0 Do While K < 20 If K mod 5 = 0 Then X = X + K K=K+1 Loop Text1.Text=Str(X)

一张单据上有一个5位数的编码(25??6),其百位数和十位数处已经变得模糊不清,但是知道这个数是67的倍数,请找出所有符合条件的5位数。 For x = 25006 To 25996 step 10 If _____________ Then List1.AddItem Str(x) End If Next x 25??6 x Mod 67 = 0 For x = 0 to 99 z = _____________ If_____________Then List1.AddItem Str(z) End If Next i 枚举算法 25006 + x * 10 把问题所有的可能解一一地罗列出来,并对每一个可能解进行判断,以确定这个可能解是否是问题的真正解 z Mod 67 = 0

解析算法 练习:已知三角 形的三条边长a、 b、c分别为5,7, 8,求该三角形面 积。 Private Sub Command1_Click() Dim a,b,c,p,s As Single a=Val(Text1.Text) b=Val(Text2.Text) c=Val(Text3.Text) If a+b>c and b+c>a and a+c>b Then p=(a+b+c)/2 s=Sqr(p*(p-a)*(p-b)*(p-c)) Text4.Text=Str(s) Else Text4.Text=“三角形不成立!” End if End Sub 解析算法 用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解