Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.57 MB
Время: 0.007 c
7-51986
SergePik
2002-10-14 15:12
2002.12.16
адрес LPT порта в Win2k


1-51675
123000
2002-12-05 17:23
2002.12.16
Tables


8-51845
DeMoN-777
2002-09-02 17:56
2002.12.16
Как узнать длинну трека или клипа проигрываемого в TMediaPlaer ?


7-51972
Ketmar
2002-10-13 15:39
2002.12.16
Terminal Services Client (ActiveX) - автоввод пароля - как?


3-51574
Шурик Ш
2002-11-27 11:54
2002.12.16
Ввод дат в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский