- 4
- 0
- 约2.95千字
- 约 22页
- 2017-03-04 发布于天津
- 举报
算術運算式
算術運算式 組成 一個算術運算式的組成 運算元(Operand) 運算子(Operator) 間隔符號(delimiter,如括號)。 例如A/B**C+D*(E-A)*B; 其中A、B、C、D為運算元 +、-、*、/為運算子 ()為間隔符號。 以C語言為例,運算式中包含下列三種符號: 運算元(operand):0,1,2,3,… 運算子(operator): +,-,*,/,**,,=, =, ++, !=, ++, --, =, +=, … 間隔符號(delimiter):(,) 運算原則 括號內先處理 優先權較高的運算子先執行 同優先權者,則由其結合性,來決定是由左而右,還是由右而左執行。 C語言運算子的優先次序關係如下: 運算式表示法 中序法(infix) 前序法(prefix) 後序法(postfix) 中序法(infix) 運算元1 運算子 運算元2 將運算子置於兩運算元中間之表示法。例如:a+b 缺點:電腦無法一次依序讀取運算式,因運算式可能含有括號,且運算子優先順序不同 前序法(prefix) 運算子運算元1 運算元2 將運算子置於運算元的最前面之表示法。例如:+ab 後序法(postfix) 運算元1 運算元2 運算子 將運算子置於兩運算元之後之表示法;例如:ab+ 此法又稱為反波蘭記號法(RPN)。其優點在於不必使用括號,且運算子不具優先權。 算術運算式的轉換 括號法 堆疊法 二元樹法 括號法--中序式轉換成前序及後序 a×b+c×d 後序式(postfix):ab×cd×+ 1.先用括號將優先順序分出來 ((a×b)+(c×d)) 2.將運算子移到最接近且有括住此運算子的右括號左邊,則依優先順序為: ((ab×)+(cd×)) ((ab×)(cd×)+) 3.把括弧全部拿掉,即為所得。 ab×cd×+ 前序式(prefix): +×ab×cd 1.先用括號將優先順序分出來 ((a×b)+(c×d)) 2.將運算子移到最接近且有括住此運算子的左括號右邊,則依優先順序為: ((×ab)+(×cd)) (+(×ab)(×cd)) 3.把括弧全部拿掉,即為所得。 +×ab×cd 括號法的轉換規則 根據運算子的優先權及結合性,將所有的數學式加上完整的括號 將所有運算子移至相對應的左括號後面,即可得前序式(Prefix),若運算子移至右括號的後面,則可得後序式(Posfix) 去除所有的括號 範例說明(一):括號法 [EX1] 將 A*B/C 化為後序表示式 [SOL] ( ( A * B ) / C) ( ( A * B ) / C) =( ( A B ) * C ) / AB*C/ [EX2] 將A-B/C+D*E-F%G化成後序表示式 [SOL] ( ( ( A - ( B / C ) ) + ( D * E ) ) - ( F % G ) ) ( ( ( A - ( B / C ) ) + ( D * E ) ) - ( F % G ) ) A B C / - D E * + F G % - 堆疊法--中序式轉換成前序及後序 由左而右每次讀入一個字元(Token)---(後序式)由右而左每次讀入一個字元(Token)---(前序式) 判別字元,若為運算子(operand),則比較優先權;若堆疊中最頂端(Top)之運算子的優先權比正在處理的運算子的優先權高,則將堆疊內的運算子pop出來;反之,則將運算子push到堆疊內。 若是相等時,就將堆疊中優先權順序等於或小於正在處理的運算子,依序pop出來,再將處理中的運算子push進去。 規則 由左而右讀進中序運算式的每個字元(Token) 判別字元,若為運算元(operand),則直接輸出。 判別字元,若為運算子(operator),則若Token為”(” ,則直接加入堆疊頂端。若Token之優先權 (ICP, In-Coming Priority) 高於堆疊頂端之優先權 (ISP, In-Stack Priority),則直接加入堆疊頂端。若Token之優先權 (ICP) 小於或等於於堆疊頂端之優先權(ISP),則將堆疊中之運算子自頂端逐一取出並輸出,直到堆疊頂端之運算子優先權低於Token,再將此Token放入堆疊中。 若Token為”)”,則將堆疊中之運算子自頂端逐一取出並輸出,直到取出對應之”(”為止,但”(”不須輸出。注意: ”)”永遠不會被放入堆疊中。 若字串結束(end of string, eos),則將堆疊中所有運算子自頂端逐一取出並輸出,直到堆疊空了。 範例說明(二):堆疊法 中序運算式轉換為後序運算式 [EX1] 試將下列中序運算式 (infix) 轉換為後序運算式 (postfix):
您可能关注的文档
最近下载
- 2024年潍坊护理职业学院高职单招(英语/数学/语文)笔试2018-2023历年真题摘选带答案解析.docx VIP
- 《智能管理系统创新与发展》课件.ppt VIP
- 仁爱版七年级下册英语单词默写表(中文版).pdf VIP
- 2025年潍坊护理职业学院单招笔试数学试题库含答案解析.docx VIP
- 2025郑州中考一模化学试卷.docx VIP
- 2025河北单招第七类综合素质真题 .pdf VIP
- 2025黑龙江林业职业技术学院单招《数学》经典例题含答案详解(能力提升).docx VIP
- 大病低保申请书.docx VIP
- 发热伴血小板减少综合征药物治疗指南(2025年版)解读PPT课件.pptx VIP
- 2020泰和安TG3100广播控制盘安装使用说明书.pdf VIP
原创力文档

文档评论(0)