Вопрос:

16. Какие значения примут переменные C и D в результате выполнения программы:

Ответ:

Решение:

Проследим выполнение программы:

  1. Var A, B, C, D : integer; - объявление целочисленных переменных.
  2. A := 6; - переменной A присваивается значение 6.
  3. B := 2*A + 8; - вычисляем B: \( B = 2 * 6 + 8 = 12 + 8 = 20 \). Теперь B = 20.
  4. If B > A then C := B - A else D := A - B; - проверяем условие B > A.
    • 20 > 6? Да, условие истинно.
    • Следовательно, выполняется ветка then: C := B - A.
    • \( C = 20 - 6 = 14 \). Теперь C = 14.
    • Ветка else (D := A - B) не выполняется, поэтому значение D остается неизменным (неинициализированным, если бы не было дальнейших действий, но здесь нужно определить, какое значение оно примет из предложенных вариантов).
    • Обратим внимание на варианты ответов. Вариант 3 предлагает C=14, D=-14. Если бы условие B > A было ложным, тогда бы выполнялось D := A - B, что дало бы D := 6 - 20 = -14.
    • Поскольку условие B > A истинно, вычисляется C := B - A, и D в этом случае не получает нового значения по ветке else. Часто в таких случаях переменная сохраняет своё предыдущее значение или остаётся неопределённой. Однако, если мы внимательно посмотрим на варианты, то единственный вариант, где C=14, это вариант 3. Это наводит на мысль, что в условии задачи или в вариантах ответа может быть неточность, либо подразумевается, что D не изменяется.
    • Перечитаем условие: If B > A then C := B - A else D := A - B;. Если условие истинно, выполняется C := B - A. Если условие ложно, выполняется D := A - B. То есть, либо изменяется C, либо D.
    • В нашем случае B > A (20 > 6) истинно. Поэтому выполняется C := B - A, и C становится равным 14. Переменная D в этом случае не получает нового значения из ветки else.
    • Среди предложенных вариантов:
      • 1. C=14, D=0
      • 2. C=38, D=14
      • 3. C=14, D=-14
      • 4. C=-3, D=3
    • Вариант 3 единственный, где C=14. Значение D=-14 было бы присвоено, если бы условие B > A было ложным.
    • Есть вероятность, что в задании подразумевается, что если условие истинно, то C присваивается значение, а D остается как было (или не определено), или же, что при истинном условии C присваивается значение, а при ложном — D.
    • Исходя из структуры If...then...else, выполняется ТОЛЬКО одна из веток. Если выполняется then C := B - A, то ветка else D := A - B не выполняется.
    • Таким образом, C = 14. Значение D в данном случае не определяется условием.
    • Если предположить, что в задаче есть небольшая неточность и D тоже должно быть определено, или что вопрос подразумевает, какое значение могло бы принять D при другом условии, то вариант 3 (C=14, D=-14) выглядит правдоподобным, потому что C = 14 — это точно.
    • Однако, если следовать строго логике выполнения, то C = 14, а D не изменяется в этой строке. Если бы D имело какое-то начальное значение, то оно бы и осталось. Но вариантов с 'D не определено' нет.
    • Давайте предположим, что задача предполагает, что если условие истинно, то C получает значение, а если ложно, то D получает значение. Иначе говоря, если B > A, то C вычисляется, а D не трогается. Если B <= A, то D вычисляется, а C не трогается.
    • В нашем случае B > A истинно, значит C = B - A = 20 - 6 = 14.
    • writeln ('C=', C); writeln ('D=', D);. Если D не было инициализировано, то его значение неопределенно.
    • Рассмотрим внимательнее варианты: только в варианте 3 C=14. Это означает, что C точно равно 14. Что касается D, то значение -14 получается, если бы условие было ложным (A - B = 6 - 20 = -14).
    • Возможно, в задаче имелось в виду, что если B > A, то C присваивается значение, а если B <= A, то D присваивается значение.
    • Так как B > A, то C = B - A = 20 - 6 = 14.
    • Если бы условие было ложным (B <= A), то D = A - B = 6 - 20 = -14.
    • Таким образом, C=14. Вариант 3 является единственным, где C=14.

Ответ: 3. C=14, D= -14