freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第三章過程式程序設(shè)計(jì)語言-展示頁

2024-08-16 13:01本頁面
  

【正文】 x:=0。 ? 強(qiáng)類型按名判定,不同類型名則不兼容只有子類型不同名可以兼容 ? 顯式和隱式混合 type BASE is INTEGER; subtype SON_TYPE is BASE range 1..1000; 子類型 type DIVERSE is new BASE range 1..1000; 派生類型 A, B: BASE; C, D: SON_TYPE; E: DIVERSE; … A:= B+C, 合法,結(jié)果為 B類型賦給 A A:= C+E; 不合法 A:= C + SON_TYPE(E); 合法,有顯式強(qiáng)制 A:= E 。類型兼容性大 , 系統(tǒng)不作檢查 – 強(qiáng)制類型 隱式類型強(qiáng)制(轉(zhuǎn)換),自動(dòng) 截 尾 , 補(bǔ)零。 Rint = Svar Rint 是引用類型的變量 , 即左值變量必須給一右值 , 因 而成 Svar別名 y = x ++ 。 (p)203C (x)117F 117F 續(xù) ?名值可分導(dǎo)致 x = x + 1。 p=amp。 同類型值運(yùn)算結(jié)果:同類型 。 同一類型的外延 , 即同一結(jié)構(gòu)表示所有可能的值構(gòu)成一個(gè)域 。由于強(qiáng)制改變值,程序狀態(tài)的變化沒有一定規(guī)則,程序大了就很難查錯(cuò),很難調(diào)試,不易證明其正確。第三章 過程式程序設(shè)計(jì)語言 基本觀點(diǎn): 計(jì)算實(shí)現(xiàn)的模型如果按馮 諾依曼原理強(qiáng)制改變內(nèi)存中的值叫命令 (或譯指令、強(qiáng)制 Imperative式 )的。 組織程序的范型即 :算法過程 +數(shù)據(jù)結(jié)構(gòu)(計(jì)算控制 +計(jì)算對(duì)象) 計(jì)算對(duì)象表示 —值與類型 計(jì)算對(duì)象實(shí)現(xiàn) —存儲(chǔ) 計(jì)算對(duì)象連接 —束定 計(jì)算組織 程序控制 計(jì)算組織 函數(shù)與過程 計(jì)算組織 抽象與封裝 類型是計(jì)算機(jī)可能實(shí)現(xiàn)的結(jié)構(gòu)和約定對(duì)客觀世界差異的刻劃 。 分類原則:同樣表示結(jié)構(gòu) ,同樣語義解釋 ,同樣的操作 。 無符號(hào)整數(shù): 二進(jìn)制解釋的值 整數(shù):符號(hào) 值 計(jì)算對(duì)象 值與類型 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 浮點(diǎn)數(shù): 符號(hào) 階碼 尾數(shù) 程序語言中:基元 (primitive)類型:整型 /實(shí) (定,?。?/字符 /真值 /枚舉 結(jié)構(gòu)( structured) 類型:元組 /數(shù)組 /記錄(結(jié)構(gòu)) /表 /串 字面量、變量、常量 ? 名字操縱值 , 名 : 字面量 從名字即知類型 字面值不變 變量 符號(hào)名要聲明類型 值可變 常量 符號(hào)名要聲明類型 值不變 ? 基元值的名字是地址的別名 , 地址值在計(jì)算機(jī)中不恒定 ? 操縱地址的名字是指針 (地址變量 ) float *p, x = 。x。 按名 按名取值 : 引用 reference 存 —值 左值 右值 int amp。 x 既是右值也是左值 值是頭等程序?qū)ο? 程序語言中的值 ? 字面量 (整、實(shí)、布爾、字符、枚舉、串 ) ? 復(fù)合量 (記錄、數(shù)組、元組、結(jié)構(gòu)、表、聯(lián)合、集合、文件 ) ? 指針值 ? 變量引用 (左值、右值 ) ? 函數(shù)和過程抽象,數(shù)學(xué)對(duì)象參與運(yùn)算的權(quán)利是一樣的,值是計(jì)算對(duì)象也要按一致性原則: – 可出現(xiàn)在表達(dá)式中并求值 – 可作函數(shù)返回值 – 可單獨(dú)存儲(chǔ) – 可以構(gòu)成復(fù)雜的數(shù)據(jù)結(jié)構(gòu) – 可作函數(shù)參數(shù) 類型系統(tǒng) ?類型定義 值的集合和值上操作集合( V, Op) ?類型系統(tǒng) 一組可直接使用的類型 ?類型規(guī)則 ?類型檢查機(jī)制 類型系統(tǒng) ? 靜態(tài)與動(dòng)態(tài) 靜 動(dòng) 變量 有類型 無類型 動(dòng)態(tài)簡(jiǎn)潔、靈活 參數(shù) 有類型 無類型 靜態(tài)清晰、死板 值 有類型 有類型 ? 弱 /強(qiáng)類型 – 無類型 LISP , Smalltalk – 弱類型 變量有類型。顯式 類型強(qiáng)制 PL/1 – 偽強(qiáng)類型 靜態(tài)均有類型且作檢查 ,由于不嚴(yán) ,導(dǎo)出等價(jià)準(zhǔn)則 Pascal – 強(qiáng)類型 類型有嚴(yán)格定義 , 均作檢查 Ada ?類型等價(jià) 按結(jié)構(gòu)等價(jià) type A is array (range 1.. 100) of INTEGER; type B is array (range 1..100) of INTEGER; OA1, 0A2: A; OB1, OB2: B; OC1: array (range 1.. 100) of INTEGER; OD1, OD2: array (range 1..100) of INTEGER; OE1: A; OA1, OA2, OB1, OB2, OC1, OD1, OD2, OE1均等價(jià) 續(xù) 按名等價(jià) OA1, OA2 是同一類型 (都用 A聲明 ) OA1, OB1, OC1是不同類型 (類型名為 A, B, 無 ) OD1, OD2 是同一類型 (同時(shí)聲明, 雖無名 ) O D1, OC1 是不同類型 (兩次聲明 ) OA1, OE1 是同一類型 (雖兩次聲明, 但同名 ) ? 類型完整性準(zhǔn)則 涉及值的類型中不能隨意限定操作 , 力求沒有第二類的值 續(xù) 類型兼容 ? 不同類型值混合運(yùn)算 , 人為定出計(jì)算級(jí)別,由低 層升格為高層 , 結(jié)果值是高層的 ? 隱式轉(zhuǎn)換 弱類型 I := R; 顯式轉(zhuǎn)換 強(qiáng)類型 I := Integer(R)。 不合法,兩個(gè)類型 E:= B+BASE(E)。 x,0是兩程序?qū)ο? 只有一個(gè)存儲(chǔ)對(duì)象 x加指令清零 初值常量也不作為單獨(dú)存儲(chǔ)對(duì)象 程序變量的時(shí)空特性 引用和指針 P指針是地址變量 *P是 P所指的內(nèi)容 , 也有左值和右值 *P左值是 P所指地址值 , 即 P的值 *P右值是所指地址內(nèi)的內(nèi)容值 136140144ABC3 1 23 1 63 2 0136 140 144( R A ) 3 1 2 ( R B ) 3 1 6 ( R C ) 3 2 0136144( p 1 ) 4 4 8( p 2 ) 4 5 04 2 7 4 . 5 4 3 3 1 2 . 2 7 6 0 7 . 0 1( A ) 1 3 6 ( B ) 1 4 0 ( C ) 1 4 4引用是常指針是變量的別名 , 但實(shí)現(xiàn)是不一樣的 遞引用 dereference 通過指針變量引用變量的值為遞引用 *P1右值即遞引用 有些語言顯式遞引用算符如 FORTH的 1 13 VARIABLE xx (聲明變量 xx并賦初值 13) 2 0 VARIABLE Y (聲明變量 Y并賦初值 0) 3 xx 2 * Y ! (相當(dāng)于 Y=xx*2) 如果只寫 xx 2 * 則為將 xx的地址乘以 2放在 Y之中 變量的時(shí)態(tài) ? 分配 /未分配 /除分配 – 分配 : 為程序?qū)ο髣?chuàng)建 — 存儲(chǔ)對(duì)象 編譯時(shí)分配叫靜態(tài)分配 allocate 運(yùn)行時(shí)分配叫動(dòng)態(tài)分配如聲明指針 p, 執(zhí) new才分配 – 未分配 : 聲明了未分配運(yùn)行時(shí)分配 – 除分配 : 取消存儲(chǔ)對(duì)象 (程序?qū)ο?) delete操作顯式 – 自動(dòng)除配 : 無用單元收集 Garbage collection 動(dòng)態(tài)語言有,靜態(tài)可有 Ada可沒有 C 續(xù) 4 3 ? ? a b c d e f 聲明和定義:定義必然聲明;反之不然 聲明的兩個(gè)作用 :給出對(duì)象 , 該對(duì)象的時(shí)間有效性 出了聲明的作用域該對(duì)象失去定義。 引用非可存儲(chǔ) (C++可存儲(chǔ) ), 過程和函數(shù)名也非可存儲(chǔ) ML幾乎都是可存儲(chǔ)值 , 也帶來毛?。好看胃陆Y(jié)構(gòu)數(shù)據(jù)都要重來。按生命期長短分: 靜態(tài)存儲(chǔ)對(duì)象 編譯時(shí)分配存儲(chǔ)對(duì)象 , 近代語言類屬對(duì)象直到裝入后確立 (elaboration)之時(shí)才定下存儲(chǔ)對(duì)象叫靜態(tài)分配 一旦執(zhí)行不再改動(dòng)其存儲(chǔ),直至所在存儲(chǔ)單元無效叫靜態(tài) (Static)存儲(chǔ)對(duì)象 全局變量均為隱式的靜態(tài)對(duì)象 , COBOL,BASIC全 靜態(tài) , ALGOL, C是顯示聲明靜態(tài) , Pascal除全局 , Ada 不能 。 auto是靜態(tài)分配動(dòng)態(tài)裝入不叫靜態(tài)對(duì)象。 extern static auto 動(dòng)態(tài)存儲(chǔ)對(duì)象 把壽命特長的(如文件,全局量)排出來歸到棧底的某一組,把壽命特 短的(如循環(huán)控制變量)另立嵌套組,這個(gè)問題也就解決。內(nèi)存開辟堆( heap)隨生成隨堆放動(dòng)態(tài)存儲(chǔ)對(duì)象。 重復(fù)使用 無法再分 堆棧幀管理 由動(dòng)態(tài)堆棧聯(lián)想到一般嵌套式語言可按動(dòng)態(tài)堆棧式管理 , 多數(shù)變量和所在塊壽命一樣長 (語言稱之為自動(dòng)變量 ) ? 動(dòng)態(tài)堆棧式存儲(chǔ) 按程序動(dòng)態(tài)執(zhí)行 , 以動(dòng)態(tài)堆棧管理局部數(shù)據(jù)和動(dòng)態(tài)生成數(shù)據(jù) 運(yùn)行時(shí)堆棧 Runtime stack其底壓入程序代碼和全局 ,靜態(tài)量 。 動(dòng)態(tài)鏈描述調(diào)用父輩地址 , 返回地址是繼續(xù)執(zhí)行的下一地址 。 參數(shù) 返回地址 動(dòng)態(tài)鏈 靜態(tài)鏈 返回值 局部變量 程序代碼 全局靜態(tài)存儲(chǔ) 首先調(diào)用塊 堆棧幀 第二調(diào)用塊 堆棧幀 最新 調(diào)用塊 堆棧幀 臨時(shí)變量空間 棧頂 …… 堆棧幀 組織 運(yùn)行時(shí)堆棧 續(xù) 調(diào) 用 塊 首 地 址 本 幀 詞 法 父 輩 ? 舉例 求整數(shù)連乘積之遞歸程序 : function product (jj: Integer): Integer; var kk: Integer。 指針和顯式動(dòng)態(tài)分配依然不少了堆 。 (垃圾 ) 懸掛引用 Dangling Reference ? 當(dāng)堆式管理同時(shí)提供顯式除配命令 KILL時(shí);堆棧式管理外塊指針指向內(nèi)塊對(duì)象時(shí) 。 操作數(shù)組不能按指針尋址 , 快速索引 C語言比較自由 , 懸掛引用留給程序員 局部函數(shù)作為返回值產(chǎn)生的懸掛指針 。 Algol 68是引用 ( 常指針) , 不賦比局部量壽命更長的值 例 懸掛引用 (C) int * dangle (int ** ppp) { //參數(shù)是指針的指針 int p=5; int m=21; *ppp=amp。 m; } //返回 m的地址 main( ) { int k =17; int * pm, *pk=amp。pk); //返回時(shí) pm, Pk均指向已 //失去定義的指針函數(shù)的 } //局部量,即 p和 m 計(jì)算對(duì)象的連接 束定Binding 名字操縱程序?qū)ο?。 把聲明名字 ( 地址 ) 和存儲(chǔ)對(duì)象或語義實(shí)體連接起來叫束定 。 一對(duì)象可以束定到多個(gè)名字 。 符號(hào)表 運(yùn)行時(shí)內(nèi)存 類型 名字
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1