Очно-дистанційні курси інформатиків

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Тема 2

Сообщений 31 страница 39 из 39

31

Кухар Андрій написал(а):

{
  a = b;
  c = d;
} -- составная инструкция

У Ватсона К. прочитала: (цитирую из книги)
"С# — язык, обладающий блочной структурой; другими словами, каждый опе-
ратор является частью некоторого блока кода. Эти блоки, для обозначения начала
и конца которых используются фигурные скобки { и }, могут содержать произволь-
ное количество операторов или не содержать их вовсе. Обратите внимание, что
фигурные скобки не сопровождаются точками с запятой.
Итак, простой блок программы на С# может иметь следующий вид:
<строка кода 1, оператор 1>;
<строка кода 2, оператор 2>
Здесь выражения <строка кода х, оператор у> не являются действительными
составляющими кода на С#: этот текст используется для обозначения места, куда
впоследствии будут помещены операторы С#. Обратите внимание, что в данном
примере вторая и третья строки кода являются частями одного и того же операто-
ра, поэтому после второй строки точка с запятой отсутствует."
   То есть составная инструкция - блок?

0

32

Стукалова И.В. написал(а):

То есть составная инструкция - блок?

Мне кажется автор употребляет слово "блок" не как термин, а в общем смысле. Составную инструкцию же он называет "оператором", что принято в русскоязычной литературе. От чего я и рекомендовал отказаться. В русском языке принято:

statement -- оператор, инструкция
operator -- операция

Это выглядит несколько странно и может привести к путанице. Намного логичнее:

statement -- инструкция
operator -- оператор

Применение operator -- оператор в русском языке вобщем считается ошибочным. Тем не менее часто встречается. (По понятной причине :) ). Поэтому мне кажется, что лучше не плыть против течения и принять operator -- оператор.

0

33

Да. if -- это statement.

Если почитать MSDN, то там составная инструкция обозначается как "блок инструкций".

The while statement executes a statement or a block of statements until a specified expression evaluates to false.

Поэтому мне кажется, что англоязычный в оригинале автор использовал "block of statements", а переводчик следовал ему.

С другой стороны не вижу ничего плохого в том чтобы "block of statements" называть "составная инструкция", что есть более широко принятым у нас, чем "блок кода" или "блок инструкций".

0

34

Кухар Андрій написал(а):

operator -- оператор (+, -, ...)
statement -- інструкція (if, while, проста інструкція, складена інструкція, ...)
expression -- вираз (конструкція з операторів та їх аргументів)

З цим я згодна, тут є поєднання понять наших з англійськими.

Кухар Андрій написал(а):

x < 0 -- вираз, < -- оператор
y = -x -- вираз, =, - -- оператори

Але як можна x < 0 назвати виразом? Це умова, вона може бути істиною або хибною. Згадайте, дітей з першого класу вчать, вираз - це запис, який складається з чисел, змінних і арифметичних операцій. Умовою називають запис, який складається з чисел. змінних та знаків порівняння.

Кухар Андрій написал(а):

y = -x; -- інструкція (проста інструкція)

А так вже правильно.

Тому інструкція розгалуження має вигляд if (<умова>) <інструкція> else <інструкція>.

0

35

Цинчик Тетяна написал(а):

Але як можна x < 0 назвати виразом? Це умова, вона може бути істиною або хибною. Згадайте, дітей з першого класу вчать, вираз - це запис, який складається з чисел, змінних і арифметичних операцій. Умовою називають запис, який складається з чисел. змінних та знаків порівняння.

Розділення на вирази та умови можливо має сенс в математиці. Можливо з точки зору математики це є коректнішим. Але з іншого боку в програмуванні оператори <, >, == вважаються діями, такими ж самими як і + чи -. Тільки вони виконують іншу дію.

Що стосується інструкції if (я поки що буду користуватися запропонованими мною термінами), то коректніше було б навіть казати, що інструкція if очікує не умову, і навіть не вираз, а параметр типу bool.

if (bool) statement else statement

bool f = a > b;
if (f) m = a; else m = b;

Але оскільки тільки вирази можуть набувати значення, то це теж саме, що if очікує на вираз, який повертає значення bool.

0

36

З іншого боку мені здається, що нам ніщо не заважає називати умовами вирази, які набувають значення типу bool.

УМОВА -- ВИРАЗ, що набуває значення типу bool.

(А також int у C/C++, де 0 інтерпретується як false, а всі інші значення як true).

Отредактировано Кухар Андрій (2007-06-05 13:19:48)

0

37

Условие - это выражение в результате вычисления которого получается логическое значение true или false. Т.е. это логическое выражение, которое  компилятор вычисляет так же, как и арифметическое. Так что принципиальной разницы нет между арифметическим и логическим выражениями. Это не зависит от языка программирования.

0

38

Стукалова И.В. написал(а):

Условие - это выражение в результате вычисления которого получается логическое значение true или false.

Є поняття умова і логічний вираз, що одне і те саме.
Але умова і вираз - поняття різні.

Якби ми писали посібник для студентів університету, то тут можна було б писати  так як зручно для мови програмування, а так як це для дітей 8 класу, то треба на основі сформованих понять навчити розуміти і програмувати. Для них і так достатньо багато нових слів: класи, літерали,коментарі, типи, ... Якщо ще змінювати математичні поняття, то складність посилюється і бажання дітей вивчати пропадає.

0

39

Цинчик Тетяна написал(а):

Якщо ще змінювати математичні поняття, то складність посилюється

Поняття виразу у програмуванні практично не змінюється, порівняно з математикою. Просто розширено діапазон значень, якіих він може набувати: крім знайомих з математики числових додалися інші типи даних (логічний, рядковий). Відповідно, з'явилися вирази, що набувають таких значень, та операції, допустимі для цих типів.

Знову проведу аналогією з поняттям числа. Поступово в математиці з'являються: натуральні, цілі, раціональні, дійсні, комплексні. І ніхто не відчуває дискомфорту, числа продовжують називати числами. Чому ми повинні вираз, який при виконанні певних операцій, повертає значення логічного типу, називати НЕ виразом, а умовою. Слово "умова", звичайно, можна ввести, але лише як синонім (приблизно так: "Вирази логічного типу іноді називають умовами").

Не слід також забувати, що

Кухар Андрій написал(а):

інструкція if очікує не умову, і навіть не вираз, а параметр типу bool.

if (bool) statement else statement

bool f = a > b;
if (f) m = a; else m = b;

тобто, на місці умови може стояти ідентифікатор змінної. І як на нього можна сказати "умова"?

0