Главная » Статьи для тега "программы"

Основы Java. Вводная часть

Добавлено Дата: 29 April, 2011 категория: Java, Web

Компьютер — сложная система, состоящая из многих частей. Одна из главнейших составляющих компьютера — это центральный процессор (ЦП). Именно процессор производит вычисления. В современном компьютере процессор — это одна отдельная микросхема, один чип, квадрат, сторона которого составляет несколько сантиметров. Задача процессора — выполнять программы. Программа — это набор инструкций, которые компьютер выполняет автоматически. Компьютер реализован таким образом, что он понимает инструкции, которые написаны на специальном языке — машинном языке. Каждый тип компьютеров имеет свой машинный язык. Компьютер может выполнять программу, если она написана на его машинном языке. Он может выполнять также программы, созданные на других языках, если первоначально эти программы будут переведены на машинный язык.

Читать »

Объектно-ориентированное программирование Java

Добавлено Дата: 21 April, 2011 категория: Java, Web

Конкретная семантика прикладных систем может быть выражена с помощью различных абстрактных синтаксисов (АС], …, АС„), каждый из которых использует одинаковые или различные синтаксисы передачи (СП], …, СПЯ).

ЗКР. "Сервис открытых ИБС"

Читать »

Клавиатурный шпион

Добавлено Дата: 21 April, 2011 категория: Delphi

Для того чтобы отработать создание ловушек и заодно создать заготовку для переключателя клавиатуры, мы сначала сделаем простой вариант ловушки, который будет ничем иным, как типичным Spyware — т. е. программой- шпионом, которая перехватывает нажатия всех системных клавиш и отправляет их в текстовый файл. Настоящий "шпион" должен еще регистрироваться в реестре для автоматического запуска и периодически отправлять созданный файл по электронной почте, а нам это ни к чему — мы будем создавать такой перехватчик, разумеется, не для шпионажа, и даже не просто для тренировки, а с вполне прагматической целью— изучение описанного ранее параметра LParam для всяких дополнительных клавиш, которые нельзя различить через MapVirtualKey.

Читать »

Совет 4 — о функциональности

Добавлено Дата: 20 April, 2011 категория: Delphi

Программа не должна делать ничего лишнего. Типичный пример — запуск второго экземпляра программы. Пели это специально не предусмотрено (подобно тому, как Internet Explorer можно запустить в любом количестве экземпляров и это отвечает его назначению), то программа обязана, по крайней мере, информировать пользователя о том, что он запускает второй экземпляр.

Читать »

Начинаем работу Создаем типичное приложение

Добавлено Дата: 19 April, 2011 категория: Delphi

В качестве базового приложения мы создадим просмотрщик слайдов. Это, с одной стороны, функционально достаточно богатая вещь, и содержит в себе примеры многих типичных задач, возникающих при создании пользовательских программ. С другой стороны— само по себе приложение несложное, что позволит нам не отвлекаться на частности. В иллюстративных целях я опишу процесс создания достаточно подробно. Хотя в этой главе вы ничего, выходящего за рамки обычной работы в среде Delphi, не встретите, но подробности позволят даже самому неискушенному читателю избежать потерь времени на разрешение многих частных проблем, возникающих при создании приложений. А тем, кто процесс создания приложения уже знает достаточно хорошо, я все же рекомендую не просто скопировать проект с прилагаемого диска, а просмотреть эту главу хотя бы по диагонали — возможно, вы встретите здесь некоторые вещи, о которых ранее не знали.

Читать »

Основные блоки программы Java

Добавлено Дата: 16 April, 2011 категория: Java, Web

В программировании существует два важных элемента, составляющих программу, — это данные и инструкции. При работе с данными требуется знание того, что такое переменные и типы, а при работе с инструкциями — понимание того, как происходит передача управления от одной инструкции к другой и что такое процедуры (функции, методы). Переменные — это элементы памяти, которые имеют имя. При помощи имени доступ к памяти в программах осуществляется в наиболее наглядной форме. Программист работает только с именем, но не с самой памятью. В большинстве языков программирования переменные обладают типом, который указывает, какие данные хранятся в переменной. Например, это могут быть целые числа, такие как 3, —7, 0, другой тип переменных используется для хранения вещественных чисел 3.14, —2.7, 17.0 и т. п. Например, для компьютера существует разница между числом 17 и числом 17.0. В первом случае мы имеем целое число, а во втором — вещественное число. Также существует тип, который представляет отдельный символ, например, а, ;. Есть свой тип для представления строк, например "Hello".

Читать »

Имена. Каталоги. Класс File

Добавлено Дата: 15 April, 2011 категория: Java, Web

Полное имя файла состоит из имени файла как такового и имени каталога, в котором располагается этот файл. Простые имена файлов, например, такие как data.dat или result.dat, используются только для обращения к файлам, расположенным в текущем (или рабочем) каталоге. К другим файлам следует обращаться с указанием полного имени, включая имя каталога.

Читать »

Предотвращение повторного запуска приложения

Добавлено Дата: 13 April, 2011 категория: Delphi

Повторный запуск приложения иногда может наделать много неприятностей— например, если вы работаете с одним конкретным файлом или с одной конкретной базой данных. Позже, когда мы будем говорить о различных способах доступа к файлам из приложения, мы приведем пример такого случая. Чаще же всего повторный запуск просто раздражает, отнимая время и ресурсы компьютера. Разумеется, есть случаи — и их достаточно много — когда возможность повторного запуска предусмотрена специально (так, вы можете запустить сразу несколько экземпляров Delphi, или несколько Word), а иногда и жизненно необходима— скажем, для Internet Explorer работа с несколькими ресурсами параллельно производится только через запуск все новых и новых его экземпляров. Но во всех случаях, когда запуск второго, третьего и т. д. экземпляров программы возможен, это должно быть осмысленным решением, а не наоборот— когда предотвращением повторного запуска занимаются только в самых критичных случаях.

Читать »

Справка и пункт О программе для Trace

Добавлено Дата: 4 April, 2011 категория: Delphi

Самый простой способ предоставляет нам программа Trace (см. главу 14), в которой все для отображения HTML-справки уже есть— в том смысле, что компонент WebBrowser установлен и готов к использованию. Я перенес проект из папки Glaval4\2 в новую папку (Glaval 6\1) и расположил там файл с текстом справки tracehlp.htm. Обратите внимание, что в заголовке страницы (в тегах <title> </title») название программы приведено в верхнем регистре (TRACE) для того, чтобы при просмотре через браузер заголовок окна последнего отличался от заголовка окна самой программы, где это название записано, как Trace. Если этого не сделать, то вы попросту не сможете запустить программу одновременно с просмотром Help в браузере— сработает наш механизм предотвращения повторного запуска.

Читать »

Замечания по технике программирования

Добавлено Дата: 12 March, 2011 категория: Игры, Теория

Профессионал может пропустить эту статью. В ней содержатся некоторые тривиальные веши, которые, тем не менее, полезно знать.

Стековые переменные

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

Читать »

Силовое решение – пример простой программы

Добавлено Дата: 13 February, 2011 категория: Игры, Пример

Здесь мы рассмотрим пример простой программы, осуществляющей так на­зываемое силовое решение: полный перебор на 6 полуходов, выборочные продления и форсированные варианты с взятиями до конца. Такая про­грамма, конечно, не будет играть очень сильно, но уровень первого разряда ей обеспечен. При хорошей оценочной функции и дебютных справочниках, она может показать и лучший результат. Но это в сторону. Наша задача сейчас состоит в построении простейшей программы, а не в погоне за ре­зультатами. Данная программа использует alpha-beta алгоритм перебора, NegaScout и сортировку перемещений по значению. Взятия сортируются по принципу MW/LVA (наиболее ценная жертва — наименее ценный напа­дающий). Остальные перемещения сортируются в три списка по значению. Хеш-таблица не будет задействована. Наша программа и так должна сосчи­тать на 6 полуходов, а отвлекаться на второстепенные вещи мы пока не бу­дем.

Читать »

Компоненты: достоинства и недостатки

Добавлено Дата: 5 February, 2011 категория: C#, Компоненты

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

Читать »

Ханойские башни

Добавлено Дата: 28 January, 2011 категория: Алгоритмы

Имеется 3 стержня: А, В и С. На стержень А нанизано п дисков так, что диск с меньшим диаметром всегда лежит поверх диска с большим. Говоря другими словами, на стержне А пирамида из дисков, сужающаяся вверх. Требуется переместить все диски на стержень В. Стержень С можно исполь­зовать в качестве вспомогательного. Основное условие состоит в том, что диск с большим диаметром не должен находиться поверх диска с меньшим.

Читать »

Настраиваемые свойства

Добавлено Дата: 17 December, 2010 категория: C#, Компоненты

Очень часто свойства компонента одновременно оказываются и настройками программы или системы. Например, свойства PortName и BaudRate компонента SerialPort, очевидно, являются настройками системы. Было бы очень неудобно хранить эти настройки в коде программы и перекомпилировать ее при изменении номера порта или скорости обмена.

Читать »

Выборочные продления Краткая характеристика расширений

Добавлено Дата: 8 December, 2010 категория: Игры, Теория

В полном широтном поиске, который мы рассматривали, глубина поиска задавалась при первом вызове рекурсивной функции и уменьшалась в каж­дом узле на 1. Таким образом, мы осуществляли полный перебор на неко­торую фиксированную глубину. Мы рассмотрели также устройство форси­рованного варианта, который вызывался при Depth = 0 и сглаживал эффект горизонта. Форсированный вариант просчитывал дальше наиболее сильные перемещения и давал приблизительную оценку позиции горизонта. Допус­тим, что при минимальном размере дерева перебора, т. е. при оптимальном порядке перемещений, для углубления счета на глубину N+1 нам необхо­димо рассмотреть в 20 раз больше позиций, чем при счете на глубину N. Это довольно приблизительно, но нам для рассуждений нужно отталкивать­ся от каких-то величин. Существует мнение, что увеличение глубины счета на один полуход повышает силу игры программы на разряд. Может, не сто­ит ломать голову над разными ухищрениями, а просто подождать, пока процессоры станут мощнее в 20 раз. Мы сможем считать на 9 полуходов, потом еще в 20 раз — мы сосчитаем на 10 полуходов. Бывают тактические последовательности, которые программа должна просчитывать значительно глубже. Например, если на доске существует форсированная угроза королю, то может потребоваться считать на 14 полуходов. Гроссмейстеры просчиты­вают некоторые варианты на 20 и более полуходов. Вряд ли мощность про­цессоров когда-либо возрастет до такого уровня, да и программы желатель­но писать сейчас, а не через 10 лет. Человек, когда просчитывает некоторые варианты, руководствуется множеством критериев, зависящих от его опыта. Он может просчитать ситуацию очень глубоко, проанализировав при этом минимальное количество позиций. Несмотря на то, что моделировать мыш­ление шахматиста мы не можем, существуют некоторые строки игры, про­счет которых можно продолжить по совершенно формальным признакам. Возникла простая идея — не сокращать глубину просмотра при некоторых ходах. Мы можем считать на 6 полуходов, но некоторые варианты будут рассмотрены значительно глубже. При каких же ходах не сокращается глу­бина счета? Если мы говорим о шахматах, то это, прежде всего, шах. При шахе игра как бы замирает и требует от противника немедленного ответа. Замедление счета при этом тоже минимальное, т. к. число легальных ходов под шахом ограничено, и узел будет обсчитан очень быстро. Продление все­го лишь шахов резко увеличивает силу игры программы. Считая на 6 полу­ходов, она способна обнаружить глубокие форсированные маты и другие комбинации, основанные на угрозе королю и приводящие к выигрышу ма­териала. Пример функции счета, продлевающей шахи:

Читать »