Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Юрий Зотов   (2003-03-04 23:16) [0]

Что ж, не прошло, как говорится, и полгода... Приношу всем свои извинения за длительную задержку. Впрочем, нет худа без добра - надеюсь, времени было достаточно, и ВСЕ четко усвоили ВСЁ, что нам положено было четко усвоить. Список этого см. на предыдущем этапе:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1038768556&n=3

Итак, приступаем к этапу 4. На этом этапе мы будем работать с MK-61, но ГЛАВНАЯ наша задача - это, конечно, не освоить программирование калькулятора, а ПОНЯТЬ принципы УСТРОЙСТВА компьютера и схему его РАБОТЫ. А также усвоить ПРИНЦИПЫ написания программ в машинных кодах (или на Ассемблере, что почти одно и то же) и понять, ВО ЧТО превращает нашу Delphi-программу компилятор и КАК она после этого работает. Как я уже не раз говорил, программируемые калькуляторы могут служить для всех этих целей великолепным учебным пособием - чем мы и воспользуемся.

В задание предыдущего этапа входило изучить устройство МК-61 и освоить работу с ним в режиме вычислений - то есть, просто научиться считать на нем. По инструкции. Надеюсь, все это сделали (а кто не сделал - надо СРОЧНО сделать), поэтому далее мы на этом особо останавливаться не будем, а будем осваивать режим ПРОГРАММИРОВАНИЯ. Но прежде давайте все же немного разберемся в устройстве MK и посмотрим, какое же отношение оно имеет к компьютеру, которым мы пользуемся.

Итак, МК имеет регистры Х и Y (далее мы будем обозначать их RX и RY). Содержимое RX всегда отображается на дисплее, а RY всегда остается невидимым. Вводимое с клавиатуры число всегда попадает в RX (и поэтому автоматически становится видимым). При нажатии клавиши операции (+, - и пр.) эта операция выполняется над числами (операндами), содержащимися в RX и RY, а результат снова попадает в RX (и поэтому тоже автоматически становится видимым). Конечно, при изменении RX его предыдущее содержимое затирается новым.

Теперь смотрим наш "большой" ПК. Сразу оговорюсь - речь пойдет о ПК на основе CPU Intel x86 и совместимых с ними, но чтобы не зацикливаться только на этой линейке, мы не будем рассматривать подробные детали конкретной аппаратной реализации, а будем рассматривать ПРИНЦИПЫ построения практически ЛЮБОГО компьютера.

Так вот - CPU нашего ПК тоже имеет подобные регистры, только их не 2, а гораздо больше, и их содержимое нигде не отображается. А вот как выглядит на Ассемблере команда сложения целых чисел (ADD) в ее простейшем варианте (регистр-регистр):
ADD EAX, EBX
что означает - сложить содержимое регистров EAX и EBX, а результат записать в регистр EAX. Заметьте - практически то же самое в MK делает клавиша + (сложить содержимое регистров RX и RY, а результат записать в регистр RX).

Напишем МК-программу, складывающую число 3 с числом, содержащимся в регистре RX (здесь и далее В^ обозначает клавишу, на которой написано "В" и "стрелка вверх", а символом ; будем отделять комментарии).

В^ ; скопировать (переслать) RX в RY
3 ; записать (загрузить) в RX число 3
+ ; сложить RX и RY. Результат получаем в RX.

По ходу дела будем привыкать к "настоящей" программистской терминологии - в этой программе и далее такие термины я буду приводить в скобках. Старайтесь понять их и запомнить.

А вот та же программа на Ассемблере x86:

MOV EBX, EAX ; переслать EAX в EBX
MOV EAX, 3 ; загрузить в EAX число 3
ADD EAX, EBX ; сложить EAX и EBX. Результат получаем в EAX.

Сравните эти две программы. Не правда ли - близнецы?

Пара примечаний для любителей придираться
1. Я в курсе, что в команде ADD источником может быть непосредственный операнд и поэтому приведенные выше три команды можно заменить одной. Однако, здесь и далее я собираюсь приводить не ОПТИМАЛЬНЫЕ примеры, а ТЕ, КОТОРЫЕ НУЖНЫ ДЛЯ ЛУЧШЕГО ПОНИМАНИЯ ТЕКУЩЕГО МАТЕРИАЛА. Потому что прежде, чем учиться программировать ОПТИМАЛЬНО, надо научиться программировать С ПОНИМАНИЕМ ТОГО, ЧТО ТЫ ДЕЛАЕШЬ И КАК ОНО РАБОТАЕТ. Именно этим мы и занимаемся.
2. Я также где-то когда-то слышал о том, что регистры нужно сохранять/восстанавливать, что существуют PUSH/POP и пр. Однако, здесь и далее я НЕ БУДУ ЗАСОРЯТЬ ПРИМЕРЫ НЕ ОТНОСЯЩИМИСЯ К ТЕМЕ И ЕЩЕ НЕ ИЗУЧЕННЫМИ НАМИ ДЕТАЛЯМИ. Детали мы будем вводить по мере их освоения. В школе нам сначала тоже сказали, что на ноль делить просто нельзя и лишь спустя много лет рассказали о понятии "бесконечность".

========== см. часть 2 ==========


 
Юрий Зотов   (2003-03-04 23:17) [1]

========== часть 2 ==========

Но идем дальше. СТОП - скажет себе кто-то. А на фига мне все это нужно, если я пишу на Delphi и могу написать просто:
X := X + 3;
или еще лучше:
Inc(X, 3);

Так вот на фига это нужно. Если Вы не усвоите хотя бы основные принципы устройства и работы машины, не изучите хотя бы основы Ассемблера, не поймете, во что превращается Ваша программа после ее обработки компилятором и как она работает - тогда можете смело и навсегда забыть о том, чтобы стать более-менее серьезным программистом. И перестать даже думать о таких задачах, как, например, написание приличной защиты, или исследование программ. А также перестать надеяться даже и на то, что Вы когда-нибудь напишете действительно оптимальный и надежный код. Не получится, понимаете? Эта примерно то же самое, что рассчитывать на победу в "Формуле-1", не умея толком водить даже обыкновенные "Жигули".

Идем дальше. Итак, мы написали нашу первую МК-программу (см. выше). Что же дальше? Как ввести ее в машину и запустить на выполнение?

Любая программа состоит из команд. Чтобы она могла работать, эти команды должны находиться в памяти. Значит, "ввести в машину программу" означает: "записать в память последовательность ее команд". В ПК это делает специальная системная программа - загрузчик других программ, а в МК мы должны сделать это вручную. Но возникает вопрос - а в какое место памяти надо записывать нашу программу? То есть - по какому АДРЕСУ должна размещаться первая команда нашей программы?

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

В MK есть специальный регистр - счетчик команд (будем называть его СК). Это служебный регистр, для операций с данными он не используется. А используется он для того, что в нем хранится адрес той машинной команды, которая должна быть выполнена следующей. Значит, если мы ввели программу по адресу A, то для ее запуска надо записать в СК значение A и нажать кнопку "Пуск". И все - программа начала работать. То есть, МК начал по очереди выполнять команды, из которых она состоит. И при переходе на выполнение каждой следующей команды он будет автоматически (аппаратно) изменять СК. Схема здесь примерно такая (запомните ее навсегда!):
1. Выполнить команду, адрес которой хранится в СК.
2. Увеличить значение СК на длину только что выполненной команды.
3. Повторить, начиная с п.1.

Таким образом, выполнение программы - это как бы бесконечный цикл выполнения ее команд. Чтобы прервать его, надо выполнить специальную команду "Стоп" - то есть, если в п.1 будет выполнена команда "Стоп", то выполнение нашей программа прервется. Но заметьте - сам МК при этом не останавливается! Он переходит к ожиданию наших действий - то есть, начинает выполнять какую-то свою внутреннюю программу, обрабатывающую наши нажатия на кнопки. Иначе, если бы он остановился совсем, то он перестал бы воспринимать вообще всё и превратился бы в мертвый кусок пластмассы.

Зачем я тут все это рассказал? А вот зачем - в ПК происходит ТО ЖЕ САМОЕ!!! В его CPU тоже есть СК (регистр IP - Instruction Pointer). И смысл этого регистра точно такой же. И CPU работает по той же самой схеме. И после завершения нашей программы CPU вовсе не останавливается (если он остановится, наш ПК тоже остановится), а переходит к выполнению другой программы - например, системной программы, которая ожидает действий юзера и обрабатывает их. Вот так, аналогия c МК здесь практически полная.

Договоримся, что все наши программы мы будем записывать в память МК по адресу 0 - то есть, с начала памяти. И, наконец включаем калькулятор (или запускаем его программный эмулятор).

Мы собираемся ввести программу, а для этого надо перевести МК в режим программирования. Нажимаем клавиши F Прг - и в правой части дисплейчика видим нули. Это показывается содержимое СК - то есть, сейчас мы начнем ввод программы по адресу 0. С вводом каждой команды МК будет показывать ее код в левой части дисплея и автоматически увеличивать СК. На дисплее умещается не более 3-х команд, поэтому по мере ввода они прокручиваются вправо, а самой последней (чей адрес отображен справа на дисплее) получается самая левая команда. Нажимая в режиме программирвания клавиши "Шаг назад" и "Шаг вперед" (это Шг со стрелками), мы можем перемещаться по памяти МК, просматривать и править ее.

========== см. часть 3 ==========


 
Юрий Зотов   (2003-03-04 23:18) [2]

========== часть 3 ==========

Примечания.
1. Клавииша Прг - это клавиша, на которой написано ВП (ввод порядка). Но над ней ЖЕЛТЫМ цветом написано Прг - это значит, что если сначала была нажата клавиша F (обратите внимание, что она тоже желтая), то смысл клавиши ВП меняется и МК воспринимает ее как крманду "перейти в режим программирования). То же самое относится ко ВСЕМ клавишам, над которыми что-то написано ЖЕЛТЫМ цветом - они имеют двойной смысл.
2. Такие клавииши, как F называются "модификаторы" и служат они для изменения кодов других клавиш (кстати, клавиши CapsLock, Shift и Ctrl на клавиатуре ПК - тоже модификаторы). Кроме F, у МК есть еще один модификатор - клавиша К. Она СИНЕГО цвета - то есть, придает другим клавишам смысл, обозначенный над ними тоже СИНИМ цветом. Таким образом, некоторые клавиши МК имеют двойную или тройную нагрузку.

Итак, набираем нашу программу. Напоминаю - она прибавляет 3 к введенному числу.

В^ ; переслать RX в RY
3 ; загрузить 3 в RX
+ ; сложить RX и RY
С/П ; стоп

Обратите внимание на последнюю команду - если бы ее не было, МК спокойно пошел бы "считать" дальше. Только вот что бы он "считал"? Ведь дальше в памяти сидят либо нули, либо какой-то случайный мусор, оставшийся от предыдущей работы.

Переводим МК обратно в автоматический режим - нажимаем F Авт. Но запускать программу еще рано - ведь сейчас в СК находится число 4, а это значит, что он насчет счет с адреса 4, находящегося ВНЕ кода нашей программы. А нам надо, чтобы он стартовал с нуля - поэтому обнуляем СК нажатием клавиши В/О.

Ну, теперь все готово. Вводим число 7, нажимаем С/П ("пуск") - и получаем число 10.

Ура! Программа работает! И мы, конечно же, захотим немного ее погонять. Что ж, вводим новое число, снова жмем С/П - и получаем какой-то бред. МК надолго задумывается, на дисплее что-то мелькает - в чем дело?

А дело в том, что мы забыли нажать В/О (обнулить СК). Ведь при первом запуске программы МК выполнил команду "стоп" и мы увидели число 10. При этом в СК, как и положено, содержал адрес следующей команды - то есть, число 4. И когда мы нажали С/П во второй раз, то глупая железка сделала то, что и должна была сделать - выполнила нашу команду "пуск", а затем начала выполнять команды, начиная с адреса, содержащегося в СК. А там было 4! То есть, МК начал "выполнять" уже не нашу программу, а какой-то бред, идущий после нее.

Но такая ли уж эта железка глупая? Нет, конечно. Она четко делает то, что должна делать и (самое главное!) не делает того, чего не должна. А должна она делать только то, что ей приказали написавший программу программист и выполняющий эту программу оператор. Так что глупость проявила не железка, а тот, кто приказал ей эту глупость сделать. И ЗАПОМНИТЕ НА ВСЮ СВОЮ ОСТАВШУЮСЯ ПРОГРАММИСТСКУЮ ЖИЗНЬ - ВО ВСЕХ ГЛЮКАХ ВИНИТЕ СНАЧАЛА СЕБЯ, А УЖ ПОТОМ МАШИНУ, СИСТЕМУ, DELPHI И СОСЕДА ДЯДЮ ВАСЮ. И ошибку ВСЕГДА ищите прежде всего в СВОЕЙ программе!!! И чем чаще Вы будете нарушать это железное правило - тем больше времени и нервов Вы будете тратить на поиск и устранение ошибок. С момента появления первой ЭВМ этот закон проверен уже миллионы раз, всеми поколениями программистов, на всех машинах системах и языках.

Вопрос: так что ж, нам всегда придется перед стартом программы нажимать В/О, чтобы обнулить СК?
Ответ: перед стартом ЭТОЙ программы - да, придется.
Тогда второй вопрос - а как этого избежать?
Ответ - заставить делать это саму программу.
Тогда третий вопрос - а как это сделать?
Ответ - использовать безусловный переход.

Дело в том, что смысл некоторых машинных команд состоит как раз в том (и только в том), чтобы изменить содержимое СК. Естественно, после выполнения такой команды в СК будет записан не адрес следующей после нее, а тот адрес, который записала сама команда. И компьютер, как ему и положено (вспомните схему его работы, которая приводилась выше), продолжит выполнение программы, начиная именно с этого адреса. То есть, произойдет переход - поэтому такие команды называют командами перехода. Пока что мы рассмотрим простейшую такую команду - безусловный переход (то есть, переход всегда, без проверки каких-либо условий). Зачем нам это надо? А затем, что такие команды существуют не только в МК, а в ЛЮБОМ компьютере. И в любой программе, где есть циклы, операторы if, case и им подобные (не говоря уже об операторе goto, который сам и есть безусловный переход).

========== см. часть 4 ==========


 
Юрий Зотов   (2003-03-04 23:18) [3]

========== часть 4 ==========

Команда безусловного перехода состоит из двух частей:
- сама команда (клавиша БП);
- адрес, на который нужно перейти (двузначное число, набирается как обычно, цифровыми клавишами).

Итак, наша программа теперь будет выглядеть таким образом:

В^ ; переслать RX в RY
3 ; загрузить 3 в RX
+ ; сложить RX и RY
С/П ; стоп
БП ; безусловный переход
00 ; на адрес 0 (для ввода нажать клавишу 0 два раза) - то есть, на первую команду нашей программы (В^)

Давайте исправим ее (если Ваш МК все еще мучается бесполезным трудом, остановите его клавишей С/П).

Сначала используем команду БП в режиме Авт - нажимаем БП и 05. То есть, переходим на адрес 4 - ведь именно он идет после нашей программы, а в режиме Авт надо набирать адрес на 1 больше того, куда хочешь перейти (кстати, домашнее задание для особо умных, дотошных и внимательных - почему так?). Переходим в режим Прг, нажимаем БП и 00. Все, программа исправлена - мы добавили к ней команду БП и адрес перехода.

Теперь переходим в режим Авт, нажимаем В/О, набираем любое число, запускаем, получаем результат - и больше нам не нужно нажимать В/О каждый раз - программа будет сама обнулять СК. Если бы в программе не было команды "стоп", то мы получили бы бесконечный цикл - но ведь она есть, и при ее выполнении МК "останавливается" (помните? на самом деле он никогда не останавливается), а мы в этот момент видим результат. Что и требовалось!

Обратите внимание - команда перехода занимает не одну, а две ячейки памяти. В МК такие команды называются двухшаговыми. В "больших" ПК длина разных команд тоже может быть разной, и это автоматически учитывается, когда СК изменяется при переходе на следующую команду.

Ну вот, мы написали нашу первую МК-программу. Она же - программа в машинных кодах (то есть, не на каком-то там языке, а прямо в кодах, на внутреннем языке самой машины). Она же, если хотите - программа на Асемблере.

А еще мы узнали, что существуют регистры для работы с данными и счетчик команд. Как программа размещается в памяти и как она выполняется. Ну и еще много кое-чего полезного, что нам пригодится в дальнейшем (я не перечисляю здесь это "кое-что" в явном виде, но, поверьте, оно существует). А теперь - задание.

1. Как следует освоить работу с МК в режиме программирования (ввод программы, ее просмотр, правку и запуск).
2. Внимательно просмотреть перечень команд МК в инструкции (но не зацикливаться на нем).
3. Модифицировать написанную нами программу так, чтобы она прибавляла к RX не число 3, а любое число, хранящееся в нулевой ячейке памяти.
4. Написать МК-программу, вычисляющую корень линейного уравнения AX + B = 0 (с проверкой A на ноль).
5. Написать МК-программу, вычисляющую корни квадратного уравнения AX^2 + BX + C = 0 (с проверкой A на ноль, а также с проверкой знака дискриминанта). Нужные формулы есть в школьном учебнике по алгебре.

При написании программ пока что ЗАПРЕЩАЕТСЯ использовать:
- подпрограммы.
- команды косвенных переходов и вообще любую косвенную адресацию.

Срок выполнения - примерно три недели.
Успехов!


 
Mihey   (2003-03-04 23:20) [4]

А это где-нить кроме форума выложено?


 
Marser   (2003-03-04 23:46) [5]


> Юрий Зотов ©

А ведь Михей подал идею - можно это и где-нибудь выложить.


 
Rouse_   (2003-03-04 23:51) [6]

> Mihey (04.03.03 23:20)
Предыдущие уроки должны быть в архивах, а то что было сказано Юрием сейчас - только в голове, причем у любого уважающего себя программиста.
ЗЫ: Хотя МК это круто, многие могут просто не понять причем тут он и программирование :)



 
Malder   (2003-03-05 00:42) [7]

Сори за офтоп: у меня есть архивы всех тем. Завтра выложу на каком-нибудь бесплатном хостинге, если кому интересно. Об интерактивности речи, конечно, нет


 
Marser   (2003-03-05 00:58) [8]


> Rouse_ © (04.03.03 23:51)


> ЗЫ: Хотя МК это круто, многие могут просто не понять причем
> тут он и программирование :)

Вот для того господин магистр и трудится.


 
vuk   (2003-03-05 02:46) [9]

to Юрий Зотов:
Не флейма ради.

>Она четко делает то, что должна делать и (самое главное!) не
>делает того, чего не должна.
На самом деле машинка умеет делать много того, чего она делать не должна, стоит только хорошо попросить. :o) По поводу глюков и особенностей работы этой линейки калькуляторов в свое время люди целые статьи в журналах писали.

to Rouse_:
>Хотя МК это круто, многие могут просто не понять причем тут он
>и программирование
Пусть тогда поверят мне, как человеку, который программировать начинал с этого самого МК (того самого, что у Юрия :o)), штука настолько полезная (во всяком случае, она оказалась такой для меня в свое время), что даже описать полезность трудно. Девайсу этому до сих пор благодарен. Это вроде бы и калькулятор, но в то же время когда пишешь программу для него, используешь практически ассемблер в чистом виде. И язык там достаточно простой, оперирующий достаточно сложными операциями. На такой машинке легко понять что такое стек, условные и безусловные переходы, циклы, прямая и косвенная адресация. Ну, в общем-то Юрий все это уже написал...

P.S. Кстати, если вопросы возникнут по поводу - могу ответить, поскольку многое еще помню.

P.P.S. Когда я впервые увидел Lisp, я сказал себе - "О! Это мы уже проходили! :o) Почти та же самая обратная запись выражений, что была в калькуляторе!"


 
Юрий Зотов   (2003-03-05 04:44) [10]

Полезная информация.

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

1. Вверху окошка эмулятора есть надпись "MK61.mk". Сделайте по ней двойной клик мышкой - справа добавится еще одно окошко с 4-мя закладками.

2. Нажмите на закладку "Помощь" и проведите мышкой по клавиатуре МК, ни на что не нажимая. Вы увидите, что при наведении мыши на любую клавишу по справа появляется ее описание. Полезная подсказка, но не это главное.

3. Нажмите на закладку "Память" и выполняйте все те действия, о которых шла речь выше. Справа будет отображаться все текущее состояние МК - содержимое всех регистров, программной памяти, СК и ячеек памяти. Вот это и есть главное. Очень наглядно и очень полезно. Вся эта информация отображается и в режиме Авт, и в режиме Прг, и во время работы программы. Последнее особо ценно.


 
Юрий Зотов   (2003-03-05 16:12) [11]

Up.
Чтобы не прозевали те, кому это нужно.
Наивно полагаю, что такие все же есть.


 
MsGuns   (2003-03-05 18:16) [12]

>Юрий Зотов © (05.03.03 16:12)
>Наивно полагаю, что такие все же есть.

Есть-есть. Сам баловался с МК, а еще раньше с "Проминь". Была такая железяка. В любом случае интересно читать вас, Юрий.


 
BigBadMutuh   (2003-03-05 20:43) [13]

Я тоже читаю, выполняю. Так что up.


 
michael_b   (2003-03-05 20:49) [14]

В каком кнкретоно архиве лежат описания 1-го и 2-го этапа? А то у меня не выделенка чтоб лазить по всем, апрочитать очень хочется.


 
Юрий Зотов   (2003-03-05 23:38) [15]

Вот вся история:
Идея и ее обсуждение - архив от 16.01.2003
Этап 1 - архив от 16.12.2002.
Этап 2 - архив от 23.12.2002.
Этап 3 - еще не в архиве.


 
Malder   (2003-03-06 00:15) [16]

Вот выложил на http://www.baseprogram.narod.ru

Там есть как Этапы в виде отдельных страничек, так и архивы всех веток здесь создаваемых


 
SergeN   (2003-03-06 07:24) [17]

Юрий Зотов, жду не дождусь этапа № 5.


 
Malder   (2003-03-06 20:03) [18]

Удалено модератором
Примечание: Создание пустых сообщений


 
Mihey   (2003-03-06 20:10) [19]

2 Rouse_:

>Предыдущие уроки должны быть в архивах, (!...) а то что было сказано Юрием сейчас - только в голове, причем у любого уважающего себя программиста (...!).

Вот так всегда, как же народу учиться, когда его встречает ТАКОЕ НАПРАВЛЕННОЕ ПРОТИВОДЕЙСТВИЕ????????


 
sancho{ne_hochu_parol_v_ceshe_ostavit'}   (2003-03-06 20:44) [20]


> программу-эмулятор MK61.exe


Где её скачать?
Но его я там не видел :(


 
Юрий Зотов   (2003-03-06 23:29) [21]

Ссылки, где скачать эмуляторы МК-61 были даны на этапе 3. Повторяю для невнимательных:

http://www.emulator3000.com/rus-c3.htm
http://umbra.chat.ru/mk61ins.exe

Это две разные программы, пользоваться можно любой из них. Первая содержит в себе целую кучу красивых калькуляторов (из которых нам нужен ТОЛЬКО MK-61). Вторая не такая красивая, зато с хелпом (раскрывается в боковом окне и дает подсказку по клавише при наведении мыши на нее). Кроме того, вторая программа умеет показывать все текущее состояние калькулятора, что важно как раз для наших целей - понять, как работают компьютеры и наши программы.

А здесь лежит руководство по использованию МК-61:
http://www.neox.pri.ee/mk61manual


 
Феликс   (2003-03-06 23:58) [22]

Снимаю свою бейсболку перед теми, кто следит за посланиями Юрия Зотова. Меня хватило на первые 2 предложения 1 этапа. Скоро ребята вы не только напишите МК-программу, складывающую число 3 с числом, а к примеру, к числу 5, а там гляди и к числу 6, а то и 7 (правда это все будет на 9, а то и на 10 этапе).

Шучу я, не обижайтесь. На самом деле, как я уже сказал, я потрясен и восхищен.


 
Malder   (2003-03-08 12:20) [23]

Удалено модератором
Примечание: Создание пустых сообщений


 
Lancelot   (2003-03-09 23:09) [24]

В то время, когда я начинал (лет 10-15 назад) школьник, который хотел заниматься компьютерами (что тогда означало - программировать), шел в библиотеку, брал тучу книжек по программированию, заводил толстую тетрадку для листингов, после уроков осаждал учителя информатики (или руководителя компьютерного клуба), носил домой распечатки и т.д. Только такие энтузиасты могли рассчитывать на то, что им можно будет пользоваться Машиной :)
А сейчас школьнику дарят персоналку, он начинает шляться по интернету, ставит себе дельфу, играется компонентами, пытается писать вирус, сниффер и троян, натыкается на конференцию "Мастера Дельфи" и только после этого заводит себе толстую тетрадку и т.д. И героический Юрий Зотов пишет для них книжки, потому что мысль, что можно самим, ногами и безо всякого компьютера пойти в библиотеку и взять каку-нибудь "жутко устаревшую" книгу 80-х годов по алгоритмам, программам и языкам, для них кажется дикой...


 
wnew   (2003-03-09 23:28) [25]


> Lancelot © (09.03.03 23:09)

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


 
Pat   (2003-03-11 12:30) [26]

Что-то далеко опустились...
У меня возникло несколько вопросов по заданиям 4 и 5..точнее, не вопросы, а просто уточнения нужны.
А и В нужно вводить "с клавиатуры" или можно записывать их в регистры?
В принципе, №4 двумя способами уже сделал. :)


 
Pat   (2003-03-11 12:37) [27]

P.S. Под регистром я понимаю:
Клавиша [П->X]

Вызов в регистр X содержимого регистра, номер
которого необходимо указать нажатием следующей
клавиши.
[П->X] - [0]..[e]
T = Z
Z = Y
Y = X
X = RG..


 
Юрий Зотов   (2003-03-11 16:09) [28]

> А и В нужно вводить "с клавиатуры" или можно записывать их в
> регистры?

Как Вам больше нравится. Дело не в этом. Главное - не написать саму программу (хотя и это нужно, потому что надо привыкать к языку машинных команд). Но все же главное - на этих примерах понять, как пишутся программы в кодах и на Ассемблере. И понять, как они работают на "машинном" уровне.


 
Юрий Зотов   (2003-03-13 10:22) [29]

Пока что Up. Пока не улетело.
А там посмотрим.


 
Satirus   (2003-03-13 12:33) [30]

Маэстро! Отсканируйте, пожалуйста, Рэя Конопку.
Вам столько народу спасибо скажет...

С. Уважением.


 
Юрий Зотов   (2003-03-13 13:42) [31]

> Satirus (13.03.03 12:33)

Около 500 страниц.
Интересно, как Вы себе это представляете на практике?


 
Satirus   (2003-03-13 15:44) [32]

Ну как, как? Включаю сканер, открываю книгу на первой странице, нажимаю Scan. Сохраняю 1-2.jpeg, ну и так до пятисотой страницы.
Если мне гонор не позволяет заниматься рутинной работой, прошу сделать это свою секретаршу или подругу за чай-конфету. А потом выкладываю всё это в инете. И все довольны:)

С. Уважением.


 
vuk   (2003-03-13 15:47) [33]

to Satirus:
У кого есть книга, у того нет на это времени и наоборот.


 
Satirus   (2003-03-13 16:25) [34]

2vuk © (13.03.03 15:47)
так выпьем же за то, чтоб наши желания исполнялись в валидно-ликвидный срок:)


 
Anatoly Podgoretsky   (2003-03-13 16:36) [35]

Satirus (13.03.03 15:44)
Кроме авторов книги и книгоиздателей, их обокрали.


 
Satirus   (2003-03-13 16:49) [36]

2Anatoly Podgoretsky © (13.03.03 16:36)
их, это тех, которые выступают в роли учеников в Этапах?


 
Юрий Зотов   (2003-03-13 18:15) [37]

> Satirus (13.03.03 15:44)

Все замечательно Вы придумали, вот только есть небольшие "но":

1. Сканер мне доступен только на работе, да и то он в другой комнате, подключен к чужому компьютеру и т.д.

2. Секретарши у меня нет (к сожалению). Подруга есть, но не на работе (к счастью), а дома, поэтому у подруги сканера тоже нет.

3. Ни я сам, ни кто-либо из моих сотрудников не могут позволить себе потратить несколько рабочих дней на сканирование не относящегося к работе материала. Даже по моей просьбе. Даже за чай-конфеты.

4. Даже если все это сделать, объем 250 рисунков будет, мягко говоря, немалым. При моих нынешних возможностях выхода в Сеть (dial-up, максимум 33600, один компьютер на всю контору) придется потратить еще неколько дней на их выкладывание. Далее см. п.2.

5. В книге есть такое слово - copyright. И когда мне предъявят иск, то платить за меня будете Вы? Почему-то есть сомнения.


> Satirus (13.03.03 16:49)

Очень остроумное замечание. Правда, непонятно, кто же все-таки обокрал этих несчастных учеников. Не я, надеюсь? Тем, что не дал бедолагам книжку поюзать (вот жмот-то, правда?).

А вот как насчет помочь? Вместо того, чтобы острить. Работа найдется, уверяю Вас.


 
Satirus   (2003-03-13 18:28) [38]

2Юрий Зотов © (13.03.03 18:15)
Очень остроумное замечание. Правда, непонятно, кто же все-таки обокрал этих несчастных учеников. Не я, надеюсь? Тем, что не дал бедолагам книжку поюзать (вот жмот-то, правда?).
А это Вы, уважаемый, уже у г-на Подгорецкого спрашивайте. Я всего-лишь попытался понять смысл его реплики, дая наводящий вопрос.

>А вот как насчет помочь? Вместо того, чтобы острить. Работа найдется, уверяю Вас.
Да я бы не против. Даже сам когда-то предподавал курсы Дэлфи для новичков в группе из 4-х человек: одна девятикласница, один одиннадцатикласник и два третьекурсника. Так что опыт имеется и хотелось бы его продолжить с учетом накопившихся пожеланий. Так что Ваша практика полезна не только для учеников. Продолжайте, пожалуйста, а про книжку забудьте. Это я так, для поддержания разговора предложил, да и самому взгянуть было бы интересно, а на книжном рынке её уже не продают. Вот и пытаюсь её достать. Вообщем, про книжку забудьте. Постараюсь её выпросить у malkolinge и отсканирую сам.
А на счёт копирайта - истина дороже.

С. Уважением.


 
Mihey   (2003-03-13 18:33) [39]

Хорошо, пускай старания Юрия Зотова пропадают в аналах бесчисленного архива...


 
Юрий Зотов   (2003-03-13 18:39) [40]

Почему пропадают? Вот, спасибо Malder"у:
http://www.baseprogram.narod.ru

И потом, я надеюсь, что главный архив остается все же в головах. А там ничего не пропадает.







Страницы: 1 2 3 4 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.203 c
14-67964
Marser
2003-06-28 11:54
2003.07.21
---|Ветка была без названия|---


3-67680
Александр Ч_
2003-06-26 16:58
2003.07.21
Перебор записей в DataSet


14-68053
loto
2003-07-05 16:38
2003.07.21
Использование Indy в Delphi


4-68108
Frankenstein
2003-05-14 12:58
2003.07.21
systray


6-67953
LedWorm
2003-05-13 21:53
2003.07.21
Открытие Браузера по событию.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский