新觀念的 VB6 教本 第 6 章 資料型別.

Slides:



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

第2章 Visual Basic 6.0编程基础 (第一部分)
第一章 十六世紀中葉以前的臺灣與原住民 第一節 考古發掘與史前文化.
浙江省深化高校考试招生制度综合改革试点方案(2017新方案)
量化vs質性研究分析 量化vs質性研究分析 報告人:王秀民.
唐宋傳奇、筆記小品和史書、論著中的寓言 中碩二 吳佳樺.
兒童期 7 青春期 兩性圓舞曲 乘客:七年級同學 司機:張立杰老師.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
摇摆的中东地区 永嘉县实验中学 张 杰.
摇摆的中东地区 永嘉县实验中学 张 杰.
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
星星知我心 談古話今….. ……..觀星望斗 主講人: 陽光青春美少男.
反垃圾掩埋場相關報告 組長:文煊 組員:鄭侃文 李浩暐 胡育睿 李瑞耘 朱祐賢 林承宇.
"性"不"性"由你 性別平等之探討 北屯國小 張文陵.
組員: 洪暐翔、 賴峻毅 侯家豪、 賴琦穎 指導老師: 王惠鈴 老師
我国的宗教政策 第七课第三框.
高等医药院校药学类第三轮规划教材——大学计算机基础
ASP VBScript 基础知识.
台中市不動產經紀人職業工會 不動產經紀營業員 複訓班
程式語言Visual Basic 變數的可視範圍
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
第二章 Visual Basic语言基础.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
1、数组的概念 2、静态数组 3、动态数组 4、数组的基本操作 5、控件数组
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
Visual Basic程序设计 第八章 过程 -子程序和函数
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第12章 VBA编程 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能的扩展。Office中包含Visual Basic for Application(VBA),VBA具有与Visual.
初识Visual Basic.
算法与程序设计.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
计算机程序设计强化复习 Visual Basic 6.0.
程序的基本要素 2018/12/6.
Visual Basic 程序设计 教师:王 杨 电话:
第3章 Visual Basic语言基础 郭清溥.
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
3.5 用递归法解决问题 黄学鸿.
第12章 VBA模块设计.
RWM600 (13.56MHz) Reader Antenna.
RWM600 (13.56MHz) Reader Antenna.
PCR300 (13.56MHz) Reader RS232/USB.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
Visual Basic程序设计.
第4章 常量和变量 常量和变量都是程序中预留的用于保存数据的内存空间。常量的值在程序运行过程中始终不会发生变化。而变量的值在程序的运行过程中是可以变化的。在Fortran语言中,有五种基本的数据类型可供使用。他们分别是整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)。按用途,又可以分数值型、字符型和逻辑型三种。相应的常量和变量也可以分为这三种。本章将按照用途介绍常量和变量的基本概念。
算法与程序设计 周少品.
第三章 VB语言基础 本章重点和难点 3.1 Visual Basic 程序代码的组织方式 3.2 代码行的书写规则
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
VB程序设计语言 主讲教师:王 杨.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
VB语言程序设计教程.
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
程序基础 2019/4/25.
第二章、第三章错题分析.
VB 2005資料型別與運算子.
1位选手参加了歌唱比赛,评委们的评分如下:
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
解析算法与枚举算法.
變數、資料型態、運算子.
信息的加工 Word中查找和替换、自动更正、批注、修订 Excel中公式和函数、排序和筛选、图表的建立和编辑 字符识别OCR.
VB语言基础 一、 常量 1 定义:在程序运行过程中不能发生改变的量 2 分类 整型常量: 整数 不带小数点的数 数值常量
程序调试与错误处理.
Presentation transcript:

新觀念的 VB6 教本 第 6 章 資料型別

6-1 "1"+"1"≠"2"

資料型別的觀念 -- 比較它們的差異 1+1 等於 2 "1"+"1" 等於 11 資料型別的觀念 -- 比較它們的差異 1+1 等於 2 "1"+"1" 等於 11 Print #10/5/97# > #8/5/97# 得到 True Print "10/5/97" > "8/5/97" 得到 False Print 4.0/3 印出 1.33333333333333 Print 4/3 印出 1.333333 (VB 5.0版) Print 4/3 印出 1.33333333333333 (VB 6.0版)

6-2 VB的資料型別

VB的資料型別 資料類別 資料型別 型別的英文名稱 字串 String 日期時間 Date 布林 Boolean 數值 整數 長整數 倍精準度 單精準度 Integer Long Double Single

檢驗資料的型別

檢驗資料的型別 ? TypeName(#11/25/97#) ' 日期 Date ' 日期時間型別 ? TypeName(True) ' 布林資料 Boolean ' 布林型別

檢驗數值資料的型別 ? TypeName(1.5) 小數 Double 倍精準度型別 ? TypeName(4.9E+12) 浮點數 Double 倍精準度型別 ? TypeName(100) 整數 Integer 整數型別 ? TypeName(100000) 整數 Long 長整數型別 ? TypeName(123456789012) 整數 Double 倍精準度型別

6-3 數值資料型別

整數型別 所佔用的空間是2 bytes,也就是16個位元(bit)。 共可表示 216=65536個整數值,又因為其 中一半的數要用來表示負數,所以整數 的範圍在 -32768~32767之間。 例如: 20480 ' 數值介於 -32768~32767 之間,所以會存成整數型別

長整數型別 所佔用的空間是4 bytes等於32個位元(bit)。 可表示的整數個數有232=216×216=65536×65536, 是整數型別的65536倍。 其數值範圍介於 -2147483648~2147483647之 間,約9~10位數。如果數值超過整數型別的 容量,但可以放得進4 bytes裡面,則會被存成 長整數型別,例如: 2500 ' 在整數範圍之內, 所以存成整數型別 56000 ' 超過整數範圍,但是在長整數範圍之 內,所以存成長整數型別

精準度型別 型 別 所佔 空間 有效位數 指數值 範圍 可表示的數值範圍 倍精準度 8 bytes 15 位 -324~308 型 別 所佔 空間 有效位數 指數值 範圍 可表示的數值範圍 倍精準度 8 bytes 15 位 -324~308 負數:-1.79E+308~ -4.94E-324 正數: 4.94E-324~ 1.79E+308 單精準度 4 bytes 7 位 -45~38 負數:-3.4E+38~ -1.4E-45 正數: 1.4E-45~ 3.4E+38

資料被存成倍精準度型別的情況一 如果一個數值被表示成小數或浮點數,VB都會將它存成倍精準度型別。 例如: 56.396 小數表示法,存成倍精準度型別 1.8765E+65 浮點數表示法,存成倍精準度型別 1000.0 雖然等於整數 1000,但卻是小數 表示法,依然存成倍精準度型別

資料被存成倍精準度型別的情況二 如果是整數表示法,而其數值超過長整數範圍,該整數也會存成倍精準度型別,例如: 9876543210987 ‘ 超過長整數範圍,存成倍精準度型別

資料被存成倍精準度型別的情況二(2) 倍精準度型別的有效位數為15位,如果數值表示法中的位數超過15位,VB將會對多餘的位數採四捨五入法,例如: Print 1.23456789012345678 1.23456789012346 Print 987654321098765432 9.87654321098765E+17

資料被存成倍精準度型別的情況二(3) 單精準度型別的有效位數有7位,但是當我們表示一個位數低於7位的實數時,VB還是不會將該數值存成單精準度型別,例如: 1.335 會被存成倍精準度型別,是因為 VB 內部作法的關係,不是因為 1.335 無法存成單精準度型別。

資料被存成倍精準度型別的情況二(4) 我們可以主動要求 VB 將資料存成單精準度型別,方法是在數值後面加上 ‘!’,例如: 1.335! 用 ! 符號,要求 VB 將 1.335 存成單精準度型別

資料被存成倍精準度型別的情況二(VB5 vs. VB6) 當兩整數相除時,對VB5來說,其結果也是存成單精準度型別,例如:(不過對VB6來說,卻是存成倍精準度型別) Print 4/3 兩整數相除 VB5 1.333333 Print 4/3 兩整數相除 VB6 1.33333333333333 Print 4.0/3 這是倍精準數除以整數 1.33333333333333

6-4 型別宣告符號

VB 如何決定資料的型別 如果是整數的表示法,依序判斷以下數值範圍: 數值介於 -32768~32767 之間,存成整數型別。 數值介於 -2147483648~2147483647 之間,存成 長整數型別。 數值超過長整數範圍,存成倍精準度型別。 如果不是整數表示法,一律存成倍精準度型別。

利用 TypeName 來檢驗 Print TypeName(1024) Integer Print TypeName(56000) Long Print TypeName(10.98 ) Double

告訴VB我們希望儲存的 資料型別 Print TypeName(1.335!) Single ' VB 果然將資料存成單精準度型別了

數值型別的型別宣告符號 型別宣告符號 宣告之型別 % 整數 & 長整數 ! 單精準度 # 倍精準度

數值型別的型別宣告符號 -- 例子 1536& ' 雖然 1536 只要存成整數型別即 可,但我們 利用 & 符號將它宣 告成長整數型別 48000# ' 雖然 48000 只要存成長整數型別 即可,但我們利用 # 符號將它宣 告成倍精準度型別 123% ' 123 原本就會存成整數型別,再 加上 % 的 整數型別宣告符號,有 點多餘,卻是正確的

型別宣告的注意事項 非整數的表示法,不能宣告成整數或長整數型別。 不能將資料宣告成不足以容納該資料的型別。 位數多的數值宣告成有效位數少的型別時,數值會被四捨五入。

型別宣告的注意事項 -- 例子 Print 100.0% 錯誤, 雖然 100.0 等於 100, 但這不是整數表示法, 不能宣告成整數型別。 Print 48000% 錯誤,將超過整數範圍的 48000 宣告成整數。 Print 2.34567896! 2.345679 位數9位的數值宣告成有效位7位的單精準度型別,多餘的兩位(96)會被四捨五入。

6-5 變數與資料型別

用 TypeName 來檢驗變數的型別 (1) A = 100 ? TypeName(A) Integer 將整數型別的 100 指定給變數 A 檢查變數 A 的型別 此時變數 A 是整數型別 A = "VB" ? TypeName(A) String 重新指定字串型別的 "VB" 給變數 A 變數 A 的型別也變成了字串型別

用 TypeName 來檢驗變數的型別 (2) L& = 65500 ? TypeName(L&) Long

不定型變數與定型變數 (1) 不定型(Variant)變數 :變數未加型別宣告符號,其型別會隨著資料的內容來改變。 定型變數:變數加了型別宣告符號,其型別固定, 不會隨著指定給它的資料來改變。 每一個定型變數都屬於某一特定型別,例如 L& 是長整數型別(因為最後有 & 符號),在指定資料 時,它只接受可以轉成這個型別的資料。 不定型變數的型別將隨著指定給它的資料來變, 定型變數的型別則是永遠不變。

不定型變數與定型變數 (2) L& = 34896 ' 34896 同樣是長整數型別,自然可接受 L& = 100 ' 100 是整數型別,也可接受 L& = “VB” ' 錯誤!字串 “VB” 無法轉換成長整數 L& = “82500” ' 雖然 “82500” 是字串,但可以轉成 ? TypeName(L&) ' 長整數,所以可接受 Long ' 證明 L 還是長整數 L& = 9.8 ' 將 9.8 轉換成整數,只好四捨五入 Print L& 10 L& = 7.85E+12 ' 錯誤, 7.85E+12 超過長整數的數值範圍

不定型變數與定型變數 (3) A = 34896 ' 此時變數 A 是「長整數」型別 A = 100 ' 變數 A 變成了「整數」型別 A = “VB” ' 變數 A 又變成「字串」型別 A = “82500” ' 變數 A 還是「字串」型別 ? TypeName(A) String ' 證明變數 A 還是字串 A = 9.8 ' 變數 A 變成「倍精準度」型別 Print A 9.8 ' 沒有類似變數 L 四捨五入的情形 A = 7.85E+12 ' 變數 A 還是倍精準度型別, 沒有類似變數 L 產生錯誤的情形

6-6 變數與常數符號的宣告

Dim 敘述(1) 格式: 使用例一: 使用例二: Dim 變數名稱 As 英文型別名稱 Dim A 省略了 "As 英文型別名稱", 則變數A 將是一個不定型變數

Dim 敘述 – 注意事項 Dim 敘述不能在即時運算視窗裡面使用,只能在程式視窗裡面使用。

Dim 敘述(2) 格式: Dim 變數名稱+型別宣告符號 Dim A% ' 將變數 A 宣告成整數型別 Dim S$ ' 將變數 S 宣告成字串型別 Dim V ' 未加型別宣告符號,表示不定型變數

固定長度字串 格式: 例子: Dim 字串變數名 As String * 字串長度

固定長度字串 – 實例(1) Private Sub Command1_Click() Dim S1 As String ' S1 是變動長度字串 Dim S2 As String * 80 ' S2 是固定長度字串 S1 = "abcde" S2 = "12345" ' 利用 Len 計算字串的長度 Print "S1 長度 ="; Len(S1), "S2 長度 ="; Len(S2) S1 = "abcdefghij" S2 = "1234567890" Print "S1 長度 ="; Len(S1), "S2 長度 ="; Len(S2) End Sub

固定長度字串 – 實例(2) 上一頁程式輸出結果: S1 長度 = 5 S2 長度 = 80 S1 長度 = 10 S2 長度 = 80 可見固定長度字串的長度是固定的,不會隨著字串的內容而改變其長度。 變動長度字串則會隨著字串的內容而改變其長度。

型別宣告的限制(1) 一個變數一旦宣告成某種型別以後,就不能在後面的敘述中又重新宣告它的型別,例如: L& = 100 ' 已經將變數 L 宣告成長整數型別 L% = 100 ' 錯誤!企圖將變數 L 重新宣告為整數型別

型別宣告的限制(2) 即使是一個不定型變數,當我們第一次使用它時,它的型別就已經被宣告成不定型了,也是不能重新宣告的,例如: A = 100 ' 變數 A 是一個不定型變數了,而其內容是整數型別 A = "VB" ' 將內容的型別改成字串,沒問題 A% = 100 ' 錯誤!重新宣告變數 A 的型別,不行

常數符號 數學上的圓周率π(讀成 pi),π 就是 3.141593 這個常數的常數符號。

常數符號的定義 格式: Const 常數名稱 = 常數表示法 Const 常數名稱 As 型別名稱 = 常數表示法 Const 常數名稱+型別宣告符號 = 常數表示法 例子: Const pi = 3.141593 Const ver = "6.0 中文版" Const noon = #12:00:00# Const pi As Double = 3.141593 Const pi# = 3.141593

6-7 不同型別資料的轉換與運算

不同型別資料的轉換與運算 I% = "123" 雖然 I% 是整數型別,而 "123" 是字串型別, 但 "123" 的內容完全是數值,所以 VB會自動 將 "123" 轉成 123 再指定給 I% S$ = 123 VB 會自動將 123 轉成 "123" 再指定給字串型別的 S$。 ? #9:30# > "8:30" VB在進行比較運算以前,會先將字串型別的 "8:30" 轉成日期時間型別的 #8:30#,所以本運算式將得到 True 值。

不同型別資料的轉換與運算 -- 錯誤例 I% = "123A" 字串裡含有非數字的字元 'A',所以字串 無法轉成數值,會產生錯誤

字串與數值的運算(1) 數值型字串必須是內容符合數值表示法的字串,反之,則為文字型字串,例如: "3600" "73.59" "1.5E-13" ' 以上三個字串皆為數值型字串 "123 6" ' 含有非數字的空白字元,屬於文字型字串 "#1005" ' 含有非數字的 '#' 字元,屬於文字型字串

字串與數值的運算(2) Print "123" + "ABC" 123ABC Print "123" + 100 223 當數值型字串與字串在一起做運算時,數值型字串仍維持字串特性,所以運算符號 '+' 被視為字串的串接。 Print "123" + 100 223 當數值型字串與數值在一起做運算時,數值型字串被當作數值,所以運算符號 '+' 被視為數值的相加。 Print "123" + "100" 123100 當兩個數值型字串在一起運算時,兩個數值字串都維持字串特性,所以運算符號 '+' 還是被視為字串的串接。

字串與數值的運算(3) I% = "55" A = "55" "55" 指定給整數的 I%,會被轉成整數 ? "10" + I% 65

不同精準度的數值運算(1) 將高精準度的資料存入低精準度的變數時,將採四捨五入的方法將資料轉換成較低的精準度。例如: I% = 22.6 Print I% 23

不同精準度的數值運算(2) 將高精準度的資料存入低精準度的變數時,轉換後的數值不能超過低精準度型別的數值範圍,例如: I% = 32767.6 ‘ 錯誤,32767.6 轉換成整數後變成 ' 32768,超出整數的範圍。

不同精準度的數值運算(3) 當運算符號兩邊出現不同精準度的數值資料時VB 會以其中精準度較高者為準,將另一邊的數值換算成較高之精準度後再運算,運算之結果也以較高之精準度表示。例如: D# = 7 Print D#/6 ' 運算式以倍精準度處理 1.16666666666667 I% = 7 N! = 6 Print I%/N! ' 運算式以單精準度處理 1.166667

小心! 0.5 的四捨五入 I1% = 1.5 ‘ 都會被四捨五入成為整數 I2% = 4.5 ? I1%, I2% ’ 我們預期的結果是 2 跟 5 2 4 ‘ 但執行的結果卻是 2 跟 4 I1% = 1.5 ’ 被捨棄的 0.5 前一位是奇數,所以進位 I2% = 4.5 ‘ 被捨棄的 0.5 前一位是偶數,所以捨棄 I% = 4.5001 ' 被捨棄的 5001 不是剛好等於 5,所以與我們 ? I% ' 過去的習慣一樣,直接進位。 5

避免數值運算時的溢位錯誤 I% = 32770 ' 32770超過整數的範圍(-32768~32767), 所以產生溢位的錯誤 可能發生溢位錯誤的例子: D# = I% * 256 修正: D# = I% * 256&