Не успел наш сайт (TheDelphi.t35.com) прожить месяц, как к нам пришло письмо одного очень заинтересовавшегося посетителя:
Письмо:
Здравствуйте, уважаемый Николай Владимирович!
Случайно попал на Ваш сайт, когда искал учебник для начинающих по Delphi. Сам я совсем недавно начал заниматься Delphi, узнав о его (её?) чуденых возможностях.
Хочу Вам предложить свою помощь в улучшении сайта: я хорошо владею HTML и CSS, неплохо знаю PHP.
Также, предлагаю Вам сделать свой учебник по Delphi для начинающих. Я прекрасно понимаю, что таких учебников очень много... но я предлагаю сделать такой учебник, чтобы его мог читать и понимать даже пятиклассник (я не о себе :) ). Такого учебника я ни одного не нашёл.
Заранее благодарен за внимание. Всегда Ваш, Владимир Александрович.
Переписка с Владимиром Александровичем закончилась зачислением его в нашу команду разработчиков и созданием этой рассылки-учебника по Delphi.
План занятий
Раз мы решили создать учебник-рассылку, то каждый выпуск будем называть уроком(или занятием).
В конце каждого урока будут размещены задания для закрепления
материала. Задания НЕ обязательны для выполнения, но желательны. По желанию Вы можете отправлять решение нам на проверку. Мы дадим Вам совет или похвалим Вас (в зависимости от правильности выполнения задания). Сейчас, когда программы (алгоритмы) не будут заданиями мы не требуем ничего присылать, но потом, когда начнётся написание программ (алгоритмов), мы рекомендуем высылать все решения!
Решения будут опубликованы в следующем номере.
Примерный план занятий:
Основы информатики.
Системы счисления. Позиционные системы счисления.
Системы счисления. Непозиционные системы счисления.
Алгоритмы и программы. Правила их написания.
Основы программирования в Delphi.
Установка и настройка. Delphi - язык или среда разработки? Копроненты TButton, TEdit, TLabel.
Дальше - интереснее! Если большому числу людей что-нибудь не понравиться или что-то будет непонятно, то надо будет повторить урок. Поэтому, дальше пока
не пишем (хотя есть план ещё 10 занятий).
Приступим!!!
Основы Информатики. Урок 1.Позиционные системы счисления.
Позиционными системами счисления называют такие системы счисления, в которых положение цифры в числе влияет на её значение.
К позиционным относятся 2, 8, 10, 16 -ная системы счисления (перечислены наиболее часто встречающиеся). Возьмём число 164810. Эта запись означает: число 1648 в десятичной системе счисления. В общем виде это выглядит так: Ab, где A - число, b - основание системы.
Основанием системы счисления называется количество различных символов (цифр), используемых в каждом из разрядов числа для его изображения в данной системе счисления. Для
2-ной: 0,1; Для 10-ной: 0,1,2,3,4,5,6,7,8,9; Для 16-ной: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15);
Как же переводить из одной исстемы счисления в другую?
Перевод чисел из одной системы счисления в другую
Перевод в десятичную систему счисления. Перевод целых чисел: Надо
перевести целое число Ab. Для этого надо представить число A в виде a1*b0+a2*b1+...+an-1*bn-2+an*kn-1, где an - первая цифра в записи числа, а a1 - последняя, и посчитать значение этоо выражения. В числе 502b: an=1, a1=2. Пусть b=8, тогда: 2*80+0*81+5*82=322.
В общем виде это можно представить так: xyzk = z*k0 + y*k1 + x*k2. Перевод нецелых чисел: Пусть надо перевести число 0.xyzk. Для перевода надо представить число в следующем виде: x*k-1+y*k-2+z*k-3 и посчитать значение этого выражения. Пример: 0.1012 = 1*2-1 + 0*2-2+1*2-3 = 0.62510
Перевод из десятичной системы счисления. Перевод целых чисел: Переведём число 120 из десятичной системы в восьмеричную.
Для
этого надо:
Делить число на основание системы, в которую переводим (на 8), пока в остатке не будет число, меньшее, чем основание системы, в которую переводим.
Собрать остатки в число, начиная с последнего (на рисунке синим цветом обозначен порядок их следования). Если перевод в систему, большую 10-ной, то остатки, которые больше 9 надо обозначить буквами.
Если есть, убрать лидирующие (в начале числа) нули (можно сразу их не писать).
Рисунок 1.
Перевод нецелых чисел: А что, если надо перевести нецелое число (из десятичной системы счисления)? Сначала надо перевести его целую часть (описано выше), а затем дробную. Рассмотрим на примере перевода числа 0.75 из десятичной системы в двоичную.
Перевод нецелого числа.
Умножить число на основание
системы (получится число большее 1)
Целую часть числа перенести в результат (в его дробную часть)
Оставить целую часть числа и повторять с ней действия 1 и 2, пока число не станет равным нулю или не будет получена нужная точность. Точность обычно 2 символа.
Рисунок 2.
Например: если нужно перевести число 120.3210 в восьмеричную систему счисления, надо перевести 12010 в восьмеричную (1708), перевести 0.3210 в восьмеричную (0.243...8) и записать результат перевода в одно число (170.2438)
Заключение
Это всё (на сегодня), что я хотел рассказать Вам. Системы счисления очень интересная (на мой взгляд) тема. На неё встречается много задач. Позже наша группа разработчиков будет писать программу для перевода систем счисления (из всех во все, ориентированная на очень большие числа). Но это потом (если интересно,
присоединяйтесь к нам). Внимание:Перевод из недесятичной системы в недесятичную систему осуществляется через 10-ную! Я не знаю нормального (!) алгоритма для перевода без использования 10-ной системы счисления. Если Вы знаете, пошлите на нам thedelphi@yandex.ru! Будем Вам очень благодарны!
Задание
Последний (на сегодня) раз напомню: задания делать и высылать нам на проверку НЕ ОБЯЗАТЕЛЬНО, но ЖЕЛАТЕЛЬНО. Обозначим перевод следующим стрелкой (->). Строка "12010 -> 8" значит перевести 120 из десятичной системы в восьмеричную (что мы делали выше).
Итак, задание:
10112 -> 10
11002 -> 10
1778 -> 10
FA16 -> 10
12010 -> 16
25210 -> 16
1279 -> 10
A1C13 -> 10
2K30 -> 10 (замечание: значение K посчитать исходя из английского алфавита)
10201123 -> 10
28910 -> 36
6553510 -> 16
1011.10012 -> 16 (замечание: делается через десятичную)
A1.D0E16 -> 10 (замечание:
в десятичной части ноль, а не "O". Обратите внимание, "O" в 16-ную систему не входит!)
16.0628 -> 10
3.719 -> 5
AF816 -> 10
CF916 -> 8
AD516 -> 2
102ю213 -> 10
Пожалуйста, не думайте, что это задание большое! Чтобы написать хороший алгоритм для небольшой программы времени надо потратить больше, чем на выполнение этого задания!
Встретимся через неделю! Удачи!
Прочитать
выпуск на сайте (видна статистика урока: сколько человек прочитали, оценка урока) Оцените урок: Нам очень важно Ваше мнение! Давайте вместе делать сайт и рассылку лучше!