Форум: "Потрепаться";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизНачинающим программистам. Этап 1 Найти похожие ветки
← →
Malder (2002-10-21 22:47) [0]Данная конференция создана для помощи начинающим программистам.
Будут выкладываться задания и по возможности ссылки из сети для их выполнения. Все абсолютно добровольно. Работаете вы исключительно для себя.
Это первый этап обучения.
Идею можете почитать по адресу http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035122594&n=3
Итак, начнем.
--------------------------------------------
Юрий Зотов
Задание 1.
На время забыть про Windows, Delphi и Паскаль, а также забыть, что Вы вообще что-то знаете. Считать, что ничего.
Задание 2.
Разобраться с позиционными системами счисления. Уметь свободно переводить целые (пока только целые) числа из любой системы в любую другую. Уметь складывать, вычитать, делить и умножать в любой системе. Двоичную и шестнадцатиричную знать почти так же, как десятичную. Знать способы кодировки чисел (прямая, обратная, дополнительная). Что такое переполнение и знаковый бит, как он формируется при сложении-вычитании. Назубок - все побитовые операции (NOT, AND, OR, XOR, SHL, SHR). Уметь проверить и выставить любой бит в любое значение. То же самое - c любой комбинацией битов.
Задание 3.
Найти любой программируемый калькулятор и описание его команд (обычно в инструкции). Понадобится для дальнейшего.
Задание 4.
Найти книгу по Паскалю или Delphi с ХОРОШИМ описанием ЯЗЫКА. Не компонентов там всяких, а самого ЯЗЫКА - типы данных, операторы, работа с памятью и пр. Тоже понадобится для дальнейшего.
--------------------------------------------
Ссылки по заданиям:
http://www.i-u.ru/biblio/arhiv/books/noname_uchInform/ec4.asp
http://www.sgu.ru/kafedra/teorin/Lekciya_99.htm
http://www.happytown.ru/prog/data/simple.html
Эмулятор калькуляторов MKXX вы можете взять по адресу: http://www.emulator3000.com/Calculators3000/Calculators3000_Inst.exe (~1Mb)
Выдержки:
NeyroSpace © (21.10.02 18:14)
Из 16ричной в 2ичную минуя 10чную...
если помнить, что
0 = 0000 4 = 0100 8 = 1000 C = 1100
1 = 0001 5 = 0101 9 = 1001 D = 1101
2 = 0010 6 = 0110 A = 1010 E = 1110
3 = 0011 7 = 0111 B = 1011 F = 1111
A1FEB6 =
A 1 F E B 6 =
101000011111111010110110
Проверьте усвоенный материал:
10 AND 11 = 10
10 AND 01 = 00
10 OR 01 = 11
10 XOR 01 = 11
10 XOR 11 = 01
10 SHR = 01
10 SHL = 100
P.S. Никакие обсуждения в данной конференции НЕ ДОПУСКАЮТСЯ.
Пожалуйста, не засоряйте ветку. ТОЛЬКО вопросы по заданиям, если что непонятно.
Обсуждение первого этапа http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035122594&n=3
← →
Юрий Зотов (2002-10-23 01:59) [1]1. Поднимаю ветку вверх.
2. ТОЛЬКО к обучающимся:
Нет вопросов по заданию. Почему? Все слишком просто? Все слишком сложно? Стесняетесь? Или это никому не нужно?
Важно знать, ответьте. Tnx.
← →
Николай Быков (2002-10-23 02:15) [2]2 Юрий Зотов
Ествественно это нужно (ну хотябы мне)
Я, например, только вчера интернет-карту купил и поэтому еще не успел столкнуться с затруднениями при выполнении задания.
← →
IronHawk (2002-10-23 02:50) [3]
> Юрий Зотов © (23.10.02 01:59)
> Нет вопросов по заданию. Почему?
Читаю, пока что!
> Все слишком просто?
Не совсем.
> Все слишком сложно?
Вообще не совсем.
> Стесняетесь?
Нет.
> Или это никому не нужно?
НУЖНО!
Просто жду когда до дела дойдет.
← →
Юрий Зотов (2002-10-23 03:02) [4]> Просто жду когда до дела дойдет.
Стоп! Текущее задание - это УЖЕ дело!!! ЭТО И ЕСТЬ САМОЕ ГЛАВНОЕ!!! Без знания и УВЕРЕННОГО понимания двоичных дел и булевой алгебры НИКОГДА не быть программистом!!! Даже и не мечтайте!!! Без этого можно только компоненты по форме гонять. Всю жизнь.
Ребята, я не даю заданий просто так, уж поверьте. Не усвоив хотя бы одного, Вы не сможете двигаться дальше. Так что никакой расслабухи!
Короче говоря: срок выполнения задания - до воскресенья. Потом идем дальше. Не теряйте времени, есть вопросы - спрашивайте.
← →
esu (2002-10-23 05:29) [5]
> Назубок - все побитовые операции (NOT, AND, OR, XOR, SHL,
> SHR). Уметь проверить и выставить любой бит в любое значение.
> То же самое - c любой комбинацией битов
Помоему достаточно:
"Назубок - все побитовые операции (NOT, AND, OR, XOR, SHL, SHR)".
А "Уметь проверить и выставить любой бит в любое значение. То же самое - c любой комбинацией битов" вроде как уже входит в побитовые операции, или я ошибаюсь ?
> Из 16ричной в 2ичную минуя 10чную...
> если помнить, что
> 0 = 0000 4 = 0100 8 = 1000 C = 1100
....
зачем же это помнить ? IMHO просто понимать почему так.
← →
RV (2002-10-23 10:09) [6]не понял как работать с десячной дробью
Пpи переводе правильной десятичной дpоби в систему счисления с основанием q необходимо сначала саму дробь, а затем дробные части всех последующих произведений последовательно умножать на q, отделяя после каждого умножения целую часть пpоизведения. Число в новой системе счисления записывается как последовательность полученных целых частей пpоизведения.
Умножение пpоизводится до тех поp, пока дpобная часть пpоизведения не станет pавной нулю. Это значит, что сделан точный пеpевод. В пpотивном случае пеpевод осуществляется до заданной точности. Достаточно того количества цифp в pезультате, котоpое поместится в ячейку.
в частности как из 0.35 получили 0,01011b
← →
NeyroSpace (2002-10-23 10:55) [7]если я правильно понял:
0,
0.35*2=0.7 -> 0
0.7*2 =1.4 -> 1
0.4*2 =0.8 -> 0
0.8*2 =1.6 -> 1
0.6*2 =1.2 -> 1
Или я ошибся?
← →
esu (2002-10-23 11:01) [8]
> NeyroSpace © (23.10.02 10:55)
Нормально
← →
Николай Быков (2002-10-23 11:03) [9]стоп.
Задание же вроде бы было только с целыми числами, а не с дробными.
← →
Юрий Зотов (2002-10-23 11:38) [10]Народ, ВНИМАТЕЛЬНЕЕ!!!
Пока только ЦЕЛЫЕ, не бегите впереди паровоза. ВЕЩЕСТВЕННЫЕ числа - это особая тема, мы их будем рассматривать позже. Там надо знать не только перевод, там дело обстоит сложнее.
Так что - пока только ЦЕЛЫЕ, но КАЧЕСТВЕННО.
← →
Николай Быков (2002-10-23 11:40) [11]http://user.rol.ru/~voidmain/asm.zip
← →
Юрий Зотов (2002-10-23 11:59) [12]"Уметь проверить и выставить любой бит в любое значение. То же самое - c любой комбинацией битов" - да, это выполняется с помощью побитовых операций. Важно понимать, как это делается и уметь это делать.
Контрольный вопрос на эту тему - разложить параметр LParam сообщения WM_KEYDOWN на отдельные составляющие:
type
TKeyState = (ksPressed, ksReleased);
var
RepeatCount: word;
ScanCode: byte;
ExtendedKey: boolean;
PreviousKeyState: TKeyState;
Дано: значение LParam (32-битное целое). Временно вспомнить Паскаль и заполнить все 4 указанные переменные. Значения отдельных бит см. в справке API.
← →
zzet (2002-10-23 16:01) [13]down
Че-то все попропустил...
← →
IronHawk (2002-10-25 01:28) [14]
> Юрий Зотов © (23.10.02 03:02)
> > Просто жду когда до дела дойдет.
>
> Стоп! Текущее задание - это УЖЕ дело!!! ЭТО И ЕСТЬ САМОЕ
> ГЛАВНОЕ!!! Без знания и УВЕРЕННОГО понимания двоичных дел
> и булевой алгебры НИКОГДА не быть программистом!!! Даже
> и не мечтайте!!! Без этого можно только компоненты по форме
> гонять. Всю жизнь.
>
> Ребята, я не даю заданий просто так, уж поверьте.
Я верю!
Я нехочу быть "настоящим" программером, я хочу быть программистом который может решить определённый ряд задач, для которых "булевая алгебра" явно неглавоне... не в обиду.
← →
Mystic (2002-10-25 03:05) [15]> Я нехочу быть "настоящим" программером, я хочу быть
> программистом который может решить определённый ряд задач,
> для которых "булевая алгебра" явно неглавоне... не в обиду.
1. Битовые операции применяются в 100% программ
2. Кому нужен программист, который умеет решать столь ограниченный набор задач? Лично мне даже тяжело и задачу такую придумать...
Разве только если ты только намекаешь на раздел общей алгебры под названием "булева алгебра". Знать это раздел вовсе не обязательно (для примера: "...Булева решетка, рассматриваемая как универсальная алгебра сигнатуры (+, ., ", 0, 1) типа (2, 2, 1, 0, 0) называется булевой алгеброй. Понятие изоморфизма, подалгебры, гомоморфизма, факторалгебры, прямого и подпрямого произведений имеют обычный алгебраичекий смысл...")
← →
Akella (2002-10-25 08:33) [16]> Юрий Зотов ©
Давай дальше
← →
Niki (2002-10-25 11:31) [17]Всем привет!
Вопрос-как производить операции деления и умнож. в 8-ричной и 16-ричной системах? Без использования бинарной системы?
Я имею в виду-нет ли спец.способов вычисления?
Например-613О/14О и 1A80E/1B и их же умножить
← →
vuk (2002-10-25 12:35) [18]to IronHawk:
>Я нехочу быть "настоящим" программером
А ничего, что логические операции нужно знать даже для написания условий для элементарных операторой типа if и while? А ведь побитовые операции и логические выражения - это вещи, которые тесно связаны, потому, что в обоих случаях надо понимать как это работает и держать в голове таблицы истинности.
← →
Юрий Зотов (2002-10-25 13:55) [19]> IronHawk © (25.10.02 01:28)
> Я нехочу быть "настоящим" программером. Я хочу быть
> программистом который может решить определённый ряд задач,
1. А разве Вас кто-то заставляет? Можете быть кем хотите, это Ваше личное дело. Но без знания двоичного кода и булевой алгебры "определённый ряд задач", которые Вы сможете решить будет весьма узким. Мягко говоря. А прямо говоря - настолько узким, что "программист", не умеющий даже выставить/проверить логическое выражение или набор флагов вряд ли вообще кому-то будет нужен. Потому что без этого он не напишет ничего сложнее 2х2=4. Это как водитель, умеющий ездить только вперед, только по прямой и только на первой передаче. Так что выбирайте сами. Только потом не спрашивайте, как в клавиатурном хуке проверить, нажата или отпущена клавиша, почему неверно округляются числа с плавающей точкой и почему для них не работает проверка if X=Y then... И еще ОЧЕНЬ многое "как" и "почему".
2. Эта ветка предназначена для тех, кто свой выбор уже сделал. Точнее, для конкретных вопросов по заданиям и ответов на них. Конечно, никто не может запретить постить сюда что угодно, но я бы ОЧЕНЬ просил воздержаться от ее замусоривания. Если хочется высказать свое мнение или обсудить что-то иное - заведите свою ветку, или используйте уже имеющуюся:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035122594&n=3
> Akella © (25.10.02 08:33)
Готовлю. В воскресенье планирую опубликовать.
> Niki (25.10.02 11:31)
Надо расписать таблицу умножения и пользоваться ею. Точно так же, как мы это делаем и в десятичной системе. Например, для 5-ричной системы она выглядит так (первая строка и первый столбец - сомножители, а на пересечении - результат):
1 2 3 4
1 1 2 3 4
2 2 4 11 13
3 3 11 14 22
4 4 13 22 31
И тогда, например, 41x32:
41
x 32
----
132
+ 223
------
2412
Сравните с десятичной - все точно так же:
21
x 17
-----
147
+ 21
-----
357
Для 16-ричной - то же самое. Распишите таблицу и используйте ее. Скажем, BxF=A5. Очень полезно построить такую таблицу вручную, а потом проверить себя стандартным калькулятором из Windows (меню - вид - инженерный - Hex).
← →
Niki (2002-10-25 16:45) [20]Значит, перевод из 8-ричной в 16-ти и обратно (а также для других), без использования 10 и 2-ных систем как промежуточных, тоже происходит по правилам этих таблиц умножения.
Нет ли других правил для систем: 4 <-> 8 <-> 16?
← →
al_ (2002-10-25 22:24) [21]подскажите как это FF + 1 = 100 на бытовом уровне - че-то переклинило не могу дойти :(
← →
777 (2002-10-25 22:32) [22]
> al_ © (25.10.02 22:24)
FF+1=100 h
← →
al_ (2002-10-25 22:55) [23]
> 777 © (25.10.02 22:32)
Я понимаю что hex, но как это???
← →
TTCustomDelphiMaster (2002-10-25 22:57) [24]al_ © (25.10.02 22:24)
253 - $FD
254 - $FE
255 - $FF
256 - $100
257 - $101
← →
777 (2002-10-25 23:17) [25]
> > 777 © (25.10.02 22:32)
>
> Я понимаю что hex, но как это???
Нужен алгоритм? Я когда-то давненько уже делал ради любопытства
перевод hex->int, int->hex ручками в дельфях.
Если найду и если надо -дам.
← →
777 (2002-10-25 23:20) [26]Ааа... тут же сложение hex непонятно...
Щасс, гляну что у меня есть на этот счет
← →
Юрий Зотов (2002-10-25 23:28) [27]> al_ © (25.10.02 22:24)
F - наибольшая из всех возможных цифр (как 9 в 10-ной системе). Поэтому прибавление к ней 1 вызывает обнуление текущего разряда и перенос 1 в старший разряд: F + 1 = 10 (сравните с 10-ной системой: 9 + 1 = 10).
А теперь складываем столбиком:
FF
+ 1
---
100
Когда к младшей F прибавили 1, то в младшем разряде результата получился 0, а 1 "на ум пошла". Эту 1 "из ума" прибавляем к старшей F - снова происходит то же самое. Число кончилось, но "в уме" осталась 1. Дописывем ее слева и получаем 100.
В 10-ной (да и в любой другой) системе все точно так же:
99
+ 1
---
100
← →
lipskiy (2002-10-25 23:50) [28]Готова пилот-версия отдельного сайта для этого учебного материала:
http://delphi.adlen.ru
Юрий Зотов почему-то игнорирует мои письма, поэтому его мнения пока не знаю. Так что посмотрите. Покритикуйте. Расскажите что под Нетскейпом - нет ли глюков.
Отдельный форум для сайта и всякие интерактивные тесты начали писать другие люди (по крайней мере - они мне так сказали).
Прошу все же Юрия отреагировать как-то.
← →
al_ (2002-10-25 23:56) [29]
> Юрий Зотов © (25.10.02 23:28)
Вот СПАСИБО! Все предельно ясно и понятно! Чуствуется преподавательская нотка!
← →
al_ (2002-10-26 04:05) [30]Извините за частоту вопросов но все-таки, как сделать вещь:
ABCDE16> в .....8> интересует естественно принцип. СПАСИБО</>
← →
Юрий Зотов (2002-10-26 10:17) [31]Так... стоп.
Что сказано в задании?
КОНКРЕТНЫЙ вопрос. После 10-й попытки.
Перевод из системы в систему рассмотрен в материале по ссылкам. Рассмотрен подробно, с примерами и пояснениями. Нужно подробно эти примеры разобрать и, если после 10-й попытки есть вопрос - вот тогда. Например, "куда записывается такая-то цифра при выполнении такой-то операции".
Без обид, ОК? Такой подход просто необходим, иначе это будет не учеба, а "спросил-ответил-забыл". А вот это "забыл" нам как раз и не нужно.
← →
al_ (2002-10-26 22:31) [32]
> Юрий Зотов © (26.10.02 10:17)
ага я до 4 утра искал как мне реализовать 16 - 8...
← →
TTCustomDelphiMaster (2002-10-26 22:42) [33]al_ © (26.10.02 22:31)
Что непронятно то?
ЗЫ: Говорите точно, сколько вешать!!!
← →
zzet (2002-10-28 18:08) [34]Выдержка из:
Лекции по информатике
Лекция 4
Арифметические основы компьютеров
Сама же запись числа 757,7 означает сокращенную запись выражения
700 + 50 + 7 + 0,7 = 7•10 + 5•10 + 7•10 + 7•10 = 757,7.
Ну, это: 700 + 50 + 7 + 0,7 = 757,7 понятно и моему сыну,
а вот это:
7•10 + 5•10 + 7•10 + 7•10 = 757,7 честно говоря, не понимаю..
В позиционной системе =260, В непозиционной? 0.7 записано как 7•10, а если
бы было 757,777 писали бы 7•10 + 5•10 + 7•10 + 7•10 + 7•10 + 7•10 ??
Почему 7•10 ? Получается что ли 7 = 7•10 и 0,7 = 7•10 ?
Запись числа 757777 будет выглядеть так же?
А отделить дробную часть? Ничо не понимаю..
Может где-то можно поподробнее об этом почитать?
Может вопрос не по теме, но не хотелось бы оставлять непонятных моментов.
Заранее благодарю..
← →
TTCustomDelphiMaster (2002-10-28 18:16) [35]
> 7•10 + 5•10 + 7•10 + 7•10 = 757,7
Судя повсему здесь пропущены степени
7•10^2 + 5•10^1 + 7•10^0 + 7•10^(-1) = 757,7
← →
zzet (2002-10-28 20:04) [36]Спасибо! Врубился..
← →
Юрий Зотов (2002-10-28 23:22) [37]Свершилось! Переходим к этапу 2:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035836141&n=3
← →
Niki (2002-10-29 18:27) [38]Привет всем!
Объясните, пож-ста, как вычитать числа в двоичной системе, не прибегая к NEG и сложению? Т.е. по аналогии с 10-ной, с заемами?
В статье http://www.happytown.ru/prog/data/simple.html сказано что "Как и операция сложения, операция вычитания очень похожа на вычитание обычных десятичных чисел. Точно так же, как и при обычном вычитании, формируются междуразрядные заемы ...
Теперь небольшой пример:
00110000
01100011
----------
11001101 "
Мне кажется, что если в данном примере производить опер. вычитания обычным способом ("столбиком"), то в разряде 0 должен стоять 0 (1-1=0). Хотя с помощью NEG и ADD получается как надо.
По моему я где-то путаюсь с этими заемами :)
Спасибо.
← →
esu (2002-10-29 18:37) [39]
> производить опер. вычитания
Нету операции вычитания столбиком, есть знаковый бит...
← →
Niki (2002-10-29 18:40) [40]> esu © (29.10.02 18:37)
Не понятно как-то.
Страницы: 1 2 3 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.008 c