![]() |
![]() |
![]() |
|
Есть проблема с пониманием | ☑ | ||
---|---|---|---|---|
0
ДереВово
17.02.21
✎
18:00
|
Привет, я Дмитрий 1С увлекаюсь для себя, подскажите кому не лень.
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Перем ИсходныеДанные; ИсходныеДанные = ""; // 1. Ввести данные Если НЕ ВвестиСтроку(ИсходныеДанные, "Что считать ?") Тогда Возврат; КонецЕсли; // 2. Разобрать данные на операнды и операцию ПозицияОперации = 0; ТекущаяОперация = "^"; ПозицияОперации=Найти(ИсходныеДанные,ТекущаяОперация); Если ПозицияОперации=0 Тогда Сообщить("Операция """+ТекущаяОперация+""" не найдена!"); Возврат; КонецЕсли; Если ПозицияОперации=1 ИЛИ ПозицияОперации=СтрДлина(ИсходныеДанные) Тогда Сообщить ("Не хватает операндов!"); Возврат; КонецЕсли; Операнд1= Лев(ИсходныеДанные,ПозицияОперации-1) ; Операнд2= Сред(ИсходныеДанные,ПозицияОперации+1) ; // 3. Произвести вычисление Результат = Pow(Операнд1,Операнд2); // 4. Вывести результат Сообщить(ИсходныеДанные+" = "+Результат) ; КонецПроцедуры Почему переменная ПозицияОперации равна 0, и как это вообще понимать. ПозицияОперации = 0; ТекущаяОперация = "^"; ПозицияОперации=Найти(ИсходныеДанные,ТекущаяОперация); Я правильно понимаю что ТекущаяОперация занимает центральное место в выражении? Операнд1= Лев(ИсходныеДанные,ПозицияОперации-1) ; Операнд2= Сред(ИсходныеДанные,ПозицияОперации+1) ; Операнды занимают места с лева и с права от ТекущаяОперация а то на видео от 1С основы программирование не стали объяснять таких мелочей. Спасибо кто ответит, надеюсь понятно написал |
|||
1
Ёпрст
гуру
17.02.21
✎
18:03
|
(0) нет.
|
|||
2
Ёпрст
гуру
17.02.21
✎
18:04
|
Просто прочитай описание от метода Сред.
В данном случае, это будет строка от найденной позиции+1 и все символы, что справа. |
|||
3
Ёпрст
гуру
17.02.21
✎
18:06
|
И..можно было проще написать -
массивХрени = СтрРазделить(ИсходныеДанные, "^",Ложь); Операнд1= массивХрени[0]; Операнд2 = массивХрени[1]; .... ОперандN = массивХрени[N]; |
|||
4
ДереВово
17.02.21
✎
18:24
|
Спасибо за ответ.
Это было упражнение перед созданием калькулятора, так что массивы еще не проходил. Второй день сижу и гуглю про эту ПозицияОперации = 0; Весь мозг сломал? Зачем писать ПозицияОперации = 0 если изменяя на ПозицияОперации = 15 или на любое число код по прежнему работает, почему именно 0 или таким способом просто ввели переменную? Скорее всего я что то не допонял. |
|||
5
ДереВово
17.02.21
✎
18:39
|
Зачем вообще было писать эту строку ПозицияОперации = 0;
|
|||
6
Andreyyy
17.02.21
✎
18:43
|
Может тот кто писал был слегка педантичен.
Или недоверял методу "Найти", что в случае отсутствия искомого значения вернется "0". |
|||
7
fisher
17.02.21
✎
18:45
|
(5) Это атавизм. Машинальная инициализация новой переменной дефолтовым значением (страхует от использования неинициализированной переменной, если дальнейшее изменение переменной происходит по каким-то условиям). В данном коде не имеет смысла, так как ниже переменная также явно переинициализируется. Возможно, изначально код был несколько другой.
|
|||
8
ДереВово
17.02.21
✎
18:52
|
Спасибо огромное, ввело меня в заблуждение т.к всегда мне говорили что код должен быть оптимальным, а тут на тебе_)
спасибо еще раз. |
|||
9
Йохохо
17.02.21
✎
18:58
|
(7) или у афтара в руках такая тряпка и мел еще, оп чик и там уже цикл
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |