
Вопрос задан 26.06.2019 в 06:14.
Предмет Информатика.
Спрашивает Каурова Маргарита.
Чему будет равно значение переменной c в результате выполнения фрагмента программы a:=125; b:=25;
c:=12; if a div 25=0 then if a mod 12=0 then c:=b div (a mod c) else c:=a div (b mod c); 1) 0; 2) 1; 3) 12; 4) 125.

Ответы на вопрос

Отвечает Николенко Екатерина.
Сначала переменные a,b,c получат значения.
Значением условного выражения (a div 25) = 0 будет False (ложно), поскольку 125 / 5 = 5, а не 0.
Следовательно, в первом условном операторе должен выполняться код в блоке, стоящий после ключевого слова else, если таковое имеется.
Рассмотрим фрагмент программы, как он записан:
if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c)
else c:=a div (b mod c);
Отступы придумали не зря: они помогают понимать логику программы.
Мы видим ДВА if, ДВА then и только ОДНО else. Какому же if оно сопоставляется?
Другими словами, какая из двух следующих конструкций правильная?
if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c) else c:=a div (b mod c);
if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c)
else c:=a div (b mod c);
Правила языка Паскаль легко позволяют разрешить проблему: ключевое слово else связывается с ближайшим к нему предшествующим if, не имеющим else.
Следовательно, верно первое из толкований, т.е. первый if ветки с else не имеет. Поэтому значение переменной с не изменится, оставшись равным 12.
Ответ: 12
Замечание.
А как сделать, чтобы выполнялась логика второй конструкции? Очень просто: использовать блок.
if a div 25=0 then
begin if a mod 12=0 then c:=b div (a mod c) end
else c:=a div (b mod c);
Значением условного выражения (a div 25) = 0 будет False (ложно), поскольку 125 / 5 = 5, а не 0.
Следовательно, в первом условном операторе должен выполняться код в блоке, стоящий после ключевого слова else, если таковое имеется.
Рассмотрим фрагмент программы, как он записан:
if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c)
else c:=a div (b mod c);
Отступы придумали не зря: они помогают понимать логику программы.
Мы видим ДВА if, ДВА then и только ОДНО else. Какому же if оно сопоставляется?
Другими словами, какая из двух следующих конструкций правильная?
if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c) else c:=a div (b mod c);
if a div 25=0 then
if a mod 12=0 then c:=b div (a mod c)
else c:=a div (b mod c);
Правила языка Паскаль легко позволяют разрешить проблему: ключевое слово else связывается с ближайшим к нему предшествующим if, не имеющим else.
Следовательно, верно первое из толкований, т.е. первый if ветки с else не имеет. Поэтому значение переменной с не изменится, оставшись равным 12.
Ответ: 12
Замечание.
А как сделать, чтобы выполнялась логика второй конструкции? Очень просто: использовать блок.
if a div 25=0 then
begin if a mod 12=0 then c:=b div (a mod c) end
else c:=a div (b mod c);


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili