Ответы пользователя по тегу Pascal
  • Как сравнить два изображения на delphi с процентной погрешностью?

    Сделать привязку к библиотеке pHash и сравнивать хеши по расстоянию Хемминга.
    Ответ написан
    Комментировать
  • Info не объявлен в типе. В чём проблема?

    Нужно прежде разыменовать переменную по адресу ListC. Вместо ListC.info от так:
    ListC^.info
    Ответ написан
    1 комментарий
  • Turbo Pascal устарел и не актуален?

    В общем, сильно отстала учебная программа, построенная на древних инструментах со времен DOS. Сам язык еще вполне используется, только в форме современного языка Object Pascal, сегодня это продукты Delphi и его клон Lazarus (компилятор Free Pascal). Есть также более новое поколение языков - потомков Паскаля - Модула-2, Оберон. Однако в этой нише очень мало вакансий. Так исторически сложилось в пользу языков семейства Си, хотя это и не означает что так лучше.
    Актуальны лишь приобретенные знания по алгоритмам и структурам данных. Текстовый интерфейс и BGI графика, конечно же, более не актуальны.
    Ответ написан
    1 комментарий
  • PascalABC - Режим передвижения кисти без оставления следа?

    Во времена Турбо Паскаля, помню, был такой режим отрисовки XOR, который при повторной отрисовке по тем же координатам рисовал пиксели либо стирал их. Это возможно когда изображение на холсте имеет лишь черный и белый цвета.
    То есть перед изменением координат надо "стереть" объект, передвинуться и тогда рисовать на новом месте.
    Надеюсь, помог.
    Ответ написан
    Комментировать
  • Почему скомпилированная pascal программа не работает без оболочки?

    Вывод на экран производится в текстовом окне (консольный режим), при этом последний текст просто мельком проскакивает, на этом программа заканчивается и сразу же закрывается текстовое окно.
    Поэтому нужно запускать экзешник либо при помощи cmd.exe, либо в программе на Паскале добавив последней строку ReadLn; , заново скомпилировав в экзешник. В последнем случае программа будет ждать нажатия на Ввод.
    Ответ написан
    Комментировать
  • PascalABC.NET и FreePascal имеют более низкий порог вхождения,чем Python3?

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

    Паскаль - очень простой язык и интуитивно понятный. Пайтон - простой только до некоторых пор.
    Если программку нужно написать и потом про неё забыть - то тогда проще выучить Python. На каком ЯП быстрее писать - зависит больше от навыков.

    Допустим в
    python3:
    >>> 5/2
    2.5

    python2:
    >>> 5/2
    2


    Паскаль более требователен, но с ним проще разрабатывать в долгосрочной перспективе.
    Ответ написан
    2 комментария
  • Как передать массив в процедуру?

    Через var переменные передаются как указатель на структуру.
    Думаю, что надо так:
    procedure generateStartWord(var _grid: gridType);
    Ответ написан
    Комментировать
  • Почему программа на pascal выполняется бесконечно?

    Не вникая в сам код, могу посоветовать:
    1. Код нужно обрамить тегом code (в панели иконок с краю, "..."), обновив сообщение
    2. Программа зацикливается из-за того что не выполняется условие выхода из цикла
    3. Лучше избавиться от GOTO
    Ответ написан
    Комментировать
  • Что почитать C#-программисту чтобы быстро изучить ObjectPascal?

    Lazarus - это среда, состоящая из визуальных и невизуальных компонентов. Нужно уметь пользоваться компонентами, расширять функциональность под свои нужды и писать свои. А можно вообще обходиться без единого компонента, используя IDE чисто как редактор кода.
    Без знания основный концепций не получится далеко продвинуться. Можно читать интернет статьи, и можно читать устаревшие печатные публикации.
    Для изучения языка я бы сделал упор на построение независимых модулей, которые можно было бы подключать позже в GUI.
    Нужно определиться для какой цели нужно изучать язык Object Pascal. Ведь можно писать как десктопные приложения, всякие системные и прикладные утилиты, так и веб-сервисы.
    Ответ написан
  • Какими способами можно изменить локальную переменную на Паскале?

    Локальную переменную в Паскале может поменять вложенная процедура/функция, т.е. декларированная внутри процедуры s180t90. Также встроенный ассемблер и прочие уловки при прямой работе с памятью в обход Паскаля.
    Ответ написан
    Комментировать
  • Вызвать writeln и readln Pascal?

    По идее, нужно использовать API системы, чтобы работать с вводом/выводом. В разных ОС это может быть реализовано по-разному. В ДОСе - через прерывания, а в современных - через вызов соответствующих функций.
    Для Линукса - библиотека libc с функциями puts, printf и прочие.

    Только я совершенно не вижу смысла писать это на ассемблере. Паскаль для того и хорош, что можно писать переносимый код при помощи обычных write/read.

    Вместо Free Pascal можно попробовать и GNU Pascal . У последнего бэкенд реализован на том же GCC, что уже само собой подразумевает хорошую оптимизацию кода.
    Ответ написан
    Комментировать
  • Полезно ли знание Pascal?

    Давай определимся.
    В школах и ВУЗах учат не Паскаль, а его диалект, Borland/Турбо Паскаль или же Delphi.

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

    Что плохого в курсах обучения на Турбо Паскале (ТП)?
    Пожалуй, то, что ТП работает в ДОСе. И это накладывает различные ограничения на целевое применение программ, написанных в ТП. Можно запускать ДОС программы и в Windows, но, с другой стороны, во многих школах и ВУЗах стоит устаревшее оборудование. В сёлах, поди, кроме установленного ДОСа, порой, ничего и не может быть запущено. Ну, может, порой Windows 95/98. А как учить чему-то современному в таких условиях? Вот поэтому ТП и является хорошим решением. Вместо ТП можно было бы обучать на современном Free Pascal'е.

    Самое плохое в программах, написанных на ТП, это то, что в них смешаны логика и отображение.
    Что такое MVC многие преподаватели не знают. А студентам нужно просто пройти курс и забыть. Ибо большинство или лентяи или нет у них достойного преподавателя, чтобы сделать урок интересным. А это накладывает отпечаток на дальнейшее отношение к Паскалю, как таковому. Я полагаю, что язык Паскаль выступает в данном случае козлом отпущения, хотя вины языка здесь нет, так как сам язык и простой и, в то же время, эффективный. Особенно что касается простоты отладки.

    Вот некоторые цитаты про изучение Паскаля:
    Математику тоже незачем изучать, интегралы всякие. Кому они по жизни нужны?
    Лучше бухгалтерию. История, литература - фтопку. Надо менеджмент усваивать, руководить.
    Русский язык? Зачем? Раз человек умеет читать и писать.. и ладно. Накрайняк, если не умеет писать, но умеет подписываться, значить, годен быть начальником.

    Язык невозбранно привлекает возможностью писать почти как на обычном английском языке, а не ломать голову и пальцы о ++i + ++i, эзотерику истинности выражений (1/3 == 0) и (-1 > (unsigned int) 1) и прочих извращенных приёмов, принятых в C-подобных языках.


    У языка Паскаль есть потомки: Modula-2, Delphi, Component Pascal (ранее Oberon/L), Zonnon, Active Oberon.
    У последнего вообще, довольно интересные сегодня особенности, о которых стоит почитать в статьях
    Оберон умер, да здравствует Оберон! часть I
    часть II

    В итоге каждый решает для себя, нужны ли ему положительные качества Паскаля или же, порой, мнимая власть, предоставляемая другими языками. С некоторыми языками нужно бороться определёнными средствами.
    Например, в серии статей, одна из которых Проверка Wine: Год спустя
    Ответ написан
    3 комментария
  • Как нормально писать на Pascal в Notepad++?

    Ответ написан
    Комментировать
  • Как убрать наименьшую цифру из заданного числа?

    Чтобы получить бо́льшее число, нужно упорядочить цифры по разряду по убыванию.
    Допустим, если 538, то перевести в 853. Если убрать наименьшую цифру, то получится 85.
    Для разбиения числа на цифры воспользуйся советом cypselusmurarius.
    Ответ написан
    Комментировать
  • Компилятор ругается на функцию.Что делать?

    Когда имеются две сложных структуры, нужно задавать параметры в процедуре, а не функции. Потому что функции используются для возврата простых типов.
    Правильно так:
    procedure Some(a: mass; var b: mass)
    begin
    end;

    Параметр a - входной массив. b - формируемый для выхода.
    Ответ написан
    Комментировать
  • Почему может возникать Invalid pointer operation в Pascal?

    p.s. возможно причина в том что данный объект присваивался к одному и из элементов списка, который очищался перед очисткой данного объекта, то есть объект вроде как существует, а данные уже нет
    Именно так.

    Имеет смысл воспользоваться функцией FreeAndNil внутри реализации FreeObject.
    Ответ написан
    Комментировать