Донецкий техникум промышленной автоматики

Найпростіші програми і їх вихідні для DOS / Windows

  1. Гігантський каталог програмного забезпечення на www.yellow-gold-soft.com
  2. Турбо-Паскаль 7.0
  3. Мова Сі
  4. Мова Сі ++
  5. Assembler
  6. Perl - універсальна мова для обробки текстової інформації
  7. Windows Scripting Host
  8. Visual Basic Script

Головна сторінка

Головна сторінка розділу для програмістів-аматорів

Гігантський каталог програмного забезпечення на 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). Автор постійно тримає ваш розум в деякому приємному напруженні, змушує мислити і здогадуватися! Правильне чергування теорії і вправ (і талант автора) ставить цю книгу в один ряд з музикою Бетховена або Чайковського.

Сьогодні я відклав в довгий ящик ассемблерного самоосвіта за підручником В. І. Юрова. Трохи спонтанний за викладом матеріалу підручник, і я б радив його читати або після прочитання Пітера Абеля, або доведеться вишукувати пояснення до незрозумілих і незнайомим термінам з інших підручників, тільки почавши його вивчати. Але прикро те, що на початку підручника автор В. І. Юров не попереджає читача про те, що потрібно бути знавцем програмування під 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-сторінок» (видавництво «Фоліо», автори - С. В. Глушаков, І. А. Жакін, Т. С. Хачиров).

Сподіваюся, вам сподобалася ідея писати найпростіші програми, що може непомітно перерости в любов до програмування.

За що я люблю Сі (який недавно вивчав і перейшов до Сі ++)?
Що ще потрібно для реалізації телефонної книжки?
Як це все пишеться, запускається і працює?