Итак, уважаемые читатели ZedPost.Ru, продолжаем наши уроки по паскалю. В прошлый раз мы узнали о том, что такое двумерные массивы, сегодня мы узнаем о модуле CRT. Подробнее далее.
Что такое модуль CRT? Это модуль в Паскаль, который может выводить в отдельном диалоговом окне цветные символы на цветном фоне. Также с помощью него можно настроить размер этого окна, переместить курсор в определённую точку экрана, а также очищать это диалоговое окно.
Модуль CRT в паскале поддерживает 16 цветов, нумерация которых начинается с 0 (от 0 до 15 включительно). Также можно просто прописывать названия цветов не используя цифры.
Для того чтобы использовать модуль CRT его нужно подключить с помощью следующей строчки:
Для того чтобы закрасить фон нужно использовать такую команду:
Надо сказать, что textbackground следует применять вместе с процедурой очистки экрана, которая описана ниже.
Для очистки экрана (1) и установки позиции курсора (2) используются соответственно следующие команды:
Цвет текста определяет процедура:
Для временной задержки существует процедура delay
Запускать программу в Pascal с использованием модуля CRT нужно при помощи клавиш Shift+F9.
С помощью этого модуля игры для компьютера, телефона не напишешь. Для windows phone 7 игры написаны на совсем другом языке программирования.
Пример программы на Паскаль с использованием модуля CRT:
Конфликт модулей crt и GraphABC
Два окна uses crt и graphABC
При применении двух модулей crt и graphABC, после компиляции программы, появляются два окна. Можно.
Переход между модулями graphabc и crt
Есть программа для подсчета определенного интеграла, в которой ввод данных осуществляется с помощью.
Как совместить окна CRT и GraphABC?
Здравствуйте. Я пишу плеер. У меня есть проблема с кодом который я написал в Pascal ABC и переношу.

У меня есть тестовое приложение, которое написанно на GraphABC и CRT. Оно скачивает файл из.
Добавлено через 2 минуты
Если всё таки без Crt что-то не работает, то перепишите код без Crt или скиньте код.
Так. Знаю, что надо запускать через Shift+F9, об этом даже сам компилятор пишет.
Ваша программа у меня тоже работает, а вот моя — нет. Точнее она выполняется, и через 5-10 секунд завершается, при этом ни окна GraphABC, ни консоли программа не открывает.
Sleep подходит. Он чем-то отличается от Delay? Я о нём даже и не знал, везде delay используют.
Добавлено через 2 минуты
Если всё таки без Crt что-то не работает, то перепишите код без Crt или скиньте код.

Вот полный код, который у меня компилируется без проблем. Вообще, по-моему мнению, его очень трудно понять, ну если что, могу ответить на вопросы. Некоторые строчки прокомментировал.
Вообще, я делал симулятор вот этого.
Программа требует 2 текстовых файла. Я их прикрепил. Их можно изменять, тоже всё работает.
Вложения
![]() | preset.txt (6.0 Кб, 39 просмотров) |
![]() | Settings.txt (236 байт, 42 просмотров) |
Добавлено через 2 минуты
круто))) а чтобы случайное заполнение было в начале, и задержка по-больше. крутая заставочка получается)))
Добавлено через 8 минут
странно, изменяю пресет и прога останавливается раньше чем должна, а если убираю его, то вовсе все клетки пустые(((
По поводу изменения пресета, там надо аккуратно. Вообще его менять не очень удобно, хочу сделать создание пресетов через GUI, чтобы он рисовал сетку, а ты тыкал на клеточки, где нужно добавить жизнь. И в конце всё это сохранять в txt, который уже будет использовать основная программа.
Ну, это позже.
Добавлено через 24 секунды
А вот версия по твоему запросу.
Тут нужен только файл settings. Он изменён, поэтому прилагаю к сообщению.
Вот тут с настройками аккуратно. В той версии у нас был только один глайдер, и даже если рисовать поле 650 на 300, тормозит не сильно. Тут на первых порах создаётся много живых клеток и пока большинство не умрёт (а большинство всегда умирает), будет некрасиво отрисовываться полинейно.
Я отрегулировал настройки, чтобы это торможение было минимальным, но коэффициент можно ставить и 0.8, например, тогда почти все клетки будут живыми. Поле тоже можно расширять, но именно расширение поля порождает лаги. Моя эмуляция пока слабо оптимизирована, т. к. никогда не запускал больше одного глайдера на поле.
Потом возможно сделаю что-нибудь с этим.
Модуль Crt
Модуль Crt позволяет выводить цветные символы на цветном экране. Хотя по-прежнему отображение будет происходить в текстовом режиме. Текстовый режим означает, что на экране могут выводиться только определенные символы в определенных местах (знакоместах). Можно представить экран, разделенным вертикальными и горизонтальными линиями на ячейки. В эти ячейки можно «вписывать» различные символы. У каждой ячейки есть адрес.
Примечание. В Ubuntu модуль Crt не работает, если программу компилировать не в домашнем каталоге.
Модуль Crt содержит ряд процедур, позволяющих задавать цвет символов и экрана, очищать экран, менять позицию курсора и др.
Стандартный экран в Паскале чаще формируется из 25 строк и 80 столбцов. Строки нумеруются сверху вниз, а столбцы слева на право. Нумерация начинается с единицы (что может показаться непривычным).
Примечание. Если программа запускается в терминале Linux, то количество строк и столбцов определяется соответственно шириной и высотой экрана терминала. В случае попытки вывести символ за границами доступной области, он выводится в верхнем левом углу.
Количество доступных цветов (для экрана и символов) всего 16. Они кодируются числами от 0 до 15. Также вместо чисел можно прописывать названия цветов.
Для того чтобы в программе можно было использовать содержимое модуля Crt, его надо импортировать (подключить) в программу. Делается это в секции, которая начинается со слова uses.
Чтобы очистить экран от всех надписей, требуется выполнить процедуру clrscr. Если перед этим был задан цвет экрана (с помощью textbackground), то экран будет залит соответствующим цветом.
Цвет текста определяется процедурой textcolor, позиция курсора – gotoxy.
Для вывода символов на экран используются стандартные процедуры write и writeln.
Также существует процедура временной задержки delay (аргумент задается в микросекундах), если требуется выводить символы не сразу, а постепенно.
Урок 2. Очистка экрана, проблема с кириллицей и др.
Не всё, что изначально кажется простым,
окажется таковым в конце.
В прошлый раз мы написали программу, которая здоровается с вами, выводя на экран приветственное сообщение «Привет!». Однако переключаясь в окно, где выводятся результаты выполнения программы, мы видели не только сообщение «Привет!», но и целый ряд служебных сообщений, которые Free Pascal выводит во время своего запуска.
Хотелось бы, чтобы наша программа перед выводом каких-либо сообщений очищала экран. Как это сделать? Очень просто: нужно добавить в программу вызов команды (процедуры) ClrScr (сокращение от английского «clear screen» — «очистить экран»).
Если ваша предыдущая программа hello.pas закрыта, то откройте её, нажав клавишу F3 (File | Open). Напоминаю, что все наши программы мы сохраняем в папке «C:\FPC\3.0.0\work».
Чтобы не затереть файл hello.pas нашими модификациями, сохраним открытый файл hello.pas под другим именем. Откройте меню «File» (Alt + F) и нажмите «Save as. ». В поле «Name» напечатайте helloClr.pas ( Clr — сокр. от «clear» — очищать) и нажмите «OK», чтобы сохранить программу под новым именем. После этого модифицируйте текст программы так, чтобы он соответствовал нижеприведенному варианту:
Запустите программу, нажав Ctrl + F9.
Упс! Программа не запускается. Что говорит компилятор? (Напомню, что компилятор — Free Pascal — переводит нашу программу с языка Паскаль в машинные инструкции, понятные компьютеру). Компилятор сообщает, что у нас 3 ошибки. Одна с пометкой Error и две с пометкой Fatal. Но мы, глядя на текст сообщений, уже видим, что ошибка на самом деле ровно одна — Error: Identifier not found «ClrScr» — Ошибка: идентификатор «ClrScr» не найден.
Добавим к нашей программе недостающую строку « uses Crt; »:
Теперь мы можем запустить нашу программу (Ctrl + F9):
Открываем браузер, и в поисковой строке гугла вбиваем «free pascal clrscr не отображает русские буквы»:
Первая же ссылка приводит нас на форум, где мы находим решение:
Чтобы исправить проблему с отображением русских букв (кириллицы), сохраняем нашу программу (F2 — File | Save), закрываем Free Pascal (Alt + X — File | Exit), и щелкаем правой кнопкой мыши на ярлыке запуска Free Pascal, расположенном на нашем Рабочем столе.
Открываем пункт «Свойства» и переходим на закладку «Шрифт».
Возвращаем «Точечные шрифты», размер выставляем «10 x 18». Нажимаем «ОК».
И снова запускаем Free Pascal:
Как видите, вид окна поменялся.
Запускаем нашу программу (Ctrl + F9), нажимаем Alt + F5, чтобы переключиться в окно результатов работы программы, и видим результат:
Экран очищен, на экран выведено сообщение « Привет! ».
Краткое содержание урока
✔ Мы узнали как правильно закрывать Free Pascal (раньше вы, скорее всего, просто нажимали на крестик в правом верхнем углу окна):
✔ Дополнили нашу программу «Привет!» очисткой экрана:
✔ Узнали новое ключевое слово языка Паскаль:
✔ Познакомились с еще одной процедурой:
И вот здесь я хочу остановиться подробнее
При реализации нашей программы у нас возникла проблема с кириллицей, которую мы решили. Казалось бы — вопрос снят: экран очищается, сообщение отображается. Но обратите внимание, что мы отказались от использования шрифта Lucida Console, который смотрится гораздо опрятнее точечного шрифта. Т. е. наше решение (или правильнее, обходное решение) далеко от идеального.
Приведу аналогию. Представьте себе, что вы — работник дорожной службы, которому поручили на такой-то улице нарисовать «зебру» и поставить соответствующие знаки пешеходного перехода. Вы приехали на заданную улицу и обнаружили, что в том месте, где вам надо рисовать «зебру», из-под асфальта бьет фонтан воды, и образовалась лужа. Какие у вас есть варианты действий:
Так вот, второй вариант — это и есть обходное решение (workaround). Оно может иметь серьезные недостатки. Например, школа находится именно там, где и надо было изначально рисовать «зебру», и если вы нарисуете её ниже (выше), то далеко не все школьники дойдут до этой зебры, а значит, на изначальном участке дороги будет повышенная аварийность из-за школьников, перебегающих дорогу в неположенном месте.
А что нужно, чтобы пойти по пути первого варианта? Другие компетенции. Если вы не владеете нужными навыками (и инструментами) — у вас нет экскаватора, чтобы добраться до трубопровода, сварочного аппарата и т. д. — то вам нужно ждать, когда другие люди решат возникшую проблему, прежде чем вы сможете нарисовать «зебру» именно там, где вам надо. В нашем примере это означает, что вы должны написать письмо разработчикам Free Pascal, описать возникшую проблему (некорректное отображение кириллицы после подключения модуля Crt ), и ждать, когда разработчики устранят эту ошибку в модуле Crt. На всё это может уйти неопределенное время. Или разработчикам Free Pascal будет вообще не до этой проблемы, и ваша «лужа» так никуда и не денется.
Другой сценарий: обладая нужными навыками, устранить самому эту проблему в модуле Crt. А для этого нужно знать, что такое дизассемблирование, обратная разработка (reverse engineering) и т. д.
Идеальный вариант — это, конечно, когда лужу устраняют те, кто за нее отвечают. Т. е. разработчики Free Pascal. Но мы живем не в идеальном мире, и поэтому нам иногда приходится использовать обходные решения.
И последнее: когда ваши программы перестанут вмещаться на одну страницу экрана, и будут занимать сотни, а то и больше, страниц, у вас могут тоже возникать подобные ситуации. Когда что-то идет не так и нужно найти причины проблемы, а потом её решение. И вот тут может возникнуть соблазн «передвинуть «зебру» на 50 метров выше или ниже» (использовать обходное решение) вместо того, чтобы разбираться, почему возникла проблема и как её устранить. В случае, когда речь идет о вашей зоне ответственности, такой подход, в целом, недопустим (!). Вы должны всегда понимать, что и почему происходит в вашей программе. Если оказывается, что программа ведет себя не так, как вы это задумывали, надо разбираться, почему она себя так ведет (откуда лужа?), а не цепляться за первое попавшееся решение, которое вроде бы «решает» вашу проблему.
Задания
«illegal character» переводится как «некорректный символ».
Задания повышенной сложности
1) чтобы вывести на экран пустую строку, используйте команду « Writeln; » (без скобок и одинарных кавычек);
2) для отступов используйте по 3 пробела;
Непонятно почему в скобках по 3 кавычки? Смотрите: самая левая и самая правая одинарные кавычки обрамляют тот текст, который мы хотим вывести на экран, например:
Writeln( ‘Кафе Огонёк’ );
А что делать, если нам нужно в сообщении вывести одинарные кавычки? Ведь они задействованы в качестве служебных символов, по которым Free Pascal определяет, где наша строка в программе начинается, а где заканчивается. Вот поэтому Free Pascal говорит: хочешь вывести в своей строке одну одинарную кавычку, поставь их две (!) друг за дружкой, и я буду знать, что это не конец строки, а всего лишь обычная одинарная кавычка, которую ты хочешь напечатать.
Writeln( ‘Кафе »Огонек» открывается сегодня’ );
Команда выше выведет на экран сообщение:
Кафе ‘Огонек’ открывается сегодня
Распечатать все слова четной длины, в которых нет удвоенной буквы Н
уважаемые эксперты
помогите пожалуйста с заданием
27.1. Дана матрица размером 6Х6 элементов, случайным образом заполненная. Сформировать одномерный массив В, где В(j) равно среднему арифметическому значению всех индексов наибольшего и наименьшего элементов в jом столбце.
27.2. Дана произвольная строка символов. Распечатать все слова четной длины, в которых нет удвоенной буквы Н. (н). Если таких слов нет, то выдать сообщение.
помогите буду очень благодарен заранее спаибо

Пожалуйста, помогите написать программу. Вот условие: Дана последовательность символов.
Изменить строку, продублировав слова, из которых можно составить слова-палиндромы четной длины
Добрый вечер всем. На главной странице я увидел эту надпись: Я очень надеюсь на вашу помощь.

Разбить все слова четной длины на два равных по длине слова. Помогите с задачей, пжл)

Здравствуйте,помогите пожалуйста решить Сделать большими все буквы в тех словах,длина которых.










