Исполняемые файлы

Исполняемый файл[1] (англ.executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).

Обычно в исполняемом файле данные (информация) хранятся в каком-либо формате (например, ELF; см. список) и состоят из нескольких частей:

Исполнитель инструкций — это некий аппаратно-программный или программный комплекс, способный исполнить инструкции (код). Примеры исполнителей[2]:

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

Обычно, инструкции предназначены для ограниченного набора исполнителей, например, только для процессоров архитектуры x86-64, или только для виртуальной машины Java. Кроме того, исполняемые файлы зачастую содержат вызовы библиотечных функций, в частности, вызовыфункцийОС. Таким образом, исполняемым файлам может быть свойственна зависимость не только от архитектуры, но и от версий:

Кроме заголовков и инструкций (кода), исполняемые файлы могут содержать:

Для уменьшения размера исполняемые файлы или их части могут сжиматься (см. упаковка исполняемых файлов).

Что такое исполняемый файл?

-*.html

-*.doc

-*.bat

-*.mbd

+*.zip

 

Какой из перечисленных форматов не относится к форматам сох­ранения графической информации?

-JPG

-GIF

-TIFF

+XLS

-BMP

 

Графический формат, позволяющий при сохранении фотографий получить наименьший объем –

-BMP

-TIFF

+JPG

-PCX

 

Исполняемый файл, содержащий программу в виде исполнимого кода, и созданный для операционной системы Windows, имеет рас­ширение

-*.TXT

-*.DAT

-*.XLS

+*.EXE

 

Из предложенного списка графическими форматами являются: А) TIFF; Б) BMP; В) JPG; Г) TXT; Д) MPI.

-А, Г, Д

+А, Б, В

-А, Б, Г

-Б, В, Д

 

Служебная программа OC Windows «Очистка диска» служит для

-удаления редко используемых программ

+удаления временных файлов Интернета, установленных компонентов и программ, которые больше не используются, и очистки корзины

-только для очистки корзины

-проверки и очистки поверхности жесткого диска

 

Форматированием диска называется процесс

-выявления на нем устаревших файлов

-разбиения его на логические диски

+разбиения его поверхности на сектора и дорожки

-определения его объема

 

Какая из служебных программ позволяет объединить отдельные фрагменты файлов в цельные куски, благодаря чему дисковод быстрее передает в систему считанную информацию и производи­тельность ПК возрастает?

-Программа сжатия данных на дисках

-Программа очистки диска

+Программа дефрагментации диска

-Планировщик заданий

-Программа проверки диска

 

Какая из служебных программ проверяет структуру данных, каталогов, таблиц размещения файлов в любом из системных дисков?

-Программа дефрагментации диска

+Программа проверки диска

-Программа сжатия данных на дисках

-Программа очистки диска

-Планировщик заданий

 

Программа ОС WINDOWS «Дефрагментация диска» – это

+системная служебная программа, выполняющая анализ локальных томов с последующим поиском фрагментированных файлов и папок

-системная служебная программа, выполняющая анализ локальных томов с последующим поиском и объединением фрагментированных файлов и папок

-системная служебная программа, выполняющая только анализ локаль­ных томов на предмет наличия фрагментированных файлов и папок

-системная служебная программа, выполняющая анализ жестких дис­ков с последующим поиском и объединением фрагментированных файлов и папок

 

Служебная программа OC Windows «Проверка диска» выявляет

+логические ошибки в файловой структуре и физические ошибки, связанные с дефектами жесткого диска

-устаревшие файлы и дефекты жесткого диска

-неиспользуемые файлы в файловой системе диска

-типичные ошибки в файловой структуре и наличие неиспользуемых программ

 

Архиваторами называют программы, которые

+осуществляют упаковку и распаковку файлов

-переводят исходный текст программы на язык машинных команд

-проверяют в тексте синтаксические ошибки

-выполняют шифрование команды

 

Возможна ли дефрагментация тома независимо от необходимости выполнения данной операции?

-Безусловно, нет

+Безусловно, да

-Да, если дефрагментация не выполнялась более 1 года

-Да, если дефрагментация не выполнялась более полугода

 

Средства оптимизации диска: А) дефрагментация (или сборкфай­ла; Б) рациональное расположение программ на поверхности диска в зависимости от степени их использования; В) освобождение диска от ненужных пользователю программ; Г) проверка структуры данных, каталогов, таблиц размещения файлов на любом из системных дис­ков; Д) сжатие данных на диске для увеличения его вместимости.

-А, В, Д

-только Б

-Б, В, Д

-Б, Г

+А, Б, В

 

На экране запущена программа «Проверка диска».

По нажатию на кнопку «Запуск» будут выполнены действия

-поиск физических дефектов на диске С:

-восстановление поврежденных секторов на диске D:

+проверка логической структуры диска D: и поиск физических дефектов на выбранном диске

-проверка логической структуры файлов и папок диска D:

 

Допускается ли в технологии сжатия данных (упаковки) алгоритмы сжатия с информационными потерями?

+Да

-Нет

 

Какие две программы из перечисленных относятся к программам-упаковщикам?

+ZIP

-NDD

+RAR

-FAR

-URL

 

⇐ Предыдущая3456789101112Следующая ⇒



Список расширений исполняемых файлов

Здесь — ответ на аналогичный вопрос, который советует не использовать по причинам, не связанным с рассматриваемой точкой.

Тем не менее, ваше предположение о том, что может видеть только исполняемые файлы, неверно.

Однако он не видит функции и псевдонимы по умолчанию.

Вот почему в manpage говорится:

Рекомендуемый способ использования этой утилиты заключается в добавлении функции псевдонима (C shell) или оболочки (Bourne        shell), для которых, как показано ниже:

Если вы определяете эту функцию в своем и повторно используете ее, вы должны иметь возможность делать

и он также должен давать вам функции и псевдонимы.

Однако обратите внимание: если какой-то профиль или bashrc уже определил что-то для , это имеет приоритет (вы можете найти это с помощью btw).

Если я определяю script, функцию и псевдоним, называемый , я получаю с :

Пока после создания функции дает мне:

ответ дан nlu 07 марта '18 в 19:17

источникподелиться

Файлы формата EXE открываются специальными программами.

Исполняемый файл

Существует 2 типа форматов EXE, каждый из которых открывается разными программами. Чтобы открыть нужный тип формата, изучите описания файлов и скачайте одну из предложенных программ.

EXE – это расширение для программ в ОС DOS и Windows. Формат Exe относится к группе исполняемых файлов, которые содержат все данные для установки приложения. Чтобы компактно распространить установочный файл используются алгоритмы сжатия.

Содержимое файла

Объект с расширением EXE встречается в ОС Windows. Программа exe содержит сценарии и скомпилированный программный код, запускающий установку приложений. Содержимое объекта EXE включает:

  • Программные ресурсы — графика и другие медиа-элементы, а также сжатые пакеты (.package) классов программного кода;
  • Формы объектов (битмапы, листы, иконки приложений);
  • Информация для загрузчика файла;
  • Модуль запуска инсталляции.

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

После распаковки исполняемого файла в операционной системе начинается инициализация всех программных классов и установка приложения.

Программы для открытия EXE

В Windows Exe объект открыть можно с помощью стандартного установщика или утилиты 7Zip. Для запуска файла достаточно дважды кликнуть по нему мышкой или запустить объект через меню архиватора. Для запуска в MacOS следует установить эмулятор ОС Windows и в нем открыть файл Exe.

EXE может быть не только модулем установки программы, но и самораспаковывающимся архивом. Запуск Exe файлов позволяет его содержимому распаковаться в указанную пользователем или самим архивом папку.

Чтобы посмотреть содержимое файла EXE без его запуска, следует воспользоваться инструментами для разработчика, а именно программным пакетом Visual Studio. С его помощью можно редактировать программные ресурсы, изменять интерфейс и функции программного модуля. Внесение изменений возможно только для приложений с отрытым исходным кодом (в которых не используется шифрование).

Тип файла:
PortableApps.com Application
Разработчик:
Rare Ideas
Категория:
Исполняемые файлы

Компьютерная программа, запускающая портативное устройство, такое как USB флэш-накопитель, iPod или портативный жесткий диск.

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

Портативные приложения применяют дополнительное расширение файлов .PAF.EXE.

MIME-тип:  application/octet-stream

Скачать программу для формата EXE

Выполняемый программный файл, создаваемый для операционных систем Windows или DOS. Запускается при открытии и выполняется при двойном нажатии. Может также быть самоизвлекаемым архивом, извлекающим файлы в определенное место расположения.

Файлы Setup.exe и Install.exe являются стандартными установочными файлами, входящими в состав программы Windows и DOS.

Двойное нажатие на эти файлы должно запускать процесс инсталляции.

Примечание: файлы EXE не запускаются в Mac OS X, но должны открываться при помощи программы эмуляции, например, Parallels Desktop для основанных на Intel компьютеров Mac. Darwine и Crossover также могут открывать некоторые программы Windows.

MIME-тип:  application/octet-stream

Скачать программу для формата EXE

Шаг 26.
Ассемблирование и компоновка программы. Получение COM-файлов

    На этом шаге мы рассмотрим порядок получения исполняемых файлов.

    Рассмотрим основные этапы перевода программы из ASCII-кода в машинный код. Текст программы на Ассемблере набирается в любом текстовом редакторе и сохраняется в файле с расширением ASM. Перевод этого файла в EXE-программу происходит в два этапа:

  • перевод текста программы в машинные коды (ассемблирование);
  • сборка готовой программы из отдельных частей и установка адресов ссылок (компоновка, линковка).

    Для ассемблирования используется программа MASM.EXE. При выполнении этой программы запрашиваются имена четырех файлов:

  1. SOURCE FILENAME — имя исходного файла.
  2. OBJECT FILENAME — имя OBJ-файла. В результате работы этой программы получается файл с расширением OBJ;
  3. SOURCE LISTING — имя файла, содержащего листинг трансляции. В этом файле находится, наряду с исходным текстом программы, его машинное представление;
  4. CROSS-REFERENCE — имя файла, содержащего ссылки команд на различные поля данных. Этот файл полезен при написании больших программ.

    Если в результате ассемблирования не обнаружено ошибок, то можно переходить к компоновке объектного модуля. Для ее проведения используется программа LINK.EXE. Она запрашивает имена четырех файлов:

  1. OBJECT MODULES — список OBJ-файлов, из которых компонуется окончательная программа;
  2. RUN FILE — имя исполняемого файла;
  3. LIST FILE — имя файла, где будут находиться таблица имен и размеров сегментов и ошибки, обнаруженные LINK;
  4. LIBRARIES — имена подключаемых библиотек.

    Если процесс линковки произошел без ошибок, то получится файл с расширением EXE.

    EXE-файл получается и тогда, когда планировалось получить COM-файл. Если программа создается как COM-файл, то компоновщиком будет выдано сообщение:

Warning: No STACK Segment.

    Это сообщение можно игнорировать, так как определение стека в программе не предполагалось. Для преобразования EXE-файла в COM-файл используется программа EXE2BIN, общий вид использования которой следующий:

EXE2BIN <EXE-файл> <COM-файл> .

    Таким образом, на диске будут находиться два файла с одинаковыми именами, но различными расширениями.

    В качестве примера получим COM-файл из приведенной на предыдущем шаге программы.

  1. Получим OBJ-файл. Для этого сформируем следующую командную строку:

        В результате на диске получим файл PR25_1.OBJ.

       

  2. Получим EXE-файл. Для этого сформируем следующую командную строку:

        В результате на диске получим файл PR25_1.EXE. Однако, помимо EXE-файла на экран будет выведено сообщение:

    Warning: No STACK Segment.

    Поэтому нужно перевести полученный EXE-файл в соответствующий COM-файл (понятно, что следующий пункт не выполняется для создаваемых EXE-файлов).

       

  3. Получим COM-файл. Для этого сформируем следующую командную строку:
    EXE2BIN.EXE PR25_1.EXE PR25_1.COM .

    Что такое исполняемые файлы и какими они бывают?

    В результате на диске получим файл PR25_1.COM, который можно выполнить. На экране появится число 8.


    Замечание. В некоторых случаях при выполнении последнего шага программа EXE2BIN генерирует следующее сообщение: Incorrect DOS version. В этом случае нужно обновить таблицу версий, воспользовавшись служебной программой SETVER.EXE, входящей в операционную систему Windows.

    Формат использования этой программы следующий (приводится содержимое командной строки):

SETVER.EXE EXE2BIN.EXE 6.22

    Здесь 6.22 — номер версии DOS.

    Отметим также, что в последних версиях операционной системы Windows в папке Windows/System32 находится программа EXE2BIN.EXE. В этом случае можно воспользоваться ею и не обновлять таблицу версий.


    В программе из предыдущего шага на экран выводится число, состоящее из одной цифры. А как вывести на экран многозначное число? Ответ на этот вопрос мы дадим после рассмотрения других способов передачи управления (шаг 40: «Процедуры ввода и вывода многозначных чисел»).

    На следующем шаге мы начнем рассматривать команды условного перехода.

Предыдущий шагСодержаниеСледующий шаг

HomeLisp (по крайней мере в предлагаемой версии) не способен компилировать Лисп-код в команды микропроцессора. Поэтому для создания автономных исполняемых файлов применяется технология, которую можно условно назвать псевдо-EXE.

Суть этой технологии состоит в следующем.

В поставку HomeLisp входит исполняемый файл-заглушка, в составе которого содержится ядро HomeLisp. Объем этого файла составляет около двухсот килобайт. При создании EXE-файла сначала делается копия файла-заглушки с именем, которое задает разработчик. Все дальнейшие манипуляции выполняются с созданной копией, которую далее будем называть целевым файлом.

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

Форматы исполняемых файлов

При создании EXE-файла, все выбранные разработчиком функции приписываются в «хвост» целевого файла. Кроме этих функций, в «хвост» целевого файла записывается т.н. стартовое S-выражение, а также задаваемые пользователем настройки среды HomeLisp (размеры внутренних стеков, количество динамических объектов и т.д.)

При запуске целевого файла управление получает сначала программа инициализации ядра HomeLisp, которая затем считывает из файла все сохраненные пользователем функции и загружает их в среду Лиспа.

После этого управление получает блок стартового S-выражения, и предусмотренная разработчиком программа начинает исполняться.

Рассмотрим процесс создания EXE-файла на простом практическом примере: создадим диалоговую программу, которая будет вычислять наибольший общий делитель двух целых чисел с помощью алгоритма Евклида. Пример этот не так уж бесполезен: поскольку HomeLisp работает с целыми неограниченной разрядности, написание аналогичного примера в любой расхожей среде программирования (VB,C++,Delphi) потребовала бы заметных усилий…

Функция *GCD имеет следующий вид:

(defun *gcd (x y) (cond ((eq x y) x) ((greaterp y x) (*gcd y x)) ((eq (remainder x y) 0) y) (T (*gcd y (remainder x y))))) ==> *gcd (*gcd 655 72) ==> 1 (*gcd 655 75) ==> 5 (*gcd 65536 4096) ==> 4096

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

Запрос (посредством функции ASK) первого операнда;

Запрос второго операнда;

Вычисление результата;

Отображение результата с помощью функции SAY;

Напишем определяющее выражение для функции GCD-1, в котором будет реализован приведенный выше алгоритм:

(defun GCD-1 nil (prog (a1 a2) (setq a1 (str2fix (Ask «Введите первый операнд»))) (setq a2 (str2fix (Ask «Введите второй операнд»))) (TRY (say (fix2str (*gcd a1 a2))) EXCEPT (say «Ошибка!») ) ) )

Следует обратить внимание на то, что результат вызова ASK имеет тип STRING, а функция *GCD требует операндов типа FIXED. Поэтому, прежде, чем присваивать введенные пользователем значения локальным переменным, a1 и a2, эти значения следует преобразовать в тип FIXED (для чего служат вызовы функции STR2FIX).

Далее, поскольку готовится диалоговая программа, предназначенная для конечного пользователя, следует предусмотреть возможные ошибки. Именно поэтому вычисление наибольшего общего делителя сделано критическим участком кода с помощью вызова функции TRY Если в процессе вычисления произойдет сбой, программа не «упадет», а будет выдано сообщение «Ошибка!».

Если выполнить функцию GCD-1 из среды разработки, то сначала будет выведено окно запроса первого операнда:

Пользователь вводит первый операнд и нажимает кнопку OK; появляется окно запроса второго операнда:

Пользователь вводит второй операнд, нажимает кнопку OK и получает результат:

Теперь построим на основе отлаженной функции GCD-1 исполняемый файл. Для этого, находясь в среде разработки выберем пункт главного меню EXE-файл или нажмем кнопку на панели инструментов со следующей иконкой:

В обоих случаях будет открыто окно построения EXE-файла:

Чтобы создать EXE-файл, необходимо выполнить следующие действия:

Задать имя EXE-файла. Имя (и путь) будущего EXE-файла задаются в комбинированном поле ввода в левом верхнем углу формы создания EXE-файла. Имя и путь можно задать вручную, а можно нажать кнопку «…» и выбрать директорию и имя с помощью стандартного диалога Сохранить как. По умолчанию создается файл noname.exe в текущей директории.

В области ввода «Стартовое S-выражение» необходимо задать код, с которого начнется выполнение будущего приложения. Стартовое S-выражение может быть вызовом функции. Если требуется задать стартовое S-выражение, состоящее из нескольких вызовов, то эти вызовы следует «заключить» в PROG-конструкцию.

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

В списке, озаглавленном «Функции, константы, переменные», сбросить флажки, стоящие против объектов, наличие которых для выполнения приложения не является необходимым. Это мероприятие несколько повысит скорость выполнения приложения;

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

Сбросить флажок «Отображать диспетчерскую форму при старте».

Если этот флажок оставить поднятым, то при запуске приложения будет отображаться специальная диспетчерская форма. Этой форме можно задать заголовок (в соответствующем поле ввода). Использование диспетчерской формы удобно при отладке.

Установить или сбросить флажок «Сообщать о завершении». Если этот флажок установлен, то перед завершением приложения будет выдано сообщение.

Окно создания EXE-файла с минимально-необходимым набором параметров может иметь вид:

Далее необходимо нажать кнопку с изображением зеленой галочки. Если заказанный EXE-файл уже существует, HomeLisp предолжит подтвердить перезапись файла или задать новое имя. После чего, при успешном завершении, выдается сообщение:

Можно убедиться, что в текущей директории пявился EXE-файл gcd-1.exe, при запуске которого происходит описанный выше диалог с пользователем.

Если же при создании EXE-файла поднять флажок «Отображать диспетчерскую форму при старте» и задать заголовок формы:

то при исполнении полученного EXE-файла, в правом верхнем углу экрана отображается диспетчерская форма следующего вида:

При выборе пункта меню «Пуск» (или нажатии соответствующей кнопки, расположенной ниже), начинает выполняться приложение. После завершения приложения, диспетчерская форма остается на экране, что позволяет запускать приложение многократно. Для окончательного завершения приложения нужно выбрать пункт меню «Выход» (или нажать кнопку, расположенную ниже).

Если в процессе выполнения приложения с диспетчерской формой возникает ошибка, то информация об ошибке выводится в область вывода, которая в нормальном состоянии скрыта. Например, если сделать стартовым S-выражением вызов несуществующей функции (unknown) , то при выполнении возникнет картинка, приведенная ниже:

Использование диспетчерской формы позволяет принудительно остановить выполнение приложения. Для этого служит пункт меню «Стоп» и кнопка, расположенная ниже (и пункт меню, и кнопка активны только в процессе выполнения приложения). Если в качестве стартового выражения задать, например, вычисление факториала достаточно большого числа, то можно успеть увидеть пункт меню и кнопку останова:

Если в процессе выполнения нажать «Стоп», то выполнение программы прерывается:

Пункт главного меню «Окна» диспетчерской формы (и соответствующая командная кнопка) будут активны в случае, когда в процессе выполнения приложения создано хотя бы одно графическое окно.

При выборе пункта «Окна» (или нажатии на кнопку, расположенную ниже), вызывается менеджер графических окон.

Режим построения EXE-файлов с диспетчерской формой предназначен для облегчения отладки приложений. Если не использовать диспетчерскую форму, то управлять графическими окнами должен будет сам разработчик, а в случае «зависания» приложения для его снятия придется использовать диспетчер задач ОС.

При необходимости изменить значение какого-либо настроечного параметра (размер стека, число лексем и т.д.) необходимо щелкнуть мышью по нужно строке списка «Параметры». Числовое значение соответствующего параметра будет перенесено в область ввода, расположенную под списком:

Далее следует исправить значение параметра и нажать кнопку с изображением стрелки, направленной вверх. Значение параметра будет исправлено:

В качестве второго примера создания EXE-файла, рассмотрим прежнюю задачу (вычисление НОД), но с оконным графическим интерфесом. Для этого создадим диалог (как описано здесь), на форме которого разместим три метки, три поля ввода и две кнопки. Назначим одной из кнопок процедуру-обработчик, в котором вычислим НОД чисел, введенных в первое и второе поля ввода и занесение вычисленного НОД в поле результата. Обработчик нажатия второй кнопки будет закрывать и уничтожать диалог. Форма диалога с элементами управления может иметь вид, приведенный ниже:

Программный код, сгенерированный дизайнером, может иметь такой вид:

(prog nil (dlgCreate ‘_Dlg_ 419 233 «Наибольший общий делитель:») (dlgAddControl ‘_Dlg_ ‘_LBL_1 _LABEL 14 15 100 21 ‘(«Tahoma» 14,25 1 0 0) «Первое:» 0 &H80000012 &H8000000F) (dlgAddControl ‘_Dlg_ ‘_TXT_1 _TEXT 155 13 248 31 ‘(«Tahoma» 14 1 0 0) «» 0 &H80000008 &H80000005) (dlgAddControl ‘_Dlg_ ‘_LBL_2 _LABEL 12 59 133 26 ‘(«Tahoma» 14,25 1 0 0) «Второе:» 0 &H80000012 &H8000000F) (dlgAddControl ‘_Dlg_ ‘_TXT_2 _TEXT 156 56 247 31 ‘(«Tahoma» 14 1 0 0) «» 0 &H80000008 &H80000005) (dlgAddControl ‘_Dlg_ ‘_LBL_3 _LABEL 13 101 127 27 ‘(«Tahoma» 14,25 1 0 0) «Н.О.Д.» 0 &HFF &H8000000F) (dlgAddControl ‘_Dlg_ ‘_TXT_3 _TEXT 157 98 247 31 ‘(«Tahoma» 14 1 0 0) «» 0 &HFF &H80000005) (dlgAddControl ‘_Dlg_ ‘_BUT_1 _BUTTON 24 148 180 50 ‘(«Tahoma» 8,25 1 0 0) «Вычислить») (dlgPutPicture ‘_BUT_1 7) (dlgAddControl ‘_Dlg_ ‘_BUT_2 _BUTTON 213 149 180 50 ‘(«Tahoma» 8,25 1 0 0) «Закрыть») (dlgPutPicture ‘_BUT_2 36) // // Обработчик события CLICK для кнопки _BUT_2 // (defun _BUT_2_Click Nil (prog Nil (dlgHide ‘_DLG_) (dlgDestroy ‘_DLG_) (gc) ) ) // // Назначение процедуры-события _BUT_2_Click контролу _BUT_2 // (dlgSetEvent ‘_BUT_2 ‘_BUT_2_Click ) // // Обработчик события CLICK для кнопки _BUT_1 // (defun _BUT_1_Click Nil (prog (a1 a2) (setq a1 (str2fix (dlgGetText ‘_TXT_1))) (setq a2 (str2fix (dlgGetText ‘_TXT_2))) (TRY (dlgPutText ‘_TXT_3 (fix2str (*gcd a1 a2))) EXCEPT (dlgPutText ‘_TXT_3 «Ошибка!!!») ) ) ) // // Назначение процедуры-события _BUT_1_Click контролу _BUT_1 // (dlgSetEvent ‘_BUT_1 ‘_BUT_1_Click ) // // Отображение диалога _Dlg_ // (dlgShow ‘_Dlg_) )

Для того, чтобы построить EXE-файл, нужно загрузть в среду Лиспа функцию *GCD и написать стартовое выражение для отображения диалога. Проще всего «погрузить» приведенную выше PROG-конструкцию в функцию MAIN без параметров. Тогда стартовым S-выражением для запуска EXE-файла будет вызов (main). Итак, если загрузить в среду Лиспа следующие функции:

// // Поиск наибольшего общего делителя // (defun *gcd (x y) (cond ((eq x y) x) ((greaterp y x) (*gcd y x)) ((eq (remainder x y) 0) y) (T (*gcd y (remainder x y))))) // // Программа отображения диалога _Dlg_ // (defun main nil (prog nil (dlgCreate ‘_Dlg_ 419 233 «Наибольший общий делитель:») (dlgAddControl ‘_Dlg_ ‘_LBL_1 _LABEL 14 15 100 21 ‘(«Tahoma» 14,25 1 0 0) «Первое:» 0 &H80000012 &H8000000F) (dlgAddControl ‘_Dlg_ ‘_TXT_1 _TEXT 155 13 248 31 ‘(«Tahoma» 14 1 0 0) «» 0 &H80000008 &H80000005) (dlgAddControl ‘_Dlg_ ‘_LBL_2 _LABEL 12 59 133 26 ‘(«Tahoma» 14,25 1 0 0) «Второе:» 0 &H80000012 &H8000000F) (dlgAddControl ‘_Dlg_ ‘_TXT_2 _TEXT 156 56 247 31 ‘(«Tahoma» 14 1 0 0) «» 0 &H80000008 &H80000005) (dlgAddControl ‘_Dlg_ ‘_LBL_3 _LABEL 13 101 127 27 ‘(«Tahoma» 14,25 1 0 0) «Н.О.Д.» 0 &HFF &H8000000F) (dlgAddControl ‘_Dlg_ ‘_TXT_3 _TEXT 157 98 247 31 ‘(«Tahoma» 14 1 0 0) «» 0 &HFF &H80000005) (dlgAddControl ‘_Dlg_ ‘_BUT_1 _BUTTON 24 148 180 50 ‘(«Tahoma» 8,25 1 0 0) «Вычислить») (dlgPutPicture ‘_BUT_1 7) (dlgAddControl ‘_Dlg_ ‘_BUT_2 _BUTTON 213 149 180 50 ‘(«Tahoma» 8,25 1 0 0) «Закрыть») (dlgPutPicture ‘_BUT_2 36) // // Обработчик события CLICK для кнопки _BUT_2 // (defun _BUT_2_Click Nil (prog Nil (dlgHide ‘_DLG_) (dlgDestroy ‘_DLG_) (gc) ) ) // // Назначение процедуры-события _BUT_2_Click контролу _BUT_2 // (dlgSetEvent ‘_BUT_2 ‘_BUT_2_Click ) // // Обработчик события CLICK для кнопки _BUT_1 // (defun _BUT_1_Click Nil (prog (a1 a2) (setq a1 (str2fix (dlgGetText ‘_TXT_1))) (setq a2 (str2fix (dlgGetText ‘_TXT_2))) (TRY (dlgPutText ‘_TXT_3 (fix2str (*gcd a1 a2))) EXCEPT (dlgPutText ‘_TXT_3 «Ошибка!!!») ) ) ) // // Назначение процедуры-события _BUT_1_Click контролу _BUT_1 // (dlgSetEvent ‘_BUT_1 ‘_BUT_1_Click ) // // Отображение диалога _Dlg_ // (dlgShow ‘_Dlg_) ) )

а затем построить EXE-файл gcd-2.exe, задав следующие параметры:

то получится вполне работоспособный EXE-файл. Его можно запустить, и убедиться, что НОД считается верно:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *