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

Служба Рассылок Городского Кота


Служба Рассылок Городского Кота

Программирование для начинающих

Выпуск 1

29 MAY 2000

 
 
 
Ведущий рассылки: Вячеслав Мацнев
e-mail: stac@stacmv.net
Здравствуйте, уважаемые подписчики!
Приветствую Вас и представляю первый выпуск рассылки "Программирование для начинающих". Сегодня Вы познакомитесь (если пока не знакомы) с некоторыми основными понятиями из области вычислительной техники (ВТ). Это в рубрике ТЕОРИЯ. Еще сегодня у нас разговор об операционной системе DOS и знакомство с HTML.

ОТСЕБЯТИНА

ВАЖНО!

В прошлых выпусках я забыл затронуть один важный вопрос наших с вами взаимоотношений: переписку. Надо сказать, что это распространенная ошибка авторов рассылок. Исправляюсь.. По умолчанию, все ваши письма я считаю конфиденциальными и не публикую их в рассылке, за исключением небольших цитат с указанием только имени автора. Если Вы хотите, чтобы Ваше письмо прочли все, то, пожалуйста, указывайте явно, мол, публиковать письмо , мое , другие имена и адреса .Это позволит избежать недоразумений. Спасибо за понимание.

ТЕОРИЯ

Данный раздел посвящен основам программирования. Если Вам не знакомы такие понятия, как алгоритм или язык программирования, то имеет смысл ознакомиться с ними. Это очень важно для понимания последующего материала.

Сегодня в разделе ТЕОРИЯ:

  1. Как работает компьютер?(основные понятия)
  2. Двоичная система счисления
  3. Домашнее задание

1.Как работает компьютер?

Компьютер - очень сложное устройство. И не мне Вам рассказывать о том как он работает. На самом деле программисту (особенно прикладному) не обязательно знать, как работает компьютер "физически", как электрические сигналы передаются между микросхемами и т.п. Но очень важно знать как компьютер работает "логически", как осуществляется взаимодействие между компонентами компьютера, между его элементами. Вот о них и поговорим. Существует несколько моделей описания компьютера и его компонентов. Например, можно описывать компьютер на уровне транзисторов, а можно на уровне т.н комплектующих. Таких моделей достаточно много. Скажем, в каждой области применения компьютеров существует одна или несколько таких моделей описания. Со временем вы познакомитесь со многими из них. На данном этапе достаточно знать, что компьютер (любой, а не только PC) состоит из процессора и оперативной памяти, медленной или внешней памяти и устройств ввода-вывода информации. Эта схема была предложена Джоном фон Нейманом в 1946 году. Давайте применим схему фон Неймана к РС. Итак мы имеем процессор (любимый вами Pentium II или Intel 80386) и оперативную память (кучка SIMMов или несколько DIMMов) внутри системного блока. То что там есть еще какая-то материнская плата и прочее барахло, нам сейчас не интересно. Исключение: медленная или внешняя память (накопитель на гибких магнитных дисках (НГМД) или "флоп(п)ик" и накопитель на жестких магнитных дисках (НЖМД), в народе известный, как "винт". Есть еще CD-ROM drive, ZIP drive и т.д. Это все тоже внешняя память. Устройства ввода-вывода: дисплей или консоль (монитор + клавиатура) и устройство печати (принтер). Конечно, устройств ввода-вывода (УВВ) гораздо больше, чем я назвал. Некоторые из них осуществляют только ввод информации (мышь, джойстик, микрофон, сканер), только выводят ее (принтер, плоттер, акустические колонки) или делают и то и другое (модем, те же "флопики" с "винтами"). Давайте посмотрим как эти штуки работают (очень-очень-очень обобщенно). Чтобы лучше понять дальнейший текст лучше избавиться от Windows c его назойливым графическим интерфейсом или других подобных систем. Запустите DOS на своем компьютере. Как только Вы увидите командную строку (строку для ввода команд), Вы сразу поймете как работает дисплей. Пользователь (Вы) набирает команду на клавиатуре (format m:) и жмет на специальную кнопку для передачи команды на исполнение. Допустим, эта кнопка - Enter. В случае ошибки в набранной команды, на дисплее Вы увидите сообщение об ошибке ("Диск не найден"). Вы можете исправить ошибочную команду или ввести новую. В нашем примере, надо нажать F3 (в командной строке появится последняя введенная команда: format m:) и стереть m: нажав дважды на BS(Back Space, Забой). Затем набрать c: и снова нажать Enter. Впрочем, не рекомендую повторять дейcтвия из примера, особенно, если Вы пользуетесь чужим компьютером, т.к. Ваши отношения с его хозяином могут резко ухудшиться.

Счетно-решающее устройство (СРУ), ...извините,
ПРОЦЕССОР - сердце компьютера. Он отвечает за обработку информации. Именно процессор осуществляет управление ходом вычислений, выполнение вычислений, управление взаимодействием остальных компонентов компьютера. Т.е. именно процессор выполняет инструкции пользователя или программы. Естественно, требуется место для их (инструкций) хранения и помещения результатов выполнения этих инструкций. В качестве такого места используется оперативное запоминающее устройство (ОЗУ или RAM - Random Access Memory - память произвольного доступа), проще - память.
ПАМЯТЬ- хранилище информации, необходимой для решения поставленной задачи. Это команды, которые должны быть выполнены, и данные, которые следует обработать. Память представляется огромным (но конечным) числом ячеек, в которых содержится (или не содержится) информация: код или данные. Каждая ячейка - некий электронный элемент, который может находиться в двух состояниях: "включен" и "выключен". Любую информацию можно закодировать в виде последовательности нулей и единиц (0 - "выключен" и 1 - "включен"). В таком закодированном виде информация хранится в памяти компьютера. Для измерения количества информации используется единица измерения БИТ. Один бит - это количество информации, которым описывается состояние "включен" или "выключен"(0 или 1). Слово "бит" произошло от binary digit (двоичная цифра). Восемь бит (внимание! Восемь бит, а не восемь битов, но два (три, четыре) бита) образуют более крупную единицу информации - БАЙТ. Байты удобны при работе с символьной информацией (с текстами), так как каждый символ кодируется восьмиразрядным (не путать с восьмизарядным) двоичным числом. Разряд - математическое понятие. Например, для десятичной системы счисления разряды имеют названия. Это единицы, десятки, сотни, тысячи, десятки тысяч,... Их изучают в первом классе школы, если помните. Так, 34 - двухразрядное число (в десятичной системе счисления) и 34=100010 - шестиразрядное (в двоичной системе счисления). Как видите, число 34 должно занять в памяти компьютера шесть бит. Но обычно так не бывает. Чаще всего информацию измеряют в байтах и кратных байту единицах измерения (килобайт, мегабайт,...). Поэтому число 34 будет записано как 00100010 (добавлены два ведущих нуля). Что то я отвлекся. Продолжим разбираться с единицами измерения информации. Как я сказал раньше, обычно для измерения количества информации (например, объема памяти компьютера) используются более крупные, чем байт, единицы измерения : килобайт (210 байта), мегабайт (210 килобайта), гигабайт (210 мегабайта), терабайт (210 гигабайта). Они обозначаются Кбайт (по-английски - Kbyte или Kb), Мбайт (Mb), Гбайт (Gb) и Тбайт (Tb) соответственно. Напомню, что 210=1024. Вообще программистам часто приходится иметь дело со степенями двойки, так как двоичная система счисления - основная для компьютера. А Вы, наверное, думали, что шестнадцатеричная. Шестнадцатеричную систему придумали для удобства, а двоичная определяется электрической природой современных компьютеров. Кроме того, 16=24. Итак, информация (код программы и данные) хранится в оперативной памяти (RAM). Ее, как известно, мало не бывает, т.е ее объем ограничен. К тому же рри отключении питания, содержимое этой памяти теряется. В большинстве случаев программы и данные предназначены для многократного использования, и было бы крайне неудобно и не разумно вводить их после каждого нового включения компьютера. Чувствую, что не все понимают, о чем речь, так как то, о чем я только что сказал очень не обычно в конце 20 века. Представьте, захотелось Вам поиграть в Quake II или набрать пару-тройку отчетов в Word'e. Включаете компьютер. В простеньком текстовом редакторе набираете код (программу) Windows, Quake II или того же Word'a. Играете (набираете тексты), выключаете компьютер. Назавтра повторяете тоже самое. Все это несколько необычно, неправда ли? Но были времена, когда именно так и делали. Тогда, конечно же, не было ни Q2, ни Windows. Помню, был такой предмет в школе - информатика. В нашем компьютерном классе машины не имели дисководов. И мы на каждом уроке набирали программы.
Для длительного хранения информации используется внешняя память на магнитных лентах и дисках. Но информация, хранящаяся в ней не может непосредственно быть использована во время выполнения программы, ее надо сначала перенести (загрузить) в оперативную память. Скорость обмена информацией между оперативной и внешней памятью в много раз меньше скорости выполнения команд процессором. Объем внешней памяти на много превышает объем оперативной, поэтому в ней (во внешней памяти) можно хранить информацию, предназначенную для решения многих задач. По мере необходимости нужная информация загружается в оперативную память и обрабатывается процессором.

Печатающее устройство или принтер (printer) {!!! Пробую объяснить английское слово. Мне интересно Ваше мнение о необходимости подобных объяснений!! Пишите - mailto:stac@stacmv.net. print - печатать (глагол), printer - "то, что печатает", т.е принтер. Вообще, суффикс "-er" в английском слове, говорит, что оно (слово) есть существительное и образовано от глагола. Пример, speak - говорить, speaker - "то, что говорит", т.е. спикер; teach - учить, teacher - "тот, кто учит", т.е. учитель} предназначено для получения твердых копий текстов программ и результатов их работы. Кто-то подумает: "И только для этого?" А для чего же еще? Ведь, если Вы печатаете не текст программы, то это может быть реферат (результат работы текстового редактора), Ваше фото (результат работы Photo Shop'а ("кисти неизвестного мастера":-)) и т.д. и т.п. На этом остановимся. Более подробную информацию по работе различных устройств вы получите в свое время, когда мы будем изучать эти устройства с точки зрения программирования.

2.Двоичная система счисления

По большому счету в основе работы компьютера лежит двоичная система счисления. Тем из, кто не знаком с этим понятием или подзабыл, предлагается познакомиться (вспомнить) с ним сейчас.
Обычно мы имеем дело с десятичной системой счисления, в которой с помощью десяти различных цифр можно записать любое сколь угодно большое число. Вам известны эти цифры - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Возьмем число 192278. Каждая цифра в числе несет двойную информационную нагрузку. Она сообщает нам: 1)свое значение (7) и 2)место, где она стоит в числе (разряд - десятки). Такие системы называются позиционными. Пример непозиционной системы счисления - римская. Про разряды я уже говорил выше, так что повторяться не буду. Скажу лишь, что разряды мы будем обозначать не сколько словами, типа "лесятки" и "сотни", сколько номерами - нулевой разряд, первый разряд, второй разряд, третий разряд. Разряды нумеруются справа налево и не с единицы, а с нуля(!). Т.е. "единицы" - нулевой разряд.
Наше число можно записать в виде:
192278 = 1 * 100000 + 9 * 10000 + 2 * 1000 + 2 * 100 + 7 * 10 + 8 * 1 {* - знак умножения;}
Теперь применим нумерацию разрядов:
192278 = 1 * 105 + 9 * 104 + 2 * 103+ 2 * 102 + 7 * 101 + 8 * 100
{любое число в нулевой степени равно единице} Как видите, номер разряда совпадает с показателем степени, в которую надо возвести десятку в соответствующей разряду позиции: единицы - нулевой разряд - 100, десятки - первый разряд - 101, сотни - второй разряд - 102 и так далее. В принципе, все просто. Да, система называется десятичной, потому что в ней используются 10 цифр. Число 10 называется основанием системы счисления. Десятичная система - основание - 10, двоичная система - основание - 2. Переходим, собственно, к двоичной системе. Зачем она, вообще, нужна? Вы знаете, что сигналы в компьютере передаются посредством электрических импульсов. Таким образом, чтобы различать каждую используемую цифру понадобилось бы 10 различных сигналов. Что не есть хорошо. С технической точки зрения, чем меньше сигналов, тем лучше. Наименьшее основание, которое может быть у позиционной системы счисления - 2. К тому же у двоичной системы самая маленькая таблица умножения : 1Х1=1. Это очень порадовало бы школьников, если бы двоичную систему использовали в школе. Число записанное в двоичной системе можно расписать по степеням двойки, также как мы расписывали число 192278 по степеням десятки.

0 = 0*20 = 0b{буква b означает двоичное число}
1 = 1*20 = 1b
2 = 1*21 + 0*20 = 10b
3 = 1*21 + 1*20 = 11b
4 = 1*22 + 0*21 + 0*20 = 100b
5 = 1*22 + 0*21 + 1*20 = 101b

и так далее. Можно записать любое число.

Теперь, как переводить числа из одной системы в другую?

Существует простой способ перевода чисел из десятичной системы счисления в двоичную:

1) разделите число на 2 и запишите остаток и частное;
2) если частное не равно 0, то разделите его на 2, и так далее. Если частное равно 0, то запишите все остатки, начиная с последнего и получите двоичное число.

Например, запишем число 278 в двоичной системе:
278|2
278139|2
013869|2
16834|2
13417|2
0168|2
184|2
042|2
021|2
00
1
Частное стало равно 0, записываем результат: 278 = 100010110b

Чтобы перевести число из двоичной системы в десятичную надо расписать число по степеням двойки и все это дело просуммировать:
11101001b = 1*27+1*26+1*25+1*23+1*20 = = 128 + 64 + 32 + 8 + 1 = 233

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

3.Домашнее задание

Сегодняшнее ДЗ не сложное, но сделать его желательно (тем, кто сталкивается с двоичной системой впервые).

Итак требуется:
а) перевести число 2000 в двоичную систему (без всяких компьютеров и калькуляторов!!!)
б) перевести число 10100110b в десятичную форму.
в) перевести еще какие-нибудь числа из одной системы в другую.

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

DOS

С сегодняшнего выпуска я начну рассказывать о DOS (или ДОС). ДОС - это Дисковая Операционная Система (Disk Operating System). Несмотря на то, что дисковых операционных систем придумано много, мы будем подразумевать MS DOS и его (ее) клоны, в частности MS DOS 7. Мы посовещались и я решил, что мы начнем обучение с программирования под ДОС. Поэтому хорошо бы кое-что знать про эту систему. Тем более, что в ДОС есть т.н. командный язык, на котором можно писать программы (файлы с расширеним bat - это они). "Зачем нам нужен этот, как его там, ... командный язык?" Ну, с помощью bat файлов можно решать ряд задач в короткое время. Последнее, что я делал с помощью bat файлов - это ... дайте-ка вспомнить.. ах, да! Вот пример. Имеется несколько сотен файлов в архиве arj и надо их все разархивировать... "Ну, дык, берешь WinZip, да разархивируешь! Всего-то пара кликов.." ...а каждый файл в своем архиве. Хотел бы я посмотреть на эту пару кликов :-), точнее несколько сотен пар. А я делаю так:пишу bat файл и запускаю его на выполнение (хотя, в данном случае можно просто набрать кое-что в командной строке, не создавая bat файл). Файл можно создать в Блокноте, он будет содержать одну строчку:
for %%a in (*.arj) do arj x %%a
Если работать с командной строкой, то надо набрать:
for %a in (*.arj) do arj x %a
Вот так. И еще: bat файл легко создавать из собственной программы, написанной на любом языке и потом его запускать или делать так, чтобы его запускала другая программа.
Чтобы писать программы на командном языке ДОС, надо знать сами команды, составляющие этот язык. С командами ДОС мы начнем знакомиться со следующего выпуска (не со всеми, конечно, а так, с некоторыми).
Кроме команд, хорошо бы узнать о переменных среды окружения (environment), т.к. в них может содержаться (и содержится, как ни странно) разная полезная информация. Например, всем известная переменная PATH содержит пути поиска запускаемых файлов. WINDIR содержит путь к каталогу, в котором установлен Windows и т.д. Я, понимаю, что сейчас не всем все понятно (особенно тем, кто начал свою компьютерную жизнь под Windows). По ходу дела, я все подробно объясню и отвечу на ваши вопросы по email или в рубрике ВОПРОСЫ И ОТВЕТЫ. Тем, кто все про ДОС знает разрешается данный раздел не читать, если в нем не будет домашнего задания. Отвлекся .... :-) Еще можно выдумывать свои переменные среды ..., с тем, чтобы их потом проверять. Можно даже сделать примитивную защиту ваших программ от запуска на чужих компьютерах, основанную на этом принципе: при запуске программа проверяет наличие какой-то переменной, смотрит ее значение, если надо и если что (на чужом компе ваших доморощенных переменных-то нет!) весело совершает выход из себя (из Windows, из чего угодно), попутно форматируя винчестер (вот это зло!) и т.п. Итак, всем, кто не знает, где на его компьютере находится ДОС и, что это за командная строка, про которую я говорил, рекомендую к следующему выпуску все найти и узнать. Обучение начинается! А тем, кто в ДОСе в своей тарелке, разрешаю послать это обучение к его же матери, то есть к повторению.
ДО Следующего выпуска!


Несколько читателей уже поделились с нами своими историями знакомства с миром ВТ (помните, я говорил об этом), так что...

СЛОВО ПРЕДОСТАВЛЯЕТСЯ BARIC'у

Привет! Вам пишет один из юZверей - Baric (это мой ник).
... А начинал я с Агата - это такая короб- ка с телевизором, клавиатурой и FDD.(харда там не было). Первый раз я увидел сие тво- рение в школе, пошел на курсы по програм- мированию на Basic -е (vol. 1.2 если не ошибаюсь). Затем нашел этот самый АГАТ на шкафу у дяди - так у меня появился первый комп. Было это в 93 или 94 году. Затем в 95 успешно впихнул его одному ламу (ламеру), немного поднакопил денег и купил 133 Пень. Помню свое первое впечатление от Дюка Нукема. Еще бы, после 2D игор -то!!! Затем в 96 проапил его до 200 Пня, купил побольше хард, видео покруче и т.п. В 98 поднакопил еще денег и купил Селерон 333 с 16 мегами видео, 10 ГигаЛитрами на харде и 98 мегами РАМ-ы. На коем сейчас и работаю. Как вы и заметили порядка 3-х лет я играл, правда и сейчас не против погамиться в кваку 3, затем после Пня занялся звуком и графикой, но как-то меня особенно это не катит, так что охота что-ни- будь свое создать. Очень надеюсь на Вашу помощь в моем обучении. Думаю, что сейчас многие хотят создавать что-ни будь свое или зная то, на чем это делается усовершенствовать (хакнуть) уже имеющееся. Буду надеется, что у Вас (нас) что-нибудь получится.
     Орвар, Baric

Мой комментарий:
Видел я один такой Агат. Мой друг купил его себе в 92-м у какого-то "лама" за 30(000) руб., т.к. нужен был монитор. Что мне больше всего запомнилось (про Агат) - это как мы эту "коробку с телевизором" по улице тащили под пристальными взглядами сограждан.

HTML - ОТСЕБЯТИНА 2

Судя по Вашим письмам, многие уже знают HTML, даже не просто знают, а используют его на практике с целью создания собственных страниц и сайтов в Интернете. Но еще больше подписчиков пока не владеют HTML и т.к. современному программисту (хоть и начинающему) не пристало не знать HTML (вот уж что сейчас популярно, а вовсе не С++, хотя сравнение здесь не уместно) я (изиняюсь за кучу скобок и) хочу предложить Вам пройти курс "Основы HTML или HTML от А до Б". Он будет включать в себя теоретическую часть и, как и положено любому приличному курсу, практическую. Свое мнение о необходимости этого курса высказывайте мне на адрес stac@stacmv.net , а тем временем ... немного истории.

Давным-давно, когда я еще не был обременен доступом в Интернет, у меня уже была своя локальная сеть (соединили с друзьями 5-6 компьютеров, сейчас их более десятка, но уже без меня), во благо которой я и юзал свою машину. Надо сказать, что сейчас от этих воспоминаний у меня чуть слезы на глазах не выступили. Как вспомню эти бессонные ночи, бесконечные подземелья Дума ... Мда, ну вот. Однажды на одном из компьютеров сети (Zeus) я увидел некий файл с расширением htm. Каково же было мое удивление, когда оказалось, что это web-страница (о которых я тогда только слышал и ничего конкретного не знал). Оказалось, Zeus где-то нашел какой-то редактор в котором он и создал страничку. Я открыл файл в Блокноте, и посмотрел что там есть. Там были теги. Еще там был текст, который отображался браузером. Я сменил текст, добавил пару тегов из числа тех, что были в исходном файле, потому как другие не знал. Zeus очень удивился, когда увидел мою страничку, он, по наивности, даже подозревать не мог, что можно web странички в Блокноте ваять. С тех пор я пишу и верстаю в Блокноте. Правда недавно я стал пользоваться редактором Macro HTML (http://www.agros.ru/mhtml). Поэтому недостаток моего курса (или достоинство) - упор на невизуальное написание html-кода. Если Вы планируете использовать визуальные средства (Front Page и т.п.), Вам понадобится дополни- тельная информация по этим средствам. Логично. Мой рассказ о том, что я делаю web-страницы в Блокноте мог навести Вас на мысль, что html файл (html документ) это просто текст. Да, истина где-то рядом. Вы можете набрать текст в неформатирующем редакторе текстов, написать вначале <html>,а в конце </html>, и получите html документ. Правда он будет выглядеть не очень здорово. Ну что я вам рассказываю, давайте, запускайте свой любимый неформатирующий редактор. Неформатирующий редактор, это такой редактор, который может сохранять файл текстовом формате (txt). Для Windows это Блокнот (Notepad). Будет лучше, если Вы будете пользоваться именно Блокнотом, по крайней мере, когда читаете рассылку. Спасибо. Итак. Запускаем Блокнот. Напишите: Это просто текст. Затем сохраните файл так, чтобы расширение у него было htm или html. И посмотрите его браузером. Вы увидите напечатанную Вами фразу. Да, браузер прекрасно отображает тексты. Теперь попробуем выделить слово "просто" жирным шрифтом (bold). Откройте наш файл снова, если закрывали. Слева от слова "просто" напишите <B> (буква "b" в угловых скобках). А справа:</B> (перед "b" стоит "слеш"). В HTML символы, заключенные в угловые скобки называются тегами (tag - тег, тэг). Некоторые теги используются по одиночке, а некоторые - парами: открывающий тег и закрывающий тег. В нашем примере <b> открывающий тег, </b> - закрывающий. На то, что тег закрывающий указывает "слеш". То, что находится между между тегами <b> и </b> будет отображено браузером жирным шрифтом. Сохраните файл и посмотрите его в браузере. Я почти уверен, что Вы увидите: "Это <b>просто</b> текст" и никакого жирного шрифта. Почти, потому что браузеры у всех разные и могут по разному отображать один и тот же html документ. Об этом стоит всегда помнить. Теперь, чтобы все-таки увидеть жирный шрифт, добавьте в файл теги <html>, </html>, первый в начало файла, второй - в конец :

<html>
Это <b>просто</b> текст.
</html>

Тег <html> указывает браузеру, что файл представляет собой html документ. Иначе он будет восприниматься как текстовый. Сохраните файл. Посмотрите. Ну как, получилось?
Итак, сегодня мы познакомились с тегами <html> и <b>. Еще есть теги <i> - курсив и <u> - подчеркивание. Они используются также, как и тег <b>. Поэксперементируйте. В НТML есть целая куча разных тегов. С частью из них Вы познакомитесь в этой рубрике. Но это уже в другой раз.

Пишите письма!

ЗАКЛЮЧЕНИЕ

Вот он, собственно, первый выпуск. Как он Вам понравился? Не очень? Буду рад услышать от Вас комментарии.

До следующего выпуска.
Желаю удачи !!!

Вячеслав Мацнев
mailto:stac@stacmv.net



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

В избранное