vitaly_l писал(а):Если Вы сможете описать логику мышления, то Вы будете первым из ныне-живущих. В смысле над этим бьются уже много десятков и даже сотен лет, но толком никто не может сказать: Что такое сознание?
Речь не идет чтобы в программе описать человека, его сознание и мышление. Речь идет чтобы программу писать максимально близко к своим рассуждениям о самой задаче. Поэтому нужно вначале много подумать о самой задаче, а только после этого начинать ее писать. Если в Ваших рассуждениях возникает некий объект, значит под него нужно предусмотреть класс. А если в Ваших рассуждениях нет вызова функции с кучей параметров, то не нужно этого делать, даже если некоторые Вам это советуют из каких-то теоретических соображений.
Проблема в том, что многих учат программировать оторвано от анализа самой задачи. Поэтому многие исходя из классики программирования вначале создают некую классическую структуру классов, а затем начинают ее "за уши" притягивать к реальной задаче. Такое не нужно делать. Поэтому я Вам не советую создавать классы там, где они не нужны и где достаточно использовать глобальную переменную. Но если создаете глобальную переменную, то не называйте ее очень кратко, типа i,j,x,y и т.п., т.к. доступ к ним есть много откуда и можно ошибочно перетереть значение там, где не нужно было. Поэтому называйте модули, глобальные переменные и процедуры длинно, максимально привязываясь в их фактическому наименованию. Тогда и через 20 лет Вы быстро вспомните название переменной по ее смысловому названию.
Добавлено спустя 8 минут 20 секунд:vitaly_l писал(а):Ещё есть способы передачи данных из главного модуля в модуль подчинённый?
В паскале и других языках нет понятия подчиненности модулей. В этом смысле все модули равны, и есть общие правила доступа к переменным, типам и процедурам описанных в другом модуле. Главный модуль отличается от неглавного только тем, что имя exe-файла соответствует имени этого модуля, а также тем, что секция begin end (аналог initialization) будет там выполняться позже секций initialization всех других модулей. В остальном имеем равенство.
Поэтому имеем общее правило, что для доступа к переменным описанным в модуле ХХХХХ, нужно в строке uses написать ХХХХХ.
Другой способ, это когда Вы вызываете функцию из модуля ХХХХХ, то в ее параметрах перечисляете все, все, все, что ей может понадобится. Если таких данных мало, то все хорошо, например, вызывая функцию y:=sin(x), у нас не вызывает сомнение в указании в параметрах Х, хотя мы бы могли объявить глобальную переменную var Sin_X:Double; и в коде писать Sin_X:=x;y:=sin; Но это было бы менее понятно и наглядно.