
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}…… end {sub1}
- •Проверить, является ли верным заданное предусловие
- •Проверить, является ли верным заданное предусловие
- •3.Описать грамматику оператора присваивания такую, что
- •4. Определить предусловие
- •4. Определить предусловие
- •Проверить, является ли верным заданное предусловие
- •4. Определить предусловие
Проверить, является ли верным заданное предусловие
{3 <= |x| <= 4} if x<0 then y := -x else y := x {2 <= y <=4}
15.
1. Статическое и динамическое связывания . Типы связывания
2 рассотреть программу
void fun (void) {
i
Для каждой из четырех отмеченных точек
функции перечислить все видимые
переменные
while (…) {
int b,c,d;
…………(1)
while (…) {
int c,d,e;
…………(2)
}
…………(3)
}
………..(4)
}
3. Дана грамматика
S ABC|Sa|Sb|Sc
A aA|a|ε
B bB|b|1B
C cC|c|1c
Сделать 5 различных порождений и синтаксических деревьвев к ним.
Проверить, является ли верным заданное предусловие
{ia<=na or ia<=na+1 and ib <=nb}
if ib > nb or ia<= na then ia:= ia+1 else ib:= ib+1 {ia <= na+1}
16.
1. Переменная. Типы переменных с точки зрения связывания
рассмотреть программу
void fun (void) {
i
Для каждой из четырех отмеченных точек
функции перечислить все видимые
переменные
while (…) {
int b,c,d;
…………(1)
while (…) {
int c,d,e;
…………(2)
}
…………(3)
}
………..(4)
}
3.Описать грамматику оператора присваивания такую, что
Т = {+ , - , *, / , (, ), A, B, C, …, X}.
Сделать порождениe и синтаксическое дерево оператора С = ((A+B)*(С-D))/S
4. Определить предусловие
{?} x := 5 (z – y) + 7
x := 4*x – y + 10 {x – y > 0}
17.
1. Определение типа данных. Контроль типов. Строгая типизация
2. Предполагая использование динамического обзора, указать, какие переменные видимы во время вызова каждой функции при указанной последовательности вызовов
void fun1 (void) ; /* прототипы */
void fun2 (void) ;
void fun3 (void) ;
void main (); {
int a, b, c ;
fun1-> fun3
fun2 -> fun3 -> fun1->
}
void fun1 (void) { int b, c, d ; …}
void fun2 (void) { int c, d, e ; …}
void fun3 (void) { int d, e, f; …}
3. Написать однозначную грамматику для оператора A = (D-C)+C*B, сделать его порождение и дерево
4. Определить предусловие
{?} if x < 0 then y := -x else y := x {y > 0}
18.
1. Определение типа данных. Эквивалентность типов
2. Предполагая использование динамического обзора, указать, какие переменные видимы во время вызова каждой функции при указанной последовательности вызовов
void fun1 (void) ; /* прототипы */
void fun2 (void) ;
void fun3 (void) ;
void main (); {
int a, b, c ;
fun2 -> fun3 -> fun1->
}
void fun1 (void) { int b, c, d ; …}
void fun2 (void) { int c, d, e ; …}
void fun3 (void) { int d, e, f; …}
3. Дана грамматика
S аS|cВ|A|b
A cA|c
B d|A
Определить, принадлежат ли цепочки abcd, acccbd, acccbcc, acd, acc к языку, порождаемому данной грамматикой.
Проверить правильность утверждений
{ 10 < y < x + 100 and 0 <= x < 13 } x:= x – 5 { 10 < y and x < 8 }
19.
1. Время жизни переменной, область видимости статический и динамический обзоры данных
2. Предполагая использование динамического обзора, указать, какие переменные видимы во время вызова каждой функции при указанной последовательности вызовов
void fun1 (void) ; /* прототипы */
void fun2 (void) ;
void fun3 (void) ;
void main (); {
int a, b, c ;
fun2 -> fun3 -> fun1->
fun3 -> fun1
}
void fun1 (void) { int b, c, d ; …}
void fun2 (void) { int c, d, e ; …}
void fun3 (void) { int d, e, f; …}
3. Дана грамматика
S аScВ|A|b
A cA|c
B d|A
Определить, принадлежат ли цепочки abcd, acccbd, acccbcc, acd, acc к языку, порождаемому данной грамматикой.
Проверить правильность утверждений
{ 10 < y < x + 100 and 0 <= x < 13 } x:= x – 5 { 10 < y and x < 8 }
20
1. Среда ссылок. Объяснить, есть ли разница между временем жизни и областью видимости переменной
2. Предполагая использование динамического обзора, указать, какие переменные видимы во время вызова каждой функции при указанной последовательности вызовов
void fun1 (void) ; /* прототипы */
void fun2 (void) ;
void fun3 (void) ;
void main (); {
int a, b, c ;
fun1-> fun3 -> fun2
}
void fun1 (void) { int b, c, d ; …}
void fun2 (void) { int c, d, e ; …}
void fun3 (void) { int d, e, f; …}
Дана грамматика
S AaBb
A Ab|b
B aB|a
Определить, принадлежат ли цепочки baab, bbbab, bbaaaa, bbaab к языку, порождаемому данной грамматикой.
Проверить правильность утверждений
{ 10 < y < x + 100 and 0 <= x < 13 } x:= x – 5 { 10 < y and x < 8 }
21.
1. Переменная. Типы переменных с точки зрения связывания
2. Предполагая использование динамического обзора, указать, какие переменные видимы во время вызова каждой функции при указанной последовательности вызовов
void fun1 (void) ; /* прототипы */
void fun2 (void) ;
void fun3 (void) ;
void main (); {
int a, b, c ;
fun3-> fun2 -> fun1
}
void fun1 (void) { int b, c, d ; …}
void fun2 (void) { int c, d, e ; …}
void fun3 (void) { int d, e, f; …}
Дана грамматика
S AaBb
A Ab|b
B aB|a
Определить, принадлежат ли цепочки baab, bbbab, bbaaaa, bbaab к языку, порождаемому данной грамматикой.