На какие моменты стоит уделить внимание...

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: На какие моменты стоит уделить внимание...

Сообщение Light13 » 22.07.2010 12:22:25

про коллекции спасибо

сортировка имеется ввиду не в субд, а, например, "сортировка методом вставок"

особенности к примеру та же utf8 в контролах :)

по поводу стандартных контролов похоже ты прав - в начало их

и скорее всего отдельным разделом программирование баз данных :)

хочется добавить рандомизированные алгоритмы, стеки, хеш таблицы/хэширование

кто что еще хочет добавить :)

Добавлено спустя 9 минут 29 секунд:
Полный вариант:
1. Основы алгебры логики
2. Основы алгоритмизации
2.1 Линейный алгоритм
2.2 Ветвление
2.3 Цикл
3. fpc
3.1 Структура программы
3.2 Простые типы данных
3.3 Операторы ввода/вывода
3.4 Операторы ветвления
3.5 Операторы цикла
3.6 Структурированные типы данных
3.7 Основы ООП
3.8 Принципы кросс платформенного программирования
4. IDE Lazarus
4.1 Основные элементы среды
4.2 Настройка среды
4.3 Структура проекта
4.4 Использование стандартных компонент
4.4 Особенности программирования в среде
4.5 Программирование баз данных
5. Структуры данных и алгоритмы
5.1 Связные списки
5.2 Деревья
5.3 Очереди
5.4 Алгоритмы поиска
5.5 Алгоритмы сортировки
5.6 Хэширование
5.7 Конечные автоматы
5.8 Сжатие данных

Попробую реализовать, что не успею до диплома - сделаю после. Авось пригодится кому-нибудь.
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: На какие моменты стоит уделить внимание...

Сообщение yurgel » 22.07.2010 12:32:59

большая часть списка никак не связана ни с Лазарем, ни с ФПЦ, всё это написано ещё Кнутом и Декстрой, и никто этого не отменял. а писать примеры реализации всего этого именно для Лазаруса - труд титанический. может быть, стоит выкинуть всё, что есть в справочниках, и писать именно о среде, а не об общих алгоритмах и понятиях? три четверти списка уйдёт в сад ;)
yurgel
новенький
 
Сообщения: 37
Зарегистрирован: 29.06.2010 16:06:58

Re: На какие моменты стоит уделить внимание...

Сообщение Light13 » 22.07.2010 12:47:27

основная проблема преподавателя, сам видел, - это отсутствие последовательно изложенного материала и отсутствие примеров. Никто и не говорит, что будет легко. Я так думаю, что успею реализовать до пункта 4, может 4,5; с учетом занятости, сложно делать расчеты. Благо на кафедре понимающий человечек работает :).
Остальное - по мере возможности. Примеры буду писать, тестить, спрашивать на форуме почему не работает :)
Аватара пользователя
Light13
постоялец
 
Сообщения: 127
Зарегистрирован: 17.07.2009 07:50:10
Откуда: Челябинск

Re: На какие моменты стоит уделить внимание...

Сообщение Climber » 22.07.2010 13:37:32

Light13 писал(а):сортировка имеется ввиду не в субд, а, например, "сортировка методом вставок"
Не, ты просто не понял. Я в такой аллегорической форме хотел сказать, что знание алгоритмов сортировки уже неактуально. Если мне вдруг резко понадобится много сортировать, я подключу in-memory базу и буду сортировать в ней с помощью вышеприведенного sql-запроса.
Программирование - оно большое, нельзя же столько над школьниками издеваться.

Light13 писал(а):и скорее всего отдельным разделом программирование баз данных :)
А стоит? Туда же SQL надо будет пихать и торию множеств.

Light13 писал(а):хочется добавить рандомизированные алгоритмы, стеки, хеш таблицы/хэширование
Генетические алгоритмы не забудь :)
Дети будут вундеркиндами, рвать всех на грелки и одним SQL-запросом вырубать свет в радиусе 3 километров :mrgreen:

yurgel писал(а):большая часть списка никак не связана ни с Лазарем, ни с ФПЦ, всё это написано ещё Кнутом и Декстрой, и никто этого не отменял. а писать примеры реализации всего этого именно для Лазаруса - труд титанический. может быть, стоит выкинуть всё, что есть в справочниках, и писать именно о среде, а не об общих алгоритмах и понятиях?

Да, только автор пишет не очередной учебник, а методическое пособие для преподавателей. То есть инструкцию для учителя - что и как вдалбливать в головы школьников/студентов, чтобы из них выросли труЪ-программисты. Декстру и Кнута никто не отменял, но школьники про них ничего не знают и сами не осилят. Все равно учителю надо будет что-то им объяснять. А так да - дать им в качестве дополнительного пособия, пусть изучают, кому очень интересно. Да и потом, написать хорошее методическое пособие - труд не менее титанический. Кода там будет хорошо если 20% от всего объема.
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: На какие моменты стоит уделить внимание...

Сообщение Kitayets » 10.08.2010 15:09:56

ещё добавить про:

потоки ввода/вывода;
исключения/ проектирование приложения с использованием исключений (методика?);
потоки/процессы;
синхронизацию потоков/критические секции;
параллельные алгоритмы/ шаблоны проектирования параллельных приложений;
локализация/ интернационализация;


обязательно кроме теории по структурам данных/алгоритмам - описать реализации в rtllclfcl:

для контейнеров:
TList, TFPList , TStringList, TThreadList, InterfaceList, TCollection, динамические (открытые) массивы Array of Type;

алгоритмы:
TList.Sort <- реализация quickSort
другие алгоритмы ...
TParser - для парсинга текста.

Добавлено спустя 54 секунды:
как будет готово - выложить! самому будет интересно почитать :)
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: На какие моменты стоит уделить внимание...

Сообщение Vadim » 10.08.2010 16:20:08

Light13
Добавлю свои пять копеек. :)
Большой проблемой всегда (не только в программировании) было как выбор вообще, так и обоснованность выбора того или иного метода или алгоритма. Вот, к примеру, Вы, в своей методичке, описали 15 или 20 алгоритмов сортировки данных, привели потрясающие по своей красоте примеры и написали, в чём особенность того или иного алгоритма. Программист в своей работе исходит из условий вполне конкретной задачи и условия эти зачастую неполные. Чем руководствоваться в выборе алгоритма?
Вот исходя из этого вопроса, надо бы ввести в методичку главу, как, каким образом выбирается алгоритм. Чем руководствуется программист выбирая ту или иную методику. Какие данные нужны для выбора в первую очередь, какие во вторую, а какие и совсем несущественны. Каким образом можно получать отсутствующие, но необходимые для выбора данные.
Опытные программисты осуществляют выбор исходя из своего опыта, потому что его либо не учили проектированию программы, либо эта часть раздела программирования считалась несущественным, т.к. основной упор делался на изучение справочника по процедурам и объектам конкретной реализации языка программирования и он уже в процессе практики наступал на всевозможные грабли и, тем самым, учился выбору. У тех, кого будут учить, такого опыта нет. Так почему бы чужой опыт не изложить как методику? С примерами, с подробным разбором нескольких задач и обоснованием того или иного выбора при реализации этой задачи, при этом обязательно должен быть выбор из более чем двух алгоритмов или методов реализации.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: На какие моменты стоит уделить внимание...

Сообщение Odyssey » 11.08.2010 11:57:18

Имхо, нужно рассказать про кодировки и Юникод, а не просто про "UTF-8 в контролах". Например, можно привязать этот материал к строковым типам. Идеи можно почерпнуть например тут: http://joelonsoftware.com/articles/Unicode.html.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: На какие моменты стоит уделить внимание...

Сообщение Kubanych » 20.09.2010 13:49:21

Light13 писал(а):Терь из этого всего помогите отобрать ключевые моменты - ибо все за полгода не реализую :)


Нечто похожее я написал, см. http://www.freepascal.ru/forum/viewtopic.php?f=23&t=5997 и http://www.freepascal.ru/forum/viewtopic.php?f=23&t=5173
У меня ушло на это два года!

Вот полное оглавление книги:
Предисловие 7
Глава 1 Основы программирования 10
1.1. Понятие алгоритма. 10
1.1.1 Алгоритм Евклида. 12
1.1.2 Задача о поездах и мухе 17
1.1.3 Вместо лирического отступления 26
1.2. Этапы подготовки задачи для решения на компьютере 28
1.3. Примеры разработки алгоритмов 32
1.3.1 Решение квадратного уравнения. 32
1.3.2 Вычисление интегралов 34
1.3.3 Обработка результатов эксперимента 36
1.3.4 Решение системы линейных алгебраических уравнений 39
Глава 2 Введение в язык программирования Pascal 48
2.1. Основные элементы языка 48
2.1.1 Переменные. Стандартные типы. 49
2.1.2 Операции отношения 51
2.1.3 Раздел описаний переменных 51
2.1.4 Выражения. Порядок выполнения операций. 52
2.1.5 Константы 53
2.1.6 Комментарии в программе 54
2.1.7 Операторы 55
2.1.7.1. Оператор присваивания 55
2.1.7.2. Операторы ввода/вывода 56
2.1.7.3. Операторы инкремента и декремента 58
2.1.8 Среда разработки Lazarus 58
2.1.9 Русский язык в консольных приложениях 70
2.1.10 Первая программа 71
2.1.11 Открытие существующего проекта 87
2.1.12 Другие способы создания консольных приложений 91
2.1.13 Типовой пустой проект 94
2.1.14 Операции с целыми числами 95
2.1.15 Вместо лирического отступления 2 98
2.1.16 Стандартные функции с целыми аргументами 99
2.1.17 Операции с вещественными числами (тип real). 101
2.1.18 Форматирование вывода 102
2.1.19 Одновременное использование вещественных и целых чисел. 102
2.1.20 Другие стандартные функции с вещественными аргументами 104
2.1.21 Булевые переменные 104
2.1.22 Условные операторы. 106
2.1.22.1 Оператор if …. then 107
2.1.22.2. Оператор if …then ... else 107
2.1.23 Операторы цикла 113
2.1.23.1. Оператор цикла с предусловием 113
2.1.23.2. Оператор цикла с постусловием 114
2.1.23.3. Оператор цикла с параметром. 120
2.1.23.4. Второй вариант оператора цикла с параметром 121
2.1.24 Оператор выбора case 124
2.1.25 Организация простейшего контроля ввода данных. 126
2.1.26 Вычисление сумм сходящихся рядов 131
2.2. Реализация некоторых алгоритмов главы 1. 136
2.2.1 Программа решения задачи о поездах и мухе 136
2.2.2 Программа вычисления определенного интеграла 137
Глава 3 Более сложные элементы языка 141
3.1. Общая структура Паскаль – программы 141
3.1.1 Процедуры и функции 142
3.1.1.1 Структура процедуры 142
3.1.1.2. Структура функции 143
3.1.1.3 Глобальные и локальные переменные 144
3.1.1.4 Способы передачи параметров 155
3.1.1.5 Процедуры завершения 159
3.2. Еще раз о типах данных 159
3.2.1 Классификация типов данных 159
3.2.1.1 Целый тип 160
3.2.1.2. Интервальный тип 161
3.2.1.3. Перечислимый тип 161
3.2.1.4. Множества 162
3.2.1.5. Логический тип 163
3.2.1.6. Вещественный тип 163
3.2.1.7. Указатели 164
3.3. Обработка символьной информации в Паскале 165
3.3.1 Символьные и строковые типы данных. 165
3.3.1.1. Тип Char 170
3.3.1.2. Функции для работы с символами 170
3.3.1.3. Тип String 171
3.3.1.4. Строковые процедуры и функции 176
3.4. Массивы 190
3.4.1 Динамические массивы 197
3.4.2 Программа решения системы линейных алгебраических уравнений методом Гаусса 202
3.4.1.1. Вариант 1 – с goto 204
3.4.1.2. Вариант 2 – без goto 206
3.4.1.3. Вариант 3 – более лучшая реализация 209
3.5. Модули в Паскале 213
3.5.1 Структура модуля 214
3.5.2 Системные модули 219
3.5.2.1. Модуль CRT 220
3.6. Файлы 225
3.6.1 Тип данных – запись 225
3.6.2 Файловые типы 227
3.6.3 Процедуры для работы с файлами 228
3.6.3.1. Общие процедуры для работы с файлами всех типов 228
3.6.3.2. Процедуры для работы с текстовыми файлами 230
3.6.3.3. Процедуры для работы с типизированными файлами 238
3.6.3.4. Процедуры для работы с нетипизированными файлами 248
3.6.3.5. Организация контроля ввода/вывода при работе файлами 254
3.6.3.6. Создание простой базы данных с типизированными файлами. 257
Глава 4 Типовые алгоритмы обработки информации 272
4.1. Алгоритмы сортировки 272
4.1.1 Обменная сортировка (метод "пузырька") 274
4.1.2 Сортировка выбором 279
4.1.3 Сортировка вставками 286
4.1.4 Метод быстрой сортировки 300
4.2. Алгоритмы поиска 312
4.2.1 Поиск в массивах 312
4.2.2 Вставка и удаление элементов в упорядоченном массиве 323
4.3. Динамические структуры данных 331
4.3.1 Представление в памяти компьютера динамических структур. 337
4.3.2 Реализация стека с помощью массивов 340
4.3.3 Представление двоичного дерева в виде массива и реализация алгоритма об­хода двоичного дерева слева. 349
4.3.4 Указатели 361
4.3.5 Стандартные операции с линейными списками 365
4.3.6 Реализация динамических структур линейными списками 372
4.3.6.1. Реализация стека 372
4.3.6.2. Реализация очереди с помощью линейного списка 375
4.3.6.3. Реализация двоичного дерева с помощью линейного списка 380
4.3.7 Сортировка и поиск с помощью двоичного дерева 388
Глава 5 Основы объектно-ориентированного программирования 396
5.1. Три источника и три составные части ООП. 396
5.2. Классы и объекты. 398
5.2.1 Обращение к членам класса. 401
5.3. Инкапсуляция 406
5.3.1 Спецификаторы доступа. 411
5.3.2 Свойства. 417
5.4. Наследование 426
5.5. Полиморфизм 435
5.5.1 Раннее связывание. 437
5.5.2 Позднее связывание. 442
5.5.3 Конструкторы и деструкторы. 448
Глава 6 Программирование приложений с графическим интерфейсом 458
6.1. Элементы графического интерфейса 459
6.2. Различия между консольными и графическими приложениями 466
6.3. Визуальное программирование в среде Lazarus 468
6.3.1 Создание графического приложения 468
6.3.2 Форма и ее основные свойства 475
6.3.3 Компоненты 482
6.3.4 Обработчики событий 482
6.3.5 Простейшие компоненты 485
6.3.5.1. Компонент TLabel 486
6.3.5.2. Кнопки TButton, TBitBtn и TSpeedButton 501
6.3.6 Организация ввода данных. Однострочные редакторы TEdit, TLabeledEdit 505
6.3.6.1. Компонент TEdit 505
6.3.6.2. Компонент TLabeledEdit 513
6.3.7 Обработка исключений. Компонент TMaskEdit. Организация контроля ввода данных 519
6.3.7.1. Компонент TMaskEdit 530
6.3.8 Специальные компоненты для ввода чисел 548
6.3.9 Тестирование и отладка программы 550
6.3.10 Компоненты отображения и выбора данных 554
6.3.10.1. Компонент TMemo 555
6.3.10.2. Компонент TStringGrid 608
6.3.10.3. Компоненты выбора 617
6.3.10.4. Компоненты отображения структурированных данных 645
6.3.11 Организация меню. Механизм действий - Actions 718
6.3.11.1. Компонент TMainMenu 718
6.3.11.2. Компонент TToolBar 737
6.3.11.3. Компонент TActionList 741
6.3.11.4. Создание приложений с изменяемыми размерами окон 762
Послесловие 765
Литература 766
Алфавитный указатель 767
Kubanych
новенький
 
Сообщения: 73
Зарегистрирован: 15.10.2008 10:02:18

Re: На какие моменты стоит уделить внимание...

Сообщение Alexey_02 » 20.09.2010 21:44:35

3.4.1 Динамические массивы 197
3.4.2 Программа решения системы линейных алгебраических уравнений методом Гаусса 202
3.4.1.1. Вариант 1 – с goto 204


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

Однако основные принципы работы компьютера, заложенные во времена их рождения, действуют до сих пор. Суть их заключается в следующем. Данные передаются с помощью какого-то сигнала (для нас не имеет значения какого, потому что мы не электронщики) методом "есть сигнал или нет" или, по-другому, "включен или выключен". Так появился "бит" (bit). Бит - это единица информации, которая может принимать значение 0 или 1. т. е. "включен или выключен". Восемь бит объединяются в байт, один байт равен 8 битам. Почему именно 8? Да потому что первые компьютеры были восьмиразрядными и могли работать одновременно только с 8 разрядами (битами), например, 010000111.

Все первые нули можно удалять, поэтому число 010000111 можно записать как - 10000111. Это то же самое, что и в привычной для нас десятичной системе исчисления, где каждый разряд может принимать значения от 0 до 9. Здесь также никто не будет писать число 5743 как 0005743, потому что первые нули не имеют никакого значения.

В один байт можно записать любое число от 0 до 255. Почему? Об этом немного позже. Указанный диапазон чисел довольно мал. Поэтому чаще используют более крупные градации:

- два байта = слово;

- два слова = двойное слово.

Итак, компьютер стал работать в двоичной системе исчисления. Но как же тогда записать число 135, если у нас единица информации может принимать значения 0 или 1? Это можно сделать в двоичной системе. Давайте разберемся, как это работает.

Для начала вспомним, как действует десятичная система исчисления, к которой мы привыкли. Для этого рассмотрим число 19 578 246. Я специально выбрал такое число, чтобы оно состояло из восьми разрядов (цифр). Теперь запишем его, как показано на ниже

Номер разряда:
7 6 5 4 3 2 1 0
1 9 5 7 8 2 4 6

Как видите, пронумерованы разряды начиная с нуля до семи и справа налево. Теперь представьте себе, что это не целое число, а просто набор разрядов. 1, 9, 5, 7, 8, 2, 4 и 6. Как из этих разрядов получить целое число в десятичной системе? Наверное, некоторые скажут, что надо просто записать их подряд. А если я спрошу, почему? Вот тут появляется математика. Нужно каждый разряд умножить на 10 (степень исчисления) возведенную в степень номера разряда. Непонятно? Попробую оформить сказанное в виде формулы, показанной ниже.

Разряд = 0*(10^номер разряда) + Разряд1*(10^номер разряда) + . . .

Давайте посчитаем значение числа по этой формуле начиная с нулевого разряда. Получается, что 6 нужно умножить на 10 в нулевой степени 6х100=6. прибавить 4х10 в 1-й степени, или 4х10^1=40 (итого уже 46). Потом 2 х 10 во 2-й степени, 2х10^2=200 (итого 246). Потом 8 х 10 в 3-й степени, = 8000 (итого 8246) и т. д. В итоге получится число 19 578 246.

Теперь рассмотрим двоичную систему исчисления. Здесь каждый разряд может принимать значение 0 или 1 (два состояния). Кстати, в десятичной системе у нас каждый разряд мог принимать значения от 0 до 9, т. е. имел десять состояний. Давайте рассмотрим следующий байт - 10000111. Запишем его нa листке бумаги так, как показано ниже.

Номер разряда:
7 6 5 4 3 2 1 0
1 0 0 0 0 1 1 1

Здесь действует та же самая формула, только нужно возводить в степень не 10, а число 2, потому что это число в двоичной системе. Опять же произведем расчет начиная с нулевого разряда, т. е. справа налево. Получается, что первую 1 мы должны умножить на 2 в нулевой степени (1х2^0=1). Следующую единицу нужно умножить на 2^1, получается 2 (итого 2+1=3) и т. д. Вот как это будет выглядеть полностью:

(1х2^0) + (1х2^1) + (1х2^2) + (0х2^3) + (0х2^4) + (0х2^5) + (0х2^6) + (1х2^7) =
1 + 2 + 4 + 0 + 0 + 0 + 0 + 128 = 135

Вот так, оказывается, выглядит в двоичной системе исчисления число 135.
135 / 2 = 67 остаток 1
67 / 2 = 33 остаток 1
33 / 2 = 16 остаток 1
16 / 2 = 8 остаток 0
8 / 2 = 4 остаток 0
4 / 2 = 2 остаток 0
2 / 2 = 1 остаток 0
1 на 2 не делится -> это последний разряд 1

Теперь научимся пересчитывать числа из десятичной системы в двоичную. Для этого нужно число 135 разделить на 2. Получается 67 и остаток 1 (запомним 1, т. к. она определяет первый двоичный разряд искомого числа). Теперь 67 снова делим на 2, получается 33 и остаток 1 (таким образом получено уже две двоичные единицы, т. е. 11). 33 делим на 2, получаем 16 и остаток 1 (в результате получаем три двоичные единицы, 111). 16 делим на 2, получаем 8 и остаток 0 (результат 0111). И наконец, 8 делим на 2 = 4, остаток от деления при этом будет 0 (получаем 001 И); 4 делим на 2 = 2, остаток 0 (получаем 000111); 2 делим на 2 = 1, остаток 0 (итого 0000111). Оставшаяся единица частного на два не делится, значит, это последний, самый старший разряд искомого числа. Просто дописываем ее к ранее сформированным разрядам и получаем окончательный ответ - 10000111. Получилось первоначальное число.

Вот так происходит преобразование чисел в двоичную систему исчисления Таким же образом можно перевести число в любую другую систему (двоичную, восьмеричную, шестнадцатеричную). Для более полного закрепления материала в таблице ниже показано соответствие десятичных чисел двоичным. Попробуйте сами перевести пару чисел из одной системы исчисления в другую.

Таблица: Таблица соответствия десятичных и двоичных чисел
Десятичное /Двоичное
0 / 0
1 / 1
2 / 10
3 / 11
4 / 100
5 / 101
6 / 110
7 / 111
8 / 1000
9 / 1001
10 / 1010

Например, попробуйте перевести число, состоящее из 8 бит (1 байт), у которого все биты состоят из единиц, в десятичную систему. Вы должны получить 255. Это максимальное число, которое можно записать в одном байте, потому что все его биты равны 1. Вот так и получается, что в 8 бит можно записать числа от 0 до 255. В 16 битах (2 байта или слово) можно записать число от 0 до 65 535. В 32 битах (двойное слово) можно уже записать число от 0 до 4 294 967 295.

В компьютере принято вести расчет в двоичной или шестнадцатеричной системе. Вторая вошла в обиход, когда компьютеры стали 16-разрядными. Потом 32-х, сейчас 64-х разрядные. Когда вы будете писать свои программы на Delphi, вы будете использовать привычную вам десятичную систему, потому что перед вами интеллектуальный компилятор, который во время компиляции сам переведет все числа в нужный процессору вид, но понимать, какими числами думает процессор просто необходимо.

Шестнадцатеричная система выглядит немного по-другому. Каждый разряд содержит уже не 2 состояния (как в двоичной системе) или десять (как в десятичной системе), а шестнадцать. Поэтому один разряд может принимать значения: 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, E, F. Буква "А" соответствует цифре 10 в десятичной системе, "В" соответствует и т. д. Например, число 1А в шестнадцатеричной системе равно 26 в десятичной. Почему? Да в соответствии все с той же формулой. Только здесь нужно возводить уже 16 в степень номера разряда. "А" - десять, нужно умножить на 16^0 . В результате получится 10. 1 - первый разряд нужно умножить на 16 , получится значение 16. Затем полученные результаты складываются и определяется искомое число - 10+16 =26. В результате, как показано в таблице ниже, можно установить соответствие между числами, записанными в различных системах исчисления

Таблица: Таблица соответствия десятичных, двоичных и шестнадцатеричных чисе
Десятичное / Двоичное / Шестнадцатеричное
0 / 0 / 0
1 / 1 / 1
2 / 10 / 2
3 / 11 / 3
4 / 100 / 4
5 / 101 / 5
6 / 110 / 6
7 / 111 / 7
8 / 1000 / 8
9 / 1001 / 9
10 / 1010 / А
11 / 1011/ В
12 / 1100/ С
13 / 1101 / D
14 / 1110 / Е
15 / 1111 / F
16 / 10 000 / 10
17 / 10 001 / 11
18 / 10010 / 12
19 / 10011 / 13
20 / 10 100 / 14

Иногда приходится встречаться с шестнадцатеричной системой исчисления (без этого никуда не денешься). В этом случае, когда нужно будет показать, что число шестнадцатеричное, перед ним будет ставиться знак решетки #, например, #13. В других языках, например Assembler или C++, принято ставить в конце числа букву h (13h). Но это описание Lazarus, поэтому здесь будем писать так, как принято в этой среде разработки, чтобы потом не возникало никаких вопросов.

До сих пор рассматривались целые числа. С числами с плавающей точкой (имеющими дробную часть) совершенно другая история и ее мы рассматривать не будем.

Теперь разберемся со знаком у чисел. Если заранее предусмотрено, что число может быть отрицательным, то его длина сокращается ровно на один бит (этот бит отводится под знак числа). Так, неотрицательное целое число может быть 8-битным, тогда как число со знаком будет 7-битным. Первый бит будет означать знак. Если первый бит равен 1, то число отрицательное, иначе положительное.

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

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

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

Запустите встроенный в Windows калькулятор (Пуск -> Программы -> Стандартные -> Калькулятор). Теперь выберите из меню Вид пункт Инженерный. На рис. ниже показано окно, которое вы должны увидеть.

Для перевода числа в другую систему просто наберите его в окне ввода калькулятора и потом выберите нужную систему исчисления. На рисунке кнопки переключения из одной системы исчисления в другую выделены овалом:
- Hex - шестнадцатеричная;
- Dec -десятичная;
- Oct - восьмеричная;
- Bin -двоичная.

Рисунок: Внешний вид калькулятора

Возникает вопрос -зачем здесь так долго рассказывалось о преобразовани-чисел, когда так легко можно воспользоваться калькулятором? Ответ это нужно знать. Поверьте мне. Если вы будете понимать, как проходят преобразование, то вам потом легче будет работать с этими числами. Уметь использовать компьютер и язык программирования - это хорошо, но знмать, как и что происходит - намного лучше.
Alexey_02
новенький
 
Сообщения: 21
Зарегистрирован: 15.02.2010 15:51:36

Пред.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru