- •Begin {sub1}….… end {sub1}
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}….… end {sub1}
- •Begin {sub1}…… end {sub1}
- •Проверить, является ли верным заданное предусловие
- •Проверить, является ли верным заданное предусловие
- •3.Описать грамматику оператора присваивания такую, что
- •4. Определить предусловие
- •4. Определить предусловие
- •Проверить, является ли верным заданное предусловие
- •4. Определить предусловие
Проверить, является ли верным заданное предусловие
{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}
22.
1. Определение типа данных. Контроль типов. Строгая типизация
2. Предполагая использование динамического обзора, указать, какие переменные видимы во время вызова каждой функции при указанной последовательности вызовов
void fun1 (void) ; /* прототипы */
void fun2 (void) ;
void fun3 (void) ;
void main (); {
int a, b, c ;
fun1-> fun2 -> fun3
}
void fun1 (void) { int b, c, d ; …}
void fun2 (void) { int c, d, e ; …}
void fun3 (void) { int d, e, f; …}
3.Описать однозначную грамматику выражений такую, что
Т = {+ , - , *, / , (, ), A, B, C, …, X, Y, Z, 0, 1, …9 }.
V = { E, I }, где Е произвольное выражение, I идентификатор всегда начинающийся с буквы.
Сделать порождения 3-х различных выражений и деревьев к ним.
Проверить правильность утверждений
{ 10 < y < x + 100 and 0 <= x < 13 } x:= x – 5 { 10 < y and x < 8 }
23.
1. Определение типа данных. Контроль типов. Строгая типизация
2 рассмотреть рограмму
void fun (void) {
i
Для каждой из четырех отмеченных точек
функции перечислить все видимые
переменные
while (…) {
int b,c,d;
…………(1)
while (…) {
int c,d,e;
…………(2)
}
…………(3)
}
………..(4)
}
3. Написать однозначную грамматику для оператора A = (D-C)+C*B, сделать его порождение и дерево
4. Определить предусловие
{?} if x < 0 then y := -x else y := x {y => 0}