1 / 8

Стекове и аритметични изрази

Стекове и аритметични изрази. 1. Формулировка на задачата. Под аритметичен израз ще разбираме знаков низ, определен от следната безконтекстна граматика: <израз> <терм> | < израз > +<терм> | <израз>-<терм> <терм> <множител> | < терм > *<множител> | < терм > /<множител>

truly
Télécharger la présentation

Стекове и аритметични изрази

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Стекове и аритметични изрази

  2. 1. Формулировка на задачата • Под аритметичен израз ще разбираме знаков низ, определен от следната безконтекстна граматика: <израз><терм>| <израз>+<терм>| <израз>-<терм> <терм><множител>| <терм>*<множител>| <терм>/<множител> <множител><цифра>|<променлива>|(<израз>) <цифра>0|1|2|…|9 <променлива><латинска_буква>

  3. 2. Пояснение към задачата • Знака “/” означава целочислено деление. • Аритметичните операции, генерирани от тази граматика, съдържат цифри, букви, четирите двуаргументни операции +, -, *, / и скоби. • Операциите имат по два операнда и според граматиката се записват между операндите си (инфиксни операции). А аритметичният израз, записан според тази граматика, е в обичайната инфиксна форма.

  4. 3. Характеристики на операциите • Приоритет- операциите * и / имат еднакъв приоритет по между си но по- висок от + и -, които по между си имат също еднакъв приоритет. В информатиката това се реализира с използване на приоритетен номер, наречен тегло на операнда (естествено число, колкото е по-малко толкова е с по- голям приоритет). • Асоциативност- определя интерпретацията на аритметичния израз. Пример: 10-5-2=?, ляво асоциативен.

  5. 4. Преобразуване на израза от обикновен в обратен полски запис. • Нека имаме две части, А за обикновения запис, част С- постфиксния запис и стек S: • Величините се преместват директно от А към С; • Скобата ‘(‘ се включва в стека S. • Операциите +, -, * и / се включват в стека S. Всяка операция има определен приоритет. Приемаме, че + и – са с тегло 2, а * и / тегло 1. Ако при включване на операция в стека S под нея има по- лека или с равно тегло операция, тази, която е по-лека или равно тегло се премества от S в частта С. Това се повтаря, докато се достигне до по- тежка операция, до ‘(’ или до изпразването на стека. • Скобата ‘)’ изключва от стека S всички операции до достигане до ‘(’. Операциите се записват в частта С в реда на изключването им, а скобата ‘(‘ се унищожава от ‘)’. • Ако всички знаци от частта А са обработени, елементите на стека S, до изпразването му или до достигане до ‘(‘, се прехвърлят в частта С.

  6. 5. Пример

  7. 6. Намиране стойността на израз, записан във вид на обратен полски запис. • Сканира се изразът от ляво на дясно до намиране на знак за операция. • Пресмята се стойността на терма с аргументи- първите два, намиращи се непосредствено пред операцията. • Операцията и операндите се заменят с резултата от пресмятането, след което продължава търсенето на знак за операция. • Процеса продължава до достигане края на израза.

  8. 7. Програми за преобразуване • Преобразуване на аритметичен израз от инфиксен в обратен полски запис: изтеглете файла AtoC.pas от помощния материал към урока. • Пресмятане стойността на аритметичен израз, представен в постфиксен формат: изтеглете файла СtoА.pas от помощния материал към урока.

More Related