Uses в паскале что это
Uses в паскале что это
Содержание раздела PASCAL
Раздел объявлений и соглашений
В этом разделе программы компилятору можно дать указания, определяющие режимы его работы при трансляции последующей программы. Эти указания оформляются в тексте программы как комментарии, начинающиеся парой символов “<$” и заканчивающиеся символом “>”. Такие указания могут содержать указания на включение в текст программы фрагментов других программ (из соответствующих файлов), информацию для отладчика или сведения о необходимости использования арифметического сопроцессора.
Оператор USES играет важную роль в подключении к тексту программы системных модулей из библиотек. В этом операторе Вы указываете компилятору, из какой библиотеки использует модули данная программа, чтобы компилятор выбрал соответствующие модули из этой библиотеки и включил их в текст программы. Понятия «библиотека», «модуль», «блок» составляют основу терминологии программирования на Паскале. Библиотека включает набор модулей, каждый из которых замкнут, имеет свое имя, компилируется отдельно и к нашей программе подключается уже как «черный ящик» с известным интерфейсом. Каждый модуль (блок (UNIT), как его называют на Паскале) представляет собой программу, включающую декларации типов и переменных, процедуры и функции.
Оператор USES может быть использован в программе только один раз, при этом у него есть свое четко определенное место, (он предваряет все прочие операторы и разделы). Названия библиотек, подключаемых к программе с помощью оператора USES, должны разделяться запятой.
Например: USES Crt, Graph, String, Overlay;
Следом за строкой, содержащей оператор USES, идут строки объявляющие:
метки (LABEL) (хотя их использование противоречит классической технике программирования на Паскале, дающей превосходную стройность и однозначность понимания кода программы);
определенные пользователем типы данных (TYPE);
В Турбо Паскале жесткое соблюдение именно такого порядка объявлений не требуется. В этом отношении данный диалект весьма «либерален». На практике в большинстве программ часть, заключающая в себе объявления глобальных объектов, непосредственно предшествует основному блоку программы.
В разделе описания меток LABEL содержатся перечисленные через запятую имена меток переходов. Следует помнить, что имена меток переходов не должны дублировать друг друга. Имя метки перехода может представлять собой целое число (от 0 до 9999), строку символов или символьно-цифровую конструкцию.
Например: LABEL, 1, 5, 9999, h2, 4t32e, metka_l;
В разделе CONST содержатся определения констант, используемых в программе.
CONST
Year=1995;
Month=’Июль’;
Day=’Понедельник’;
Примечание: Заметьте, что при присвоении значений константам вместо оператора присвоения “:=” используется просто знак равенства “=”. Тип константы определяется автоматически по виду значения, присваемового константе и не может быть сложным.
Раздел описания типов TYPE позволяет программисту определить новый тип в программе. В данном разделе могут быть использованы ранее определенные в разделе CONST константы.
В разделе описания глобальных переменных VAR содержится список переменных, используемых в программе, и определяется их тип.
Примечание: Разделы LABEL, CONST, TYPE и VAR могут располагаться в произвольном месте программы. При этом каждый из этих разделов может встречаться в программе несколько раз или вообще не встречаться в ней.
Непосредственно за заголовком программы следует основной блок программы, ограниченный операторами BEGIN и END.. Как уже говорилось, оператор END. указывает компилятору, что программа закончена, в отличие от операторов END;, которые завершают блоки, процедуры, модули и т.п.
Текст, следующий за оператором END., игнорируется транслятором.
Примечание: Ступенчатое оформление программы преследует только «эстетические» цели и не влияет на эффективность работы компилятора или программы. Компилятор обрабатывает Паскаль-программы с любым расположением операторов: как разделенные построчно нажатием клавиши [Enter] при подготовке текста программы, так и записанные подряд в одну строку.
Например:
program hello; begin writeln(‘Привет, Ваня!’); writeln;
writeln(‘Я надеюсь, что мы отлично’); writeln (‘
сработаемся!’); end.
Однако «воспитанные» программисты не могут себе позволить оформлять программы подобным образом, ведь таже программа, записанная с табуляцией, читается гараздо легче:
program hello;
<заголовок программы>
begin
<начало сегмента команд программы>
writeln(‘Привет, Ваня!’);
<вывод строки>
writeln;
<перевод позиции курсора на строку ниже>
writeln(‘Я надеюсь, что мы отлично’);
<вывод строки>
writeln(‘сработаемся!’);
<вывод строки>
end.
Pascal-Паскаль
Программирование. Модули Pascal-Паскаль
Программирование. Модули Pascal-Паскаль
Назначение модулей
Стандартный Паскаль не предусматривает механизмов раздельной компиляции частей программы с последующей их сборкой перед выполнением. Вполне понятно стремление разработчиков коммерческих компиляторов Паскаля включать в язык средства, повышающие его модульность.
Модуль Паскаля – это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.
Основным принципом модульного программирования является принцип «разделяй и властвуй». Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам.
Использование модульного программирования позволяет упростить тестирование программы и обнаружение ошибок. Аппаратно-зависимые подзадачи могут быть строго отделены от других подзадач, что улучшает мобильность создаваемых программ.
Термин «модуль» в программировании начал использоваться в связи с внедрением модульных принципов при создании программ. В 70-х годах под модулем понимали какую-либо процедуру или функцию, написанную в соответствии с определенными правилами. Например: «Модуль должен быть простым, замкнутым (независимым), обозримым (от 50 до 100 строк), реализующим только одну функцию задачи, имеющим одну входную и одну выходную точку».
Первым основные свойства программного модуля более-менее четко сформулировал Парнас (Parnas): «Для написания одного модуля должно быть достаточно минимальных знаний о тексте другого». Таким образом, в соответствии с определением, модулем могла быть любая отдельная процедура (функция) как самого нижнего уровня иерархии (уровня реализации), так и самого верхнего уровня, на котором происходят только вызовы других процедур-модулей.
Таким образом, Парнас первым выдвинул концепцию скрытия информации (information hiding) в программировании. Однако существовавшие в языках 70-х годов только такие синтаксические конструкции, как процедура и функция, не могли обеспечить надежного скрытия информации, поскольку подвержены влиянию глобальных переменных, поведение которых в сложных программах бывает трудно предсказуемым.
Решить эту проблему можно было только разработав новую синтаксическую конструкцию, которая не подвержена влиянию глобальных переменных.
Такая конструкция была создана и названа модулем. Изначально предполагалось, что при реализации сложных программных комплексов модуль должен использоваться наравне с процедурами и функциями как конструкция, объединяющая и надежно скрывающая детали реализации определенной подзадачи.
Таким образом, количество модулей в комплексе должно определяться декомпозицией поставленной задачи на независимые подзадачи. В предельном случае модуль может использоваться даже для заключения в него всего лишь одной процедуры, если необходимо, чтобы выполняемое ею локальное действие было гарантировано независимым от влияния других частей программы при любых изменениях.
По своей организации и характеру использования в программе модули Паскаля близки к модулям-пакетам (PACKAGE) языка программирования Ада. В них так же, как и в пакетах Ады, явным образом выделяется некоторая «видимая» интерфейсная часть, в которой сконцентрированы описания глобальных типов, констант, переменных, а также приводятся заголовки процедур и функций. Появление объектов в интерфейсной части делает их доступными для других модулей и основной программы. Тела процедур и функций располагаются в исполняемой части модуля, которая может быть скрыта от пользователя.
Значение модулей для технологии разработки программного проекта может быть продемонстрировано диаграммой на рис. 2.
Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важная особенность модулей заключается в том, что компилятор размещает их программный код в отдельном сегменте памяти. Длина сегмента не может превышать 64 Кбайт, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что позволяет создавать большие программы.
Структура модулей Паскаля
Всякий модуль Паскаля имеет следующую структуру:
Здесь UNIT – зарезервированное слово (единица); начинает заголовок модуля;
Таким образом, модуль Паскаля состоит из заголовка и трех составных частей, любая из которых может быть пустой.
Заголовок модуля Паскаля и связь модулей друг с другом
Заголовок модуля Паскаля состоит из зарезервированного слова unit и следующего за ним имени модуля. Для правильной работы среды Турбо Паскаля и возможности подключения средств, облегчающих разработку больших программ, имя модуля Паскаля должно совпадать с именем дискового файла, в который помещается исходный текст модуля. Если, например, имеем заголовок модуля Паскаля
Имя модуля Паскаля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением:
Здесь USES – зарезервированное слово (использует);
— список модулей, с которыми устанавливается связь; элементы списка – имена модулей через запятую.
Интерфейсная часть
Пример фрагмента программы
Если теперь в основной программе написать предложение
Отметим, что объявление подпрограмм в интерфейсной части автоматически сопровождается их компиляцией с использованием дальней модели памяти. Таким образом, обеспечивается доступ к подпрограммам из основной программы и других модулей Паскаля.
Следует учесть, что все константы и переменные, объявленные в интерфейсной части модуля Паскаля, равно как и глобальные константы и переменные основной программы, помещаются компилятором Турбо Паскаля в общий сегмент данных (максимальная длина сегмента 65536 байт).
Исполняемая часть модуля Паскаля
Исполняемая часть модуля Паскаля начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки, а также метки.
Описанию подпрограммы, объявленной в интерфейсной части модуля Паскаля, в исполняемой части должен предшествовать заголовок, в котором можно опустить список формальных параметров и тип результата для функции, так как они уже описаны в интерфейсной части. Но если заголовок подпрограммы приводится в полном виде, т.е. со списком параметров и объявлением типа результата для функции, то он должен полностью совпадать с заголовком подпрограммы в интерфейсной части, например:
Пример модуля Паскаля
Инициирующая часть модуля Паскаля
Инициирующая часть завершает модуль Паскаля. Она может отсутствовать вместе с начинающим ее словом BEGIN или быть пустой – тогда вслед за BEGIN сразу следует признак конца модуля.
В инициирующей части размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в инициирующей части могут инициироваться переменные, открываться файлы, устанавливаться связи с другими компьютерами и т.п.:
Пример модуля Паскаля
Не рекомендуется делать инициирующую часть пустой, лучше ее опустить.
Компиляция модулей Паскаля
При компиляции модуля или основной программы в режиме COMPILE все, упоминаемые в предложении USES модули, должны быть предварительно откомпилированы, и результаты компиляции должны быть помещены в одноименные файлы с расширением TPU (от англ. Turbo Pascal Unit). Файл с расширением TPU создается автоматически при компиляции модуля Паскаля.
Пример ошибок модуля Паскаля
Это ограничение можно обойти, если «спрятать» предложение USES в исполняемые части зависимых модулей:
Пример исправленных ошибок модуля Паскаля
Дело в том, что Турбо Паскаль разрешает ссылки на частично откомпилированные модули, что приблизительно соответствует опережающему описанию подпрограммы. Если интерфейсные части независимы (это обязательное условие!), Турбо Паскаль сможет идентифицировать все глобальные объекты в каждом модуле, после чего откомпилирует тела модулей обычным способом.
Доступ к объявленным в модуле Паскаля объектам
Пусть, например, мы создаем модуль Паскаля, реализующий сложение и вычитание комплексных чисел с помощью процедур:
Пример модуля реализующий сложение и вычитание комплексных чисел
В следующей программе осуществляются арифметические операции над комплексными числами:
Арифметические операции над комплексными числами
Этот оператор выведет на экран содержимое «закрытой» типизированной константы, объявленной в модуле Паскаля из предыдущего примера.
Стандартные модули Паскаля
Пример стандартного модуля Паскаля
Модуль Паскаля CRT. В нем сосредоточены процедуры и функции, обеспечивающие управление текстовым режимом работы экрана. С его помощью можно перемещать курсор в любую точку экрана, менять цвет выводимых символов и фона, создавать окна. Кроме того, в данный модуль включены также процедуры «слепого» чтения клавиатуры и управления звуком.
Модули Паскаля TURBO 3 и GRAPH 3 введены для обеспечения совместимости с ранней версией системы Турбо Паскаль.
Uses в паскале что это
В состав Free Pascal входит целый ряд стандартных модулей, перечислим некоторые из них:
· math – модуль содержит много дополнительных математических, тригонометрических и статистических функций;
· wincrt – модуль для поддержки терминал подобного текстового окна в экране. При этом не нужно писать специальный код для поддержки окон.
Для полного описания экранной позиции кроме символа следует задать еще и атрибут, содержащий информацию о цвете символа и фона на экране. Символ и атрибут занимают в памяти по 1 байту. В модуле CRT определена переменная
Структура байта-атрибута показана на рис. Л.1.
Рис. Л.1. Структура байта-атрибута консоли
Рассмотрим некоторые функции и процедуры модуля CRT :
Все экранные координаты, кроме координат самого окна, являются зависимыми относительно текущего окна. Например, GotoXY (1, 1) всегда будет устанавливать курсор в верхний левый угол текущего окна.
11. FUNCTION WhereX : Byte и
Программа, очищающая экран и печатающая слово ПРИВЕТ! в заданном месте экрана.
Пример программы, которая рисует улитку Паскаля в текстовом режиме при помощи символа *.
TextBackground(Black); // цвет фона черный
X := succ ( Random (80)); // начальная координата окна меньше пределов
Window(X, Y, X + Random(15)+1, Y + Random(10)+1);
TextBackground(Random(16)); // цвет фона окна
Уроки Паскаль
В этом уроке мы напишем самую простую программу, состоящую всего из пяти строк. Эта программа будет выводить сообщение на экран. Для написания программы нам необходимо знать как работают операторы Write, Readln, а также понять для чего нужны зарезервированные в Паскаль слова Program, Begin, End.
В строке №1 записывается заголовок программы. Все программы, написанные на языке Pascal, начинаются со служебного слова program. Слово program зарезервировано в Pascal, т.е. оно может использоваться только для объявления имени программы. Далее, через пробел записывается название программы, которое мы придумываем сами. Для примера назовем нашу первую программу «number1». В конце первой строки ставится точка с запятой.
Строка №2. Тело программы начинается с зарезервированного в Pascal слова begin. После него не ставится точка с запятой. Заканчивается программа зарезервированным словом end. (строка №5). После слова end ставится точка. Конструкция begin…end является разделом операторов. Внутри этого раздела находятся операторы, которые будут выполняться программой. В любой программе должны присутствовать слова begin…end.
В строке №3 записывается первый оператор, который будет выполнять программа. Оператор Write служит для вывода на экран какого-либо сообщения. Текст этого сообщения записывается после слова Write, заключается в круглые скобки и в апострофы. В конце обязательна точка с запятой (все операторы в программе должны отделяться друг от друга точкой с запятой). Таким образом, в результате работы оператора Write на экран будет выведено сообщение «Привет.»
В строке №4 записывается оператор readln. Этот оператор служит для задержки экрана, чтобы мы могли увидеть результаты выполнения программы на экране. Если его не использовать, то после того как программа будет выполнена экран сразу свернется и мы не успеем увидеть выводимое на экран сообщение. Кстати, оператор Readln можно не использовать. А для того чтобы увидеть результаты выполнения программы можно нажать Alt+F5. После оператора Readln у нас не стоит точка с запятой т. к. далее идет оператор end. (перед End. точка с запятой не обязательна). Теперь наберем нашу программу в Паскале.
Сохраним, нажав F2 (или в командной строке File-Save) и запустим ее, нажав Ctrl+F9 (либо в панели команд Run-Run).
Получим следующий результат.
Самая нижняя строка и есть наш результат.
Теперь нажмем Enter (для завершения выполнения программы) и еще раз запустим программу.
Получим следующий результат.
Этим примером я хочу показать Вам, что каждый раз при запуске программы старые результаты программы тоже будут выводиться на экран. Для того чтобы этого избежать, используется оператор очистки экрана clrscr (сокращенно от англ. Clear Screen (очистить экран)), который ставится вначале программы после слова begin. Для того чтобы этот оператор работал необходимо подключить модуль CRT с помощью команды USES.
Программа будет выглядеть так:
Заметьте, что после Uses Crt и после Clrscr ставится точка с запятой.
После запуска (ctrl+F9) окно вывода сообщения будет иметь вид:
Дополнение к материалу.
1. Программа, запущенная в Free Pascal обрабатывается какое-то количество времени. Поэтому после запуска необходимо подождать несколько секунд. Вы увидите сообщение о том, что выполняется программа, а через несколько секунд (1-20) увидите результат выполнения программы.
2. При запуске программ, которые должны выводить на экран текст на русском языке может возникнуть проблема с кодировкой. В консольном окне вы увидите непонятные символы. Для того чтобы этого избежать небходимо кликнуть правой кнопкой мыши по верхней части консольного окна (там, где написано C:\FPC\2.2.2\bin\i386-win32\fp.exe), выбрать «Свойства» и перейти на вкладку «Шрифт». Здесь выбираем «точечные шрифты» и нажимаем Ok.
3. Компилятору Pascal абсолютно безразлично какими буквами Вы будете набирать программу, заглавными или строчными, т.е. регистр при наборе программ роли не играет.
4. Имя программы (в нашем случае «number1») не играет какой-либо роли в программе, поэтому не обязательно объявлять имя программы с помощью слова «Program». Таким образом, первую строку программы можно не писать и это никак не повлияет на работу программы.
Комментарии
Zhenko! Боюсь тут тебе не помогут никак. Большая часть народа либо просто хвастается либо умеет но делать такие простейшие программы как a:=1+1; Обратись лучше на какой нибудь форум, а лучше изучи сам.
Вот один не плохой форум: http://www.cyberforum.ru/
Желаю удачки тебе! Творческих успехов
Вот программа, которая меняет системную дату и время. никак не могу сделать так, чтобы ClrScr заработала. помогите кто в этом шарит.
uses Crt;
Uses Dos;
CONST
days:ARRAY [0..6] of string [11] = (‘Voskr.’, ‘Ponedel.’, ‘Vtornik’, ‘Sreda’, ‘4etverg’, ‘Pyatnica’, ‘Subbota’);
VAR
year, month, day, day_of_week : WORD;
VAR hour, minute, second, hund : WORD;
подскажите, переписал все один в один как тут написано, все точки с запятой и все такое. но при запуске программы выскакивает такое сообщение
Error: Identifier not found «readIn»
гуглил не помогло, не смог найти причины.
var
p7, p4, p1, p8, p5, p2, p9, p6, p3, st1, st2, st3, vod1, vod2, ind,ind2,pam, shet, shet1: integer;hod, ris1, ris2, ris3, ris4, ris5, ris6, ris7, ris8, ris9: string;
end;
end;
if p1 = 1 then ris1 := ‘ () ‘;
if p2 = 1 then ris2 := ‘ () ‘;
if p3 = 1 then ris3 := ‘ () ‘;
if p4 = 1 then ris4 := ‘ () ‘;
if p5 = 1 then ris5 := ‘ () ‘;
if p6 = 1 then ris6 := ‘ () ‘;
if p7 = 1 then ris7 := ‘ () ‘;
if p8 = 1 then ris8 := ‘ () ‘;
if p9 = 1 then ris9 := ‘ () ‘;
if p1 = 2 then ris1 := ‘ (00) ‘;
if p2 = 2 then ris2 := ‘ (00) ‘;
if p3 = 2 then ris3 := ‘ (00) ‘;
if p4 = 2 then ris4 := ‘ (00) ‘;
if p5 = 2 then ris5 := ‘ (00) ‘;
if p6 = 2 then ris6 := ‘ (00) ‘;
if p1 = 4 then ris1 := ‘(0000)’;
if p2 = 4 then ris2 := ‘(0000)’;
if p3 = 4 then ris3 := ‘(0000)’;
if p1 = 0 then ris1 := ‘__|__ ‘;
if p2 = 0 then ris2 := ‘__|__ ‘;
if p3 = 0 then ris3 := ‘__|__ ‘;
if p4 = 0 then ris4 := ‘ | ‘;
if p5 = 0 then ris5 := ‘ | ‘;
if p6 = 0 then ris6 := ‘ | ‘;
if p7 = 0 then ris7 := ‘ | ‘;
if p8 = 0 then ris8 := ‘ | ‘;
if p9 = 0 then ris9 := ‘ | ‘;
writeln(ris7, ris8, ris9);
writeln(ris4, ris5, ris6);
writeln(ris1, ris2, ris3);
writeln(»);
st3 := p9 + p6 + p3;
if st3 = 7 then
begin
writeln(‘ВЫ ПОБЕДИТЕЛЬ. ‘) ;
shet1 := shet mod 10;
case shet1 of
1:hod:=’ ход.’;
2, 3, 4: hod:=’ хода.’;
5, 6, 7, 8, 9: hod:=’ ходов.’;
end;
writeln(‘Было сделано ‘, shet,hod);
shet1 := pam mod 10;
case shet1 of
1:hod:=’ ход.’;
2, 3, 4: hod:=’ хода.’;
end;
if pam>0 then
begin
if pamshet then writeln(‘В этот раз было лучше.До этого было ‘,pam,hod);
if pam=shet then writeln(‘Число ходов не отличается от того что было.’);
end;
pam:=shet;
ind := 2;
writeln(‘Хотите сыграть еще раз?’);
writeln(‘Да-1’) ;
writeln(‘Нет-2’ );
readln(ind2);
end;
end;
end;
end.