Реферат на тему

Реферат на тему:

Уточнення алгоритму обчислення виразу

Напишемо функцію llxval обчислення значення виразу за його ЗПЗ, що подається послідовністю лексем. У цій функції використовуються засоби з модуля SLlx:

- функція перевірки вичерпання послідовності лексем із заголовком

function isemllx ( Llx : Sqlx ) : boolean;

-процедура добування й вилучення першого елемента послідовності лексем із заголовком

procedure get ( var Llx : Sqlx; var lx : Tlx ).

Крім того, використовуються підпрограми обробки магазина лексем, про які сказано в попередньому підрозділі.

function llxval ( var Llx : Sqlx ) : real;

var Slx : Stlx; lx, lx1, lx2 : Tlx; ok : boolean;

begin

inits( Slx ); ok := true;

whilenot isemllx( Llx ) and ok do

begin

get( Llx, lx);

case lx.stl of

con : push( Slx, lx );

ops : begin

pop( Slx, lx2 ); pop( Slx, lx1 );

case lx.sig of

'+' : lx1.numb := lx1.numb + lx2.numb;

'-' : lx1.numb := lx1.numb - lx2.numb;

'*' : lx1.numb := lx1.numb * lx2.numb;

'/' : if lx2.numb <> 0 then

lx1.numb := lx1.numb / lx2.numb

else ok := false

end;

if ok then push( Slx, lx1 )

end;

nam : begin

pop( Slx, lx1 );

if = 'sin' then

lx1.numb := sin( lx1.numb ) else

if = 'cos' then

lx1.numb := cos( lx1.numb );

push( Slx, lx1 )

end

end { case lx.stl }

end; { while }

if ok then

begin pop( Slx, lx1); llxval := lx1.numb end

else

begin

writeln( '***zerodivide***' ); llxval := 0

end

end;

Множини в мові Паскаль

У підпрограмах розроблюваного модуля читання лексем доведеться мати справу з множинами символів. Подання та обробку множин символів та значень інших перелічуваних типів у мові Паскаль зручно задавати з використанням спеціальних типів множин.

Стала-множина задається в дужках [] переліком елементів або діапазонів. Наприклад, множина чисел {1, 2, 3, 5} подається як [1, 2, 3, 5] або [1..3, 5], порожня множина  – як [], множина символів {'a', 'i', 'j', 'k', 'l', 'm', 'n'} – як ['a', 'i'..'n'].

Якщо T задає перелічуваний тип, то вираз setof T означає множинний тип. Елементами його носія є підмножини носія типу T. Наприклад, носій типу setof Boolean складається з 4-х множин бульових значень: [], [false], [true], [false, true]; носій типу setof 'a'..'z' – з 226 підмножин малих латинських літер. Тип T називається базовим для типу setofT.

В історії розвитку мови Паскаль склалося так, що носій базового типу не може мати більше 256 елементів. Наприклад, вираз setof 1..512 недопустимий. У внутрішньому зображенні множини кожному елементу носія базового типу відповідає 1 біт і дані множинних типів займають не більше 256/8 = 32 байтів.

Найпростішими виразами типу множинає сталі, тобто списки виразів і діапазонів базового типу в квадратних дужках []. Інші вирази будуються з однотипних множинних сталих і змінних та знаків бінарних операцій '+', '*', '-', що позначають відповідно об'єднання, перетин і різницю множин.

Приклад 1. Нехай за дії означення var v : setof 0..9 виконано оператор присвоювання v:=[1..3]. Тоді вираз v+[2..4] має значення [1..4], v*[2..4] – значення [2..3], v-[2..4] – значення [1].

Бульові вирази вигляду S1 = S2 (S1 <> S2) задають перевірку на рівність (нерівність) значень однотипних множинних виразів S1 і S2. Аналогічно вирази S1 <= S2 (S1 >= S2) задають перевірку включення S1 у S2 (S2 в S1). Наприклад, значеннями виразів [1..3]=[1, 2, 3] та [1, 2]<=[1..3] є true, а виразів [1]>=[1..2] та [1, 2]<>[2, 1] – false.

Булів вираз вигляду einS, де тип виразу e є базовим для множинного типу виразу S, задає перевірку належності значення e множині S.

Вирази типу множина можна присвоювати змінним того ж самого типу.

Приклад 2. Нехай діє означення типів рядків Str і множин символів SS = setof char. Тоді:

1) процедура Symset задає побудову множини SS символів рядка A:

procedure Symset ( A : Str; var S : SS );

var i : integer;

begin

S := [];

for i:= 1 to length(A) do S := S + [ A[i] ]

end;

2) функція EqSS задає перевірку рівності множин символів двох рядків:

function EqSS ( A, B : Str ) : boolean;

var S1, S2 : SS;

begin

Symset (A, S1);

Symset (B, S2);

EqSS := (S1 = S2)

end;

3) функція SettoStr задає побудову рядка з символів-елементів множини в порядку їхнього кодування:

function SettoStr ( S : SS) : Str;

var A : Str; c : char;

begin

A := '';

for c := chr(0) to chr(255) do

if c in S then A := A + c;

SettoStr := A

end.

атні 2, потім кратні 3 тощо.

  1. Реферат на тему (461)

    Реферат
    Інтенсивне впровадження сучасних засобів телекомунікації в банківській системі України розпочалося з моменту створення та впровадження СЕП. Одним з основних засобів СЕП є електронна пошта НБУ.
  2. Реферат на тему (792)

    Реферат
    Включимо між та відрізок хвильоводу , тоді буде три матриці: Тоді замість в попередній формулі одержимо .
  3. Реферат на тему (880)

    Реферат
    Включимо між та відрізок хвильоводу , тоді буде три матриці: Тоді замість в попередній формулі одержимо .
  4. Реферат на тему (950)

    Реферат
    Щоб краще зрозуміти нинішній стан платіжної системи України як екс-радянської республіки, важливо розглянути її історичне ко­ріння. З 1930 р. до недавніх реформ єдина банківська система обс­луговувала весь Радянський Союз.
  5. Реферат на тему (985)

    Реферат
    У випадку розглянутому вище, хвильовода (стержня), ми маємо три граничні умови і дві константи в рівняннях, а тому рівняння в загальному випадку не буде мати розв’язків.
  6. Реферат на тему (1125)

    Реферат
    Кількість коефіцієнтів, що можуть бути використані при аналізі фінансового стану, обмежена лише кількістю рахунків балансового звіту та звіту про фінансові результати.
  7. Реферат на тему (371)

    Реферат
    Формально-логічні закони – це закони правильної побудови і звязки думки. Закони логіки виражають такі суттєві, загальні, неодмінні властивості мислення, як визначеність, несуперечність, послідовність і обгрунтованість.
  8. Реферат на тему (430)

    Реферат
    Державний кредит відрізняється від банківського. Він, як правило, використовується для покриття дефіциту державного бюджету, і джерелом його повернення та сплати процентів є доходи бюджету, а не прибутки від вигідних обсягів кредиту.
  9. Реферат на тему (705)

    Реферат
    З розвитком товарного виробництва постала потреба у спеціалізованих фінансово-кредитних установах, що обслуговують рух коштів і сприяють прискоренню економічного зростання шляхом раціонального використання тимчасово вільних грошових

Другие похожие документы..