Курсови проекти

Пример на проект Интерпретатор

Пример на проект Интерпретатор

от Андон Денков -
Number of replies: 1

Входен файл

а = 1
read b
c = 3
D[x] = a + 2*b%x
print a
print b
print c
print D[c]Това е примерът за входен файл на проекта Интерпретатор.

При дефинирането на функцията D[x] в тялото ѝ се използват стойностите на вече инициализирани променливи (a, b). Ако след прилагането на функцията се променят стойностите на тези променливи, в тялото на функцията с първоначалните стойности ли работим или с актуалните стойности на тези променливи?

Например при следния входен файл:

а = 1
read b
c = 3
D[x] = a + 2*b%x
print a
print b
print c
print D[c]
a = 4
b = 0
print D[c]

При второто извикване на D[c] с какви стойности ще се заменят a и b от тялото на функцията?

In reply to Андон Денков

Re: Пример на проект Интерпретатор

от Калин Николов -

Това е отличен въпрос и прилича малко на това как Lambda функциите в C++ прихващат (capture) контекст - по стойност или по псевдоним. 

Що се отнася до изискванията сте свободни да го направите по един от двата начина, като съм сигурен, че това ще е основна тема за дискусия по време на защитата.

Настройчиво ви препоръчвам да прочетете по темата за Closures и да разберете идеята.

Поздрави