Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

СообЧа. Программирование на С++


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

СообЧа. Программирование на С++
Выпуск 4: как создать Windows 2001?

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

Ну да ладно о плохом, пора переходить к хорошему. Т.е. к сегодняшнему выпуску.

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

Прежде всего, хочу сказать несколько слов про голосование. По предварительным результатам с огромным отрывом победили:

  • Изучение материала в виде лекций
  • Изучение WinAPI

Поэтому со следующего выпуска начнем постепенно рассматривать WinAPI. Хочу сказать, что я здорово позабавился, читая письма по поводу голосования. Некоторые подписчики предлагали мне рассмотреть в рассылке создание ТАКИХ программ, что у меня глаза на лоб лезли. Вот, например, выдержки из письма одного читателя (Ф.И.О. приводить не буду):

...Я слабо знаю C++ ... программировал под Дос ... а в качестве проги для изучения предлагаю какую-нить операционку типа Win9X ... поможет полностью разобраться в С++...

Я как прочитал, у меня чуть инфаркт не случился. "Вот так, - думаю, - ничего себе." Подобную амбициозность я и представить себе не мог. Обычно, в качестве примеров рассматриваются простенькие программы: текстовые редакторы, файловые менеджеры, ну, в крайнем случае почтовые клиенты, но уж никак не операционные системы. И дело не в том, что эта задача очень сложная, а в том, что для разработки операционной системы требуется своего рода компьютер-полигон для испытаний. Ведь ваша операционная система должна определенным образом отформатировать винчестер, создать на нем загрузочную область и (самое главное) файловую систему, кроме того неизбежны постоянные конфликты с памятью (видеопамятью в том числе), BIOS, да мало ли еще чем.
Спрашивается, где вы будете свой шедевр тестировать? На своем домашнем компьютере? Я бы не рискнул.

Если у вас есть комментарии по поводу всего вышесказанного, шлите письма по адресу
pnezamaev@hotmail.com?Subject=Developing OS

Еще пришло мне письмо с просьбой указать ссылку на книгу Чарльза Петзолда "Программирование в Windows". Вот эта ссылка:
http://price.infonet.by/download.asp?file=721

Читаем дальше:

Здравствуйте Павел!

Скажи пожалуста. Я подписался на Вашу рассылку, а языка С я вообще не знаю. Посоветуйте пожалуста, какие книги купить по С (DOS) и С++, которые, по вашему мнению, достойнее всего для начинающего программиста.

Спасибо.

Ну, например:

  • М. Хаймен "Borland C++ для чайников" (это для самых самых чайников)
  • П. Франка "C++ учебный курс" (несколько необычная методика изучения)
  • Б. Страуструп "Язык программирования C++" (прекрасная книга от создателя языка)

В особенности рекомендую последнюю книгу - действительно хорошее пособие для начинающих и опытных программистов. Хотя, если вы вообще не представляете себе, что такое программирование, то лучше обратиться к первой книге - название говорит само за себя.

Hello Павел,

Скажи пожалуйста, где найти IDE для языка С (именно Си). Я учусь программировать с азов и не могу найти подходящую среду под MS-DOS типа Turbo Pascal 7.0 для pascalя или Quick BASIC 4.5 для basicа. Я бы зря не побеспокоил, но учить азы Си, к примеру, на Borland C++ 5 крайне неудобно.

Не понимаю, почему на Borland C++ учить азы C неудобно. Если вы имеете в виду Borland C++ для Windows, то не забывайте, что существует и версия для DOS под названием Borland C++ 3.1 (хотя и она содержит IDE для разработки Windows-приложений). Разработанная корпорацией Borland (www.borland.com), эта IDE является одним из лучших инструментов для создания DOS-приложений и изучения языка C/C++. Правда, не знаю, где ее можно достать в Интернете, поэтому рекомендую Turbo C++ 2.0. Эта IDE еще проще и удобнее для изучения C/C++ и распространяется бесплатно. Зарегистрируйтесь на сайте Borland Community (community.borland.com) и зайдите на community.borland.com/museum , откуда вы и сможете скачать Turbo C++, ну а заодно и просто Turbo C. Если кому-то покажется странным, что Borland (а ныне Inprise) раздает свои программы задарма, то тут ничего удивительного нет - дело в том, что эти программы продавать уже бесполезно - их никто не купит, а если их начать раздавать бесплатно, то люди ради интереса скачают (все любят бесплатный сыр), посмотрят и скажут: "Эге, а неплохие программы делала Borland в свое время... Может, стоит у них купить Borland C++ Builder?". И потом эти люди посещают магазины по продаже программного обеспечения, выкладывают сотни долларов за Borland C++ Builder и работают, ощущая время от времени чувсто гордости и правильности покупки. К сожалению, к россиянам это редко относится: вместо того, чтобы купить лицензионный Borland C++ Builder, они лучше купят какой-нибудь пиратский компакт-диск "Все продукты от Борланд" за сотню рублей и вместо одного C++ Builder'а будут наслаждаться еще и Delphi и Borland C++ и Turbo Assembler и еще кучей Borland'овских программ.

Hello Павел,

Подскажи пожалуйста, как заставить на Си(именно Си) программу просто ждать эникей или интер(аналог readln; на pascalе)?

Ну наконец-то чисто практический вопрос. Внизу вашему вниманию предлагаются два примера программы, одна для anykey, т.е. для "любой клавиши" , вторая для [Enter].

/* Программа для любой клавиши */
#include <stdio.h>
#include <conio.h>
int main()
{
  while(!kbhit());
  return 0;
}

/* Программа для [Enter] */
#include <stdio.h>
#include <conio.h>
#define ENTER 13 /* Код клавиши ENTER */
int main()
{
  char key; /* Считываемая клавиша */
  do {
    key = getch();
  } while(key != ENTER);
  return 0;
}

Данный пример хорош тем, что его можно использовать не только для [Enter], но и для любой другой клавиши. Достаточно вместо макроопределения ENTER задать другое макроопределение, например #define ESC 27 (для клавиши [Esc]) и в цикле заменить ENTER на ESC, и программа будет работать до тех пор, пока ей не надоест. Шучу, на самом деле до тех пор, пока вы не нажмете клавишу ESC. Уловили суть? Теперь вы можете определить выход из программы по своему собственному усмотрению. Например, вы можете сделать так, что пользователю придется нажать [Alt+F7], чтобы выйти из программы, правда, для этого нужно знать код клавиши [Alt+F7]. Для того, чтобы узнать нужный код клавиши я написал программу KeyCode. Вот ее исходный код, откомпилируйте его и пользуйтесь:

/* KeyCode: Программа определяет код нажатой клавиши */
#include <stdio.h>
#include <conio.h>
#define ESC 27 /* Код клавиши [Esc] */
int main()
{
  char key; /* Считываемая клавиша */
  clrscr(); /* Очистка экрана */
  do {
    key = getch();
    if(key == 0) /* Проверка для управляющей клавиши */
    {
      key = getch();
    }
    printf("%d%c", key, '\n');
  } while(key != ESC);
  return 0;
}

Как, вы не знаете, что такое управляющие клавиши? Это [F1], [F2], [Tab], [Home], [Insert], [Вверх/Вниз/Влево/Вправо] и пр., т.е. те самые клавиши, которые помогают нам редактировать документы, в частности наши любимые программы.

Ну вот и все на сегодня. Если что, пишите. Да, кстати, не забывайте, что со следующего выпуска мы начнем изучение WinAPI, так что будьте готовы: обзаводитесь компиляторами, редакторами и таблетками от головной боли.


О рассылке "СообЧа. Программирование на C++".
Рассылки Subscribe.Ru
СообЧа. Программирование на С++

Ведущий: Павел Незамаев pnezamaev@hotmail.com

Темы писем:
Мои спонсоры и начальники

Рассылка СообЧа: http://subscribe.ru/catalog/comp.soft.prog.soobcha
Сайт СообЧа: http://www.soobcha.boom.ru и его авторы
Егор Гостев: evrica@permonline.ru?subject=Soobcha
Алексей: mreset@mail.ru
Авторское право (C) 2000 Павел Незамаев pnezamaev@hotmail.com

http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное