Компьютеры, программирование

  • 6081. Программа, демонстрирующая иерархию окон Windows
    Информация пополнение в коллекции 12.01.2009

    В подавляющем большинстве книг о программировании для Windows изложение, как правило, ведется на базе языка C/C++, реже на базе Pascal. А что же ассемблер в стороне? Конечно, нет! Мы не раз обращали ваше внимание на правильное понимание места ассемблера в архитектуре компьютера. Любая программа на языке самого высокого уровня в своем внутреннем виде представляет собой последовательность машинных кодов. А раз так, то всегда остается теоретическая возможность написать ту же программу, но уже на языке ассемблера: Непонимание или недооценка такой возможности приводит к тому, что достаточно часто приходится слышать фразу, подобную следующей: «Ах, опять этот ассемблер, но ведь это что-то несерьезное!» Также трудно согласиться с тезисом, который чаще всего следует вслед за этой фразой. Суть его сводится к утверждению того, что мощность современных компьютеров позволяет не рассматривать проблему эффективности функционирования программы в качестве первоочередной. Гораздо легче решить ее за счет увеличения объема памяти, быстродействия центрального процессора и качества компьютерной периферии. Чем обосновать необходимость разработки Windows-приложений на языке ассемблера? Приведем следующие аргументы:

  • 6082. Программа, которая упорядочивает элементы чётных строк матрицы по возрастанию, а нечётных – по убыва...
    Контрольная работа пополнение в коллекции 09.12.2008

    17. Задан массив {Ai}: 2; 0,4; 3,14; -1,57; 11; 7,34; -2,6; 0; 5; -1. Вычислить массив {Yi}, каждый элемент которого вычисляется по формуле cos(A), и подсчитать количество элементов L из массива {Yi}, попадающих в интервал [0;1]. Вывести на печать L и массивы {Ai} и {Yi}.

  • 6083. Программа, которая упорядочивает элементы чётных строк матрицы по возрастанию, а нечётных – по убыванию
    Информация пополнение в коллекции 12.01.2009

    17. Задан массив {Ai}: 2; 0,4; 3,14; -1,57; 11; 7,34; -2,6; 0; 5; -1. Вычислить массив {Yi}, каждый элемент которого вычисляется по формуле cos(A), и подсчитать количество элементов L из массива {Yi}, попадающих в интервал [0;1]. Вывести на печать L и массивы {Ai} и {Yi}.

  • 6084. Программа, моделирующая прыгающий мяч
    Контрольная работа пополнение в коллекции 26.08.2012

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

  • 6085. Программа, формирующая таблицу истинности для функции F=A+C*(B+D)
    Информация пополнение в коллекции 12.01.2009

    В этой работе мы рассмотрим один из способов написания программы, формирующую, таблицу истинности для функции F=A+C(BD),с помощью языка Ассемблера. Прежде чем создать программу надо детально рассмотреть, какие шаги для этого надо предпринять, то есть надо написать алгоритм работы этой программы . Для того чтобы компьютер смог обработать данные, эти данные ему надо сначала ввести , а это значит первым шагом в решении нашей задачи будет ввод числа. Для начала присвоим начальное значение равное 0 всем операндам то есть A,B,C,D,F.Вторым шагом в работе будет вычисление функции F=A+C(BD). После этого мы выводим на экран значения операндов A,B,C,D и вычисленный результат функции, то есть F. Следующим шагом будет увеличение операнда D на 1 и проверка условия : если значение D не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран, иначе то переходим к следующему шагу решения нашей задачи, то есть присвоению операнду D значения 0, увеличению операнда C на 1. После снова производим проверку условия: если С не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран , иначе то переходим к следующему шагу, присвоению операнду С значения 0 и увеличения операнда B на 1. Далее проверяем условие: если B не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран , иначе то переходим к следующему шагу, присвоению операнду B значения 0 и увеличения операнда A на 1 , иначе переходим к следующему пункту, проверке условия: если A не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран , иначе выходим из программы. Теперь соберём все пункты вместе:

  • 6086. Программа-игра "Ним"
    Дипломная работа пополнение в коллекции 04.12.2011

    Для решения поставленной задачи использовались так называемые RadioButton, расположенные на специальных тематических панелях. Всего 4 элемента управления в виде стандартных переключателей на двух панелях («Игрок №2» и «Первым ходит») в состоянии заменить введение дополнительных форм, а также создание клавиш и пр. На этапе кодирования учитывались все возможные ситуации расстановки переключателей, а на этапе тестирования обрабатывались нежелательные исключения. Кроме RadioButton в программном коде фигурирует объект типа TButton, представляющий собой кнопку управления. Предполагается, что пользователь-игрок имеет право обдумать свой ход и принять взвешенное решение по удалению определенных шариков с формы.

  • 6087. Программа-имитатор
    Информация пополнение в коллекции 12.01.2009

    Автоинкрементная адресация. Этот вид адресации несколько сложнее двух предыдущих. Помимо основного действия (косвенного обращения к ячейке памяти), при использовании этого метода, происходит еще изменение адреса этого обращения. В данном случае увеличивается указатель адреса ячейки памяти, к которой мы обращаемся, то есть содержимое регистра, служащего указателем адреса. Данное увеличение происходит автоматически, без какой-либо команды. Записывается эта адресация как (Rn)+. То, что знак + стоит после имени регистра, намекает на порядок выполнения команды: сначала происходит операция с ячейкой, на которую указывает адрес помещенный в регистр Rn, а потом уже содержимое регистра увеличивается на 2 (если оператор работает со словом, то переход к адресу следующего слова), или на 1 (если оператор работает с байтом, переход к адресу следующего байта). Данный способ адресации применяется для работы с массивами и при использовании стека (например, при использовании подпрограмм).

  • 6088. Программа-клиент
    Статья пополнение в коллекции 12.01.2009

    Примечание. Данная программа (как и большинство реальных программ-серверов) самостоятельно своей работы не завершает, находясь в бесконечном цикле обработки запросов клиентов. Ее выполнение может быть прервано только извне путем посылки ей сигналов (прерываний) завершения. Правильно разработанная программа-сервер должна обрабатывать такие сигналы, корректно завершая работу (закрывая, в частности, посредством close socket с дескриптором s).

  • 6089. Программа–конструктор для построения МП–транслятора по его параметрам с последующей проверкой задаваемых пользователем цепочек
    Курсовой проект пополнение в коллекции 19.11.2010

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

  • 6090. Программа-отладчик микроконтроллера I8051 (К1816ВЕ51)
    Информация пополнение в коллекции 04.12.2010

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

  • 6091. Программа-переключатель кодировки
    Вопросы пополнение в коллекции 12.01.2009

    С самого начала существования IBM совместимых компьютеров встала проблема вывода на экран и ввода с клавиатуры символов кириллицы. Только начиная с версии MS DOS 6.0 появилась поддержка национальной 866 страницы. До появления версии MS DOS 6.0 проблему решали так называемые программы русификаторы. Эти программы замещали символы дополнительного кодового набора. Делалось это путем подстановки шрифта прошитого в ПЗУ видеоадаптера своим. Эти программы были практически на каждом компьютере. Самыми известными из них являлись ENHFONT, KEYRUSS, LMSCR&LMKEY, KYRILLIC. Был еще один способ решить проблему русификации - перепрограммировать ПЗУ видеоадаптера, но он не нашел большого применения.

  • 6092. Программа–распознаватель арифметических выражений
    Дипломная работа пополнение в коллекции 26.11.2011

    ·В отличие от инфиксной записи, невозможно использовать одни и те же знаки для записи унарных и бинарных операций. Так, в инфиксной записи выражение 5 * (-3 + 8) использует знак «минус» как символ унарной операции (изменение знака числа), а выражение (10 - 15) * 3 применяет этот же знак для обозначения бинарной операции (вычитание). Конкретная операция определяется тем, в какой позиции находится знак. Обратная польская запись не позволяет этого: запись 5 3 - 8 + * (условный аналог первого выражения) будет интерпретирована как ошибочная, поскольку невозможно определить, что «минус» после 5 и 3 обозначает не вычитание; в результате будет сделана попытка вычислить сначала 5 - 3, затем 2 + 8, после чего выяснится, что для операции умножения не хватает операндов. Чтобы всё же записать это выражение, придётся либо переформулировать его, либо ввести для операции изменения знака отдельное обозначение, например, «±»: 5 3 ± 8 + *.

  • 6093. Программатор ПЗУ
    Реферат пополнение в коллекции 09.12.2008
  • 6094. Программатор ПЗУ (программный интерфейс)
    Информация пополнение в коллекции 12.01.2009
  • 6095. Программатор ПЗУ \программный интерфейс\
    Реферат пополнение в коллекции 09.12.2008
  • 6096. Программирование CMOS
    Статья пополнение в коллекции 08.05.2010

    %20%d0%be%d1%82%d0%be%d1%88%d0%bb%d0%be%20%d0%bd%d0%b0%20%d0%b2%d1%82%d0%be%d1%80%d0%be%d0%b9%20%d0%bf%d0%bb%d0%b0%d0%bd.%20%d0%90%20%d0%bc%d0%b5%d0%b6%d0%b4%d1%83%20%d1%82%d0%b5%d0%bc%20%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%20%d0%bd%d0%b5%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%20%d1%80%d0%b5%d0%b0%d0%bb%d0%b8%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d1%8c%20%d0%bd%d0%b8%d1%87%d0%b5%d0%b3%d0%be%20%d1%81%d1%82%d0%be%d1%8f%d1%89%d0%b5%d0%b3%d0%be%20%d0%b1%d0%b5%d0%b7%20%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%b9%20%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d0%b8%20%d0%be%d0%b1%d0%be%d1%80%d1%83%d0%b4%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f,%20%d0%b2%20%d1%87%d0%b0%d1%81%d1%82%d0%bd%d0%be%d1%81%d1%82%d0%b8%20CMOS%20-%20%d1%8d%d0%bd%d0%b5%d1%80%d0%b3%d0%be%d0%bd%d0%b5%d0%b7%d0%b0%d0%b2%d0%b8%d1%81%d0%b8%d0%bc%d0%be%d0%b9%20%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d0%b8%20%d0%ba%d0%be%d0%bc%d0%bf%d1%8c%d1%8e%d1%82%d0%b5%d1%80%d0%b0.%20%d0%92%20%d0%b4%d0%b0%d0%bd%d0%bd%d0%be%d0%b9%20%d1%81%d1%82%d0%b0%d1%82%d1%8c%d0%b5%20%d0%bc%d1%8b%20%d1%80%d0%b0%d1%81%d1%81%d0%bc%d0%be%d1%82%d1%80%d0%b8%d0%bc%20%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b9%d1%81%d1%82%d0%b2%d0%be%20CMOS,%20%d0%b5%d0%b3%d0%be%20%d1%81%d1%82%d1%80%d1%83%d0%ba%d1%82%d1%83%d1%80%d1%83%20%d0%b8%20%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8%20%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f.%20%d0%a1%d1%80%d0%b0%d0%b7%d1%83%20%d0%be%d0%b3%d0%be%d0%b2%d0%be%d1%80%d1%8e%d1%81%d1%8c,%20%d1%87%d1%82%d0%be%20%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c%20CMOS%20%d0%b6%d0%b5%d0%bb%d0%b0%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%20%d0%b8%d0%b7%20%d1%80%d0%b5%d0%b0%d0%bb%d1%8c%d0%bd%d0%be%d0%b3%d0%be%20%d1%80%d0%b5%d0%b6%d0%b8%d0%bc%d0%b0%20%d0%9e%d0%a1;%20%d0%bf%d0%be%d0%b4%20%d0%9e%d0%a1%20Windows%20%d1%8d%d1%82%d0%be%20%d0%b4%d0%b5%d0%bb%d0%b0%d0%b5%d1%82%d1%81%d1%8f%20%d1%81%20%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e%20%d1%81%d0%bf%d0%b5%d1%86%d0%b8%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d1%85%20%d0%b4%d1%80%d0%b0%d0%b9%d0%b2%d0%b5%d1%80%d0%be%d0%b2%20VxD%20%d0%b8%d0%bb%d0%b8%20SYS.%20%d0%92%20%d0%a1%d0%b5%d1%82%d0%b8%20%d1%81%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d1%83%d0%b5%d1%82%20%d0%b4%d0%be%d1%81%d1%82%d0%b0%d1%82%d0%be%d1%87%d0%bd%d0%be%20%d0%b8%d1%81%d1%82%d0%be%d1%87%d0%bd%d0%b8%d0%ba%d0%be%d0%b2%20%d0%b4%d0%be%d0%ba%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b0%d1%86%d0%b8%d0%b8%20%d0%bf%d0%be%20%d0%bf%d0%be%d1%81%d1%82%d1%80%d0%be%d0%b5%d0%bd%d0%b8%d1%8e%20%d1%82%d0%b0%d0%ba%d0%be%d0%b2%d1%8b%d1%85,%20%d0%bf%d0%be%d1%8d%d1%82%d0%be%d0%bc%d1%83%20%d1%8f%20%d0%bd%d0%b0%20%d0%bd%d0%b8%d1%85%20%d0%be%d1%81%d1%82%d0%b0%d0%bd%d0%b0%d0%b2%d0%bb%d0%b8%d0%b2%d0%b0%d1%82%d1%8c%d1%81%d1%8f%20%d0%bd%d0%b5%20%d0%b1%d1%83%d0%b4%d1%83.%20%d0%95%d1%81%d1%82%d0%b5%d1%81%d1%82%d0%b2%d0%b5%d0%bd%d0%bd%d0%be,%20%d1%87%d1%82%d0%be%20%d0%bf%d1%80%d0%be%d0%b2%d0%be%d0%b4%d0%b8%d1%82%d1%8c%20%d0%b2%d1%81%d0%b5%20%d0%bd%d0%b8%d0%b6%d0%b5%20%d0%bf%d0%b5%d1%80%d0%b5%d1%87%d0%b8%d1%81%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5%20%d0%b4%d0%b5%d0%b9%d1%81%d1%82%d0%b2%d0%b8%d1%8f%20%d0%bf%d0%be%20%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d0%b8%20%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d0%b9%20%d0%b2%20CMOS%20%d1%81%d0%bb%d0%b5%d0%b4%d1%83%d0%b5%d1%82%20%d1%81%20%d0%be%d1%81%d0%be%d0%b1%d0%be%d0%b9%20%d0%be%d1%81%d1%82%d0%be%d1%80%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d1%8c%d1%8e;%20%d0%b8%d0%bd%d0%be%d0%b3%d0%b4%d0%b0%20(!)%20%d0%bc%d0%be%d0%b6%d0%bd%d0%be%20%d0%bf%d0%be%d1%82%d0%b5%d1%80%d1%8f%d1%82%d1%8c%20%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%20%d0%b2%d1%81%d0%b5%20%d0%b7%d0%bd%d0%b0%d1%87%d0%b5%d0%bd%d0%b8%d1%8f%20%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d0%b8%20%d0%9f%d0%9a.%20%d0%92%20%d1%82%d0%b0%d0%ba%d0%be%d0%b2%d0%be%d0%bc%20%d1%81%d0%bb%d1%83%d1%87%d0%b0%d0%b5%20%d0%bd%d0%b5%d0%be%d0%b1%d1%85%d0%be%d0%b4%d0%b8%d0%bc%d0%be%20%d0%be%d1%87%d0%b8%d1%81%d1%82%d0%b8%d1%82%d1%8c%20CMOS;%20%d0%ba%d0%b0%d0%ba%20%d1%8d%d1%82%d0%be%20%d1%81%d0%b4%d0%b5%d0%bb%d0%b0%d1%82%d1%8c%20-%20%d1%81%d0%bc%d0%be%d1%82%d1%80%d0%b8%d1%82%d0%b5%20%d0%b2%20%d0%b4%d0%be%d0%ba%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b0%d1%86%d0%b8%d0%b8%20%d0%ba%20%d0%b2%d0%b0%d1%88%d0%b5%d0%b9%20%d0%bc%d0%b0%d1%82%d0%b5%d1%80%d0%b8%d0%bd%d1%81%d0%ba%d0%be%d0%b9%20%d0%bf%d0%bb%d0%b0%d1%82%d0%b5.%20%d0%a2%d0%b0%d0%ba%d0%b6%d0%b5%20%d1%8f%20%d0%b1%d1%83%d0%b4%d1%83%20%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d1%8c%20%d1%8f%d0%b7%d1%8b%d0%ba%20%d0%b0%d1%81%d1%81%d0%b5%d0%bc%d0%b1%d0%bb%d0%b5%d1%80%d0%b0%20%d0%b4%d0%bb%d1%8f%20%d0%b8%d0%bb%d0%bb%d1%8e%d1%81%d1%82%d1%80%d0%b0%d1%86%d0%b8%d0%b8%20%d0%ba%d0%be%d0%bd%d0%ba%d1%80%d0%b5%d1%82%d0%bd%d1%8b%d1%85%20%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80%d0%be%d0%b2,%20%d0%b0%20%d1%82%d0%b0%d0%ba%20%d0%b6%d0%b5%20%d1%88%d0%b8%d1%80%d0%be%d0%ba%d0%be%20%d1%80%d0%b0%d1%81%d0%bf%d1%80%d0%be%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%bd%d1%8b%d0%b9%20%d0%be%d1%82%d0%bb%d0%b0%d0%b4%d1%87%d0%b8%d0%ba%20DEBUG.EXE,%20%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d0%b9%20%d0%bf%d1%80%d0%b8%d0%bb%d0%b0%d0%b3%d0%b0%d0%b5%d1%82%d1%81%d1%8f%20%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%20%d1%81%20%d0%ba%d0%b0%d0%b6%d0%b4%d0%be%d0%b9%20%d0%b2%d0%b5%d1%80%d1%81%d0%b8%d0%b5%d0%b9%20%d0%9e%d0%a1%20Windows/DOS.%20">В эпоху интенсивного развития высоких технологий и технологий Internet программирование для <железа> отошло на второй план. А между тем практически невозможно реализовать ничего стоящего без правильной конфигурации оборудования, в частности CMOS - энергонезависимой памяти компьютера. В данной статье мы рассмотрим устройство CMOS, его структуру и возможности программирования. Сразу оговорюсь, что программировать CMOS желательно из реального режима ОС; под ОС Windows это делается с помощью специальных драйверов VxD или SYS. В Сети существует достаточно источников документации по построению таковых, поэтому я на них останавливаться не буду. Естественно, что проводить все ниже перечисленные действия по записи значений в CMOS следует с особой осторожностью; иногда (!) можно потерять практически все значения конфигурации ПК. В таковом случае необходимо очистить CMOS; как это сделать - смотрите в документации к вашей материнской плате. Также я буду использовать язык ассемблера для иллюстрации конкретных примеров, а так же широко распространенный отладчик DEBUG.EXE, который прилагается практически с каждой версией ОС Windows/DOS.

  • 6097. Программирование автоматизированной информационной системы предприятия
    Дипломная работа пополнение в коллекции 23.06.2011
  • 6098. Программирование алгоритма цифровой подписи ГОСТ Р 34.10-94
    Курсовой проект пополнение в коллекции 19.11.2009

    Без использования криптографии сегодня немыслимо решение задач по обеспечению безопасности информации, связанных с конфиденциальностью и целостностью. Если до 1990г. криптография обеспечивала закрытие государственных линий связи, то в наши дни использование криптографических методов получило широкое распространение благодаря развитию компьютерных сетей и электронного обмена данными в различных областях[3].

  • 6099. Программирование в Delphi
    Курсовой проект пополнение в коллекции 27.05.2008

    Таким образом, учитывая вышесказанное, разработчиком были приняты следующие решения, касающиеся будущей структуры приложения:

    1. для визуального отображения данных в табличной форме выбрать компонент StringGrid, который в текстовой форме обеспечивает ввод, изменение, удаление и просмотр данных. Шапка таблицы будет повторять таблицу, указанную в начальном условии. Предустановленное максимальное количество данных 100 записей, что также удовлетворяет начальному условию
    2. MEMO-поле прежде всего предназначенное для вывода данных, указанных в условии, дополнительно использовать для визуального подтверждения выполняемых пользователем действий.
    3. для добавления / изменения / удаления записей в базу данных использовать 5 компонентов edit (для заполнения соответствующих столбцов), и 2 button-а (для добавления и удаления записи соответственно). Так как для отображения информации в StringGrid используется текстовая форма, предусмотреть невозможность ввода текстовых данных в численные поля с выводом соответствующего сообщения, а также невозможность внесения «пустого» поля, так как все поля базы данных, необходимые для математического расчета по условиям задачи должны быть заполнены.
    4. использовать стандартные диалоги OpenDialog и SaveDialog для предоставления пользователю возможности визуального выбора имени и пути типизированного файла для открытия либо для сохранения базы данных. Для вызова диалогов использовать 2 компонента button с соответствующими названиями
    5. для «обнуления» данных, т.е. создания новой базы использовать компонент button с подписью «создать базу».
    6. для дублирования функций программы и создания дополнительного удобства работы с приложением применить компонент menu с соответствующими подменю и подписями кнопок.
    7. математический аппарат представить в виде отдельной процедуры, состоящей из двух уравнений, удовлетворяющих начальному условию, которые являются необходимой частью приложения. Расчет проводить в автоматизированном режиме, без участия пользователя.
    8. выполнить сортирование базы данных в автоматизированном режиме. Что исключит лишние действия пользователя по периодическому нажатию кнопки «сортировка». Действие сортировки выполнить уникальным, специально разработанным методом при каждом изменении базы данных.
  • 6100. Программирование в Delphi математических процессов
    Дипломная работа пополнение в коллекции 14.09.2011

    {$R *.DFM}= Double;= packed record, dO2: TOperandType;;= 'Multitasking Copyright © 2007 Loonies Software';= '\\.\mailslot\';= Copyright + ' - Mul_OpsReady';= Copyright + ' - Mul_ResReady';= MailslotPrefix + 'Lab2_Mul_Operands';= MailslotPrefix + 'Lab2_Mul_Result';= Copyright + ' - Div_OpsReady';= Copyright + ' - Div_ResReady';= MailslotPrefix + 'Lab2_Div_Operands';= MailslotPrefix + 'Lab2_Div_Result';= Copyright + ' - Sub_OpsReady';= Copyright + ' - Sub_ResReady';= MailslotPrefix + 'Lab2_Sub_Operands';= MailslotPrefix + 'Lab2_Sub_Result';= Copyright + ' - Add_OpsReady';= Copyright + ' - Add_ResReady';= MailslotPrefix + 'Lab2_Add_Operands';= MailslotPrefix + 'Lab2_Add_Result';= Copyright + ' - Root_OpsReady';= Copyright + ' - Root_ResReady';= MailslotPrefix + 'Lab2_Root_Operands';= MailslotPrefix + 'Lab2_Root_Result';, hDivOpsReadyEvent, hSubOpsReadyEvent, hAddOpsReadyEvent, hRootOpsReadyEvent,, hDivResReadyEvent, hSubResReadyEvent, hAddResReadyEvent, hRootResReadyEvent: THandle;, DivThreadHandle, SubThreadHandle, AddThreadHandle, RootThreadHandle: THandle;, hDivResMailslot, hSubResMailslot, hAddResMailslot, hRootResMailslot: THandle;MulThreadProc(lpParameter: Pointer);, ResReadyEvent: THandle;, ResMailslot: THandle;: TOperands;: TOperandType;, WrittenBytes: DWORD;:=OpenEvent(EVENT_ALL_ACCESS, false, MulOpsReadyEventName);:=OpenEvent(EVENT_ALL_ACCESS, false, MulResReadyEventName);:=CreateMailslot(MulMailslotOpsName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateFile(MulMailslotResName, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);WaitForSingleObject(OpsReadyEvent, INFINITE) = WAIT_OBJECT_0 do(OpsReadyEvent);(OpsMailslot, Operands, SizeOf(TOperands), ReadBytes, nil);:=Operands.dO1 * Operands.dO2;(ResMailslot, Res, SizeOf(TOperandType), WrittenBytes, nil);(ResReadyEvent);;(OpsMailslot);(ResMailslot);(0);;DivThreadProc(lpParameter: Pointer);, ResReadyEvent: THandle;, ResMailslot: THandle;: TOperands;: TOperandType;, WrittenBytes: DWORD;:=OpenEvent(EVENT_ALL_ACCESS, false, DivOpsReadyEventName);:=OpenEvent(EVENT_ALL_ACCESS, false, DivResReadyEventName);:=CreateMailslot(DivMailslotOpsName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateFile(DivMailslotResName, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);WaitForSingleObject(OpsReadyEvent, INFINITE) = WAIT_OBJECT_0 do(OpsReadyEvent);(OpsMailslot, Operands, SizeOf(TOperands), ReadBytes, nil);:=Operands.dO1 / Operands.dO2;(ResMailslot, Res, SizeOf(TOperandType), WrittenBytes, nil);(ResReadyEvent);;(OpsMailslot);(ResMailslot);(0);;SubThreadProc(lpParameter: Pointer);, ResReadyEvent: THandle;, ResMailslot: THandle;: TOperands;: TOperandType;, WrittenBytes: DWORD;:=OpenEvent(EVENT_ALL_ACCESS, false, SubOpsReadyEventName);:=OpenEvent(EVENT_ALL_ACCESS, false, SubResReadyEventName);:=CreateMailslot(SubMailslotOpsName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateFile(SubMailslotResName, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);WaitForSingleObject(OpsReadyEvent, INFINITE) = WAIT_OBJECT_0 do(OpsReadyEvent);(OpsMailslot, Operands, SizeOf(TOperands), ReadBytes, nil);:=Operands.dO1 - Operands.dO2;(ResMailslot, Res, SizeOf(TOperandType), WrittenBytes, nil);(ResReadyEvent);;(OpsMailslot);(ResMailslot);(0);;AddThreadProc(lpParameter: Pointer);, ResReadyEvent: THandle;, ResMailslot: THandle;: TOperands;: TOperandType;, WrittenBytes: DWORD;:=OpenEvent(EVENT_ALL_ACCESS, false, AddOpsReadyEventName);:=OpenEvent(EVENT_ALL_ACCESS, false, AddResReadyEventName);:=CreateMailslot(AddMailslotOpsName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateFile(AddMailslotResName, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);WaitForSingleObject(OpsReadyEvent, INFINITE) = WAIT_OBJECT_0 do(OpsReadyEvent);(OpsMailslot, Operands, SizeOf(TOperands), ReadBytes, nil);:=Operands.dO1 + Operands.dO2;(ResMailslot, Res, SizeOf(TOperandType), WrittenBytes, nil);(ResReadyEvent);;(OpsMailslot);(ResMailslot);(0);;RootThreadProc(lpParameter: Pointer);, ResReadyEvent: THandle;, ResMailslot: THandle;: TOperands;: TOperandType;, WrittenBytes: DWORD;:=OpenEvent(EVENT_ALL_ACCESS, false, RootOpsReadyEventName);:=OpenEvent(EVENT_ALL_ACCESS, false, RootResReadyEventName);:=CreateMailslot(RootMailslotOpsName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateFile(RootMailslotResName, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);WaitForSingleObject(OpsReadyEvent, INFINITE) = WAIT_OBJECT_0 do(OpsReadyEvent);(OpsMailslot, Operands, SizeOf(TOperands), ReadBytes, nil);:=Sqrt(Operands.dO1);(ResMailslot, Res, SizeOf(TOperandType), WrittenBytes, nil);(ResReadyEvent);;(OpsMailslot);(ResMailslot);(0);;TfmMain.FormCreate(Sender: TObject);: DWORD;:=CreateEvent(nil, true, false, MulOpsReadyEventName);:=CreateEvent(nil, true, false, DivOpsReadyEventName);:=CreateEvent(nil, true, false, SubOpsReadyEventName);:=CreateEvent(nil, true, false, AddOpsReadyEventName);:=CreateEvent(nil, true, false, RootOpsReadyEventName);:=CreateEvent(nil, true, false, MulResReadyEventName);:=CreateEvent(nil, true, false, DivResReadyEventName);:=CreateEvent(nil, true, false, SubResReadyEventName);:=CreateEvent(nil, true, false, AddResReadyEventName);:=CreateEvent(nil, true, false, RootResReadyEventName);:=CreateMailslot(MulMailslotResName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateMailslot(DivMailslotResName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateMailslot(SubMailslotResName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateMailslot(AddMailslotResName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateMailslot(RootMailslotResName, 0, MAILSLOT_WAIT_FOREVER, nil);:=CreateThread(nil, 0, @MulThreadProc, nil, 0, ThreadId);:=CreateThread(nil, 0, @DivThreadProc, nil, 0, ThreadId);:=CreateThread(nil, 0, @SubThreadProc, nil, 0, ThreadId);:=CreateThread(nil, 0, @AddThreadProc, nil, 0, ThreadId);:=CreateThread(nil, 0, @RootThreadProc, nil, 0, ThreadId);;TfmMain.FormDestroy(Sender: TObject);(hMulOpsReadyEvent);(hDivOpsReadyEvent);(hSubOpsReadyEvent);(hAddOpsReadyEvent);(hRootOpsReadyEvent);(hMulResReadyEvent);(hDivResReadyEvent);(hSubResReadyEvent);(hAddResReadyEvent);(hRootResReadyEvent);(hMulResMailslot);(hDivResMailslot);(hSubResMailslot);(hAddResMailslot);(hRootResMailslot);(MulThreadHandle, 0);(MulThreadHandle);(DivThreadHandle, 0);(DivThreadHandle);(SubThreadHandle, 0);(SubThreadHandle);(AddThreadHandle, 0);(AddThreadHandle);(RootThreadHandle, 0);(RootThreadHandle);;WriteOperandsUsingFileMapping(OpsMailslotName: PChar; Operands: TOperands; hEvent: THandle);: THandle;: DWORD;:=CreateFile(OpsMailslotName, GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);(OpsMailslot, Operands, SizeOf(TOperands), WrittenBytes, nil);(OpsMailslot);(hEvent);;ReadResultUsingFileMapping(hResReadyEvent: THandle; MailslotHandle: THandle): TOperandType;: TOperandType;: DWORD;WaitForSingleObject(hResReadyEvent, INFINITE) = WAIT_OBJECT_0 then(MailslotHandle, Res, SizeOf(TOperandType), ReadBytes, nil);:=Res;;;TfmMain.btCalcClick(Sender: TObject);: TOperands;, dRes2, dRes3: Double;, B, C: Integer;:=sedAFactor.Value;:=sedBFactor.Value;:=sedCFactor.Value;.dO1:=B;.dO2:=B;(MulMailslotOpsName, Operands, hMulOpsReadyEvent);:=ReadResultUsingFileMapping(hMulResReadyEvent, hMulResMailslot);.dO1:=4;.dO2:=A;(MulMailslotOpsName, Operands, hMulOpsReadyEvent);:=ReadResultUsingFileMapping(hMulResReadyEvent, hMulResMailslot);.dO1:=dRes2;.dO2:=C;(MulMailslotOpsName, Operands, hMulOpsReadyEvent);:=ReadResultUsingFileMapping(hMulResReadyEvent, hMulResMailslot);.dO1:=dRes;.dO2:=dRes2;(SubMailslotOpsName, Operands, hSubOpsReadyEvent);:=ReadResultUsingFileMapping(hSubResReadyEvent, hSubResMailslot);dRes3 < 0 then.Caption:='Дискриминант меньше нуля!';.Caption:='';.dO1:=0;.dO2:=B;(SubMailslotOpsName, Operands, hSubOpsReadyEvent);:=ReadResultUsingFileMapping(hSubResReadyEvent, hSubResMailslot);.dO1:=dRes3;(RootMailslotOpsName, Operands, hRootOpsReadyEvent);:=ReadResultUsingFileMapping(hRootResReadyEvent, hRootResMailslot);.dO1:=dRes;.dO2:=dRes3;(AddMailslotOpsName, Operands, hAddOpsReadyEvent);:=ReadResultUsingFileMapping(hAddResReadyEvent, hAddResMailslot);.dO1:=dRes;.dO2:=dRes3;(SubMailslotOpsName, Operands, hSubOpsReadyEvent);:=ReadResultUsingFileMapping(hSubResReadyEvent, hSubResMailslot);.dO1:=2;.dO2:=A;(MulMailslotOpsName, Operands, hMulOpsReadyEvent);:=ReadResultUsingFileMapping(hMulResReadyEvent, hMulResMailslot);.dO1:=dRes;.dO2:=dRes3;(DivMailslotOpsName, Operands, hDivOpsReadyEvent);:=ReadResultUsingFileMapping(hDivResReadyEvent, hDivResMailslot);.dO1:=dRes2;.dO2:=dRes3;(DivMailslotOpsName, Operands, hDivOpsReadyEvent);:=ReadResultUsingFileMapping(hDivResReadyEvent, hDivResMailslot);.Caption:='x1 = ' + FloatToStrF(dRes, ffFixed, 15, 2);.Caption:='x2 = ' + FloatToStrF(dRes2, ffFixed, 15, 2);;;grfunc;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;= class(TForm)FormPaint(Sender: TObject);FormResize(Sender: TObject);