purebasic.info

PureBasic forum
Текущее время: Вс сен 23, 2018 7:54 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Организация программного кода
СообщениеДобавлено: Пт июн 15, 2018 6:59 am 
Не в сети
док

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 199
Благодарил (а): 20 раз.
Поблагодарили: 33 раз.
Пункты репутации: 0
fil@tov писал(а):
Мне понравился вариант с созданием проекта.
В справке есть "Управление проектами".


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Организация программного кода
СообщениеДобавлено: Пт июн 15, 2018 9:51 am 
Не в сети
доцент

Зарегистрирован: Пн мар 30, 2015 5:48 pm
Сообщений: 40
Благодарил (а): 29 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
fil@tov писал(а):
глобальные переменные

Пётр писал(а):
Их в программе должно быть как можно меньше.


Почему глобальных переменных в программе должно быть как можно меньше? Чтобы меньше оперативной памяти задействовать?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Организация программного кода
СообщениеДобавлено: Пт июн 15, 2018 10:10 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Во многих случаях вместо глобальных переменных можно передавать данные через аргументы процедуры.
Глобальные переменные нужно использовать в тех случаях когда это действительно необходимо.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Организация программного кода
СообщениеДобавлено: Пт июн 15, 2018 10:15 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт ноя 22, 2016 7:59 am
Сообщений: 77
Откуда: Россия/Пятигорск
Благодарил (а): 0 раз.
Поблагодарили: 15 раз.
Пункты репутации: 0
Глобальные переменные рекомендуется использовать как можно реже, чтобы избежать возможных конфликтов имен.
Например, если будет существовать глобальная переменная Name, и локальная переменная с таким-же именем.
Таких конфликтов можно избежать, если следовать определенному стилю именования переменных (например gИмяПеременной - для глобальных, а mИмяПеременной - для локальных). Но в этом случае при использовании сторонних модулей нет гарантии, что авторы этих модулей следуют тому же стилю).
Поэтому по возможности лучше пользоваться локальными переменными.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Организация программного кода
СообщениеДобавлено: Ср сен 05, 2018 4:14 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1694
Откуда: Алматы
Благодарил (а): 15 раз.
Поблагодарили: 46 раз.
Пункты репутации: 5
понадобилось выдирать из результатов работы procedurereturn два значения. да, можно склеивать два в одно, после опять расклеивать.

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

вот собственно вопрос - как это делается?

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Procedure.a Test(par1.a, par2.a, par3.a)
 
  ret.a
 
  if par1 = par2
    ret = 1
    par3 = 123
  endif
 
procedurereturn ret
endprocedure
 
if Test(1, 1, par3)
  debug par3
endif
 
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Организация программного кода
СообщениеДобавлено: Ср сен 05, 2018 4:32 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Создаешь структуру и передаешь ее процедуре по указателю.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Structure x
  x.a
  y.f
  z.s
  List l.i()
EndStructure
 
Procedure Tst(*x.x)
  If *x
    *x\x = 1
    *x\y = 2.5
    *x\z = "1234"
    If AddElement(*x\l())
      *x\l()=10
    EndIf
  EndIf
EndProcedure
 
s.x
Tst(s)
 
Debug s\x
Debug s\y
Debug s\z
 
ForEach s\l()
  Debug s\l()
Next

Но можно ограничится списком (или массивом и т. д.). Вариантов много.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Procedure Tst(List l.i())
 
  If AddElement(l())
    l()=10
  EndIf
 
  If AddElement(l())
    l()=20
  EndIf
 
EndProcedure
 
NewList x.i()
Tst(x())
 
ForEach x()
  Debug x()
Next


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB