Помощь новичкам


#699

Ну, буквы-то в словах переставлять совсем не обязательно )))


#700

Кое-где всё-таки работает. В Турбо Паскале типизированные константы тоже были. Их придумали, чтобы поощрять программистов инициализировать переменные в момент описания. (То есть формально это не константа, а переменная, просто название неудачное.) Сейчас, когда можно инициализировать переменные при описании, необходимость отпала. В хелпе об этом нет. Впрочем, разработчики не обязаны в своём хелпе описывать отличия от других языков :slight_smile: Хотя мне тоже казалось, что я это где-то видел раньше…


#701

Зря Вы меня об этом попросили, код уже за 500 строк, откровенно говоря мне Вас жалко, потому, что в нем и черт ногу сломает, сам понимаю что написано очень все плохо.

нейросеть отладка проца.pas (40,2 КБ) data.rar (657,9 КБ) архив разархивировать в папку с программой (там картинки для работы программы)

Это еще не допиленный, но более менее рабочий вариант.


#702

Я так и понял что там будет сложно разобраться. Но мне себя больше жалко в случае когда нужно понять что вы имели в виду, из ответа на форуме))). Код говорит громче тип. Особенно если он, как Вы и сказали, рабочий - надо лишь привести его в человеческий вид, не сильно разбираясь в то что он значит.

А почему .pas в архив не засунуть? Ну ладно…


#703

Перефразируя известное, все же “константы должны быть константами потому, что это константы”. Типизированные они или нет, назначение константы в том чтобы а) показать, что данное значение в программе изменению не подлежит б) защитить “дурака-программиста”, который забудет про а).


#704

в) обезвредить некоторые проблемы дублирования кода. Я про тот случай когда в 1 месте меняешь, в а другом забываешь)


#705

Вот тут я бы не был категоричен. Константы в Паскале по своей видимости сродни глобальным переменным. Никто не мешает использовать глобальную переменную вместо константы (будет не const, а var) и менять ее значение также в одном месте.


#706

Конечно, но тогда что с п. б) ?)))


#707

То же, что и с а). Если мы говорим о переменной, то а) и б) не работают.

Глобальные переменные придумали в Фортране, потому что там не было того, что впоследствии в Алгол-60 назвали “краснотой”: возможности менять в функции значения переданных ей параметров. Тогда и возникла идея использовать переменные, общие для нескольких программных единиц, значения которых можно было менять в любом месте кода. А еще потом в Фортране придумали именованные и неименованную общую область Common, что сделало процесс вылавливания ошибок отдельным искусством.

Поэтому, когда я вижу программу с большим количеством глобальных переменных, это наводит на мысли:

  • язык программирования корявый, если без этого не обойтись;
  • программист криворукий, если язык программирования не корявый;
  • программист просто еще “не хлебнул жизни”, если он не криворукий.

#708

Абсолютно и полностью поддерживаю :slight_smile: Я тоже заметил, что название не соответствует. Но это был, видимо, первый серьёзный проект Хейлсберга. Назвали не по смыслу, а по синтаксическим особенностям: ведь константы можно инициализировать до begin, а переменные (тогда было) нельзя. Но ведь направление мысли правильное: инициализируй!


#709
  1. Используйте время от времени форматирование. Оно, конечно, не идеальное, но всё же справляется с этой задачей на много лучше вас))

image

  1. Давайте познакомимся с инкапсуляцией, одним из основных принципов программирования на .Net . Вот я прекрасную цитату спёр с хабра:

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

Теперь вернёмся в сегодняшний день к современным чудесам автопрома с коробкой-автоматом. На самом деле, по сути, ничего не изменилось. Бензонасос всё так же поставляет бензин в двигатель, дифференциалы обеспечивают поворот колёс на различающиеся углы, коленвал превращает поступательное движение поршня во вращательное движение колёс. Прогресс в другом. Сейчас все эти действия скрыты от пользователя и позволяют ему крутить руль и нажимать на педаль газа, не задумываясь, что в это время происходит с инжектором, дроссельной заслонкой и распредвалом. Именно сокрытие внутренних процессов, происходящих в автомобиле, позволяет эффективно его использовать даже тем, кто не является профессионалом-автомехаником с двадцатилетним стажем. Это сокрытие в ООП носит название инкапсуляции.

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

И объясните лучше на всякий случай (можно, наверное, в отдельную тему даже) как должна работать каждая кнопка и подробнее опишите что должны уметь нейроны.

В принципе, программа у вас довольно маленькая, за день - два, думаю, смогу в стиль ООП перевести. Если не считать задержек на всякие #940))).


#710

Нет там такого бага. Надо просто {$J-} поствить


#711

Есть баг, нет бага в fpc - это пофигу. Он давно на помойке истории и писанина на нем - попытка “гальванизировать труп”. Извращения братьев наших меньших. Да и не так уж много на этом форуме реаниматоров и патологоанатомов.


#712

Не все так думают.


#713

Думаю, что на этом форуме - практически все. Иначе что тут делают те, кто так не думает? Что до Лазаруса - пусть на нем продолжает программировать Украина- там сейчас официальные власти усиленно проталкивают любые продукты, лишь бы они не были российскими. Пишу не по собственному наблюдению: в силу известных причин доводится общаться как с тамошними школьниками, так и с преподавателями (“все понимаем ,но что мы можем сделать?”).

P.S. Встречал также довольно оригинальную позицию в России: “Чем больше будут писать на Турбо Паскаль и Free Pascal, тем быстрее поймут ,что это отстой и перейдут на С++, Java или Python, наконец-то убрав Паскаль из школ.”

P.P.S. А сторонникам fpc адресую известную фразу из “Золотого теленка”: “Пилите, Шура, пилите!”


#714

Там как раз для нелюбителей пилить. Формочки быстро наделал, старый код от Дельфи он сам переделывает под себя. А по поводу того, кто и где разрабатывает, как-то разработчик Дельфи вот убеждал, работайте на Дельфи, у вас же в России тоже его разработчики есть да и FireMonkey у вас придумали…


#715

Пилить - это как раз писать. Формочки - они мало кого интересуют сейчас. Когда нужна интерактивность, Паскаль не выбирают. А код а Лазарусе - все тот же fpc. Почаще к классике обращайтесь: “Хоть ты и в новой коже, но сердце у тебя все то же!”.

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


#716

Вы о чём? Разговор был о присваивании констант.


#717

Именно. Но как-то он пошел в сторону обсуждения fpc, его багов и не багов, потом Вы решили рассказать о всенародной любви к Лазарусу…


#718

Так не я же его увёл в сторону. Там был вопрос о том, что мол на fpc можно присваивать константу. Но это и там нельзя делать, если соответственно настроить.