Главная страница раздела для программистов-любителей
Здесь я собираю свои первые простейшие програмки для DOS/Windows ради того, чтобы поделиться волнующим опытом с такими же новичками-любителями в программировании. Исходный код их будет доступен. В силу элементарной простоты я не буду излишне комментировать исходный код. Алгоритм проще некуда. Но если у кого-нибудь в письмах возникнут вопросы, то я опубликую на этой страничке подробные комментарии.
Исходный код калькулятора на Си (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, в котором по умолчанию предусмотрена сортировка по алфавиту и даже поиск! Что ещё нужно для реализации телефонной книжки?
|
Программа издаёт непрерывный звук 440 Гц из колонок громкоговорителей. Её можно увидеть только в списке процессов при Ctrl+Alt+Delete (при желании Win32-программисту можно скрыть её даже из этого списка). Сложность для вашей жертвы в том, что в списке процессов есть ещё очень похожее название, так что даже бывалый юзер не сразу поймёт, что ему надо остановить! Программа сделана как чистое Win32-приложение. В кодах нужно убрать две функции — ShowWindow(...) и UpdateWindow(...), после чего программу не будет видно ни в виде окна, ни на панели задач. Для генерации звука используется функция PlaySound(...).
Вы можете скачать себе большинство исходников из этой книги (см. на рисунке). Файлы названы согласно номерам страниц. Они почти все проверены на работу под эмуляцию DOS на Windows XP. Некоторые детали пришлось изменять, чтобы программы работали на все 100%. Не удалось пока скомпоновать программу на Си вместе с ассемблерной подпрограммой.Скачать исходники для изображённой справа книги |
Сегодня я отложил в долгий ящик ассемблерное самообразование по учебнику В. И. Юрова. Немного спонтанный по изложению материала учебник, и я бы советовал его читать либо после прочтения Питера Абеля, либо придётся выискивать объяснения к непонятным и незнакомым терминам из других учебников, только начав его изучать. Но обидно то, что в начале учебника автор В. И. Юров не предупреждает читателя о том, что нужно быть знатоком программирования под Windows на языках высокого уровня! Вот мне и пришлось начать изучать Си. Потом ещё несколько месяцев уйдёт на поверхностное знакомство с Си++. Только после этого можно будет начать делать осторожные шаги в программирование под Windows. И только потом можно продолжить изучение второй половины учебника В. И. Юрова! Во как непросто!!!
Между прочим язык ассемблера уважают хакеры и особенно писатели вирусов.
Вам я предлагаю ознакомиться с исходником моей телефонной книжки. Его ценность в том, что там очень подробные комментарии. Вы просто делаете средствами MASM или TASM exe-шный файл. И у вас получается телефонная книжка весом в несколько килобайт. Не нужны никакие другие файлы, кроме этого одного exe-шника. Исходник с базой телефонов нужно редактировать в редакторах, поддерживающих DOS-кириллицу (Ultra Edit, PSPad, Volkov Commander, Norton Commander, DOS Навигатор и т.п.), потому что важно иметь возможность видеть русские буквы, а не кракозябры.
Исходник телефонной книжки на языке ассемблера
Образец телефонной книжки (три записи - Иванов, Петров, Сидоров)
Для запуска программы кликаете по ней дважды - запускается DOS-подобное окошко. Найдите комбинацию клавиш для переключения клавиатуры на русские буквы. Введите пет или ПЕТ - и программа выдаст вам телефон Петра Петрова.
Исходник вышеупомянутой программы
Таблица умножения 16-ричных чисел
Увы, чтобы 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 байт)
Теперь остаётся разместить его в любом удобном месте. Дважды кликните по нему. Всё должно запуститься. Попробуйте модифицировать калькулятор, заменив мои имя и фамилию своими, добавив туда взятие логарифмов, степеней и т.п..
Как это всё пишется, запускается и работает?
Например, вы пишите программу-скрипт на языке 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 байт)
Распологайте его потом где хотите (например на рабочем столе) и запускайте (после антивирусных проверок) двойным кликом.
VBS-калькулятор, запускаемый непосредственно в браузере Microsoft Explorer
При написании этого скрипта была использована книга «Программирование Web-страниц» (издательство «Фолио», авторы — С. В. Глушаков, И. А. Жакин, Т. С. Хачирев).
В раздел для программистов-любителей