Простейшие програмки для DOS/Windows

Главная страница

Главная страница раздела для программистов-любителей

Гигантский каталог программного обеспечения на www.yellow-gold-soft.com

Гигантский каталог программного обеспечения на этом сайте


Здесь я собираю свои первые простейшие програмки для DOS/Windows ради того, чтобы поделиться волнующим опытом с такими же новичками-любителями в программировании. Исходный код их будет доступен. В силу элементарной простоты я не буду излишне комментировать исходный код. Алгоритм — проще некуда. Но если у кого-нибудь в письмах возникнут вопросы, то я опубликую на этой страничке подробные комментарии.

Турбо-Паскаль 7.0

С этого языка я возобновил своё знакомство с программированием. До сих пор я питаю тайную любовь к красивому и понятному синтаксису Паскаля. Где-то в глубине души я долго надеялся изучить Дельфи только из-за того, что там используется изящная словесность Паскаля. Эти языки и инструменты хорош ещё и тем, что в них заложена строгая проверка типов данных, что защищает программиста от множества трудноуловимых ошибок. Предлагаю вам проанализировать мой простейший Паскаль-калькулятор:
Исходный код калькулятора на Паскале (2,5 кб)

Язык Си

Это очень мощный язык! Ещё более мощным является Си++. Си является подмножеством языка Си++. Учебники по Си++ обычно в пять раз толще учебников по Си. За что я люблю Си (который недавно изучал и перешёл к Си++)? За то что некоторые возможности Си максимально приближены к низкоуровневым возможностям языка Ассемблера! Более того, синтаксис языка Си расчитан именно на работу профессионала, а не студента. Это ощущается в том, что вы тратите порой меньше времени на работу руками на клавиатуре для выполнения одной и той же задачи, чем в Паскале! За эффективность и быстроту компилируемого кода приходится платить тем, что программируя на Си/Си++, вырастает вероятность трудноуловимых ошибок по сравнению с работой на языках типа Паскаль или Java.
Компилировал я некоторые нижеприведённые программы средствами Borland C++ 3.1.

Исходный код калькулятора на Си (910 байт)

А вот консольная Windows-программа для замены коротких тире длинными при условии, что эти тире окружены пробелами с обеих сторон.
Полезно при форматировании текстовых файлов. Программа запускается в командной строке в виде:
alt_0151 имя_файла-источника. Файл с обработанным текстом будет иметь почти такое же имя, только оно будет начинаться с символа подчёркивания. Рекомендую в настройках командной строки делать фон белым, а шрифт чёрным. Тогда для зрения не будет никакого стресса.
Исходник

Консольные Windows-программы для конвертации текстовых файлов из DOS-866 в Win-1251 кодировку и наоборот.
Программы запускаются в командной строке в виде:
doswin (или windos) имя_файла-источника. Файл с переконвертированным текстом будет иметь почти такое же имя, только оно будет начинаться с символа подчёркивания.
Скачать архив исходников и программ (36 кб)

Ещё одна программа - ТЕЛЕФОННАЯ КНИЖКА. В отличие от ассемблерного крошечного аналога (см. ниже), эта программа уже позволяет сохранять и сортировать всю базу телефонов и заметок в отдельном файле (который автоматически создаётся после первого запуска). Память на 10 000 записей (легко меняется в исходном тексте). Удобный поиск. Я пользуюсь ей с большим удовольствием в командной строке Windows. Впрочем, уверен, что эту программу легко переделать для Linux, MAC OS и для других систем. Кстати, массив аж на 800 000 байт удалось сделать только в Borland C++ 5.02 (этот исходник расчитан на компиляцию в Borland Builder C++)! Эта программа уже не для DOS, а консольная Windows-программа. Но её можно легко перекомпилировать в Turbo C++ именно для DOS, изменив размер массива до 32000 символов (байт). Рекомендую в настройках командной строки делать фон белым, а шрифт чёрным. Тогда для зрения не будет никакого стресса.
Исходник

Внимание! Было обнаружено, что консольные приложения, скомпилированные на Borland Builder, не запускаются на компьютерах, где этот Borland Builder не установлен. Вот поэтому я привожу здесь
версию телефонной книжки, сделанной в Visual Studio.NET:
Исходник
Скачать программу (48 кб)


Язык Си++

А это ещё более мощный язык! Повторяю, Си является подмножеством языка Си++. Учебники по Си++ обычно во много раз толще учебников по Си. Почти всё из Си осталось в Си++. Преимуществом этого языка можно назвать то, что вы можете приспособить язык полностью под свои нужды. Освоив принципы объектно-ориентированного программирования, можно очень даже облегчить создание сложных и крупных программ.

Вот пример улучшенной телефонной книжки (снова консольное приложение). Засчёт библиотечных встроенных в язык Си++ классов удалось очень облегчить себе работу. Теперь длина строк данных в этой программе может достигать даже 4 миллиардов символов. Сортировку даже не пришлось программировать, это делает за программиста функция sort(), встроенная в класс vector. В общем, кайф неимоверный. Программа компилировалась на Visual Studio.NET 2002. Вообще, такие консольные программы можно компилировать в командной строке, не открывая даже Visual Studio. Для этого заходите в командной строке в папку C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin , после этого запускаете файл vcvars32.bat, и затем можете компилировать программы такой командой:
cl name_of_file.cpp (в любой папке, просто команда cl станет одной из команд для этого экземпляра командной строки).
Исходник
Скачать программу (180 кб)

Эту программу можно использовать и в качестве словаря очень больших размеров. Замените в исходнике слова в меню на более подходящие. В текстововом файле phonebook.txt (его тоже ведь можно переименовать в исходнике программы) можно вручную вставить методом copy-paste тысячи строчек англо-русского словаря. Главное, чтобы разделителем между разными словами-переводами были символы перевода строки (0D, OA - это в шестнадцатиричных числах). Это легко делается нажатием в виндоузовском блокноте на клавишу ENTER.


Самая удобная версия телефонной книжки (настоящее Windows-приложение, написано средствами MFC-библиотеки в Visual C++.NET)

Использовались встроенные в MFC классы CString, CStringArray, CListBox — очень удобные классы, особенно CListBox, в котором по умолчанию предусмотрена сортировка по алфавиту и даже поиск! Что ещё нужно для реализации телефонной книжки?
Скачать самую удобную версию телефонной книжки (около 159 кб в zip архиве, распакуйте, разместите exe и hlp файлы в одну папку, там же при запуске программы появится файл phonebook.txt, который можно даже править вручную!)
Если нужно будет подробное описание, как делалась книжка (вкл. все исходники), напишите мне и я размещу это на отдельной страничке этого сайта.


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

Программа издаёт непрерывный звук 440 Гц из колонок громкоговорителей. Её можно увидеть только в списке процессов при Ctrl+Alt+Delete (при желании Win32-программисту можно скрыть её даже из этого списка). Сложность для вашей жертвы в том, что в списке процессов есть ещё очень похожее название, так что даже бывалый юзер не сразу поймёт, что ему надо остановить! Программа сделана как чистое Win32-приложение. В кодах нужно убрать две функции — ShowWindow(...) и UpdateWindow(...), после чего программу не будет видно ни в виде окна, ни на панели задач. Для генерации звука используется функция PlaySound(...).


Assembler

Вообще ассемблером принято называть инструмент программиста, позволяющий превращать текст мнемонического кода низкоуровневой программы в саму реально работающую программу. А язык, на котором пишут самые низкоуровневые программы правильно называть языком ассемблера. Низкоуровневое программирование - это программирование, максимально приближенное к "железу", то есть к сигналам микросхем компьютера и особенно к центральному процессору. На сегодняшний день я уже изучил книгу Питера Абеля про такое вот низкоуровневое программирование на языке ассемблера для DOS. Очень хорошая книга (хоть и для архаичной системы DOS). Автор постоянно держит ваш ум в некотором приятном напряжении, заставляет мыслить и догадываться! Правильное чередование теории и упражнений (и талант автора) ставит эту книгу в один ряд с музыкой Бетховена или Чайковского.

Вы можете скачать себе большинство исходников из этой книги (см. на рисунке). Файлы названы согласно номерам страниц. Они почти все проверены на работу под эмуляцию DOS на Windows XP. Некоторые детали пришлось изменять, чтобы программы работали на все 100%. Не удалось пока скомпоновать программу на Си вместе с ассемблерной подпрограммой.Скачать исходники для изображённой справа книги

Сегодня я отложил в долгий ящик ассемблерное самообразование по учебнику В. И. Юрова. Немного спонтанный по изложению материала учебник, и я бы советовал его читать либо после прочтения Питера Абеля, либо придётся выискивать объяснения к непонятным и незнакомым терминам из других учебников, только начав его изучать. Но обидно то, что в начале учебника автор В. И. Юров не предупреждает читателя о том, что нужно быть знатоком программирования под Windows на языках высокого уровня! Вот мне и пришлось начать изучать Си. Потом ещё несколько месяцев уйдёт на поверхностное знакомство с Си++. Только после этого можно будет начать делать осторожные шаги в программирование под Windows. И только потом можно продолжить изучение второй половины учебника В. И. Юрова! Во как непросто!!!

Между прочим язык ассемблера уважают хакеры и особенно писатели вирусов.

Вам я предлагаю ознакомиться с исходником моей телефонной книжки. Его ценность в том, что там очень подробные комментарии. Вы просто делаете средствами MASM или TASM exe-шный файл. И у вас получается телефонная книжка весом в несколько килобайт. Не нужны никакие другие файлы, кроме этого одного exe-шника. Исходник с базой телефонов нужно редактировать в редакторах, поддерживающих DOS-кириллицу (Ultra Edit, PSPad, Volkov Commander, Norton Commander, DOS Навигатор и т.п.), потому что важно иметь возможность видеть русские буквы, а не кракозябры.

Исходник телефонной книжки на языке ассемблера
Образец телефонной книжки (три записи - Иванов, Петров, Сидоров)

Для запуска программы кликаете по ней дважды - запускается DOS-подобное окошко. Найдите комбинацию клавиш для переключения клавиатуры на русские буквы. Введите пет или ПЕТ - и программа выдаст вам телефон Петра Петрова.


И ещё один исходник для изучения. По мотивам 18 главы книги Питера Абеля. Немного переделанная программа для уничтожения файлов. В отличие от оригинала она не спрашивает, удалять ли файл, а просто удаляет... Я не публикую здесь exe-файл ради того, чтобы ею не воспользовались любители шутить над друзьями. Только для ознакомления с низкоуровневым программированием. В данном варианте исходника программа расчитана на уничтожение файлов в корневом каталоге на обычной дискете. Впрочем на уничтожение только тех файлов, у которых нет никаких защищающих атрибутов (типа для чтения и т.п.)

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

Таблица умножения 16-ричных чисел


Perl — универсальный язык для обработки текстовой информации

Очень интересным может оказаться изучение возможностей скриптового языка Perl. Он хорош тем, что скрипты написанные на этом языке могут успешно работать на самых разных операционных системах. Насколько я могу судить по объявлениям работодателей, спрос на специалистов по языку Perl ещё имеет место быть. Хотя никто не может точно прогнозировать судьбу языков программирования даже на ближайшие 10 лет. Многие красивые идеи умерли из-за банальной нехватки денег. А потом уже эти идеи не стоило реанимировать из-за рождения достойных и более сильных идей-конкурентов.

Увы, чтобы Windows была в состоянии интерпретировать ваши программы-скрипты, написанные на языке Perl, вам придётся поискать и скачать ActivePerl-5.8.4.810-MSWin32-x86.msi (или более свежую версию). Поверьте, в поисковике Yandex вам сразу предложат множество адресов для скачивания. После скачивания проинсталлируйте этот пакет. Хорошей документации по языку Perl в сети достаточно много.

Немного об интепретаторах и компиляторах

Оказалось, что многие задачи (даже вычислительные) легко программировать безо всякой компиляции, если пользоваться такими средствами, как Perl или Windows Scripting Host. Если вы пишете программу на Pascal или C/C++, то для её применения приходится компилировать исходный код в исполняемый бинарный файл (например в exe-шный файл для Windows). Как правило, такие бинарники (т. е. двоичные файлы) весят в сотни и тысячи раз тяжелее, чем исходный код. Дело в том, что в бинарнике компьютер получает доскональные инструкции на языке машинных кодов. Машинные коды максимально подробно приказывают компу делать весь набор действий. Это хорошо для быстродействия в игрушках или серьёзных увесистых приложениях. Но вот для такой простой тренировочной задачи как сложить, вычесть, умножить, разделить можно воспользоваться средствами интерпретируемых языков программирования. Вы пишете текстовую инструкцию на таком языке, потом после запуска такого скрипта специальная программа-интерпретатор молниеносно разъясняет компу на машинном языке, как ему надо поступать для выполнения ваших капризов. Скрипт весит в сотни и тысячи раз меньше бинарного файла (который вы могли бы создать средствами компилирующего языка программирования)

Итак, снова о Perl

Perl-скрипт (или если хотите программу) можно написать в любом текстовом редакторе, дать ему уникальное удобное имя с расширением .pl

Попробуйте посмотреть в Блокноте код простого тренировочного калькулятора, написанного мной на языке Perl:

Скачать Perl-калькулятор (797 байт)

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


Windows Scripting Host

Оказывается, в системе Windows есть встроенный интерпретатор скриптовых языков! Об особенностях интерпретируемых языков можно посмотреть выше. Дело даже не в том, что браузер Microsoft Explorer является интерпретатором JavaScript, JScript и Visual Basic Script. Какова же была моя радость, когда выяснилось что в Windows есть встроенный интерпретатор скриптовых файлов с расширением .vbs и .js! Точно также как и в Linux вы можете программировать для своих нужд простейшие скрипты, которые в идеале могут помогать решать рутинные задачи. Более того, языки этих скриптов почти полностью идентичны VBS и JS, предназначенным для браузерного применения. Некоторые хакеры умудряются писать на этих языках вирусные скрипты. Впрочем, антивирусы отслеживают малейшие попытки скриптов что-либо записать или переписать. И даже простая попытка программы-скрипта автоматически создавать безобидный текстовый файл воспринимается антивирусом в штыки. Приходится либо отключать антивирус для эксперимента со скриптами, либо регистрировать в антивирусе свою программку-скрипт как дружескую и безопасную.

Как это всё пишется, запускается и работает?

Например, вы пишите программу-скрипт на языке Visual Basic Script и сохраняете её как простой текстовый файл, только расширение файла должно быть .vbs (соответственно, если вы писали на Java Script, то и расширение должно быть .js). Писать текст программы можно в Блокноте. Допустим, вы создали файл programmka.vbs . Теперь, если вы точно знаете, что вы написали безопасную программу, можете смело кликать по ней дважды левой кнопкой мыши. Она запустится прямо пред вашими очами и никакого браузера для этого не нужно! Windows сам умеет интерпретировать такие скрипты!!! Если же вы программируете скрипты на языке Perl, то для их работы без скачанного и установленного интерпретатора в системе Windows не обойтись. А вот для работы скриптов на языках VBS и JS Windows сам знает как их интерпретировать! Это просто замечательно.

Вот вам простой пример. Скачайте простейший калькулятор, чтобы посмотреть, как это всё работает. Для спокойствия совести откройте его в Блокноте и убедитесь, что все команды там безобидны. Если вы вообще ничего там не поймёте, то можете проверить этот крошечный скрипт вашим любимым антивирусом. Чтобы научиться программировать всякие полезные скрипты, поищите в интернете учебники и статьи на темы "Windows Scripting Host", "Visual Basic Script", "Java Sript". Первая тема из названных — самая важная. Остальные две темы затрагивают по большей части программирование для web. А я уже упоминал о небольших отличиях между применением VBS(и JS) в web и применением их для Windows (минуя браузер, напрямую, как обычные программы).

Скачать простейший калькулятор (411 байт)

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


Visual Basic Script

Также как и Java Script предназначен для добавления динамических возможностей в html-файлы. Это - интерпретируемый язык, браузер сам распознаёт и отображает всё, что вы запрограммировали. Слабая сторона VBS заключается в том, что не все браузеры умеют его интерпретировать (поэтому лучше всё таки применять Java Script). Сильная сторона в том, что синтаксис VBS очень похож на синтаксис VB (Visual Basic).

VBS-калькулятор, запускаемый непосредственно в браузере Microsoft Explorer
При написании этого скрипта была использована книга «Программирование Web-страниц» (издательство «Фолио», авторы — С. В. Глушаков, И. А. Жакин, Т. С. Хачирев).


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

В раздел для программистов-любителей

К главной странице


Hosted by uCoz