Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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, уже есть указание на тип используемого контроллера, и второй раз в программе его определять не надо??? Если мой вывод не верен, то почему появляется такая ошибка?
Надеюсь, мои замечания по делу и не заставят Вас пожалеть о времени, затраченном на их прочтение.
С уважением, Владимир.


