Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Математические операции MULTIPLY '*'

« Если при перемножении 32-разрядных переменных результат умножения получится больше чем , то лишние биты произведения будут утеряны.» - нужна запятая после числа .

---- ////// ///// ------ /////// ---

«Variable - переменные, могут быть постоянными, переменны и или выражениями.» - пропущена буква «м» в слове «переменными»

---- ////// ///// ------ /////// ---

Пример 2

' Перемножение переменной Value2 типа DWord и переменной Value1 типа Word

Value1 = 100 ' Присвоить переменной Value1 значение равное 1000

Value2 = 10000 ' Присвоить переменной Value2 значение равное 9763647

Числа в программе не соответствуют числам в комментарии

---- ////// ///// ------ /////// ---

Листинг программы multiply. bas

DelayMS 500 ' Пауза 5 сек - нужно исправить 500 на 5000 во всех демонстрациях

этой программы

---- ////// ///// ------ /////// ---

Листинг программы multiply. bas

Include "PROTON18_4.INC" ' Файл подключаемый из внешней библиотеки подпрограмм

Device = 18F452 ' Используется 16-разрядный процессор

Dim VR1 As Word

Dim VR2 As Word

Dim VD2 As DWord нет комментариев

Dim FL1 As Float

Dim FL2 As Float

Уважаемый terrarus. При рассмотрении программ к данному оператору у меня возникли вот какие соображения. Рассмотрим, например, пример 1.

Пример 1 ' Перемножение переменной Value1 типа Word и переменной Value1 типа Word

Dim Value1 As Word ' Объявить переменную Value1 и её тип как Word

Dim Value2 As Word ' Объявить переменную Value2 и её тип как Word

НЕ нашли? Не то? Что вы ищете?

Value1 = 1000 ' Присвоить переменной Value1 значение равное 1000

Value2 = 19 ' Присвоить переменной Value2 значение равное 19

Value2 = Value2 * Value1 ' Перемножить Value2 и Value1 и результат поместить в Value2

Print DEC Value2 ' Отобразить результат на дисплее

Stop

В данном написании программы все верно. И компиляция, и прогон в Протеусе дадут правильный результат. Но переменная Value2 объявлена типа Word, значит её значение может быть величиной до 65535. И в данном примере, если ее начальное значение превысит 65, то при перемножении на 1000 результат не получится отобразить с помощью переменной Value2 типа Word, не хватит разрядов. А результат такого перемножения, высвеченный на дисплее, не будет соответствовать истине.

Поэтому, по моему мнению, в описании этого оператора необходимо указать, что при его использовании необходимо тщательно провести оценку заявленных типов переменных, во избежание получения неверного результата. Я думаю это важный момент, для осваивающих Протон, на который надо обратить внимание.

P. S. Хотя конечно оценку типов переменных надо делать еще раньше, где-нибудь на этапе составления алгоритма программы, когда уже примерно ясно с какими числами придётся работать.

P. P.S. Когда решил поэкспериментировать с программой multiply. bas на предмет вышеизложенных соображение о типах переменных, то получилось вот такой казус.

В программе multiply. bas я закомментировал все демонстрации, кроме первой. При компиляции оставшегося фрагмента Протон выдал ошибку, что в программе может быть заявлен только один тип контроллера и указал, что ошибка в строке Device = 18F452. После того, как я закомментировал эту строку, компиляция прошла успешно. Получается, в строке Include "PROTON18_4.INC" , вернее в обозначенном файле PROTON18_4.INC, уже есть указание на тип используемого контроллера, и второй раз в программе его определять не надо??? Если мой вывод не верен, то почему появляется такая ошибка?

Надеюсь, мои замечания по делу и не заставят Вас пожалеть о времени, затраченном на их прочтение.

С уважением, Владимир.