Text
                    ш
2
Т. Романовский
о.
ш
ι
τ
s
о
ffl
о
3
ί


Ν = О О 1 2 5 + Ml Ί 8 9 - п-ШШШШШШШШШ[1 г /-/ ВП Сх I FBX ΞΞΙ ιх и ~^~ ι 1х-у1 [fiqx F\T | Fx2l |F1/x| JFxVI FQ Fex | | Fin | |Fsin1[ |Fcos1| |Ftg"1| |Fsin| |Fcos| |rtg С/П БП В/О ПП КНОП K1 K2 Fx*0 FL2 Fx>0 FL3 FL1 Fx<0 FLO Fx=0 4N = Π η 6Νξ ип η -Ν= К ПП η LN = К π η 7Ν= CN = Κ χ*ο η Κ Χ<0 η 8Ν = ΓΝ= Κ БП η Κ ИП η 9Ν= ΕΝ= Κ Χ>0 η Κ χ=ο η •33 ЗА ι65 Q 81 »Λ\ » °/ο 37l I & 361 L. JEC3Q "Q га га га f~s^i га rai га it All В 66 R 82 83 CD ^67 u68 •69 70 Τ 84 71 Г 3d 73 υ ν w U85l V86l V¥87| ш 1 8э1 * 42 + 431 57l ' 581 -59J -901 91 44 A5 601 ~ 611 461 I A\ 048 62} 12Ш 64 Ы jy U-76J M77 N78 ί 079 I P80 \ 92 93 ^941 I — 9б1 I 96 32
Т. Б. Романовский МИКРО КОМПЬЮТЕР В ШКОЛЕ ПОСОБИЕ ДЛЯ УЧАЩИХСЯ КИЕВ «РАДЯНСЬКА ШКОЛА» 1986
22.18 Ρ 695 Tomass Romanovskis Elektroniskais skaitlotajs skola PalTglTdzeklis skoleniem RTga "Zvaigzne" 1986 Перевели с латышского Э. ЕНИКЕЕВА и С. ПАВЛОВ Печатается с диапозитивов издания: Т. Романовский Микрокомпьютер в школе Пособие для учащихся Рига «Звайгзне» 1986 4306020400-422 M210I04)—86 © "Zvaigzne", 1986 (С) Перевод с латышского, "Звайгзне", 1986
ПРЕДИСЛОВИЕ В древние времена для счета пользовались камешками и палочками, В средние века люди научились считать столбиком. В наши дни для вычислений применяются электронные микрокалькуляторы, которые заменяют не только арифмометр и логарифмическую линейку, но и таблицы логарифмов. Электронный микрокалькулятор — настолько многогранное устройство, что часто мы даже не догадываемся о всех возможностях его использования. С помощью микрокалькулятора можно решать разнообразные уравнения, проверять решения уравнений, проводить численные эксперименты, получать наглядную числовую информацию из сложных формул, обрабатывать результаты наблюдения,лабораторных работ, играть в различные математические игры. В трех первых главах данной книги рассказывается о том, какое применение находят эти карманные ЭВМ в самых различных областях. В настоящее время почти в каждое электронное изделие вмонтирован один или несколько микропроцессоров. Микропроцессор содержит несколько десятков тысяч радиоэлектронных элементов, которые все вместе образуют так называемую большую интегральную схему (БИС). Хотя количество элементов в этой схеме очень велико, все они размещаются в небольшом кремниевом кристалле, длина ребра которого составляет всего лишь несколько миллиметров. Микропроцессор обрабатывает информацию по программе, хранящейся в той же или в другой большой интегральной схеме. Стоит лишь заменить программу, и микропроцессор можно заставить производить измерения, вычислять, управлять действиями робота или какого-либо другого устройства и т, д. Наиболее распространенные микропроцессорные устройства известны каждому человеку — это электронные часы и микрокалькуляторы. Микропроцессор является основным элементом и тех устройств, в которые можно записать любую составленную человеком программу. Такие микропроцессорные системы называются программируемыми устройствами. К ним относятся, например, программируемые игрушки. 3
программируемые микрокалькуляторы, программируемые измерительные устройства и роботы, программируемые телефоны и видеокомпьютер. Видеокомпьютер — это ЭВМ индивидуального пользования, в комплект которой входят хорошо знакомые в быту устройства — электронно-пишущая машина для ввода информации, телевизор для отображения информации в легко воспринимаемой форме и кассетный магнитофон для ввода в ЭВМ или вывода на магнитную ленту информации (программ, чисел, графиков, нот и т. д.). Чтобы программируемые устройства можно было использовать при решении конкретных задач, нужно научиться составлять алгоритмы и переводить их на входной язык программируемого устройства. Для автоматической обработки числовой информации в настоящее время чаще всего применяются программируемые микрокалькуляторы БЗ-34, МК-54, МК-61, МК-52, а наиболее распространенным языком программирования, используемым в видеокомпьютере, является BASIC (бэй- сик). В последних трех главах данной книги рассмотрены алгоритмы и соответствующие им программы на входном языке программируемого микрокалькулятора БЗ-34 и на бэйсике. Материал книги распределен по главам следующим образом. Первая глава знакомит читателей с устройством микрокалькулятора и клавишными операциями. Микрокалькулятор рассматривается как специализированная микропроцессорная ЭВМ с готовой библиотекой стандартных программ. Показано также, что инженерные микрокалькуляторы можно рассматривать как программируемые устройства, в которые можно ввести программы операторов +К, —К, ХК, ; К и X . Во второй главе рассмотрены важнейшие возможности использования микрокалькуляторов в средней школе (для проверки решений, получения наглядной числовой и графической информации, числового моделирования, для обработки результатов наблюдений,лабораторных работ и т. д.). Особое внимание обращено на функцию int (целая часть числа), которую широко используют в алгоритмических языках и языках программирования. В третьей главе собраны задачи, решение которых закрепляет вычислительные навыки школьников. Выполнение численных экспериментов с микрокалькулятором стимулирует мышление, наводит на идею решения задачи, развивает интеллектуальные умения. Использование микрокалькуляторов в классе позволяет многие задачи этой главы решать методом коллективных вычислений, при котором каждый учащийся получает свою вычислительную задачу, но решение проблемы в целом возникает в результате коллективного труда. Четвертая глава полностью посвящена понятию алгоритма и записи алгоритмов на определенном формализованном языке, Введением в алгоритмическую запись служит хорошо известная школьникам форма записи решения задач по физике. В этой главе микрокалькулятор 4
выступает и в роли знакомого наглядного средства для иллюстрации линейных, разветвляющихся и циклических алгоритмических процессов и в качестве объекта применения алгоритмов для более глубокого понимания работы карманной ЭВМ. Рассмотрено несколько способов описания циклов, применяемых на наиболее распространенных языках программирования. В записях алгоритмов используются также диалоговые команды. Ознакомившись с этими командами, читатель сможет получить представление об основных принципах формирования диалога между человеком и ЭВМ. В пятой главе рассмотрен входной язык для программируемого микрокалькулятора семейства БЗ-34. Ознакомившись с содержанием этой главы, читатель сможет получить практические навыки работы с программируемым микрокалькулятором, который в настоящее время является самым распространенным процессором для автоматической обработки алгоритмов. В шестой главе приведены сведения об основных элементах бэйсика. Рассмотрены только те операторы, которые являются общими для различных вариантов бэйсика. Поэтому приведенные в этой главе программы применимы для работы почти на всех ЭВМ, имеющих интерпретаторы бэйсика. Желательно, чтобы в процессе работы с данной книгой в распоряжении читателя был соответствующий микрокалькулятор, с помощью которого можно было бы реализовать рассмотренные в книге программы. Так как в книге не даны полные описания конкретных микрокалькуляторов, читателю нужно самостоятельно ознакомиться с инструкцией работы и особенностями своего микрокалькулятора. Для получения стабильных вычислительных навыков советуем читателю самостоятельно решить по меньшей мере часть из помещенных в книге упражнений. Каждая глава начинается с картинки "На уроке информатики", темы которых: микрокалькулятор, численное моделирование, изучение траектории полета спортивного ядра методом коллективных вычислений, получение приближенного значения квадратного корня по алгоритму, управление микрокалькулятора БЗ-34 программой, управление видеокомпьютера программой на языке бэйсик. Большинство иллюстраций в книге выполнены в большом масштабе с тем, чтобы их можно было перерисовать на пленку и показывать в увеличенном размере с помощью графопроектора. В приложении даны несколько практических и демонстрационных программ для программируемого микрокалькулятора и видеокомпьютера.
ЭЛЕКТРОНИКА MK7I J-03 MwcrumxMMUJisrnop, - ' капАихнмАя с е α Ine* о α aniQBss] пваав йпйав Ьолпьсэ й и, <гыжи*лн&< nfwywLuUuua ilflJUTbCS f ел* vw«A^ Ъ€тлггшшош,аа п ЭВМ, \ соот- Sowbdcuoi т )ГПСЗ ПрХППОЛСЛОЬО ; ушхл, *исслсь, гоиииииша >шслсь, κ^bouafШJΎь^unJOr корАя. S МК=71 ос hjOu шиш- катсря .фшххпСи - гплльнхг 20 Ξ/ i шиш Ш -*4 Ξ-8 пр/)угоии*ЛАи \ аля аяггихллДи- ожгшА9 ΛαΖ Jfpcyia*AA*A/ja, анлмахетсд [ *сла/ъиоиоС L5.8 Qfl&Su,. $ pjUAAAJUUX S0 177 [П+] 178 [П+] 177 ЩИ 172 ГТЙ1 JCuxmuouxmm, \MK-s1 трлммсиатк ' тшиюсих pjouvaunoo·. . ШЛА, политы^ JU024CHCT ШуиХГГЬЬ UIM1HJU,
1. УСТРОЙСТВО МИКРОКАЛЬКУЛЯТОРА И КЛАВИШНЫЕ ОПЕРАЦИИ 1.1. ПРОСТЕЙШИЕ И ИНЖЕНЕРНЫЕ МИКРОКАЛЬКУЛЯТОРЫ Микрокалькуляторы являются самой распространенной ЭВМ личного пользования. Они предназначены для выполнения с высокой точностью и скоростью арифметических действий с многозначными числами и автоматического вычисления значений функций и алгебраических выражений. Все выпускаемые микрокалькуляторы принято делить на три основные группы: простейшие, инженерные и программируемые микрокалькуляторы. На рис. 1.1. показан современный простейший микрокальку- Рис. 1.1. Микрокалькулятор MK-60 Рис. 1.2. Микрокалькулятор БЗ-32 7
л '—1% 111 . I 1 f* ■■ .:■' r , ] 1|1лш μ электроника ι УК SI If * Г ГАД ГЩ ι - '-- —' *" " * ?■** у ^^ *g.... 11 \ Г.» Y* - Г/« ~> ■: « » в в в в © ι ВНР 9JmrV ВНР ВнР BwP ' ι ■ ■■■В BBQDB V ■ —!■ —■ in J Рис, 1.4. Микрокалькулятор МКШ-2 Рис. 1.3. Микрокалькулятор МК-51 лятор "Электроника МК-60", источником питания для которого служит свет. С помощью клавишей простейшего микрокалькулятора можно не только выполнять арифметические действия, но и вычислять проценты, обратную величину, квадратный корень, а также пользоваться электронной памятью. Характерным признаком инженерных микрокалькуляторов (рис. 1.2—1.5) является наличие клавиш с обозначением функций sin, In, 10х и т. д. Эти микрокалькуляторы могут выполнять от нескольких десятков до нескольких сотен различных операций. Если бы каждой операции соответствовала отдельная клавиша, клавиатура приобрела бы огромные размеры. Поэтому в микрокалькуляторах данного типа применяется тот же принцип, что и в пишущей машинке, на которой с помощью специального переключателя одной клавишей можно напечатать как прописную, так и строчную букву. В электронных микрокалькуляторах аналогичный переключатель называют клавишей совмещенной функции (JFj .Таким образом можно в два раза и более сократить количество клавиш в клавиатуре. В инженерном микрокалькуляторе каждой клавише обычно 8
соответствуют два или даже три обозначения. Например, в микрокалькуляторе БЗ-32 над клавишей написано π. Если нажать клавиши и [J3J , на индикаторе высветится число π, т. е. 3, 1415926 ( с точностью до семи знаков после запятой). Микрокалькулятор БЗ-32 спроектирован специально для школьников и студентов, поэтому в него заложены клавишные операции для автоматического решения квадратного уравнения и вычисления детерминанта. На базе модели БЗ-32 создан мпмишнм Рис. 1.5. Макет микрокалькулятора БЗ-36 1 В дальнейшем слово "Электроника" в названии микрокалькулятора будем опускать.
настольный микрокалькулятор МКШ-2 (рис. 1.4), предназначенный для школьных кабинетов. Много интересных функций имеется и в микрокалькуляторах МК-51 и МК-71, применение которых позволяет автоматизировать обработку результатов измерений. В Латвийской ССР для кабинетов математики профессионально-технических училищ изготовляются увеличенные макеты микрокалькуляторов для группового обучения (макет БЗ-36 см. рис. 1.5). ВОПРОСЫ И УПРАЖНЕНИЯ 1. Сколько различных операций можно выполнить с помощью микрокалькуляторов, показанных на рис. 1.1—1.5? 2. Какое число появится на индикаторе микрокалькулятора БЗ-32 (см. рис. 1.2), если нажать клавиши: -ШИШ·· б> ИШИ; в) [НИ Ξ Ξ ? 1.2. УСТРОЙСТВО МИКРОКАЛЬКУЛЯТОРА Как видно из рис. 1.6, микрокалькулятор состоит из блока питания 1, индикатора 2, процессора 3 и клавиатуры 4. Процессор калькулятора МКШ-2 состоит из нескольких микросхем. В современных микрокалькуляторах процессор реализован в виде одной большой интегральной схемы (БИС). Большая интегральная схема заключена в корпус размером 10 см , хотя сама она занимает там площадь лишь 5x5 мм2! И все же на таком кристалле кремния, площадь которого равна площади клетки в тетради по арифметике, выполнена электронная схема с 10-30 тысячами элементов. Арифметические действия выполняются в арифметически-логическом устройстве (АЛУ), линейные размеры которого составляют 0,5 мм. Размеры отдельного транзистора всего 0,02 мм. Микропроцессор обрабатывает информацию по заданной извне программе (рис. 1.7 а). Изменяя программу, с помощью микропроцессора можно вычислять значения различных функций, управлять игрушками, отсчитывать временные промежутки, искать нужную запись на магнитофонной ленте. Электронные микрокалькуляторы — это ЭВМ, выполненные на основе микропроцессора, имеющие готовую библиотеку стандартных программ. Список этих программ можно узнать по клавиатуре (символом -^обозна- 10
^^.Щщщ^?ЩЩЩ Рис. 1.6. Устройство МКШ-2: блок питания — 7; индикатор — 2; процессор — 3; клавиатура — 4
Программа "\Г" Микропроцессор -> 3 >№&Ш*&ЬШ£№т} \Г 1/Х н с \Е 100ГСГ " п: ZH3C э- Ш Ш Ш ШЩ Ш Ш Ш Ξ Щ Ш И О Ш Ξ «ji ΊΙΪΤ tifcVYil "Vl.flJ 5 2 1 V'^-' "" .-J"1*'' "'·»'' '>; ^7Ж. £-Ш looif^— 1 4 f,7f., 1 ι. ..φ.., Γ,« ■ ■ ί>„ Q.vΐ '·№;:' ΐ ч- --у ν·; ч-ffi ^ν,;··ν мУгг^-^у! б ь Рис. 1.7. Работа микропроцессора и микрокалькулятора при вычислении γ 9 чено деление, символом /—/ изменение знака числа, символом γπρο- грамма извлечения квадратного корня). Познакомимся с устройством микрокалькулятора (рис. 1.7 б). Микропроцессор "понимает" только язык электрических сигналов, причем самый простейший, алфавит которого содержит лишь две буквы 1 и О (сигнал есть и сигнала нет). Поэтому все слова этого языка состоят из нулей и единиц. Например, слово 1001 означает число 9, а слово 0011 — число 3. Чтобы микропроцессор смог понять вводимые команды, необходимо устройство ввода 1, которое переводит эти команды (их вводят путем нажатия соответствующих клавиш) на язык нулей и единиц. 12
Точно также необходимо и устройство вывода 2, которое переводит полученный результат с языка нулей и единиц на язык понятных нам знаков, а потом отображает переведенный результат на индикаторе. В каждой ЭВМ есть оперативное запоминающее устройство 3 (ОЗУ). В электронных микрокалькуляторах оперативное запоминающее устройство состоит из регистров. В регистре X хранится число, которое вводится с клавиатуры или получается в результате вычислений. Этот регистр соединен с устройством вывода, которое содержимое регистра отображает на индикаторе. Число можно хранить также в регистре V. Однако в регистр У число может попасть только как копия числа, находящегося в регистре X. Имеется также операционный регистр Q. В него помещается адрес вызываемой программы (X, +, —, +). Важной составной частью калькулятора является постоянное запоминающее устройство 4 (ПЗУ), где хранятся сами программы. Программам "умножения", "деления", "сложения" или "вычитания" соответствуют определенные адреса. Вызов этих программ осуществляется при нажатии клавиши [==] . Остальные программы, например " %/"""# "1—1", вызываются нажатием соответствующих клавиш |\/J , |/—/| . Вычисления проводятся в арифметически-логическом устройстве 5. Работа всех перечисленных составных частей микропроцессора согласуется с устройством управления. Остается еще рассказать об одной особенности действия микропроцессора. Микропроцессор работает по очень точным часам, которые называются тактовым генератором. Любая операция в микропроцессоре происходит только тогда, когда "прозвучит" очередной сигнал времени. Поскольку эти сигналы времени следуют один за другим через промежутки, равные стотысячной или даже миллионной доле секунды, микропроцессор может выполнять в секунду сотни тысяч микроопераций. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Из каких устройств состоит ЭВМ? 2. Из чего состоит оперативное запоминающее устройство микрокалькулятора? 3. Какие программы вызываются при нажатии клавиш I/—/ 1.3. КАК РАБОТАЕТ МИКРОКАЛЬКУЛЯТОР Сначала познакомимся с работой микрокалькулятора при вычислении \/""9 (см. рис» 1.7 б, в). При нажатии клавиши с цифрой 9 устройство ввода переводит эту цифру на язык нулей и единиц (код числа 9 на этом языке 1001) и засылает его в регистр X, содержимое которого устройство вывода отображает на индикаторе. При нажатии клавиши квадратного 13
|Гч ~~~η [Τ χ \Τ\Γ > : CJLZl· —-г- — W: ^ Ни [] L^^-.-,^ . ,<!,.'...—™J;—. ι.■■■'.j α б jT'· '""' *" 'iff b rl 1 oiooИ 0100 FW* ^ ^.Л.УгЧ IJLL.—./■■-'■■■r.J.fl-<,...-w.„r.,,»,.,,., J ■T."'"P"r".;iit.t,:;'i'«Tii ';;,!",'1..ЧШ1 I ,36 ^i.WI^^T.-T. «1.4 ι -"Ц 3 W4 -згэд feglobi'ioViotd в Рис. 1.8. Работа микрокалькулятора при вычислении 4 Х9 корня устройство управления вызывает из регистра X число, а также программу "квадратный корень". Когда арифметически-логическое устройство выполнит программу, результат будет послан в регистр X и устройство вывода отобразит его на индикаторе. Теперь решим арифметическую задачу 4X9 (рис. 1.8 а, б, в, г). При нажатии клавиши [j4J в регистре X записывается код числа 4 на языке нулей и единиц — 0100, а на индикаторе появляется 4. При нажатии клавиши "умножение" в операционном регистре Q записывается адрес программы "умножение". Одновременно содержимое регистра X копируется в регистр V. При нажатии клавиши 9 изменяется только содержимое регистра X и показание индикатора. Самые сложные процессы происходят после команды "выполнить", которая дается нажатием кла- Из постоянного запоминающего устройства вызывается виши программа, адрес которой записан в операционном регистре Q, из оперативного запоминающего устройства вызываются содержимые регистров Хи /, Результат из арифметически-логического устройства поступает в регистр X и отображается на индикаторе. 14
Задача 4X9 будет решена калькулятором и в том случае, если вместо клавиши = нажать клавишу любого арифметического действия. 1.4. ГАШЕНИЕ СОДЕРЖИМОГО РЕГИСТРА И ОБМЕН МЕЖДУ РЕГИСТРАМИ В каждом микрокалькуляторе имеется одна или несколько клавиш, которые предусмотрены для гашения содержимого всех или части ре- , которая служит для гистров. Сначала познакомимся с клавишей [СЁ исправления введенного числа. Для этой клавишной операции есть и другие обозначения, например сх ' [£ ск С! CLR Важно знать, что после нажатия указанной клавиши происходит гашение содержимого только регистрах. Пользуясь этой клавишей, можно исправлять ошибочно введенное число. Например, если уже нажаты клавиши |х| |91 , а необходимо вычислить 4X19, то нажмем клавиши | 1 | | 9| (рис. 1.9а). После нажатия клавиши бразится правильный результат. СЕ и на индикаторе ото- , то гасится содержимое Если для гашения используется клавиша | всех регистров — Χ, Υ и О (рис. 1.9 б). В этом случае задание необходимо ввести заново. Эту клавишу рекомендуется применять перед введением в микрокалькулятор каждой новой задачи. Ξ Рис. 1.9. Изменение содержимого регистров при операции гашения и обмена содержимым 15
Если в калькуляторе есть только одна клавиша [CJ , предназначенная для гашения, то ее следует нажать дважды. При первом нажатии клавиши гасится содержимое регистра X, при повторном нажатии этой клавиши гасится содержимое регистров Υ \лО. Когда микрокалькулятор заставляют выполнить какую-либо "запрещенную" операцию, например Qj Qj [θ] [=j , на индикаторе появляется сигнал "ошибка". Чаще всего в качестве такого сигнала используется буква Ε (от английского слова error — ошибка). В других калькуляторах в случае ошибки появляются точки или черточки во всех разрядах индикатора. Для возобновления вычислений необходимо нажать клавишу I С I (в некоторых калькуляторах эту клавишу надо нажать три раза подряд). Как видно из рис. 1.8, на индикаторе всегда представлено содержимое регистра X. Чтобы узнать, какое число хранится в регистре V, а также для выполнения более сложных вычислений, во многих калькуляторах имеется клавиша |<->| , с помощью которой можно поменять местами содержимое регистра X с содержимым регистра Υ (рис. 1.9. в). Вот, например, как клавиша рёча»| помогает вычислить выражение 105: (73 — 58). Сначала найдем разницу: |_7J [3J jj^j GO iJLI Ej ' a затем' нажи" мая клавиши [Т~|L2_]L^J (jO l^H [=] > получим результат. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Выполнить с помощью микрокалькулятора "запрещенную" операцию | 1 | | : | О = . Как калькулятор реагирует на это? 2. После изучения рис. 1.9 β нарисовать, как изменится содержимое регистров, если еще раз нажать клавишу 3. Как вычислить значение выражения 75 — 6 Х7 с использованием обмена между регистрами? 1.5. КЛАВИШНЫЕ ОПЕРАЦИИ С ПАМЯТЬЮ Для того чтобы промежуточные результаты вычислений не надо было записывать, в операционном запоминающем устройстве кроме регистров Χ, Υ и О имеется также независимый регистр памяти или просто память. 16
Обозначим этот регистр буквой Μ (от английского слова memory — память) . В регистр памяти, так же как и в регистр Y, число может попасть только через регистр X. Клавишная операция, которая копирует содержимое регистра X в регистре М, имеет много обозначений: Х->М Х->П ЗП Π STO . Некоторые микрокалькуляторы "обладают" так называемой суммирующей памятью. Соответствующую клавишную операцию также обозначают по-разному: | М+| , | П+| , |SUM| . При нажатии этой клавиши содержимое регистра X прибавляется к числу, записанному в памяти, а полученный результат засылается обратно в память. Содержимое регистра X в процессе выполнения операции не изменяется. Различные операции с клавишами памяти показаны на рис. 1.10. Вызов чисел из памяти осуществляется с помощью клавишных операции М-»Х П-=>Х! ИП RCL В простейших микрокалькуляторах, в которых есть только суммирующая память, всегда имеются клавишные операции СМ СП , гасящие содержимое регистра. Важно помнить, что, начиная решение новой задачи, необходимо погасить как регистры Χ, Υ, Ο, так и регистр памяти. Если в микро- СП калькуляторе нет клавишной операции сылки туда нуля (это можно сделать, нажимая клавиши , память гасится путем за- Гс" х->п ШШ ■'О 6 ЕЗ г, ОИ ■nhiiitlfl [х«-»П1 Ь ϊ·>'ί > о' -' ·'"··! У.\1 ι ч·"^ ν ?я Рис. 1.10. Изменение содержимого регистров при операциях с регистром памяти Μ 17
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Какие клавиши для работы с памятью есть в Вашем микрокалькуляторе? 2. Существуют калькуляторы, в которых кроме клавиши виши П+ есть также кла- П- щая: пХ П: П-Х пХх , П:Х (см. рис. 1.5). Полная запись таких операций следую- . Результат во всех случаях засылается обратно в регистр памяти. Пусть в регистре Υ содержится число 5, в регистре X — число 3, в регистре О — деление и в регистре Μ находится число 18. Подобно тому, как это сделано на рис. 1.10, нарисуйте изменения содержимого всех названных ре- гистров после операции П- 3. Появляется ли после введения числа в память какой-либо знак на индикаторе Вашего микрокалькулятора (точка, буква Π или Μ), показывающий, что память занята? 1.6. МИКРОКАЛЬКУЛЯТОР КАК ИСПОЛНИТЕЛЬ ОПЕРАТОРА. ПРОГРАММИРОВАНИЕ РЕЖИМА КОНСТАНТЫ Простые арифметические задачи мы привыкли рассматривать как выражения, состоящие из двух чисел, разделенных знаком арифметической операции. Однако можно считать, что такое выражение представлено одним числом и одним оператором, состоящим из знака арифметического действия и числа. Например, о задании 9 — 4=5 можно сказать, что, действуя на число 9 оператором —4, мы получаем 5. В этом случае действие записывается с помощью стрелки, над которой ставится оператор: -4 9-^5 Аналогично записываются другие арифметические задачи, например +7 :7 3-^10 21 ——3 Такая запись наглядно отражает работу микрокалькулятора. При нажатии клавиш | 2 | и |lj в калькулятор вводится число 21. Но при нажатии | : | [ 7 11 =| калькулятор оператором :7 действует на число 21 и переводит это число 21 в другое число, а именно: числу 21 ставит в соответствие число 3. Решение многих практических задач заключается в воздействии одного и того же оператора на различные числа. Например, если цена сыра 2,90 руб/кг, то, воздействуя оператором Х2,90 на значение массы сыра, выраженное в килограммах, получаем стоимость покупки: Х2,90 масса [ кг] *> стоимость покупки [ руб.] По этой причине многие микрокалькуляторы можно перевести в так 18
называемый режим константы, или, точнее, β режим неизменного оператора. В одних микрокалькуляторах это происходит автоматически при нажатии клавиши [=] , в других, например в калькуляторе МК-51 и МК-71, — путем ввода числа и затем двухкратного нажатия клавиши необходимого действия: LgJ [^J [jy [OJ [Xj [2<J . Одновременно на индикаторе появляется буква К (режим константы). Если теперь будут нажаты клавиши | 2 | | =| , на индикаторе появится число 5,8, а после нажатия клавиш r^[T][^J LEj на индикаторе высветится число 0,87. Как изменяется содержимое регистров при переходе на режим константы, показано на рис. 1.11. В режиме константы можно запрограммировать вычисление значений следующих функций (К— константа): Υ = Χ+Κ; Υ = Χ-Κ; Υ = Χ Χ Κ; Υ = Χ: Κ; Υ= ΧΚ Программа вводится следующим образом (арифметическое действие обозначено через *). В калькуляторах типа БЗ-36: [с]кЕ1кЁи[£]1[у!1 κΞ в калькуляторах МК-51 и МК-71 Ц]кЕ1Е][Зи[с]к[д 01Ξ Записанный оператор вызывают, нажимая клавишу . Проводя вычисления в режиме константы, нельзя пользоваться клавишей [CJ , так как при нажатии упомянутой клавиши программа стирается. > ШОР ш £ϊ&γ№:ϊ#,4ν, Рис. 1.11. Изменение содержимого регистров в режиме константы 19
В каждом микрокалькуляторе имеются операции (например, извлечение квадратного корня), которые осуществляются только с одним числом. Их называют одноместными операциями. Операции, выполняющие действия с двумя числами (например, сложение), — это двухместные операции. Каждую одноместную операцию можно рассматривать как оператор. Например, если после ввода числа 29 нажимается клавиша /—/ (в микрокалькуляторах зарубежного производства — клавиша | +/—| ), то число 29 преобразуется в число противоположного знака —29 (на некоторых типах индикаторов знак числа указывается за самим числом) : /-/ 29 -» -29 Если после введения числа 15 нажата клавиша вечает" квадратом числа 15: , калькулятор от- 15~>225. При одноместных операциях клавишу нажимать не надо, поскольку команда выполнить осуществляется при нажатии клавиши соответствующего оператора. ВП или ЕЕ В инженерных микрокалькулаторах имеется клавиша которая используется для ввода числа в форме Μ · 10w. Множитель Μ называют мантиссой числа, а показатель степени η — порядком числа. Если .1 < Μ < 10, тогда говорят, что число представлено в нормализованной форме. Клавиша |ВП| или |Её| вместе с целым числом, находящимся в пределах от —99 до 99, также образует оператор. Вот два примера: ВП8 ВП19/-/ 1,5 >1,5·108; 1,6 —»1,6 · 1СГ19. На индикаторе эти числа отображаются в следующем виде: и 1,5 08 1,6 -19 При вычислении значений элементарных функций необходимо помнить, как выполняется оператор: сначала вводится число, а затем нажимается клавиша оператора. Клавиша не нажимается, за исключением двухместного оператора ху (чтобы вычислить, например, 73, надо нажать клавиши | 7 | [x^l | 3 | ). Следует помнить также, что в инженерных калькуляторах многие операторы являются второй функцией какой-либо клавиши, поэтому перед нажатием соответствующей клавиши надо нажать | F | . Особенно внимательным надо быть при вычислении значений 20
тригонометрических функций. Практически все калькуляторы снабжены переключателем, с помощью которого можно выбрать режим выражения угла в градусах, радианах или градах. Режим, при котором угол отсчиты- вается в градусах, сокращенно обозначается D или DEG (от английского слова degree), либо Г (градусы). Для обозначения радиана используются сокращения R, RAD, Ρ или РАД. Грады обозначаются через G или GRD либо ГРД. Град — это такая единица измерения угла, которая равна сотой части прямого угла. В одних калькуляторах режим выражения угла изменяют с помощью механического переключателя, в других — путем В калькуляторе МК-51 при на- нажатия клавиши D-R-G или Ρ ЕЖ жатии клавиши Ρ ЕЖ на индикаторе появляется надпись Г, РАД или ГРД. Режим можно менять повторным нажатием этой клавиши. В калькуляторах по-разному реализовано вычисление значений обратных тригонометрических функций. Многие отечественные микрокалькуляторы снабжены клавишей Гаге] . Чтобы вычислить arcsin0,5, надо нажать клавиши j^OJ U L_5J (jj [arc] |sin| . В других калькуляторах функции arcsin, arccos, arctg обозначены через sin'l cos , tg 1. Пользуясь калькулятором МК-51, для нахождения arcsin0,5 надо нажать клавиши J О | | , ) | 5 | | F [ [sin | . В мировой практике все чаще появля- . С помощью этой клавиши ιην ются микрокалькуляторы с клавишей можно вычислить не только значения обратных тригонометрических функций. Если в таком калькуляторе нажать клавиши и. 5 inv , будет найден квадратный корень от 25, поскольку квадратный корень есть функция, обратная квадрату. Аналогично, нажимая клавиши ΊΓ [ inv] | lg| , получаем 105, так как 10х - функция, обратная lg x. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Учащийся нажал клавиши С 7 X ш [н = Какой оператор использован для решения задачи? Чему равен результат? 2. В тетради учащегося записано: ХЮ :10 s [см] —ι» 5 [ми]; s [см ] —m^s [м]; Х3,6 :3600 ν [м/с] m-ν [км/ч \ t [с] ·► t [ч ]. Каков смысл этих записей? Как программировать микрокалькулятор для выполнения операторов ХЮ, : 10, : 3600, : 3,6? 21
3. Учащийся нажал клавиши: | С || 5 || — || 1 || 2 || = | |/—/| . Какое число появится на индикаторе? ^_^__._-__ -_» 4. После нажатия клавиш | ί 11 5 || 0 11 ВП 11 6 | на индикаторе высветилось число , но как только была нажата клавиша] : |, на индикаторе появи- . Изменилось ли значение числа? 150 06 лось число 1,5 08 5. Как изменится содержимое регистров на рис. 1.11 а, б, если еще раз нажать ? клавишу 6. Что отобразится на индикаторе после нажатия следующих клавиш а) X X ΡΊ Ε 7. Калькулятор переключен на режим ГРД. Что покажет индикатор после нажатия клавиш |Т| [θ] ("θ"] [sin] ? 8. Как программировать микрокалькулятор для автоматического табулирования функции Y = X + 213. 7 = 1X2,9, Υ = Χ*, У = Г°'5? 1.7. СПЕЦИАЛЬНЫЕ ОПЕРАТОРЫ, ИЛИ СТАНДАРТНЫЕ ФУНКЦИИ В инженерных микрокалькуляторах кроме операторов элементарных функций обычно имеются некоторые специальные операторы. Например, в калькуляторах БЗ-35 и БЗ-36 есть операторы, которые переводят угол из градусной меры в радианную и наоборот. Вот как действуют эти операторы: Г —Ρ Г —Ρ 1 «-0,017453; α[°] -а[рад]; Р-^Г Р—Г 1 р~ 57,2957...; α [рад] ^а[°]. Нетрудно заметить, что оператор Г-·· Ρ по своему действию совпадает с оператором Х0,017453: Х0,017453 α [ ° ] - α [ рад] . На рис. 1.5 показан калькулятор с клавишей, над которой виден символ п\, в математике называемый факториалом. Этот оператор действует следующим образом: /?! /?! 4 -1X2X3X4=24; η 1 X 2 X 3 X ... Хл. Калькуляторы МК-51 (см. рис. 1.3) и МК-71 имеют клавиши с довольно необычным обозначением | ° "Ί · С помощью этой клавиши значение угла, выраженное в градусах, минутах и секундах, можно преоб- 22
разевать в градусы и десятые доли градуса. Точно так же время, выраженное в часах, минутах и секундах, можно преобразовать в часы и десятые доли часа. Познакомимся с работой этого оператора на примере, в котором время 2 ч 30 мин 36 с переводится в часы и его десятые доли: 1. Вводим часы: [ΊΓ] |° ' "| (на индикаторе: 2). 2. Вводим минуты: [3J [θ] |° ' "\ (на индикаторе: 2,5). 3. Вводим секунды: |з| [б] | ° ' "\ (на индикаторе: 2,51). В школьных калькуляторах БЗ-32 и МКШ-2 (см. рис. 1.2 и 1.4) имеется оператор χλ 2 который трем вводимым числам а#Ь, с ставит в соответствие корни х1 и х2 квадратного уравнения ах2 + Ьх + с = 0. Вот как с помощью этого оператора можно автоматически решить уравнение —х2 —Зх + 4 = 0, где коэффициенты а = —1, b = —3, с = 4. 1. Вводим коэфициент а:ПП \/—/\ ГП (на индикаторе: —1). 2. Вводим коэффициента : [j3j |/—/| | ( [(на индикаторе: —3). 3. Вводим коэффициенте: [Т] (на индикаторе: 4). 4. Вызываем оператор х1 2: [Т] |х1 2 I (на индикаторе: первый корень-1). ' — 5. Вызываем оператор х1 2 : [ F | I х1 рень 4). (на индикаторе: второй ко- В школьных калькуляторах имеется также оператор "детерминант", который четырем вводимым числам ставит в соответствие значение детерминанта, составленного из этих чисел по следующему правилу: \а b I №aXi/-bXc. \с d I Для ввода чисел a, b,c, d и вызова оператора det, или Δ , необходимо составить предложение: з[]>т<о>[ЕИ (на индикаторе: значение а X d—bX с). Если, например, а = 4,b = 7, с = 3 tf ~ 8, то надо нажать клавиши и на индикаторе прочитать результат: число 11. 23
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Если в калькуляторе нет оператора Р—>Г, каким оператором его можно заменить? а[ рад] —;->а[ ] . 2. Какое число отобразится на индикаторе после нажатия клавиш 7 ЗНЕ Ш 3. Какие клавиши надо нажать, чтобы с помощью оператора в десятые доли часа: а) 1 минуту; 6) 1 секунду? перевести 1.8. РЕЖИМ СТАТИСТИЧЕСКИХ ВЫЧИСЛЕНИЙ Современные микрокалькуляторы можно перевести в режим статистических вычислений. Если нажать клавиши МК-51 (см. рис. 1.3) или клавиши РЕЖ калькулятора калькулятора МК-71, на индикаторе появится греческая буква "сигма" а. Это означает, что теперь можно проводить статистические вычисления. В школе можно пользоваться режимом статистических вычислений при обработке результатов лабораторных работ по физике. Предположим, что надо определить среднюю длину месяца. По календарю находим, что в невисокосном году один месяц состоит из 28 дней, 4 месяца — из 30 дней и 7 месяцев — из 31 дня. На этом примере рассмотрим, как в статистическом режиме вводятся значения измерений и вызываются различные операторы. 1. Вводим число 28 и нажимаем клавишу (на индикаторе: 28). П+ ш 0 \п+ п+ 2. Вводим число 30 и четыре раза нажимаем клавишу п+ п+ (на индикаторе: 30). 3. Вводим число 31 и семь раз нажимаем клавишу 00§ П+ П+ п+ п+ [п+ п+ п+ (на индикаторе: 31). 4. Нажимаем клавишу (на индикаторе: 12 ~~ количество введенных результатов измерений). 5. Нажимаем клавишу Σχ (на индикаторе: 365 — сумма всех введенных чисел то есть количество дней в году). (на индикаторе: 30,41... — среднее число 6. Нажимаем клавишу дней в месяце). 24
(на индикаторе: 0,86... — разброс резуль- Σχ' , можно определить сумму квад- 7. Нажимаем клавишу татов измерений). Кроме того, нажимая клавишу ратов введенных чисел (в этом примере она равна 11 111). В калькуляторе предусмотрена возможность исправления ошибочно введенного числа. Допустим, что в действительности мы хотим узнать среднюю длину месяца високосного года, в феврале которого 29 дней. Тогда надо исправить одно из чисел. Делают это следующим образом. 8. Удаляется ошибочно введенное число: ИШШК на индикаторе: 28). 9. Вводится правильное число: (Т) [¥] [ П+1 (на индикаторе: 29). (на индикаторе: 30,5). 10. Нажимается клавиша 11. Нажимается клавиша Σχ (на индикаторе: 366 — количество дней в високосном году). Проводя вычисления в статистическом режиме, надо принимать во внимание, что операторы обозначены под клавишей. Начиная обработку других данных, необходимо погасить все регистры памяти путем нажатия клавиш [JFJ |с(а)| . Чтобы вернуться в режим простых вычислений, надо снова нажать клавиши | F | |РЕЖ| . В статистическом режиме можно также выполнять вычисления теми клавишами, под которыми нет символов статистических операторов. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Как вычислить сумму квадратов натуральных чисел 1 с использованием статистического режима? + 22 + З2 + 42 + 52 1.9. ВХОДНОЙ ЯЗЫК МИКРОКАЛЬКУЛЯТОРА Нажимая клавиши калькулятора, мы пишем для него предложение. Каждое слово этого предложения калькулятор воспринимает как команду. Словарь калькулятора образуют символы на клавиатуре. В постоянном запоминающем устройстве калькулятора записаны правила, по которым читаются отдельные слова написанного предложения. Для того, чтобы правильно пользоваться калькулятором, надо знать смысл слов-команд, а также правила составления предложений. 25
Наиболее популярный язык калькулятора — это простой алгебраический язык. На этом языке слова-команды читаются и выполняются по порядку. Это означает, что в арифметических выражениях не принимается во внимание порядок выполняемых действий. Если на таком калькуляторе с помощью клавиш написать предложение [_3J [Jj [_4J [_Xj 1 5 | | = I , то вместо ожидаемого результата 23 на индикаторе появится "неожиданный" ответ — число 35. Однако если вспомнить, что калькулятор действует как исполнитель операторов, станет ясно, что в результате действительно должно получиться 35. В этой задаче два оператора: +4 и Х5. Когда при введении написанного предложения нажимается клавиша [xj , оператор +4 переводит число 3 в число 7, а когда нажимается клавиша [=П , оператор Х5 переводит число 7 в число 35: +4 Х5 3 —=>7 —5*35. Для того чтобы с помощью калькулятора правильно рассчитать числовое значение алгебраического выражения, необходимо его преобразовать так, чтобы сначала выполнялись действия 2-й ступени (умножение и деление), а затем действия 1-й ступени (сложение и вычитание). Так, если рассмотренное выше упражнение 3 + 4X5 ввести в калькулятор как предложение [4J [Xj (j5J [+J |J3j , результат вычислений будет правильным: 23. Часто встречающееся выражение а X b + с X d можно вычислить следующим образом: а \УЛ b (jj d L+J с [=J |J<J d\j=\ . Если в калькуляторе есть регистр памяти, то выражение можно разделить на части и промежуточные результаты хранить в памяти. Например, выше рассмотренное выражение можно вычислить следующим образом: а [_х] b [fj с L2iJ ^ LtJ 1m->x! Г=1 , где клавиша Х->М Х-»М означает занесение числа в память, а клавиша |Μ->Χ[ — извлечение числа из памяти. В памяти некоторых калькуляторов, например СЗ-15, МК-71, записаны правила правильного чтения алгебраических выражений. В настоящее время очень популярны микрокалькуляторы, в которых порядок выполняемых действий можно изменять с помощью клавишей скобок. На калькуляторах БЗ-32, МКШ-2, МК-51 и других значение выражения а X Ь+с X с/ правильно вычисляется следующим образом: a [j<J b |+1|( \ d QJ [=J . Применяя клавиши скобок, можно сохранить структуру алгебраических выражений. В калькуляторах с клавишами скобок имеется дополнительный регистр памяти. В нем число и знак арифметической операции хранится до тех пор, пока не будет нажата клавиша 26
закрывающей скобки. В калькуляторах БЗ-32, МКШ-2, МК-51 есть* даже два таких дополнительных регистра памяти, что дает возможность включать внутрь одной группы скобок вторые скобки. Кроме алгебраического входного языка в калькуляторах используется также входной язык с обратной записью операторов, или так называемой бесскобочной (польской1) записью. В этих калькуляторах нет клавиши | = ] , но есть клавиша) ft | , при нажатии которой содержимое регистра X копируется в регистр Y. Кроме того, в калькуляторах есть несколько рабочих регистров: Ζ, Τ, XI. И этими калькуляторами действия воспринимаются как операторы, только последовательность задания арифметических операторов отличается от описанной выше последовательности: сначала вводятся числа, а затем арифметическое действие. Например, при вычислении частного от деления 90:15 для калькулятора |ΊΓ| Щ [TJ (ΊΓ] Q] . Обмен содержи- 9 записывается предложение мым между регистрами Χ, Υ, Ζ, Τ происходит так, что без помощи скобок можно правильно вычислить значение любого арифметического выражения. Так, задачу 3 + 4 Х5 можно решить следующим образом: [з| [Щ [4j[YJ (j5j [x] [+j · Более подробно с этим входным языком можно познакомиться в разделе "Программируемый микрокалькулятор". ВОПРОСЫ И УПРАЖНЕНИЯ 1. В калькуляторе есть две клавиши для операций с памятью — клавиша для записи числа в память и клавиша STO RCL для вызова числа из памяти. Написать предложение для правильного вычисления значения выражения 73-24 61-54 " 2. Как написать предложение из слов, обозначенных на клавишах калькулятора, чтобы с использованием клавиш скобок (БЗ-32, МК-51) правильно вычислить значение выражения 29 — 5 X (9 — 4) ? Эту запись впервые предложил польский ученый А. Лукасевич. — Прим. ред. 27
Закон остывания жидкости TS=90°C 20 В Т Ξ Ξ °<03 Ш Т В записать новое значение температуры (округлить) повторить t, мин 0 1 2 3 4 Т, С 90,0 87,9 85,9 83,9 82
2. ЗАНЯТИЯ С МИКРОКАЛЬКУЛЯТОРОМ 2.1. ГРАФЫ ВЫЧИСЛЕНИЙ И ПРОГРАММЫ Вычисления на калькуляторе значений арифметических выражений типа а * b и элементарных функций настолько просты, что не требуют ни пояснений, ни специальных упражнений. Не вызывает трудностей также нахождение суммы или разности многих чисел. Однако ошибки могут появиться при вычислении выражений, содержащих дроби. Этих ошибок можно избежать, если переписать выражение в строчку, например: bT^Td^a :b:c:d, ]~= a : (Ь-с). Переписывание выражения в строчку подготовливает нас к программированию. Следует помнить, что в выражении, записанном для вычислений на ЭВМ, нельзя пропускать ни одного знака арифметической операции (в обычной записи, например, мы не пишем знак умножения). Если в выражении содержатся различные действия, а также функции, то для правильного вычисления значения данного выражения необходимо соблюдать порядок выполняемых действий: сначала находят значения элементарных функций — степенной, показательной, логарифмической и т. д. — затем выполняют умножение и деление и, наконец, сложение и вычитание. Если в выражении содержатся скобки, то в первую очередь выполняются действия, заключенные в скобки, начиная с внутренних. Чтобы выработать навыки проведения расчетов в указанном порядке, рекомендуется использовать графы вычислений, оставляя места для записи промежуточных результатов (рис. 2.1). Используя такие графы, вычислительный процесс можно разделить на элементарные шаги (каждый шаг выполняется только одним оператором). Однако в любом микрокалькуляторе операторы можно объединять в определенной последовательности. Так можно автоматизировать расчеты значений довольно сложных алгебраических выражений. К сожалению, нельзя составить одну программу, пригодную для всех калькуляторов. Программа зависит от входного языка калькулятора и от вида конкретного выражения. Рассмотрим программы, по которым можно 29
131 l |У| 130 I [a] (д Λθ7 Us· W—J | 31x7+ 30χ A + 28 rj α b с α : b : с α b c d с^з | (α+b) : (с - d) Рис. 2.1. Графы вычисления значений алгебраических выражений вычислить значения квадратной функции / = ах2 + Ьх +с. Самая простая программа записывается для тех калькуляторов, которые автоматически учитывают порядок выполняемых действий, например, для СЗ-15 и МК-71: 30
0a0 χΘ 0ь0х0с (на индикаторе: значение у). По этой программе, однако, нельзя вычислять на калькуляторах БЗ-32, МК-51 и других, но эти микрокалькуляторы снабжены клавишами скобок, с помощью которых можно дать приоритет следующему выполняемому оператору. Поэтому для упомянутых калькуляторов можно записать такую программу: Преобразуя алгебраические выражения, можно добиться, чтобы выполняемые действия следовали бы одни за другими в следующем порядке: действия в скобках, умножение и деление, сложение и вычитание. Приведем квадратичную функцию к виду: у = ах2 +Ьх +с = (а · χ + Ь) - χ + с. Это выражение можно записать в виде программы, которая пригодна для всех калькуляторов: μ Ξ*Ε>Ε][χ]*Ξ<Ξ И выражение а - b + с - d можно преобразовать так, чтобы арифметические действия были расположены в указанной последовательности: а - b + с · d= (а · b : d + с) · с/. На практике, однако, удобнее использовать регистр памяти — тогда отпадает необходимость в искусственных преобразованиях данного выражения. Программа с применением регистра памяти может быть такой: Т]аГх|ь[Я[х^п] X с/[Т]|п->х; ВОПРОСЫ И УПРАЖНЕНИЯ 1 Переписать выражение Ш Ζ в одну строчку. т+ Μ 2. Начертить граф вычисления выражения \Ja 2 +Ь%Ш 3. Преобразовать выражение a : b+c : d так, чтобы арифметические действия были расположены в указанном выше порядке убывания приоритета, а затем 1 a записать программу. То же самое сделать с выражением—{х + —). 2 χ 4. Преобразовать выражение · Ъ - с лить на любом калькуляторе с клавишей сать программу. так, чтобы его значение можно было вычис- 1/>d и без регистра памяти. Запи- 31
5. Записать программу для расчета выражения, представленного в задаче 2, а 1 1 1 также программу для нахождения суммы обратных величин -—+ —+ —# 2.2. ПРЕОБРАЗОВАНИЕ ОБЫКНОВЕННЫХ ДРОБЕЙ В ДЕСЯТИЧНЫЕ Исторически сложилось так, что наряду с десятичными дробями широко применяются и другие дроби, которые мы даже не называем дробями, Например, 5 руб. 75 коп. — это десятичная дробь 5,75 руб. Расстояние в спортивных дисциплинах выражают в метрах и сантиметрах, например 21 м 47 см = 21,47 м, а время — в часах, минутах и секундах, например, рекорд в забеге на марафонскую дистанцию — 2,08:13,0. Чтобы вычислить, с какой средней скоростью спортсмен пробежал 42 км 195 м, время нужно выразить в часах: О Ι О 2.08 : 13,0-2 + — + — . 60 3600 В астрономии время записывают иначе, например 2Ч8М13С. Дроби, в основе которых лежит шестидесятиричная система, применяются также для выражения величины угла (градусы, минуты, секунды). Чтобы преобразовать угловые и временные величины в десятичную форму, определяющее выражение представим в виде: мин с ч + -—~~ + -= (с : 60 + мин) : 60 + ч. 60 3600 Данное выражение можно записать как программу, которая пригодна для всех калькуляторов: 0с(Т)бо(Т] мин ВОПРОСЫ И УПРАЖНЕНИЯ 1. Какие клавиши надо нажать, чтобы к 3 руб. 60 коп. прибавить 70 коп.? 2. Преобразовать в часы и десятые доли часа рекордное время следующих забегов: на 100 м - 9,9 с; на 1500 м - 3 мин 31 с, 36; на 5000 м — 13 мин 0 с, 42. 5 3. Записать программу для перевода простой дроби 4—в десятичную. 8 4. Какие клавиши надо нажать, чтобы вычислить на калькуляторе 2 % от 725 руб.? 60Г+1ч Г= 32
2.3. ЦЕЛАЯ ЧАСТЬ ЧИСЛА IIMT Любую десятичную дробь можно записать в виде суммы целой и дробной части числа, например 9,875 = 9 + 0,875. Наряду с хорошо знакомыми функциями χ , \Asin, cos в вычислительной технике широко используется также отделение целой части числа. Функцию, которая отделяет целую часть числа, обозначают символом int (от английского слова integer — целое число). Эта функция ставит в соответствие любому числу ближайшее целое число, которое меньше заданного, например int int 5,999-—-5; 0,95—^-0. Некоторые микрокалькуляторы снабжены специальной клавишей или int К [ xj (MK-61). Функция, которая отдаляет дробную часть числа, также имеет свое обозначение — frac (от английского слова fraction — часть). Эта функция ставит в соответствие числу его дробную часть, например frac frac frac 5,999 — 0,999; 3,14 ^0,14; 7 —♦ 0. Однако если в калькуляторе есть оператор int, то дробную часть числа можно вычислить по формуле frac(Z)=Z-int(Z), например frac (3,14) = 3,14 - int(3,14) = 0,14. Почти на всех калькуляторах с помощью соответствующего приема можно отделить целую часть числа. Для калькуляторов с восьмиразрядными регистрами прибегают к следующему приему: к заданному числу прибавляют 10 миллионов, а затем от суммы отнимают прибавленное число: +10 000 000 -10 000 000 2,99 - 10 000 002 - 2. В этом случае используется свойство данного калькулятора: после прибавления целого восьмиразрядного числа в регистре не находится места для хранения дробной части числа. Некоторые калькуляторы автоматически округляют сумму. Тогда после сложения 2,99 с 10 000 000 в регистр X будет занесен результат 10 000 003. Поэтому от заданного числа сначала надо отнять 5/9 — 0,555 555 5: -0,5555555 +1.107 -1.107 2,99 - 2,4344444 — »> 10 000 002 —- 2. При работе с такими микрокалькуляторами, как МК-51, надо прибавить и отнять 10 (калькулятор с девятиразрядным регистром) : 2,99 (Т] 1 [вп] 9 Q") 1 (In) 9 [=] Зачастую в практике целую или дробную часть числа удобнее считывать с индикатора и в случае необходимости вводить ее с помощью клавиа- 2 6-372 33
туры. Например, если дана задача: "умножить на 7 целую часть частного от деления 244:7", — то на калькуляторе выполняется деление 224Qj 7 На индикаторе: 34,857142. После нажатия клавиш ГзП ПП Гх1 ПП индикаторе получается 238. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Не пользуясь калькулятором, найти целую часть выражения: 5 a) int Η; int (7 · 0,8); int (30,6 -Μ), гдеМ= 1, 2, 5,10; 9 б* 12 — Μ int ( ), Γβ,βΜ — номер месяца в году (январю соответствует Μ = 1, де- 10 кабрю — М= 12). 2. Вычислить на калькуляторе: Ν Ν 7int (—) и 7 frac (—), где N = 50,51, 52, 53, 54, 55, 56. 7 7 3. С помощью какого приема на Вашем калькуляторе можно отделить целую часть числа? Как можно упростить отделение целой части числа, если числа 10^ или 10^ хранятся в регистре памяти? 4. Какова физическая интерпретация целой части числа 2,51, если это число выражает время в часах? Какова физическая интерпретация целой части числа 0,51 ХбО? Каким образом можно определить заданное время в часах, минутах, секундах? 5. Выразить заданное в часах (h ) время в целых часах (Я), минутах (Л/) и секундах (S), пользуясь следующими формулами: Я = int h; Μ = int (60(Λ - Η), S = 60(60(Λ - Я) - Μ). если Л =0,00275; h =0,0587111; h =2,1369444. 2.4. ВЫЧИСЛЕНИЕ ОСТАТКА ОТ ДЕЛЕНИЯ При решении многих практических задач появляется необходимость найти остаток от деления в форме простой дроби. Однако калькулятор выдает остаток от деления только в виде десятичной дроби. Например, чтобы перевести 210 секунд в минуты и секунды, надо получить целую часть от 210:60 и остаток х, которые связаны формулой 210 210 χ irintw+6^ Чтобы решить это уравнение, умножим обе части на 60 и получим, что x = 210-60int(210/60). 34
В уме можно подсчитать, что int(210:60) = 3, тогда χ = 210 - 60 · 3 =30. Таким образом, мы получим решение: 210 секунд равны 3 минутам и 30 секундам. Теперь обобщим предыдущую формулу на тот случай, если необходимо найти остаток г от деления т : η r = m-~n int (m : η). На рис. 2.2 показан граф вычисления для нахождения остатка с помощью калькулятора. Запишем соответствующую программу: © ™т л @ int и я в т 0=) Ι/-/1 (на индикаторе: г ) Оператор int означает, что числу, показанному на индикаторе, ставится в соответствие его целая часть, которая может быть или вычислена, или набрана клавишами. Получим еще одну формулу для вычисления остатка от деления. Для этого разделим на η ранее полученную формулу вычисления остатка: -£=ffi-int(£i). η η η В соответствии с определением, данным в предыдущем параграфе, правая часть равенства представляет собой дробную часть частного тшйтщщтш^ т '0.CZJ Υ.ί Λ· ,А„П*х.. „S ,,■>,,.. -,., .,-^ ® 22382 ©7 3197,428 от деления т η, Рис. 2.2. Граф вычисления остатка при делении или frac(~). /7 Поэтому остаток можно найти по формуле г = п -frac(^). η Однако для практических вычислений эту формулу не рекомендуется применять, поскольку с помощью калькулятора можно лишь приближенно получить дробную часть частного от деления. Поэтому после умножения приближенной дробной части частного от деления на η остаток 2* 35
может не быть целым числом. Например, если на калькуляторе МК-51 вычислить 53:7, то на индикаторе появится 7,5714285. При умножении дробной части 0,5714285 на 7 получаем 3,9999995. Чтобы определить правильный остаток, полученный результат надо еще округлить. Следовательно, при нахождении остатка лучше не пользоваться, этой, казалось бы, простой формулой. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Найти остаток при делении: 67/7; 244/7; 3003/7. 2. Сколько минут и секунд содержится в 780,42 с; 1642,5 с; 7693,0 с? 3. Для каких из приведенных ниже чисел при делении на 17 получаются одинаковые остатки: 107, 123, 125, 192, 193, 328, 361, 429, 431? 4. Преобразовать данные неправильные дроби в смешанные: 123 456. 22 382. 630 789 ' 7 ' 588' 2.5. ПРИБЛИЖЕНИЕ ЧИСЕЛ В МИКРОКАЛЬКУЛЯТОРЕ И ПРИБЛИЖЕННЫЕ ВЫЧИСЛЕНИЯ В инженерные микрокалькуляторы можно вводить положительные и отрицательные числа от 1 - 10*"99 до 1 · 1099. Однако количество цифр, вводимых в калькулятор, ограничено, поскольку каждое число может иметь восемь (в некоторых калькуляторах 10 или 15) разрядов. Например, в калькулятор можно ввести числа 10 000 000 и 10 000 001, но нельзя ввести число 10 000 000,754. Нам хорошо известно, что\^~ — иррациональное число, тогда как в калькуляторе оно рациональное число 1,4142135. Правда, это число является хорошим приближением числа \fl, а на практике зачастую столь высокая точность требуется далеко не всегда. Находя на калькуляторе значение любой элементарной функции, надо помнить, что мы получаем приближенные числа,хотя и достаточно точные. Кроме того, важно знать, что калькулятор не отличает два таких приближенных числа, как 1,7 и 1,7000000. Поэтому при выполнении расчетов с приближенными числами результат может получиться с "лучшим приближением" по сравнению с введенными числами. Следовательно, пользователь должен сам научиться получать по показаниям индикатора правильное приближение. Например, покупателю надо уплатить за 860 граммов конфет, килограмм которых стоит 3 руб. 80 коп. Рассчитав на калькуляторе, покупатель получает следующий результат: стоимость покупки равна 0,860 X 3,80 = 3,268 руб., то есть 3 руб. 26,8 коп. 36
Естественно, что правильная сумма, которую нужно уплатить за покупку, составляет 3 руб. 27 коп. Проводя на калькуляторе расчеты с приближенными числами, следует учитывать правила округления. 1. Сложение и вычитание надо проводить в непрерывной последовательности, а в результате оставлять цифры только тех разрядов, которые имеются во всех членах арифметического действия. Например, сумму 24,37 + 0,618 + 128,2 = 153,188 следует округлить до 153,2. Это определяет третье слагаемое, имеющее после запятой только один разряд. 2. Умножение и деление также необходимо выполнять в непрерывной последовательности, а в результате оставлять столько значащих цифр, сколько их содержится в числе с минимальным количеством значащих цифр. Например, 26,18 - 3,2 = 83,776. Это показание индикатора округляется до 84, поскольку у числа 3,2 только две значащие цифры. 3. При смешанных действиях сначала следует найти произведения и частные от деления, результаты округлить по наименьшему количеству значащих цифр, а затем выполнить сложение и вычитание с последующим округлением до меньшего количества разрядов. На практике достаточно часто точность результата определяется его физическим смыслом. Например, расстояния в различных спортивных дисциплинах измеряются с точностью до сантиметра, а время — с точностью до сотых долей секунды. В случаях, когда приближение результата определяется некоторыми практическими соображениями, все вычисления можно проводить в непрерывной последовательности, а результат округлять лишь в конце расчетов. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Как округляется квадрат, куб, обратная величина приближенного числа? 2. Вычислить значения выражений, если в них входят приближенные числа: а) 1,852; б) 3,14152; в) 1/0,85; г) 1/3,1415; д) 0,853; е) 3,143. 3. Какова скорость бегуна в м/с, если он пробегает: а) 100 м за 9,9 с; б) 200 м за 19,72 с; в) 400 м за 43,86 с? 4. Сколько граммов конфет можно купить на 1 рубль, если килограмм конфет стоит 1 руб. 40 коп.; 2 руб. 40 коп.? 5. Изготовить из бумаги квадрат, площадь которого равна 27 см2, в вашем распоряжении линейка с миллиметровыми делениями. Найти длину стороны квадрата. 37
2.6. ПРОВЕРКА РЕШЕНИЯ С ПОМОЩЬЮ МИКРОКАЛЬКУЛЯТОРА Одной из важнейших областей применения микрокалькулятора является численная проверка решения. Допустим, что следует решить квадратное уравнение х2 — 7,5х + 12,24 - 0. По формуле найдены значения корней 2,4 и 5,2. Верны ли они? Это можно проверить на калькуляторе, подставляя в квадратное уравнение значения корней: 2,4 — 7,5 ■ 2,4 + +12,24 = 0. Значит, 2,4 — корень заданного квадратного уравнения. В математических задачах не только получают решение, но и очень часто производят алгебраические преобразования. Как убедиться, что преобразования проведены правильно? Здесь снова может помочь калькулятор. Если при подстановке значений аргумента в исходное и преобразованное выражения их результаты совпадают, то можно ожидать, что преобразования проведены верно. Вот пример из учебника по математике. Дано выражение cos11°tg11° + sin110, которое надо упростить. После упрощения получается 2sin11°, На калькуляторе МК-51 рассчитываем значения обоих выражений по следующим программам: каторе: 0,3816. ..); 0 Ш Ш GlKl Ξ 0 Ξ (на индикаторе: 0,3816 . . .). Проводя такие проверки, следует помнить, что калькулятор опери- рует с приближенными числами, поэтому последняя значащая цифра (или несколько последних цифр) в результате может отличаться- Применяя вычислительную технику, важно знать, что, находя значения нескольких алгебраически идентичных выражений, не всегда можно добиться одинаково хорошей точности. Так, легко убедиться, что ЯТЬ* =9-4·νΐ5=<νΐ5-2)2 Если в вычислениях использовать приближение \/5 ^2,2, то значение первого выражения будет равно 0,056, второго — 0,2, а третьего — 0,04. Какое из них является наилучшим приближением искомого числа? Численную проверку решения можно использовать также как метод нахождения корней уравнений. Пусть для квадратного уравнения, записанного в начале параграфа, построен график квадратной функции, из которого видно, что точкам пересечения графика с осью χ приближенно соответствуют абсциссы χ = 2 и χ = 5. Подставляя χ =? 2,5 в программу (ΞΙ х Q 7,5 (3 χ [х] И 12,24 получаем —0,26. Значит график пересекает ось χ левее точки χ = 2,5. Выбираем новое приближение 2,4, подставляем его в программу и получаем 0. Таким образом, χ = 2,4 - корень уравнения. 38
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Является ли число 5,2 корнем квадратного уравнения, приведенного в начале параграфа? 2. При толкании ядра скорость полета его параллельно поверхности земли составляет 9 м/с. Спортивный снаряд падает на расстоянии 21 м 20+1 см, или в интервале 21,19 м — 21,21 м. На калькуляторе не работает клавиша деления, поэтому время полета ядра следует найти путем умножения, используя оператор Х9 ? -21,19-21,21. Как долго летело ядро? 3. Высота полета у спортивного ядра над поверхностью земли на расстоянии χ от места толкания снаряда определяется уравнением у = 2 + 1,19л: — 0,06х = = (—0,06jt + 1,19)х + 2. Подставляя по своему усмотрению в программу вместо знака вопроса значения расстояния до точки падения, определяем дальность полета ядра. Принимается, что ядро приземлилось, если значение координаты у находится в интервале от 0 до 0,05. 4. Найти значения алгебраически идентичных выражений, приведенных в параграфе, если уБ ^2,24, γ5 ^2,236. Каковы значения этих выражений с приближением V5, которое можно получить с вашим калькулятором?Какое из выражений лучше всего подходит для вычисления на калькуляторе? 5. В тригонометрии и астрономии широко используется выражение s\nA · slnB + + cosl4 · cosi? * cosC. Чтобы упростить вычисления с помощью калькулятора, выражение может быть приведено к виду ((cos С) — 1)cos А · cos В + cosC4 -В). Проверить правильность этого выражения на численных примерах, если: а) А = 30°, В = 30°, С = 30°, 6) А = 57°; В = 55°,7; С = 13°,5. 2.7. ПОЛУЧЕНИЕ НАГЛЯДНОЙ ИНФОРМАЦИИ С ПОМОЩЬЮ МИКРОКАЛЬКУЛЯТОРА Одну и ту же информацию можно записать по-разному, используя разные знаковые системы. Например, записи MCMLXXXV и 1985 содержат одну и ту же информацию, хотя в одной из них использованы римские цифры, а в другой — арабские. Поскольку римские цифры в настоящее время практически не применяются, запись MCMLXXV представляется ненаглядной, а запись 1985 — наглядной. Для записи многих простых чисел используются степени двойки, например, 28 + 1. С помощью калькулятора можно быстро получить наглядное представление об этом числе : и прибавляем 1. нажимаем клавишу Получаем 257. , трижды нажимаем клавишу 39
Для облегчения инженерного и научного труда информация о наиболее часто используемых функциях столетиями хранилась в таблицах. В настоящее время такая информация все чаще хранится в программах для ЭВМ, в том числе и для карманных микрокалькуляторов. Нажимая несколько клавиш, можно узнать значение многих элементарных функций. В свою очередь, зная значения функции, можно легко построить ее график. График — это очень наглядная модель математических функций, из которой нетрудно получить много другой информации. В различных областях знаний человечество накапливало и накапливает информацию в виде формул. Формулы представляют собой очень "вместительный" вид хранения информации. Однако чем сложнее формула, тем она менее наглядна. Используя калькуляторы, практически любую формулу можно "перевести" на понятный язык: выразить числами или отобразить графически. Например, информация об ускорении, которое Земля придав! любому телу, находящемуся вблизи поверхности Земли, может быть получена из формулы „ 3,989-108 а 72 где г — расстояние тела от центра Земли, км. Подставляя в формулу г = 6371 км, можем узнать ускорение свободного падения тела на поверхность Земли. Если известна длина математического маятника I , то можно найти и период колебаний. Расчеты проводятся по формуле Г=2ял/Х 9 где# — ускорение свободного падения. Калькулятор позволяет получить информацию и о таких функциях, которые могуг быть мало известными. Экспериментальными и теоретическими исследованиями установлено, что информацию о зависимости атмосферного давления от высоты h над уровнем моря удобно "хранить" в формуле -Л /8000 Р**Рое с по- Любой инженерный микрокалькулятор снабжен клавишей мощью которой можно вычислить значение данного выражения. Программа формулы давления вы глядит следующим образом [СЫТ) 8000 f~| [Л\ ex Ро Даже не зная свойств функции ех, с помощью этой программы можно узнать о всех изменениях давления в зависимости от изменения высоты. Пусть р0 = 760 мм рт. ст. Подставляя в программу вместо h число 8900 м, определяем, что на высоте Эвереста давление составляет примерно 250 мм рт. ст. Не напрасно на такой высоте альпинисты применяют баллоны с кислородом. 40
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Кварцевая пластинка электронных часов изготовлена таким образом, чтобы в секунду совершать 2^5 колебаний. Преобразовать это число в наглядную десятичную форму. 2. Записать программу для формулы ускорения и определить ускорение свободного падения тела на поверхность Земли (г = 6371 км). Найти, с каким ускорением падает на Землю искусственный спутник (г ~ 6571 км) и Луна (г =384 000 км). 3. Записать программу для формулы периода колебаний. Подсчитать, за сколько секунд в Исаакиевском соборе в Ленинграде совершает одно колебание маятник Фуко, если его длина 93 м. Значение ускорения свободного падения найти по формуле, приведенной в настоящем параграфе. 2.8. ЧИСЛЕННЫЙ ЭКСПЕРИМЕНТ, ИЛИ МОДЕЛИРОВАНИЕ Рассмотрим следующую задачу. Даны 300 одинаковых квадратных пластинок. Из этих пластинок надо сложить по возможности более высокую пирамиду, так,чтобы в верхнем слое находилась 1 пластинка, во втором слое сверху — 2X2 = 4 пластинки, в третьем слое сверху — 3X3 = 9 пластинок и т. д. (рис. 2.3). Если в нашем распоряжении будет 300 пластинок, то высоту пирамиды можно найти экспериментальным путем. Однако это был бы трудоемкий эксперимент, поскольку неизвестно количество пластинок, лежащих в основании. Поэтому преще провести численный эксперимент, "строя" пирамиду сверху. На калькуляторе можно подсчитать, сколько пластинок уже затрачено на каждом шагу: ИШИШш Ξ на индикаторе: 5; | + | |"1Г| | х2) [==] на индикаторе: 14; I +| |4| | х2| [= | на индикаторе: 30; Продолжая расчеты, легко установить, что из 300 пластинок можно построить 9-слойную пирамиду. Сумма квадратов натуральных чисел рассчитывается по формуле 12+22+32+ +/72_/7ί/7+1)(2/7-Μ) 6 Тогда для решения рассмотренной задачи надо найти наибольшее натуральное число /7, которое удовлетворяет неравенству /7fr7+1)(2/7 + 1) < 300. 6 41
Рис. 2,3. Какой высоты η пирамиду можно построить из 300 пластинок {12 +22 +32 + ... + и2<300)? Относительно η это неравенство является неравенством третьей степени и решить его аналитически довольно сложно. Поэтому данное неравенство проще решать методом проб, — подставляя в левую часть неравенства различные значения η и сравнивая найденные значения выражения с числом 300. Экспериментально установлено, что горячий чай, налитый в стакан, за одну минуту остывает на одну трехсотую разности температур чая и окружающей среды (воздуха), Если температура воздуха 20°С, то температуру чая через минуту можно найти следующим образом: т Ξ Ξ °'03 20 + Г = (записать значение Т) Пусть температура чая, налитого в стакан, равна 90° С. Необходимо выяснить, через сколько минут температура чая упадет до 60° С. Это, конечно, можно установить экспериментальным путем. Однако задача решается и с использованием численного моделирования. Подставляя в программу Τ = 90, получаем новое значение температуры Г= 87,9. Затем подставляем в программу новое значение Г и определяем температуру чая через 2 минуты. Продолжая таким же образом, мы можем найти, через сколько минут чай остынет до 60° С (чай такой температуры рекомендуется для питья). ВОПРОСЫ И УПРАЖНЕНИЯ Рассчитать на калькуляторе, сколько пластинок необходимо для построения пирамиды с 5, 6# 7, 8, 9, 10 слоями. Определить путем численного эксперимента наибольшее натуральное число, которое удовлетворяет неравенству п(п + 1)(2я + 1) 6 Продолжить численное моделирование при определении времени охлаждения чая. Записывать температуру чая через каждую минуту. Через сколько минут температура чая упадет до 60 С? < 1000. 42
2.9. СЛУЧАЙНЫЕ ЧИСЛА Многие явления в природе и в жизни подвержены случайностям. Так же, как не предугадать, например, путь, по которому движутся частицы пыли, не предугадать и числа в тираже "Спортлото". Нельзя заранее сказать, например, какая цифра выпадет при бросании игральной кости или на какую сторону упадет монета и т. д. Для имитации случайных событий в математике используют так называемые случайные числа. Математический прием, с помощью которого получают случайные числа, называют генератором случайных чисел. Обычно, правда, с помощью простых генераторов случайных чисел получают так называемые псевдослучайные числа, поскольку каждое последующее число все-таки каким-то образом связано с предыдущим. Познакомимся с некоторыми генераторами случайных чисел. Выберем какое-либо четырехзначное число, например 9876. Возведя это число в квадрат, получим восьмизначное число 97535376. Возьмем в нем четыре, стоящие по середине цифры, и образованное ими число 5353 будем рассматривать как случайное. Возведя это число в квадрат и выделив четыре средних цифры, получим следующее случайное число 6546 и т. д. Несмотря на свою простоту, этот прием довольно неудобен для вычислений. Более удобным является такой генератор случайных чисел, с помощью которого мы получаем случайные числа из интервала ]0; 1[. Выбрав первое случайное число, например 0,5268, умножим его на 997 и получим число 525,2196. Из результата вычтем его целую часть и получим следующее случайное чило 0,2196. Повторяя умножение на 997 и вычитание целой части, получим следующее случайное число 0,9412. Продолжая подсчеты таким же образом, мы можем получить много случайных чисел, которые располагаются в интервале ]0;1[. Однако 0,5268 LUL 997 = вычесть целую часть и записать показание индикатора Η повторить на практике часто нужны случайные числа, принадлежащие какому-либо другому интервалу. Например, если мы хотим моделировать результат бросания игральной кости, то необходимы случайные числа из интервала [ 1 ; 6], к тому же эти числа должны быть целыми. Если случайные числа из интервала ] 0 ; 1 [ обозначим через и, то случайные числа Ζ, принадлежащие интервалу [р : q), где ρ и q — целые числа, можно найти по формуле Ζ = int((g + 1 —р)и) +р. 43
148 152 156 160 164 168 172 Рост, с Рис. 2.4. Пример распределения Гаусса При имитации игральной кости ρ = λ,η = 6, при имитации "Спортлото" ρ = 1,<7 = 49. Соответствующие формулы имеют вид Z = int(6£v + 1);Z = int(49(/+ 1). На первый взгляд может показаться, что во множестве случайных чисел нет никакой закономерности. Однако это не так. Например, если игральную кость бросать 600 раз, то, вероятнее всего, каждая цифра выпадет около 100 раз. В этом случае говорят, что случайные числа распределились равномерно. Но многие другие случайные величины распределены неравномерно. Рост человека — это случайная величина. Однако много юношей в Латвии в возрасте 16 лет имеют рост 176 см, реже — 140 или 200 см. Многие величины в природе подчиняются так называемому нормальному распределению,\лш распределению Гаусса. Например, масса монет одинакового достоинства, размер обуви у людей определенного возраста и т. д. (рис. 2.4). Применяя ранее описанные генераторы случайных чисел, мы получаем случайные числа с равномерным распределением. Однако из случайных чисел с равномерным распределением можно получить случайные числа с нормальным распределением. Допустим, что случайные числа и принадлежат интервалу ] 0 ; 1 [ и распределены равномерно. Тогда 44
для каждой пары и^ и и2 из чисел и можно получить два случайных числа Ζ1 πΖ2 по формулам Ζ1 = 176 + 5cos(360w1) л/~^пЪ™, Z2 = 176 + 5sin(360i/1) \Г^2кГит Так полученные случайные числа Ζ расположены в окрестности числа 176 и подчиняются нормальному распределению. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Путем возведения в квадрат получить 10 четырехзначных случайных чисел. Допустим, что нечетная цифра случайного числа означает мальчика, а четная цифра — девочку. Тогда каждое четырехзначное случайное число моделирует семью с четырьмя детьми. В скольких семьях будут: а) только мальчики; б) 3 мальчика и 1 девочка; в) 2 мальчика и 2 девочки; г) 1 мальчик и 3 девочки; д) 4 девочки? Обобщив данные о всех учениках класса, составить таблицу и построить график. Каждый ученик должен выбрать свое начальное число (например, сумму даты рождения и квадрата массы [ кг] ). 2. Умножьте свой рост (в сантиметрах) на 0,00372. Полученное число примите за первое случайное число. Найдите 12 случайных чисел и, имитируя с их помощью игральную кость, рассчитайте случайные числа в интервале [1 ; 6]. Объединив данные о всех учениках класса, выясните, сколько раз "выпало" каждое из чисел. 3. Используя случайные числа в интервала ]0 ; 1[, полученные при решении предыдущей задачи, найдите случайные числа в интервале [ 1 ; 49] для имитации игры в "Спортлото". 4. Используя случайные числа, полученные при решении 2-й задачи, рассчитайте ζ- и ζ у, имитируя измерения роста мальчиков. Обобщите данные, полученные в классе, и изобразите распределение мальчиков по росту (сколько мальчиков , имеющих рост 176 см, 175 см, 174 см и т. д.). 5. Запишите формулу, с помощью которой из случайных чисел интервала ] 0 ; 1 ] можно получить числа 0 или 1 для имитации подкидывания монеты (0 — "решка", 1 — "орел"). Имитируйте десятикратное подкидывание монеты. Сколько раз выпал "орел" и сколько раз выпала "решка"? 2.10. НЕКОТОРЫЕ ВАЖНЕЙШИЕ ПРОГРАММЫ ДЛЯ КУРСА АЛГЕБРЫ Полиномы (многочлены) широко используются не только в математике, но и в других науках. Поэтому очень важно научиться находить значения полиномов. Рассмотрим программу вычислений значений полинома пятого порядка: у = аБх5 + аАХ* + а~х3 + а0х2 +алх + ап. 45
Ввиду того, что такая форма записи полинома неудобна для вычислений, преобразуем полином по так называемой схеме Горнера: У = Шаъх + ajx + а3)х + а2)х + а^)х+ aQ. Это выражение можно записать ё виде программы, пригодной для всех микрокалькуляторов: ИавШхШа4 ΞχΕΚΞ Ξ*(ΞΚΞ 0*EkB Решение квадратного уравнения эх + Ьх + с = 0 можно записать в следующей удобной для вычисления форме: ν = у Ь2 — 4ас ~b. v _ несоответствующая программа может быть такой: 04Вь0Е10 X Если на индикаторе появляется отрицательное число, то решения нет, в противном случае вычисления надо продолжить по программе \у/~] |-| Ь L=J [TJ a QJ 2 L=J (на индикаторе: значение первого корня х1) с Q1 fl ΕΙ] хл Ε] 'на инАикат°Ре: значение второго корня х2). Решение системы линейных уравнений Jax + by = e аф0 \cx + dy=f также можно представить в различной форме. Для расчетов на микрокалькуляторе удобны следующие формулы: / -Ьу + е се a cb a -; χ: которые можно записать в виде программы, пригодной для всех микрокалькуляторов: 46 Х-*»П
Если на индикаторе 0, то решения нет, в противном случае вычисл. надо продолжить по программе с ίϋΙ eLiJr LzJ -^L^J LiJ 1^"^Ч 1 — 1 (на индикаторе: значение^), |Х| b [--J e [==] |A~/||T|a [~j (на индикаторе: значение х). ВОПРОСЫ И УПРАЖНЕНИЯ 1. Модель автомобиля приводится в движение пружинным двигателем. Движение 2 3 модели в первые 1,5 секунды можно описать полиномом χ = 0,711 ~-0,17f — — 0,002f , где t — время в секундах, χ — перемещение в метрах. Запишите для полинома схему Горнера, составьте соответствующую программу и рассчитайте перемещение модели за 0,2 с; 0,5 с; 1,0 с; 1,5 с. 2. Приближенные значения функции синуса при малых значениях углов можно 13 1 5 определить по формуле sin* = * —-* +— χ . Запишите программу по схеме 6 20 Горнера и проверьте ее, вычислив синус от π/6 радиан (sin?^6 « 0, 5). 3. По программе, приведенной в данном параграфе, решите квадратное уравнение —4,9f + 10,72f + 2 = 0. Один из корней представляет собой время полета ΗΗΟΥ спортивного ядра. 4. По программе, приведенной в данном параграфе, решите систему /2,53х + 4,12^ = 2000 \0,G83x + 0,254у = 80. Решение показывает, сколько граммов сыра {у) и хлеба (х) необходимо человеку в день, чтобы с пищей получить 2000 калорий и 80 г белков. 2.11. МАТЕМАТИЧЕСКАЯ ОБРАБОТКА РЕЗУЛЬТАТОВ НАБЛЮДЕНИЙ о Со случайными числами чаще всего · + полета ж приходится соприкасаться при вы- « полнении лабораторных работ по · * физике, проводя измерения- Допус- · тим, что надо найти диаметр круга, · β * изображенного на рис. 2.Б. Резуль- β β тэты измерений можно занести в · β β · β таблицу — всего 18 чисел. Однако если требуется циркулем провести Рис. 2.5. Чему равен диаметр круга? 47
окружность, соответствующую полученным измерениям, то неясно, каким радиусом ее проводить. Поэтому множеству измеренных значений ставится в соответствие одно число — среднее арифметическое — _ *1 +х2 + Х3 + ' · · + Хп η Нетрудно заметить, что измеренные значения как случайные числа отклоняются относительно среднего арифметического. Для характеристики отклонения значений измерений от среднего арифметического чаще всего используется среднеквадратичное отклонение, которое определяется по формуле Дх^- х)Т+1х^- х)2 + 777+ (χ~χ)2 σ~ ν п В микрокалькуляторах со статистическим режимом вычислений эта величина обычно обозначается символом о , и ее называют дисперсией (слово "дисперсия" на русском языке означает "рассеивание"). Более удобной для расчета дисперсии является следующая формула 9 9 9-9 Х1 Х2 + * " ' + ХП "" Ш Π При наличии большого количества совпадающих результатов измерений лучше всего для вычислений пользоваться несколько преобразованными формулами Х= *1Х1 * *2Х2 + · - + ПкХк ηλ + ^2 + " ' " * П' к ηλ (χλ - χ)2 + ^ (х2 - х) + . . . f nK (хк -х)2 л, + п^ + . . . + пк где η — число, показывающее, сколько раз получен результат измерения хк. Рассмотренная величина σ не является единственной мерой совокупности результатов измерений. В научных исследованиях необходимо характеризовать погрешности для каждого отдельного измерения и значения среднего арифметического. Среднеквадратичную погрешность отдельного измерения находят по формуле V-i = (χλ-χ)ζ + (х2 ~- χ)1 + . . . + (хп-х)4 η- 1 48
Эта величина имеет также определенную физическую интерпретацию: две трети (68%) результатов измерений отличаются от истинного значения измеряемой величины не больше, чем на о ,. Естественно, ожидать, что среднее арифметическое значение χ ближе к истинному значению, чем любой произвольно выбранный результат измерения. В теории погрешностей измерений доказывается, что среднеквадратичная погрешность s для среднего арифметического значения связана со среднеквадратичной погрешностью отдельного измерения простой формулой ση-1 s = ~ · \Гп Приведенными формулами можно пользоваться, если количество измерений больше 30. Если измерений проведено меньше, например от 5 до 10, величина погрешности Δχ увеличивается и ее можно рассчитать, умножая погрешность среднего арифметического значения на так называемый коэффициент Стьюдента t, то есть Ах = ts. Государственный стандарт СССР определяет, что, как правило, необходимо указывать такие пределы погрешностей, в которые укладываются 95% полученных результатов измерений. Соответствующие значения коэффрциента Стьюдента для количества измерений от 5 до 15 сведены в следующую таблицу: η t 5 2,78 6 2,57 7 2,45 8 2,36 9 2,31 10 2,26 11 2,23 12 2,20 13 2,18 14 2,16 15 2,14 Если п = 30, округленный коэффициент Стьюдента равен 2. В средней школе обычно требуют указывать такие пределы погрешностей, которые охватывают 68% результатов измерений. В этом случае коэффицент Стьюдента t = 1 уже начиная сп = 5. Поэтому в лабораторных работах по физике необходимо проводить не менее 5 измерений. Если в вашем микрокалькуляторе нет регистра памяти или вы не хотите им пользоваться, то для обработки измерений можно использовать первый алгоритм "Обработка измерений — 1". Однако этому алгоритму присущ один недостаток — результаты измерений надо вводить в калькулятор дважды, а именно: первый раз — для расчета суммы значений измерений, второй раз — для нахождения суммы квадратов значений измерений. Применяя второй алгоритм "Обработка измерений — 2", значения измерений вводят только один раз. Как в том, так и в другом случае необходим контроль вводимых в калькулятор значений измерений. Если на индикаторе появилось число, отличное от числа, помещенного в таблице, оно гасится и вводится правильное значение измерения. 49
Обработка измерений-1 Обработка измерений-2 Погасить регистр X ГсП [+Ί значение измерения 1 повторить |— Записать сумму значений измерений S 5К η записать среднее χ Погасить регистр X : С И значение измерения повторитТ]- записать сумму квадратов значений измерений К *Ε>Ξ записать «иве! дисперсию а и результат χ ± о \ Погасить регис ГсГ) или заслать [с] :тр X и память [сп] в память нуль | \х *°»п [п+ Η "ΞΙ [гТ5вторить|- записать показание индикатора — сумму квадратов значений измерений К. Вызвать содержимое памяти и записать сумму значений измерений S записать среднее χ *Ε>Ξ* 000 I записать дисперсию σ и результат χ ± а ВОПРОСЫ И УПРАЖНЕНИЯ 1. При измерении диаметра круга получены следующие значения: 94 мм, 96 мм, 96 мм, 95 мм, 98 мм, 97 мм. Рассчитайте средний диаметр и среднеквадратичное отклонение. 2. С помощью линейки (изменяя направление, в котором она приложена) получите 6 значений измерений диаметра круга, изображенного на рис. 2.5. Рассчитайте средний диаметр и среднеквадратичное откпонение. Проверьте, укладывается ли 68% значений измерений в интервал с границами χ ±σ. 3. Среднее арифметическое значение обладает важным свойством: выражение среднеквадратичного откпонения σ — минимум именно для среднего арифметического значения измеряемой величины. Убедитесь в этом, проводя в уме вычисления суммы квадратических значений х, равных 12,13, 14, если 50
значения измерений — 11, 12, 13, 14, 15, а их среднее арифметическое — 13. Рассчеты проводите по формуле s= (11 -χ)2 + (12-х)2 + (13-х)2 + (14-х)2 + (15-х)2. 4. Считая количество дней в месяце значением измерения длины месяца, определить среднюю длину месяца в простом и високосном году. Найдите также среднеквадратичное отклонение значений измерений. Проверьте, укладывается ли 68 % значений измерений в интервал с границами χ ± О.
У = Y,mj I 10 8 6 и \л ТРАЕКТОРИЯ ПОЛЕТА ЯДРА 2 + 1,7X - 0,1X2 = И).1Х + 1.7)Х+2 ] 0.1 \l± |X]X0 и 00x02 Ξ , Μ ^~ / /1 4 ► ι \с υ \ ι Ι ( ►' ) ι « » ^ < > ι ι Χ, μ 0 1 ПЕТЕРИС 2 АННА 3 Υ, μ 2 3,6 ζ9'3 /6 2 ЯНИС 4/7,2 МАРИС δ/l 8 | '"Μ· 2 4 6 6 10 12 14 16 18 20 22 >Οι^-—-5—-^. ςγ5*» jLy] ΜΚ-51 20Ш17[Х]ЗШ ΜΚ-71 201.7 04Q 0.10 400В i ЫКШ-2 4 Χ-Π ο.ι Ш Ξ \ЕШ И ι.7ΒΞΙ1Ξ3Ξ 21
3. ВЫЧИСЛИТЕЛЬНЫЙ ПРАКТИКУМ 3.1. ИГРА В ЧИСЛА-СЛОВА В начертании некоторых цифр и букв1 есть сходство: 0 = 0; 1=7; 8 = В,6 = G, 2 = Z,5=S. Если цифры перевернуть вверх ногами, то список цифр-букв расширится: 3—·-£= Е; 4*tr= h, Ί—^L — L. Этот список можно также дополнить: 0,-»*'0 = D (предложено школьниками в ходе конкурса игр в числа-слова, проведенного в 1984 году Латвийским телевидением). В игре в числа-слова вопрос формулируется в виде арифметической задачи, решение которой можно прочитать как слово. Одна из первых загадок имела политический подтекст. В каком-то районе Ближнего Востока происходила борьба за два квадратных поля. Длина стороны первого поля составляла 5324 метра, второго — 6537 метра. Кто победил в этой борьбе? Чтобы узнать ответ, надо вычислить суммарную площадь этих полей: 53242 + 65372 = 71 077 345. Если посмотреть на получившееся число, перевернутое вверх ногами, то можно прочитать ответ — Shell oil — одна из крупнейших нефтяных компаний мира. Игры в числа-слова могут послужить хорошим упражнением для приобретения навыков решения задач на калькуляторе. Попробуйте сделать перевод с русского на латышский, английский и немецкий языки, пользуясь следующими словарями. 1. Русско-латышский словарь 1. Корыто 612 -6. 2. Подошва 218 + 26-134. З.Ад 73· 11. 4. Гусь 652 + 402 - 323. В данном случае имеются в виду буквы латинского алфавита. — Прим. ред. 53
5. Кукла 198-197-3-423. 6. Ясень 103-25+10300 :4. 7. Дуб 9 636 380: (-13) 2. 8. Уголь 25 9 10. 11. 510™4 . Осел 2-3-4- τ 5 Синий цвет Μ19) - Ель 1 (- \- ■6- -3) ι ас· -г. ι 1 • \о \ Μ] Τ tUUU. -8-9+ 154 443 (~4)2. 0,00032 12. Зуб 4000+ 7424*24 1,98 + 2,14 13. Ловкий парень (1,45152 - Ι09 + 6,19408 · 108) : 4000. 14. Окно 73- 14 + 41 -37 + 22- 179-570 15. Еж (3- (-683) +2- (-1537)) X (-1). 16. Коса (девушки) 400 · —!— + 5,76 ■ —L· . 0,125 0,32 17. Слог 1 + 3,2-10~5 1,6-10~4 18. Я у/у/7 890 481. 19. Имя мальчика 164-902 + 3· (-81). 20. Имя девочки 211 +210 + 199. 2. Русско-английский словарь 1. Туфля 203 2145 11-13 ' 1 τ +1212. 54
2. Похвала 153 + 2352. 3. Масло 1 1 1 0,0032 + 0,0025 0,4 * 4. Отлив 152 + 172 + 192+8. 5. Глобус 163 -9+1215. 6. Подметка 3211 - 1,5 70,1 -68,8 * 7. Она 46 920 8 - 17 8. Пчела \/l522+3022 -82. 9. Кипение (49+123) -4. 10. Ад Русско-немецкий словарь 1. Озеро (65 428-2783) : 187. 2. Яйцо V 4096 - V^eoT. 3. Веревка (-84)2 + V~624T. 4. Похвала (162 + 13) -3. 5. Масло f-JL+ 1 \ -60+10. \0,25 0,125/ 6. Отлив 342+362+382- 13. 7. Подметка 7481 .6,25 6,33 - 5,08
8. Она 65 835 19-11 9. Еж 867 · 1001 -48-65 117 10. Ад (l252 -8 + ) * 0,125/ 3.2. ИГРЫ В РЕЖИМЕ КОНСТАНТЫ Практически во все простейшие и инженерные микрокалькуляторы можно ввести программы операторов +К, —К, ХК, Ж для автоматического сложения, вычитания, умножения и деления на константу. Программа оператора *К вводится одним из способов: [с]#(Т]/с[=] или 0/<*£*]0Ξ «БЗ-38, МК-51,МК-71) где К — некоторое число, а * — какое-либо арифметическое действие. Если набрать какое-нибудь число Ν, а затем нажатием клавиши вызвать программу оператора *К, то калькулятор автоматически выполнит действие N * К и результат отобразится на индикаторе. Набор числа и вызов программы оператора #К можно выполнить несколько раз, нельзя только нажимать клавишу гашения. Проверьте свой микрокалькулятор: введите программы операторов +2, —2, Х2, -т-2. На некоторых калькуляторах можно автоматизировать умножение и деление на константу, но нельзя автоматизировать сложение и вычитание константы. 1. Игры с умножением. "Испорченный калькулятор". Такое название игре дали американцы. У калькулятора не работает клавиша деления, но надо найти такой сомножитель х, чтобы выполнялось равенство 23 ■ χ = 851. Введем в микрокалькулятор программу для автоматического умножения на 23: или С_ "с" 23 23 ~х\ "xl 23 [ [χ] ==] I== = (на индикаторе: 529) 56
40 Lz 35 Ρ Теперь введем пробные числа и клавишей | =| вызовем программу автоматического умножения на 23: на индикаторе: 920 на индикаторе: 805. Как видно, число 40 велико, а число 35 недостаточно. Дальше продолжайте поиск сами, пока микрокалькулятор на ваше пробное число не ответит числом 851. Пробные числа и ответы микрокалькулятора запишите. Введите программу для автоматического умножения на 38 (71, 29,47) и решите уравнения: 38·*= 1634; 71Х=1349; 29-Х=841; 47·Χ=752. "Попади в цель". Какое число надо умножить на 17, чтобы произведение попало в интервал [ 200; 201 ]. Вводим программу для автоматического умножения на 17 и затем пробуем: на индикаторе: 255 15 11 12 = | на индикаторе: 187 на индикаторе: 204 Дальше поиск ведите сами. С помощью этой программы найдите число, которое умноженное на 17 "попадет" в интервал [560; 585]. Один ученик 5-го класса решил эту задачу за 14 попыток. А за сколько попыток вы сможете решить эту задачу? Введите программу для автоматического умножения на 73 и 84 и решите уравнения: ?-*-Ζ3»[ 920; 925]; ?ЛМ**[ 500; 502]. 2. С точки зрения физики игры с автоматическим умножением можно рассматривать как простейшие численные эксперименты. Автомобиль движется со средней скоростью 77,5 км/ч. Подготовьте калькулятор к автоматическому умножению на 77,5 и с помощью численного эксперимента выясните, сколько времени потребуется автомобилю на преодоление расстояния от Риги до Москвы, равного 998 км: ?JJZ7A.998,...y где вместо точек могут быть любые цифры. Полученное время выразите в часах и минутах. 3. За сколько часов и минут победитель пробегает марофонскую дистанцию, если его средняя скорость равна 19,78 км/ч. Решение найдите с помощью численного эксперимента, подготовив калькулятор к автоматическому умножению на 19,78: ?*Ш&42.195..., где вместо точек могут быть любые цифры. 57
4. Цена сыра 2,9 руб/кг. Подготовьте калькулятор к автоматическому умножению на число 2,9 и с помощью численного эксперимента установите, сколько килограммов сыра купил покупатель, если он заплатил 0,73 руб. (0,87 руб., 0,44 руб., 2,18 руб., 1,31 руб.): ? 2<2Дд),72... (0,86; 0,43; 2,17; 1,30), где вместо точек могут быть любые цифры. 5. Подготовьте калькулятор к автоматическому прибавлению 273. Путем проб установите, какова температура тела в градусах Цельсия, если в градусах Кельвина температура равна 309 К: +273 ? ^309. Повторите попытки с такими целевыми значениями температуры: 234,1 К — температура плавления ртути; 600 К — температура плавления свинца; 126 К — температура сжижения азота; 159 К — температура плавления этилового спирта. 6. Подготовьте калькулятор к автоматическому делению на 11: 0iiQii0h«[Uii[D[7]E] Внимательно рассмотрите клавиатуру микрокалькулятора! Четырехзначным числом, набранным по часовой стрелке или против нее из цифр, расположенных в углах, можно обозначить любой четырехугольник на клавиатуре (например, 1254, 2893). Проверьте утверждение, что любое число, полученное 7 8 9 таким образом, делится на 11: 4 1 5 2 6 3 1254 2893 = 3S (на индикаторе: 114) (на индикаторе: 263) Запишите числа, делимость которых на 11 вы проверили. Попробуйте найти какой-либо общий признак для этих чисел. Режим константы сохраняется и в том случае, если нажать одну из клавиш функций 1/х, χ , \f~. Этим можно воспользоваться при решении различных задач. 7. "Как далеко до горизонта?". Расстояние s (в километрах) до линии горизонта можно найти по формуле s = V hX 12,74, где h — высота (в метрах) на уровне глаз относительно поверхности Земли. Подготовьте калькулятор к автоматическому умножению на константу 12,74: 12,74 fx] fx] (3 С 12,74 Χ 12,74 = или С 58
Введите, например, h = 2, и, нажимая клавишу [=J , вызовите программу автоматического умножения на 12,74. Затем, нажимая клавишу 1\Л"1, вызовите программу нахождения квадратного корня от произведения: — 2 [==J |j\/JlHa индикаторе: 5,047 /км/) (\Г)(на индикаторе: 10,09... /км/). 8 Продолжая вычисления дальше, выясните, как далеко до линии горизонта, если наблюдатель находится в башне собора св. Петра в Риге (высота 72 м), в самолете (высота 10 000 м) или в космическом корабле (высота 200 000 м). 8. "Кубический корень". Кубический корень числа А является решением уравнения х3 = А. Умножив обе части равенства на х, получим уравнение четвертой степени χ ~ χ · А. Его решение — χ = у/ух· А Основываясь на этой формуле, можно записать программу для приближенного нахождения значения кубического корня, проводя при этом вычисления в режиме константы. Чтобы вычислить \/8, подготовьте калькулятор к умножению на константу 8: [с] 8 [х] 8 или Вычисления проводятся по программе: [сГ 8 Ζ) Ξ УНУ! записать X повторить, пока X меняется 9. Из одного килограмма золота, объем которого 51,79 см , изготовлен куб. Найдите длину ребра куба. Решите эту задачу применительно к железу, объем одного килограмма которого составляет 126,9 см , а также к аллюминию, объем одного килограмма которого равен 370,4 см3. 10. "Темперированный звукоряд". Музыкальный тон определяется количеством колебаний в секунду, которые совершает струна, столб воздуха, мембрана громкоговорителя или барабанная перепонка уха. Когда И. С. Бах создавал темперированный клавишный инструмент, 59
он, скорее всего, никаких расчетов не производил. Однако оказалось, что частота (количество колебаний в секунду) каждого последующего музыкального тона в 12 V2"= 1,0594631 раз больше частоты предыдущего музыкального тона. Подготовьте калькулятор к умножению на константу 1,0594631. 1,0594631 [х] 1,0594631 [=] или 1,0594631 Рассчитайте частоты 12 музыкальных тонов, составляющих темперированный звукоряд, начиная со звука "До", частота которого составляет 261,63 Гц. Программа для вычислений следующая: 261,63 = записать X повторить 10 раз 3.3. ИГРЫ С КЛАВИШАМИ ЭЛЕМЕНТАРНЫХ ФУНКЦИЙ Вспомним, что калькулятор работает как исполнитель операторов. Если, например, в калькулятор ввести число 8 и нажать клавишу на индикаторе появится число 64: 8- ■»64. 1. Игра "Квадратный корень". С использованием только клавиши найти число, квадрат которого равен 441 (784; 7569; 6084; 4096; 1369) χ ?——441: χ ?—- 784; -7569; 2 2 2 ?~^-6084; ?-^—4096; ?^—1369. Естественно, что поставленные задачи можно решить, вводя число и вычисляя квадратный корень от него. Однако в этом случае игра теряет смысл. Данные задачи интересны только тогда, когда поиск решения ведется методом проб с записью введенных и полученных чисел. Цель игры состоит в том, чтобы получить решение при минимальном количестве проб. Игру можно проводить как соревнование между двумя учениками, сидящими за одной партой. 60
2. Игра "Квадрат". Пользуясь только клавишей |У[ найдите числа, на которые микрокалькулятор отвечает указанными числами: V*" \Г V~ V"" V*" ?—17; ?—-32; ?——19; ?— 53; ?—-46; ? —64; ? —29. 3. Игра "Обратная величина". Пользуясь клавишей 11/х обратные величины для заданных чисел: 1/х 1/х 1/х ? — 0,125; ?——0,015625; ? —0,078125; 1/х — 0,00032. , найдите 4. С помощью какой-либо клавиши элементарных функций (10х, еХ/ lg, In, sin, cos, tg, у*, 2х ) методом проб найдите число (два числа), действуя на которое выбранным оператором можно получить заданное число, например: sin ία ?—0,98...; ? —£-0,48... . Здесь 0,98. . . означает число в интервале от 0,98 до 0,9899999 (аналогично 0,48.. . означает число в интервале от 0,48 до 0,4899999). Каким будет результат, если заданное число равно 98; 0,85; 73; 0,57; 0,64; 32? Всегда ли можно получить решение? 5. Между функциями синуса и косинуса существует тесная связь. Какое число надо ввести в калькулятор, чтобы, действуя на него оператором синуса, на индикаторе получить значение cos 37° ? Очевидно, сначала надо вычислить cos 37° и 0,7986... , а затем путем проб найти решение задачи Решите задачи sin ?—0,7986. sin β sin 0 cos 0 ?——cos 15 ; ?—»*cos 65 ; ?——sin 85 ; cos sin sin ?—sin 27 ; ?-— cos 115 ; ?——cos 165 . 3.4. ГРАФИКИ Пользуясь микрокалькулятором, можно быстро и сравнительно точно построить графики функций. График функции у = f (х) дает наглядное представление о свойствах функции, по нему можно найти прибли- 61
женные значения корней уравнения f(x) = 0, интервалы возрастания и убывания функции, значения ее максимума и минимума и т. д. При решении задач этого параграфа рекомендуется все данные о функции, а именно: ее название, определение, программу вычисления значений и таблицу значений, — записывать на левой странице разворота тетради, а на правой странице строить график, отводя для него площадь, состоящую из 28 X 28 клеточек. Если нет специальных указаний, масштабы на оси координат следует выбирать одинаковыми. 1. Линейная функции. Как известно, график линейной функции представляет собой прямую линию и для его построения нербходимо найти лишь две точки. Однако хотя бы один раз стоит в этом убедиться. Поэтому для построения графика заданной линейной функции надо найти и занести в таблицу координаты 5-8 точек и отобразить их в системе координат. Для вычисления значений каждой функции запишите программу. Начало координат выберите в середине поля, отведенного под график. Заполните таблицу значений линейных функций и постройте графики. X -12 -10 -8 0 2 12 0,75х + 6 0,75х - 2 0,375х + 6 -0,37 5х + 4 Как на график линейной функции у -ах + Ь влияет знак и абсолютное значение коэффициентов а и Ы Графически определите приближенные значения корней следующих уравнений: 0,75х + 6 = 0; 0,75х — 2 « 0; 0,375х + 6 = 0; —0,375х + 4=0. Вычислите на калькуляторе значения корней этих уравнений. 2. Спортсмен толкает ядро со скоростью 14 м/с под углом α к горизонту. Вертикальная компонента скорости меняется по закону ν = 14cos α- 9,8ί, где t - время (в секундах). Найдите значения вертикальной компоненты через каждые 0,2 с и постройте ее график в интервале от 0 до 2,4 с. Расчеты проводите для значений угла α« 35 , 40°, 45°, 50°, 55°, 60°. Начало координат поместите в середине поля, отведенного под график. Через сколько секунд ядро достигнет максимальной высоты своей траектории (в этой точке вертикальная компонента скорости равна 0) ? 62
В следующих трех задачах надо построить графики квадратичных функций. Квадратичные функции 3. Составьте таблицы значений функций у = χ ; у - 0,5х2, у = — 2х2 в интервале от —2 до 2 с шагом 0,2 (одна клеточка). Постройте графики этих функций. Как значение и знак коэффициента влияют на график? 4. Запишите программы для расчета значений заданных функций по схеме Горнера: а) у= 2,4х2 -7,68х +6,144; б) у= -0,5х2 -0,6х + 0,14; в) у = х2 - 1,9х + 0,6; г) у = х2 - 1,9х + 1,2. Постройте графики этих функций. Используя графики, найдите корни уравнения у = 0, являющиеся абсциссами точек пересечения графиков с осью х. Как на график функции влияет значение свободного члена? 5. Траектория полета спортивного ядра описывается функцией у = 2 + 1,7х — 0,1х . Преобразуйте это выражение в соответствии со схемой Горнера, запишите программу вычисления значений функции с шагом 1 м (одна клетка), составьте таблицу значений функции и вычертите траекторию полета ядра. Ось у расположите слева на поле, отведенном для графика. По графику определите дальность полета ядра. 6. В общем случае траектория полета ядра описывается уравнением y=yo+-2Lx τχ\ ν 2ν ζ χ χ где ν = ν · cos α , ν = ν · si η α. Ядро толкается с высоты у =2м под углом 35° (40°, 45°, В0°) к горизонту с начальной скоростью ν = 14 м/с. Ускорение свободного падения g = 9,8 м/с2 . Найдите коэффициенты квадратичной функции и их значения округлите. Составьте таблицу значений функций у и начертите траекторию полета ядра. Как угол, под которым толкается ядро, влияет на дальность полета этого спортивного снаряда? Обратная величина 7. Постройте график функции 1/х в интервале [—1; 1] с шагом 0,1. Значение одной клеточки в направлении оси χ равно 0,1, а вдоль оси у-\. 0,5 1 8. Постройте график функции у = = 0,5 ·—.Составляя про- х χ 63
грамму, используйте режим автоматического умножения на константу 0,5. Постройте также графики следующих функций: y=zu&- y= _1_. . = _!_. * χ ' ОА+х' ' -0,3 +х По графикам выясните, как значения коэффициентов а и Ъ и их знаки в а функции у = влияют на график. Ь +х 9. В резервуаре находится 10 кг воздуха, молярная масса которого Μ = 0,029 кг/моль. Постройте кривые , характеризующие зависимость т 1 дж давления ρ от оЬъема V, если ρ = —RT—,jR = 8r 31— -,Г=300К и Μ у моль ■ К Τ = 600 К. Координатные оси совместите с нижним и левым краем поля, отведенного под рисунок. Значение для одной клеточки в направлении оси χ равно 0,5 м , а по оси у — У · 105 Н/м . 10. В одной и той же системе координат постройте графики функций у = χ в интервале [0; 1,2] и у = \/х~в интервале [0; 1,44]. Проведите прямую у = χ и сравните оба графика по отношению к этой прямой (функции у = х2 и у — \/х" в указанных интервалах являются взаимно обратными). В какой точке пересекаются оба графика? 11. Если тело свободно падает с высоты h и сопротивлением воздуха можно пренебречь, то скорость приземления ν можно вычислить по формуле ν - 3,6 V 2 ·9,8· λ. В этой формуле высота h выражена в метрах, а скорость ν — в километрах в час. Постройте график этой функции в интервале [0; 10] с шагом 1 м. По графику установите опасность падения в различных видах спорта: в. прыжках в высоту h — 2,5 м; в прыжках с шестом h = 6,2м; в прыжках в воду /г=3м; /г=5м; /г=10м. Степенная функция и ее обратная функция 12. Постройте графики функций 10х и Igx в интервале [1; 4] с шагом 0,1. Одну клеточку принять равной 0,1. Проведите прямую у = х. Обратите внимание на то, что функции 10х и lg x являются взаимно обратными. 13. Постройте графики функций 0,3х и lg x/lg 0,3. Запишите программы для расчета значений функций 0,3х и lgx/lg 0,3 с использованием операторов ух и lg x. Постройте графики функций в интервале [ 1; 4]. Проверьте прямую у = х. Являются ли функции 0,3х и lg x/lg 0,3 взаимно обратными? Напишите формулу, с помощью которой можно 64
найти значения функции, обратной функции 2х. Постройте графики функции 2х и ее обратной функции. 14. Постройте графики функции у = 2,718х и ее обратной функции, основываясь на решении предыдущей задачи. Запишите формулу для нахождения значений обратной функции. 15. Составьте таблицы для функций, которые можно вычислить при нажатии клавиш ех и In. Сравните с таблицей и графиком функции предыдущего задания. Каково приближенное значение числа е? По какой формуле можно найти In χ, если известен Igx? 16. В природе многие явления подчиняются экспоненциальному закону. Если в стакан налить горячий чай температурой 90 при температуре воздуха в комнате 20°, то температура чая меняется по закону Г = 20 + 70 · е"^30, где время t измеряется в минутах. Запишите программу для вычисления значений функции T(t), составьте таблицу и постройте график функции Г в интервале времени [0; 15] . Тригонометрические функции 17. Постройте графики функций синуса, косинуса и тангенса в интервале [—180 ; 180 ]. Одной клеточке на оси χ соответствует 15°, а на оси у — 0,1. Чем отличаются графики функций синуса и косинуса? Чем интересен график функции тангенса в окрестности точек —90 и 90°? 18. Постройте график функции синуса в интервале [—90°; 90°], выбирая значение 10 для одной клеточки на оси х. В той же системе координат постройте график функции arcsin, выбирая для одной клеточки значение 0,1 на оси χ и 10° - на оси у Аналогично постройте графики функций cos и arccos, tg и arctg, обращая внимание на то, что каждая пара функций является взаимообратными функциями. 19. Если необходимо построить угол в 40°, можно поступить следующим образом. Отложим вдоль оси абсцисс от начала координат отрезок длиной в 10 единиц. Вычислим tg40° = 0,83999 ^0,84, умножим это число на 10 и отметим точку с координатами (10; 8,4). Соединив эту точку и начало координат отрезком, получим угол в 40°. Начертите углы в 70, 110 и 160°. 20. Применяя метод, описанный в задаче 19, можно построить любой треугольник, если даны длина одной стороны треугольника и его два угла. Начертите треугольник, основание которого составляет 5 см, а углы при основании равны 35 и 110 ; 35 и 40 . 21. Пользуясь циркулем и линейкой, можно построить треугольник, если известны длины его сторон. Однако треугольник с тремя известными сторонами at b, с можно построить и без циркуля. Чтобы это 3 6-372 65
сделать, надо по формулам Ь2+с2 - а2 с2+а2- Ь2 со$а= ■— . соф ~ — 2Ъс 2са найти прилежащие углы стороны с (а = arccos(cosa), β = arccos(cosj3)), а затем так же, как и в предыдущем параграфе, найти точки, через которые проводятся стороны углов. Запишите программу для нахождения cosu, cos/3 и углов α и /3. Постройте треугольник с длинами сторон 10, 14 и 12 клеточек; 10, 10 и 17 клеточек. Обратите внимание на то, что расположение треугольника в тетради зависит от расположения основания треугольника. Постройте еще раз те же треугольники, выбирая иное положение оснований. 22. Если правильный многоугольник вписан в окружность, радиус которой равен 10, то координаты его вершин можно найти по формулам 360 -п 360 -я χ = 10 «cos—~—, у = 10 · sin , где N — количество сторон многоугольника, а п — номера вершин 1, 2, 3, . . . (центр окружности совпадает с началом координат). Составьте программу, найдите координаты вершин и постройте пятиугольник, шестиугольник, семиугольник, двенадцатиугольник и двадцатиугольник. Линейкой измерьте длину стороны построенного многоугольника, определите его периметр и отношение периметра к 10. К какому известному числу стремится это отношение, если число сторон многоугольника N возрастает? 23. Проведите кривую, координаты точек которой можно определить по формулам χ = 9cos<£, у = 6sin<£. Найдите координаты точек, если φ меняется в интервале [ 0°; 360° ] с шагом 15°. Полученная кривая называется эллипсом. 24. Координаты точек эллипса (см. предыдущее задание) можно также найти по формулам ρ г = £- ; χ = rcos<# у = rs\ ηφ, 1 + ecos<£ только в этом случае начало координат находится в так называемом фокусе эллипса. Начертите эллипс, если ρ = 4 и б β 0,74. 25. Траектория кометы Галлея представляет собой эллипс, для которого /?= 2,27, б = 0,936 (см. предыдущее задание). Координаты кометы Галлея в интервале времени с 1960 по 2000 г. можно найти, поставив в уравнение эллипса φ = (G - 1950) · 4,8, где G - год. Меняя G с шагом 5 лет (1960, 1965,... 1995, 2000), начертите траекторию кометы Галлея. 26. Нарисуйте "яйцо", координаты точек на контуре которого 66
можно найти по формулам jc= 8 (1 +cos^)c у = Ssin<£, меняя угол φ в интервале [ 0°; 360° ] с шагом 20°. 27. Изобразить взаимное расположение планет Солнечной системы — Меркурия, Венеры, Земли — в различные месяцы 1986 года, если координаты планет приближенно рассчитываются по формулам x=rcos(<£o + ΜΑφ); y = rs\n(ipQ + ΜΑφ); для Меркурия φ = 184°; Αφ = 97,7°; г = 4 клетки; для Венеры <л = 251,8°; Δ</> = 18,75°; г = 7 клеток; для Земли <ро = 88,6°; Δ^ = 30°; г = 10 клеток; Μ — порядковый номер месяца (для января Μ = 1; для февраля Μ = = 2, ...). 3.5. ЗАДАЧИ НА ЦЕЛУЮ ЧАСТЬ И ОСТАТОК. КАЛЕНДАРНЫЕ РАСЧЕТЫ Перед решением задач настоящего параграфа рекомендуется еще раз прочитать параграфы 2.3 и 2.4. 1. Найдите в уме целую часть )2-~М\ S = int /12-Λί\ и заполните таблицу. январь февраль март апрель май июнь июль август сентябрь октябрь ноябрь декабрь Μ 1 2 3 4 5 б 7 8 9 10 11 12 S Номер дня в простом году можно вычислить по формуле w = int(W + SM2-2) -30,59)- -S-365 + 29+Д а в високосном году — по формуле n = int(Wf + SM2-2) -30,59) - - 5 .366 + 30 + Д где D — номер дня в месяце. Значения выражений (М + S · 12 — 2) и S · 365 вычисляются в уме. Вычислите, каким днем года является каждый первый и каждый последний день месяца. Найдите η для вашего дня рождения, ваших именин, для сегодняшнего дня. 3* 67
Вечный календарь 2. Все календарные расчеты начинаются с определения количества дней по отношению к какому-нибудь воскресному дню. Для нас удобным днем начала отсчета является 31 декабря 1899 года. Количество дней, прошедших начиная с этой даты, можно вычислить по формулам: /12 -ЛГ\ S = int ■ ). * 10 ' N= int((G - 1900 -S) - 365,25 + int((M + S - 12 - 2) - 30,59) + 29 + Д где G - год, Μ — номер месяца, D — день в месяце. Например, для 7 марта 1986 года G = 1986, М~ 3, D = 7. Поскольку такие длинные расчеты проводить сложно, разделим их на отдельное шаги. 1. Запишите параметры даты G = ____, Μ == , D = 2. Найдите в уме S = 3. Найдите в умеg= G- 1900 -S = 4. Найдите в уме m= M+S · 12 - 2 = 5. Вычислите на калькуляторе Ρ = int(m · 30,59) = 6. Вычислите на калькуляторе N = \nt(g · 365,25 + 29 + D + Ρ) = Пятая и шестая инструкции выполняются следующим образом: на калькуляторе находят значение величины, заключенной в скобки, и на бумаге записывают целую часть числа, отображенного на индикаторе. Вычислить, сколько дней прошло с 31 декабря 1899 года до приведенных в таблице исторических дат. I Событие Великая Октябрьская социалистическая революция Основание СССР Начало Великой Отечественной войны День Победы День запуска первого искусственного спутника Земли День полета в космос первого человека Дата 7.11.1917 30.12.1922 22.06.1941 9.05.1945 4.10.1957 12.04.1961 Количество дней с 31 декабря 1899 года День недели 68
День недели 3. Если известно количество дней, прошедших с 31 декабря 1899 года до интересующей даты, можно определить день недели ND как остаток от деления количества прошедших дней на 7: N ND=N-7\nt—; 1 ND = 0 для воскресенья; 1 — для понедельника; 2 — для вторника,..., б — для субботы. Нетрудно заметить, что величина W = intl/V/7) — это число полных недель, прошедших с 31 декабря 1899 года. Для установления дня недели можно предложить такую последовательность вычислений: 1. Найти число полных недель: W= \nt(N/7). 2. Определить номер дня недели: W[Xj 7 U -WJjfj |/~/| Выясните, какой день недели соответствовал событиям, перечисленным в таблице (для них найдено число N). В какой день недели вы родились? "Возраст" фазы Луны 4. Существуют четыре фазы Луны: новолуние, первая четверть (видна правая часть Луны), полнолуние и последняя четверть (видна левая часть Луны). Если "возраст" первой фазы Луны принять равным О, "возраст" второй фазы соответствует 7 дням, третьей фазы — 15 дням, четвертой фазы — 22 дням. Так же, как и в календарных расчетах, надо выбрать какую-нибудь удобную дату отсчета, например начало новолуния — 12 декабря 1985 года. До Нового года остается 18 полных дней. Количество дней от этой даты до любого дня 1986 года или следующих за ним годов вычисляется по формуле Z = fl+1S + (G-1986) -11, где η — номер дня в году (см. задачу 1). Если известно Ζ, можно найти, сколько раз за это время было новолуние: /=int(- —V \29,530589/ Тогда остаток V = Ζ - 29,530 · /дает "возраст" Луны. Определите "возраст" фазы Луны для 10 апреля, 1 сентября 1986 года, сегодняшней даты. Если известно число дней Nc 31 декабря 1899 года, то для определения "возраста" фазы Луны следует взять Ζ = Ν+ 28, поскольку новолуние в конце 1899 года было 3 декабря. Определите "возраст" Луны для сегодняшней даты, вашего дня рождения, а также для следующих дат: 69
14 сентября 1959 года, когда на Луну совершила посадку станция "Луна-2"; 7 октября 1959 года, когда впервые была сфотографирована невидимая с Земли обратная сторона Луны; 21 июля 1969 года, когда на поверхность Луны впервые ступила нога человека. 3.6. ЧИСЛЕННЫЕ ЭКСПЕРИМЕНТЫ И ЧИСЛЕННЫЙ АНАЛИЗ Численные эксперименты проводятся не только для приобретения знаний, но и для выработки навыков и умений, необходимых в научно- исследовательской работе. Поэтому численные эксперименты следует оформлять как лабораторные работы. В содержание работы входит формулировка задачи, название микрокалькулятора, применяемого в расчетах, формулы, программы, таблицы, графики, выводы (пример оформления см. на рис. 3.1}. Максимум и минимум 1. Из бумаги в клетку, размеры которой составляют 15 см X 20 см, изготовьте коробочку с максимальным объемом. Чтобы ребра коробочки имели одинаковую длину, в углах листа бумаги постройте квадраты одинаковой площади. Далее в уме найдите длину ребер при различных высотах коробочки и на калькуляторе вычислите объем коробочки. Результаты занесите в таблицу и постройте график зависимости объема от высоты коробочки. Высота, см 0,5 1 1,5 2 2,5 3 | 3,5 Ширина, см 14 13 Длина, см 19 18 Объем, см 133 2. На тетрадном листе постройте квадрат, размеры которого составляют 16 см X 16 см. Через центр квадрата параллельно его сторонам про- 70
ведите оси координат. Определите координаты вершин 16-угольника χ = 8cos(« . 22,5),у = 8sin(« · 22,5), η = 0,1, 2 15 ИЗ листа16смх12см изготоЬить коробку с наибольшим объемом V = (16-2x)(12-2x).x=a-b-x [с] χ 0a0b[7 повторить от х=0дох=6 | с шагом 0,5 12 Lt -16 ff χ 0 0,5 1 1.5 2 2,5 3,0 3,5 и 4,5 5 5,5 6 а 16 15 Η 13 12 11 10 9 θ 7 6 5 А b 12 11 10 9 θ 7 6 5 A 3 2 1 0 ν I 0 82,5 140 175,5 192 192,5 180 157,5 128 94,5 60 32,5 0 6 χ ВыВод: наибольший объем имеет коробка с длинами ребер 11; 7; 2,5. л 2,5 11 Рис. 3.1. Образец оформления рабочего листа 71
и обозначьте эти вершины в системе координат (масштаб — 1 см). Циркулем или от руки проведите окружность, проходящую через вершины 16-угольника. Вырежьте полученный круг и ножницами сделайте разрез по радиусу круга от одной из вершин 16-угольника до центра круга. Накладывая одну сторону разреза на другую, вы можете сделать конусы различного объема. Необходимо изготовить конус с максимальным 1 2 объемом (объем конуса определяется по формуле V =-~ттг h, где г — «5 радиус основания конуса, h — высота). Соединяя вершину разреза с одной из вершин 16-угольника, вы можете получить конус, радиус основания которого составляет 16/2, 15/2, ... .По теореме Пифагора вычисляется высота конуса h= \/~82 -г\ С каждым разом уменьшая периметр основания конуса на одну шестнадцатую часть, определите высоту конуса и его объем (результаты занесите в таблицу). По данным таблицы постройте график зависимости объема конуса от его радиуса. Радиус, см 8 7,5 7 6,5 6 5,5 5 4,5 4 Высота, см 0 2,78 Объем, см 0 164 3. В школьном спортзале проходят соревнования. Ученики стоят у одной стены на расстоянии 20 м от противоположной стены. По сигналу необходимо добежать до противоположной стены, коснуться ее рукой, а потом бежать к цели, находящейся на расстоянии 10 м от противоположной стены в другом конце зала (рис. 3.2). К какой точке противоположной стены следует бежать, чтобы путь до цели был кратчайшим? Разделим противоположную стену на части длиной 0,5 м. Путь к цели состоит из двух отрезков, длины которых вычисляются по формулам: 51 = л/го^Тх7, s2 = Vio^+Tio^-^. 72
Найдите длину пути при различных положениях промежуточного финиша, которым соответствуют значения х, равные 5; 5,5; 6; . . . 7,5; 8. Постройте график зависимости длины пути от положения промежуточного финиша, то есть от х. Определите также величину углов χ 10-х α = arctg—; β = arctg -. 20 10 Результаты занесите в таблицу. Сравните углы α и β. Можете ли вы сформулировать гипотезу о величине углов точно вычисленного кратчайшего пути? Если с места старта к противоположной стене направить луч света так, чтобы он после отражения достиг цели, то мы увидим, что луч света пройдет по кратчайшему пути. Углы α и β, о которых идет речь в задаче, называют углами падения и отражения. Сформулируйте закон отражения света. Χ, Μ 5 5,5 6 6,5 7 7,5 8 £.,, м 20,62 £2, м 11,18 £Ί + S2, м 318 о α 14,0 β° Ι 26,6 4. Вам предлагается принять участие в соревнованиях по техническим видам спорта. Сначала надо проехать на мотоцикле по песчаной местности, а затем пересечь озеро на моторной лодке. Соревнования проходят на квадратном поле с размерами 10 км X 10 км, которое разделяется на две равные части береговой линией озера (рис. 3.3). Старт дается на суше в одном из углов квадрата, финиш находится в противоположном (по диагонали) углу квадрата на другом берегу озера. На берегу озера разрешается выбрать место для моторной лодки. Максимальная скорость мотоцикла 60 км/ч, моторной лодки — 40 км/ч. Необходимо найти путь, по которому можно прийти к финишу за минимальное время. Для решения задачи разделим путь на две части: Sy « y/sTTj; S2^s/^T^Q^x^. 73
20м Юм -Юм Рис. 3.2. Через какую точку χ надо бежать, чтобы пройденный путь был наименьшим? Рис. 3.3. В какой точке χ надо пересесть с мотоцикла (ν - 60 км/ч) в моторную лодку (ν - 40 км/ч), чтобы пройти маршрут за наименьшее время? Тогда время (в секундах) прохождения путей S^ и S2 можно определить по формулам Ί = - 1 60 3600=5., -60; t S2 = _£3600 = £9.90; t = t*+t*. 40 Ί 2 Найдем также отношение синуса угла "падения" (см. рис. 3. 4) к скорости мотоцикла и отношение синуса угла "преломления" к скорости моторной лодки: sing _ χ sin/3 10 -jc νλ ~~ S) -60 ' V2 = 52·40 * Как меняются эти величины с приближением к минимальному времени прохождения всего пути? Можете ли вы сформулировать гипотезу об этих величинах в том случае, когда время в точности равно минимальному значению? 74
X, KM 5,0 5,25 5,50 5,75 6,0 6,25 6,5 6,75 7,0 7,25 £-, км 7,07 S~, км 7,07 tvc 424 t2,c 636 t, с 1060 sina/F^, [км/ч]'1 0,0118 [км/ч]*1 0,0177 15см 5. Как известно, при переходе из одной среды в другую свет распространяется по определенному пути в минимальное время. На рис. 3.4 показан луч лазера, который преломляется при переходе из воздуха в воду. Скорость распространения света в воздухе с = 3 · 10 м/с; в воде - ν « 2,25 · 108 м/с. Заполните такую же таблицу, как и в предыдущей задаче, выбирая значения χ в пределах от 25 до 30 см с шагом 0,5 см. Запишите формулы для расчета пути, времени и sina/c, sin/3/v. Найдите путь, по которому луч лазера проходит с минимальным временем. Сформулируйте закон преломления света (отношение синусов углов падения и преломления равно . . .). Толкание ядра 6. Если ядро выстреливается и падает на той же высоте, с которой оно начало свое движение, то максимальная дальность полета ядра при стрельбе 15 см достигается под углом Рис. 3.4. При переходе с воздуха [с = 3 · 108 м/с) в воду {ν = 2,28 · 108 м/с) свет выбирает такой путь, по которому время распространения имеет минимальное значение. В какой точке χ луч лазера входит в воду? 75
45° к горизонту. Спортсмен толкает ядро с высоты двух метров. Поэтому максимальная дальность полета ядра уже не соответствует углу в 45°. Полет ядра описывается двумя уравнениями: χ =v„ t; У- + vv-t-g-tz/2, где ν χ = ν cosa, v ратное уравнение, получаем соотношение ν = vsin]3. Исключая из уравнений время и решая квад- х =«2L (Vy + лЛГ^Т^Г). g Спортсмены мирового класса 1олкают ядро с начальной скоростью ν = 14 м/с. Если ядро толкается с высоты 2 м и ускорение свободного падения g = 9,8 м/с , то 14cosa; ν = 14sina,· 9,8 Запишите соответствующие программы и определите дальность полета ядра для различных значений угла а. Под каким углом к горизонту спортсмен должен толкать ядро, чтобы при его физических данных ядро улетело как можно дальше? Как изменится результат спортсмена, если он будет толкать ядро на Северном полюсе, где g = 9,83 м/с , и на экваторе, где g = 9,78 м/с ? Угол, | в градусах 38 39 40 41 42 43 44 45 46 47 V м/с 11 м/с 8,6 X, Μ 21,59 Элементы математического анализа. Предел 7. Если необходимо найти предел функции, в выражении которой содержится разность (отношение) двух больших чисел или произведение большого и малого числа, создается неопределенная ситуация. Для 76
аналитического разрешения этой неопределенности иногда трудно найти идею. В таких случаях может помочь численный эксперимент, в котором рассчитываются значения выражения при возрастании числа п. Составьте программы и попробуйте найти пределы ул = lim ( л/ η2 + Зп - \/ п2 - п); у0 = lim п(ν η + 1 — η); п- у3 = lim (γη2 + 2п - η), вычисляя значения выражений при η = 10, 50, 100, 500, 1000. В математике и физике часто используются пределы sinx tcpc co&x — 1 lim—-—; lim— ; lim . X-—Q χ x-~*Q χ x-*»Q x2 Переключите микрокалькулятор в радианный режим и найдите значения функций при χ = 1; 0,1; 0,01; 0,05; 0,001. К какому пределу стремится каждое из приведенных отношений? Производная 8. Производную/ (х) от функции/(х) определяют как предел, равный г f(* + te)-f(x) f(x) = lim . Δχ-»*0 Δ* Пусть Ах — 0,01, тогда приближенное значение производной можно найти по простой формуле Г(х) = (fix + 0,01) -fix)) ■ 100. Вычислите приближенные значения производных от функций χ , χ , 10х, ех, \пх, siruc, co&x и постройте графики производных в интервале [ 0; 2] с шагом 0,2. Синус и косинус надо находить от угла, заданного в радианах. Сравните графики производных с графиками известных элементарных функций и запишите формулы для производных: (х2)'= ; (ln*)' = ; (sinx)'= ; (**)' = . 77
Площадь криволинейной трапеции и интеграл 9. Определенный интеграл имеет наглядную геометрическую интерпре- Ь тацию. Интеграл \ f(x) dx от положительно знакоопределенной функции а f(x) численно равен площади под графиком этой функции в интервале [а; Ь]. Основываясь на данной геометрической интерпретации, можно получить простые способы вычисления приближенного значения интеграла. Площадь под отрезком прямой (то есть под графиком линейной функции, см. рис. 3.5 а) можно найти по так называемой формуле трапеции 5 = Δχ, 2 где Δχ = х2 — хг Поскольку полусумма оснований трапеции (т. е. параллельных сторон трапеции) равна длине ее средней линии, площадь можно также найти по формуле sv=yb +—)Δχ«^Δχ. В случае криволинейной трапеции величины St и S не одинаковы, хотя и St, и S являются приближенными значениями площади трапеции. Рассмотрим криволинейную трапецию (рис. 3.5 б), которая ограничивается графиком функции 1/х в интервале [1; 2]. Площадь этой криволинейной трапеции равна натуральному логарифму от двух, а именно: S = In 2 = 0,6931. . . . Если точки А и £ соединить отрезком прямой, то для полученной трапеции Sf ~ (1 + 0,5}/2 = 0,75, a S = 1/1,5 = = 0,666... . Как видно, Sp<S <S, поэтому среднее арифметическое от этих двух приближений (£. + S )/2 = 0,70. * . уже является лучшим приближением к точному результату. Чтобы добиться еще большей точности, исходную трапецию можно разделить на две трапеции одинаковой ширины: >>(1)+>>(1,5) у(1.В)+у(2) , у(\)+у(2) S = Δχ+ Δχ 2 2 /1/1 +1/2 1 \ = — +— .0,5; ν 2 1,5' S «^1.25)Ax+j;(1f75)Ax=(-— + -—) -0,5 4,25 1,75' ,y(V+y(2) ι = f + >>(1,5)1 Δχ = 78
ty= 1 0.5 - A, 1/x V///V?, Ж Ш > В 2 χ ♦ У Sv=? О 1 2 3 χ Рис. 3.5. Вычисление площади по формулам трапеции и средней точки 79
108 Рис. 3.6. Которые из треугольников являются прямоугольными? У ' 10 9 8 7 6 5 А 3 2 0 ι 1 К. <^ С \ ^ мг s ·*-— ^ . / ι ^ )/ ■— ^* / ϊ \ N *■—. ^ γ и ■ \ Л ^ / \ 5 6 /" ^ \ ' ί J ϊ Э 1 0 1 1 χ Определите Sv Sy и (St + Sv)/2 и сравните их значения с In 2. Определите Sf, Sy и /^ + Sp)j2 для площади под параболой у = х2/2 в интервале [0; 3], разделив фигуру на три криволинейные трапеции одинаковой ширины (см. рис. 3.5 в, г, д). Точное значение площади 4,5. С помощью рассмотренного метода можно найти приближенное значение площади практически любой фигуры. Фигуру необходимо разделить на криволинейные трапеции одинаковой ши- и Вычислите St> Sv Рис. 3.7. Как вычислить площадь треугольника? рины. (S + Sv)/2 для фигуры "Латвия" (рис. 3.5 е), разделив ее на 7 трапеций. Прижмите ладонь к листу бумаги в клетку и обведите ее карандашом. Разделите получившуюся фигуру на трапеции шириной 2 см и вычислите площадь ладони в квадратных сантиметрах. Геометрии 10. Выясните, какие из треугольников, изображенных на рис. 3.6, являются прямоугольными. 11. Известны несколько способов нахождения площади треугольника. Если одна вершина треугольника находится в начале коорди- 80
нат, то площадь можно вычислить с использованием координат двух других вершин. Найдите площади треугольников, изображенных на рис. 3.7. Запишите программу для вычислений по формуле площади. Если в вашем распоряжении имеется калькулятор МКШ-2 или БЗ-32, то можно применить оператор det(A). 12. Если известны координаты (проекции на оси координат) векторов а и Ь, то по теореме Пифагора можно рассчитать модуль каждого вектора и угол Рис. 3.8. Как вычислить длину векторов и углы между ними по формулам: между ними? Й-^hcJTyJ; |7|=>/^7 ,-·£, Хд*Ь +УаУь cos(tf, о) = -—;—~ . \а\ \Ь\ Запишите программу для вычислений по этим формулам. Рассчитайте модули векторов, показанных на рис. 3.8, и углы между ними. 13. В вашем распоряжении автомобиль с программным управлением. Чтобы провести автомобиль по желаемому маршруту, в программу надо заложить длину прямолинейных участков пути и величину углов поворотов. Автомобиль необходимо провести по маршруту АВ, показанному на рис. 3.9. Найдите длину каждого прямолинейного участка у. 1 0 1 А ' Ε \ X Рис. 3.9. Маршрут игрового автомобиля. Чему равны промежуточные отрезки и углы поворотов? 81
пути и величину углов поворота автомобиля после проезда прямолинейных участков (углы между парами близлежащих векторов). Результаты занесите в таблицу. Координаты первых двух векторов: х. ~6,у^ = 2; Участок 1 пути 1 1" 2. 3. 4. 5. Длина, м 6,32 3,61 Угол поворота. [°] 0 128 14. Совместим начало прямоугольной системы координате центром Земли так, чтобы ось Ζ проходила через Северный полюс, оси χ и у лежали в плоскости экватора, да к тому же ось χ проходила через Гринвичский меридиан. В таблице приведены координаты нескольких городов в указанной системе отсчета. Эти координаты определяют вектор, который соединяет центр Земли с данным городом. Векторы каждой пары городов образуют определенный угол, величину которого можно вычислить по формуле *1*2+JV2+Z1Z2 cos 7 = ', 2 где г = 6371 км — радиус Земли. Поскольку 1° на поверхности Земли соответствует расстоянию в 111,2 км, то, зная угол между векторами двух городов, можно найти кратчайшее расстояние между городами на поверхности земного шара: S = 111,2γ = 111,2 arccos(cos7). Запишите программу и определите расстояние от Риги до Москвы, Таллина, Вильнюса, Владивостока. Результаты занесите в таблицу. Город I Москва Рига Владивосток Таллин Вильнюс Географические координаты х, км 2840 3171 3106 2942 3314 У, км 2189 1420 3461 1356 1564 Ζ,ΚΜ 5266 5340 4355 5485 5211 Угол Расстояние 82
Физика 15. Движение автомодели. Автомодель приводится в движение пружинным двигателем. Движение модели заснято на кинопленку. В результате анализа данных съемки получена зависимость между перемещением χ и временем /: χ =0,71 . ί2·<Τ°'3ί Для движения в первые 1,5 секунды можно использовать также более простую зависимость: χ = 0,71 Л- 0,17t3 - 0,002ί4. Запишите программу для расчета перемещения по одной из приведенных формул. Для удобства нахождения скорости и ускорения рекомендуется вычислить перемещение для трех близких моментов времени, например 0,09, 0 J и 0,11 с. Тогда можно найти средние скорости v1 =(0с2 -χ^/Ο,ΟΙ =(х2 - x^)WQ; v2= (х3 - х2)\00, которые мало отличаются от мгновенных значений скорости в моменты времени 0,095 с и 0,105 с, а также значение ускорения αλ ~(ν2 -1^)100 в момент времени 0,1 с. Постройте графики зависимости перемещения, скорости и ускорения от времени в интервале [0; 2]. Какие выводы можно сделать о зависимости силы сопротивления от скорости? Время, с 0,09 0,10 0,11 0,19 0,20 I 0,21 Перемещение, м 0,005598 0,006890 0,008312 Скорость, м/с 0,1292 0,1422 Ускорение, м/с 1,3 16. В предыдущей задаче мы ознакомились с воздействием среды на движение тела. Однако по движению автомодели, а также настоящего автомобиля не так-то легко установить, что с увеличением скорости одной из основных сил сопротивления является сила сопротивления воздуха. Поэтому исследуйте свободное падение волана (мяча с оперением для игры в бадминтон). На него действуют только две силы — сила притяжения Земли и сила сопротивления воздуха. Экспериментально установлено, что перемещение волана описывается формулой е~1'44' + е1,44г х = 4,7 -In ~ . 2 83
Для этой формулы можно записать такую программу: 0'И1'44В0Н[^ЕШ2Н0Е4,7[3 Составьте таблицу значений перемещения, скорости и ускорения волана в течение 2 с с шагом 0,2 с (см. предыдущую задачу). Постройте соответствующие графики, а также графики зависимости ускорения от скорости и ее квадрата. Что вы можете сказать о характере движения в первые 0,6 с, через 1,5 с, о характере силы сопротивления? 17. В результате съемок на кинопленку метателя молота во время раскручивания спортивного снаряда выяснилось, что координаты ядра молота можно описать уравнениями х-2 -cos10i; y~2 -sin 10^ Отметьте местонахождение ядра молота через 0,1, 0,2, 0,3 и 0,4 с (масштаб: 1 клеточка = 0,1 м). Начертите векторы скорости и ускорения в эти моменты времени. Рассчитайте, какую силу спортсмен прикладывает к ядру молота массой 7,2 кг. Результаты занесите в таблицу. Время, с 0,09 0,10 0,11 0,19 0,20 0,21 X, м т. | м 1,5667 1,6829 1,7824 м/с -16,26 -17,34 V м/с 11,62 9,95 y/v 2 + v 2, ν χ у * м /с 20 20 ах> м/с2 -108 V м/с2 -167 ЛГ^ТТ2 ν χ у'\ м/с2 200 18. Между молекулами действуют силы. Если молекулы подходят слишком близко друг к другу, между ними действуют силы отталкивания, если молекулы удаляются друг от друга, начинают действовать силы притяжения. Существует также такое расстояние между молекулами, при котором равнодействующая сила равна нулю. Это — расстояние равновесия. Выясните, как меняется характер силы вблизи положения равновесия {f = 0}, если величину силы можно рассчитать по формуле (х — расстояние между молекулами) 1 1 Запишите программу, составьте таблицу значений силы в интервале 84
[0,9; 1,5] с шагом 0,04 и постройте график. Можно ли вблизи положения устойчивого равновесия упростить формулу силы и записать ее в виде /= к(х — 1)? Чему равен коэффициент κΐ 19. Термодинамическое равновесие. Допустим, что в сосуд заключены четыре молекулы. Необходимо выяснить, как часто в левой части сосуда будут находиться: а) все четыре молекулы; б) три молекулы; в) две молекулы; г) одна молекула; д) когда там не будет ни одной молекулы. Любое конкретное состояние такой модели газа является, случайным событием, поэтому исследование можно проводить с использованием четырехзначных случайных чисел. Признаком того, что молекула находится в левой части сосуда, будем считать нечетную цифру. Тогда случайное число 1234 отобразит состояние газа ЛПЛП (две молекулы находятся в левой части сосуда и две — в правой). Поведение газа будем имитировать таким генератором случайных чисел. Подготовьте калькулятор к автоматическому умножению на 0,99917: | 0,99917 [х] 0,99917 0 или [с] 0,99917 э СЕ в N\ — | записать четырехзначное число N, стоящее после запятой повторить В качестве первого случайного числа N выберем число 2151 (с таким же успехом можно было выбрать, например, число 3590 или квадрат своей марсы). При выборе числа 2151 на индикаторе появится 2149, 2146. Следующим числом N в этом случае становится число 2146. Если после запятой стоит трехзначное или двузначное число, его дополняют нулями до четырехзначного числа, например числу 4752,32 соответствует N = с= 3200. Поступая таким образом, получите 64 случайных числа. Затем подсчитайте в каждом случайном числе количество нечетных цифр, которое соответствует числу молекул в левой части сосуда, и определите, сколько раз в левой части было 4,3, 2, 1,0 молекул. Результаты занесите в таблицу. Какое состояние газа реализуется чаще всего? Отобразите на графике зависимость числа событий отт Число молекул т в левой части сосуда 0 1 2 3 I 4 Число событий Теория 4 16 24 16 4 85
Число возможных событий для газа, состоящего из четырех молекул, можно определить теоретически. Имеется только одно событие, соответствующее случаю, при котором все четыре молекулы находятся в левой части сосуда. Если молекулы обозначить через а, Ь, с, d, то легко увидеть, что число событий, при которых в левой части находятся три молекулы, равно четырем, а именно: abc,abd,acd, bed. Наибольшая частота соответствует событию: "в левой части сосуда находятся две молекулы" {fib, ас, ad, be, bd, cd). Естественно, что состоянию с одной молекулой в левой части соответствуют четыре события а, Ь, с, d, а состоянию "в левой части сосуда нет молекул" — одно событие. Всего возможны 16 различных событий. Нетрудно подсчитать, сколько раз повторятся различные состояния газа, если общее число событий равно 64. Соответствующие числа даны в последней графе таблицы. Несмотря на то, что в численном эксперименте исследовались случайные события, обнаруживается определенная закономерность их распределения: чаще всего повторяется событие, при котором в левой части сосуда находятся две молекулы. Такое состояние газа называют наиболее вероятным. 20. Броуновское движение. Броуновской частицей можно считать любую мельчайшую частицу, например пылинку, беспорядочно двигающуюся в жидкости или газе. Беспорядочное движение мельчайших частиц открыл в 1827 году английский ботаник Р. Броун, наблюдая за поведением цветочной пыльцы в жидкости. Только в начале нашего столетия была выявлена физическая сущность данного явления. Это сделали два выдающихся физика А. Эйнштейн и М. Смолуховский. Беспорядочное движение броуновской частицы происходит под влиянием ударов молекул окружающей среды. Поэтому движение броуновской частицы отражает природу беспорядочного теплового движения молекул. Эти частицы можно наблюдать только под микроскопом. Однако если направление движения и пройденный путь действительно являются случайными величинами, то движение броуновской частицы можно моделировать с помощью микрокалькулятора и исследовать таким образом закономерности этого движения. По какому же закону броуновская частица удаляется от начального положения? Выясним это с помощью и I и [ ψ I φ х_ 997 [=1 записать дробную часть; это новое значение и X ] 360 [==] записать значение угла φ (целую часть) cos sin [К _Х_ Отме 5 Г=1 записать перемещение X 5 Г=] записать перемещение Υ тить новые координаты броуновской частицы (г + Υ ν + Υ) \ '"1 ПОВТОРИТЬ 1 "■' ' '■'
численного эксперимента. Для моделирования будем применять следующий генератор координат броуновской частицы (начальное значение и — произвольно выбранное число из интервала ] 0; 1 [). Рассчитайте как минимум 15 перемещений броуновской частицы и изобразите ее движение так же, как показано на рис. 3.10. Нетрудно заметить, что длина перемещения за единицу времени всегда равна 5 клеточкам. Чтобы найти среднюю длину перемещения за две единицы времени, необходимо несколько раз измерить или вычислить расстояние между точками, в которых частица находится в моменты времени t и t + 2, например, расстояние между точками 1 и 3, 2 и 4, 6 и 8 и т. д. При определении средней длины перемещения за три единицы времени необходимо измерить расстояние между точками, в которых находится частица в моменты времени t и t + 3, то есть между точками 1 и 4, 3 и 6, 5 и 8 и т. д. С помощью линейки с миллиметра выми делениями или полоски миллиметровой бумаги найдите длины перемещения между пятью различными точками за 2,3,4, 5, 6 единиц времени и рассчитайте их средние значения. Постройте графики s(t) и s (t). Каковы закономерности броуновского движения? В теории доказывается, что среднее квадратичное перемещение броуновской частицы прямо пропорционально времени. По этому же закону происходит перемещение частичек духов в воздухе, молекул примеси в жидкости и в твердом теле. Рис. 3.10. Движение броуновской частицы 87
t 0 1 2 и 0,5262 0,6214 0,5358 Ψ 189 223 192 Χ -5 -4 -5 Υ -1 -3 -1 χ -5 -9 -14 У -1 -4 -5 21. Молекулы газа двигаются с различными скоростями. Экспериментально и теоретически установлено, что количество молекул/, которые двигаются со скоростью ν м/с, можно рассчитать по формуле где коэффициенты а и Ь находят из формул: Ь = -Ш~ ; д= М-4-Δ*-100. 2кТ V π Буквой m обозначена масса молекулы, кг; /с = 1,38 · 10 Дж/К — постоянная Больцмана, а Δν -~ диапазон скоростей, в котором рассчитывается количество молекул. Например, если при Αν *= 10 найдем количество молекул, двигающихся со скоростью 500 м/с, то в эту группу войдут все молекулы, которые двигаются со скоростями от 495 до 504 м/с. Рассчитайте константы а и Ь для молекул кислорода, у которых т= 5,31 · Ю"~26 кг (для молекул водорода и азота, у которых /и = = 0,332 · 10~26 кг и т— 4,66 · 10"~26 кг соответственно), при комнатной температуре Τ - 300К (при Г =400°С = 173К, при Г = 200°С). Запишите программу для расчетов значения /. Занесите в таблицу значения функции /, рассчитанные в интервале от 0 до 1000 м/с, и постройте график, принимая значение одной клеточки по оси χ равное 50 м/с, по оси у — 0,1%. ν, м/с 0 50 100 150 1000 300 К, 02 % 300 К, N2 % 300 К, Н2 % 173 К, 02 % 473 К, 02 % 88
С какой скоростью двигается большинство молекул? Скорость, которая соответствует максимуму кривой, называют наивероятнейшей скоростью. Как меняется эта скорость с изменением температуры и массы молекулы? Если возможно, рассчитайте в классе распределение скоростей для температуры от 100 до 500 К с шагом 50 К. В результате такой коллективной работы можно получить кривую, отражающую зависимость наивероятнейшей скорости (или квадрата скорости) от температуры. Обработка результатов наблюдений 22. В результате обследования нескольких сотен работниц текстильной промышленности выяснилось, что такой показатель, как рост (в процентах), подчиняется нормальному распределению в соответствии с формулой -Чх~х)2 100 2σ2 где χ « 160 см — средний рост, σ= 5,5 см — дисперсия значений измерения. Перепишем формулу в виде _ (х~160)2 60,5 /=7,25е Запишите программу для расчетов по этой формуле. Составьте таблицу значений этой функции в интервале от 150 до 170 см с шагом 1 см. Постройте график функции (масштаб: одна клеточка по оси χ равна 1 см, а по оси у — 0,5%). По графику определить, сколько процентов работниц имеют рост 160 см и сколько процентов таких работниц, рост которых составляет от 154 до 166 см. 23. Найдите средний рост χ мальчиков и девочек в классе, а также дисперсию полученных результатов измерений α Принимая, что рост ваших сверстников подчиняется нормальному распределению, запишите формулу распределения (см. предыдущую задачу). Составьте таблицу значений функции распределения и постройте соответствующий график. Что вы можете посоветовать фабрике по пошиву костюмов, чтобы она произвела необходимое количество костюмов разных размеров? 24. Рассчитайте средний размер обуви мальчиков и девочек вашего класса и дисперсию. Постройте график распределения. Каковы будут ваши предложения фабрике по производству спортивной обуви? 89
I АЛГОРИТМ "VX" IVU-X Μ— (χ/Μ + M)/2 записать новое значение М повторить Χ = 5 Μ 5 ПЕТЕРИС З АННА 2#33... ЯНИС 2,23... 2,23606 Щм нхпос сот ι Μ 5 0 3 0 3 EJEJ 2 Ξ Μ =2,3333333 2,3333333 [Хч»п1 5 тпг^х] ш ΘΒ0 2 Μ =2.2380... (третье значение) 5 ПГГгЛ 5 2 ·—С ξργ^πξΊ ШЕ1Ш ΒΕΞ11 ) повторить \ 'S состаАил, Υ<?Α 'Μ ампьмоигш,- иаоии гитаааяпьХ lr ncuuuami. I
4. АЛГОРИТМЫ 4.1. ИНСТРУКЦИИ, РЕЦЕПТЫ И ПРАВИЛА В КАЧЕСТВЕ АЛГОРИТМОВ В математике при решении задач мы привыкли пользоваться готовыми формулами. Если, например, надо найти площадь треугольника или вычислить корни квадратного уравнения, применяются хорошо известные формулы: s = ;χ _ (_ь ± ^Ъ2 „4ас)/2а. 2 ' 'z Эти формулы являются предписаниями, выполняя которые, можно получить численные решения задач. Точно сформулированные предписания, которые позволяют решить любую конкретную задачу из некоторого класса задач, называются алгоритмами. Формулы не являются единственными алгоритмами. К алгоритмам относятся также инструкции по обслуживанию различных устройств (радиоаппаратов, магнитофонов, стиральных машин и др.), правила спортивных игр и т. д. Рассмотрим некоторые примеры алгоритмов. Алгоритм "Телефонный разговор с другим городом" — поднять трубку, набрать цифру "8" — если раздастся непрерывный сигнал номер абонента, в противном случае — ждать 15-40 секунд набрать код начать — если прозвучат частые гудки (абонент заново города и алгоритм заново | занят), звонить 91
Широкий класс алгоритмов образуют рецепты блюд. Вот один из них для начинающих поваров. Алгоритм-рецепт "Отварной картофель" — - _ — 1 кг картофеля, 1 л воды, 1 чайная ложка соли очистить и вымыть картофель положить картофель в кастрюлю с бавитьсоль кипящей варить 25-30 минут если картофель мягкий, варку прекратить, еще твердый, варку продолжить слить воду и подать к столу водой и или, если ДО- он Очень много алгоритмов разработано в геометрии. Рассмотрим один из таких алгоритмов. Алгоритм "Построение окружности, проходящей через три данные точки" Дано: Три точки А, В, С, не лежащие на одной прямой Результат: Центр и радиус окружности — точки А и В, В и С соединить отрезками прямых — провести прямую, перпендикулярную отрезку АВ и проходящую через его середину — провести прямую, перпендикулярную отрезку ВС и проходящую через его середину — провести окружность с центром в точке пересечения (О) этих перпендикуляров и радиусом, равным ОА Некоторые распоряжения (инструкции) этого алгоритма в свою очередь также являются алгоритмами. Так, распоряжение "провести прямую, перпендикулярную отрезку АВ и проходящую через его середину" состоит из следующих указаний: — провести окружность с центром в точке А и радиусом, равным длине отрезка АВ) - провести окружность с центром в точке В и радиусом, равным длине отрезка АВ; 92
— соединив отрезком прямой точки пересечения окружностей, получим перпендикуляр к отрезку АВ, проведенный через его середину. В физике и химии часть сведений дается и усваивается также в виде алгоритмов. В курсе физики необходимо усвоить алгоритм построения хода лучей в зеркалах и линзах. Алгоритм "Построение изображения в плоском зеркале" Дано: Точка Р, в которую помещен предмет, поверхность зеркала, точка N, в которой находится наблюдатель Результат: Точка А, в которой находится изображение, ход лучей от предмета к наблюдателю — через точку Ρ провести прямую, перпендикулярную поверхности зеркала — отметить точку пересеч ения (К) этой прямой с поверхностью зеркала — с другой стороны от зеркала на прямой отметить точку А так, чтобы выполнялось равенство РК = КА — соединить точки А и ^отрезком прямой — отметить точку пересечения (О) прямой ANc поверхностью зеркала — точка А есть изображение точки Ρ, ΡΟΝ' — ход луча от предмета к наблюдателю — если требуется найти изображение другой точки ?л, вернуться к началу алгоритма, в противном случае построение закончено В химии и физике с помощью алгоритмов учат проводить также эксперименты и измерения. Рассмотрим алгоритм, который применяется для определения центра тяжести лыжи перед установкой на ней крепления. Алгоритм "Определение центра тяжести стержня" — положить стержень (лыжу) на указательные пальцчы рук, разведенных как можно дальше друг от друга - сводить пальцы друг с другом, пока они не соприкоснутся; точка соприкосновения есть центр тяжести 93
ш iz ">И ^ И ш & Рис. 4.1. Алгоритмы кубика Руби к а и вязания крючком На рис. 4,1 показаны два алгоритма иного типа — алгоритм вязания крючком цепочки и алгоритм вращения кубика Рубика. Многие алгоритмы, помещенные в первых двух главах этой книги, записаны в виде программ, предназначенных для микрокалькуляторов. Хотя алгоритмы и охватывают различные сферы человеческой деятельности, у них есть много общего. Во-первых, распоряжения (команды) алгоритмов расположены последовательно по этапам, шагам. Поэтому команды алгоритмов нельзя выполнять в каком угодно порядке. Если нет специальных указаний, распоряжения алгоритма выполняются в той последовательности, в какой они записаны (во всех рассмотренных до сих пор алгоритмах перед каждым распоряжением ставился знак тире). Во-вторых, в алгоритмы стараются включать повторные 94
действия и таким образом сократить запись алгоритмов. Так, в алгоритме "Телефонный разговор с другим городом" повторным действием является распоряжение "ждать 15-40 секунд", в алгоритме вязания крючком включена команда ". . . все последующие петельки вязать точно так же" и т. д. В-третьих, алгоритмы часто содержат распоряжения, выполнение которых связано с проверкой того или иного условия. При помощи таких распоряжений можно менять порядок выполнения команд. Условие обычно записывается в виде следующей грамматической конструкции "если. . . (условие), то. . . (распоряжение, которое следует реализовать в случае выполнения условия), иначе ... (распоряжение, которое следует реализовать в случае невыполнения условия)". Например, в алгоритме "Телефонный разговор с другим городом" сказано: "Если раздастся непрерывный сигнал, набрать код города и номер абонента, в противном случае начать алгоритм заново". Используя распоряжения, содержащие проверку условий, можно контролировать алгоритмический процесс и управлять им. Разделением распоряжений на элементарные последовательные шаги, повторением и разветвлением алгоритмического процесса обеспечиваются важнейшие свойства алгоритма: детерминированность, массовость и результативность. Детерминированность понимается так, что, выполняя алгоритм несколько раз с одинаковыми начальными условиями, всегда получают один и тот же результат. Массовость алгоритма означает, что его можно использовать для решения любого числа задач одного и того же типа. Например, с помощью алгоритма "Определение центра тяжести" можно найти центр тяжести для различных лыж. Результативность алгоритма означает, что после конечного числа шагов либо получают решение, либо выясняют, что решения не существует. Алгоритм, написанный для конкретного исполнителя, называется программой. Ознакомимся с программируемой игрушкой "Луноход" (рис. 4.2) и командами, которые умеет выполнять этот робот: — f 13— ехать вперед 13 единиц (одна единица ^25см); — \ 4 — ехать назад 4 единицы; — -**8 — повернуться вправо на 8 единиц (одна единица ^4°); — стоп 9 — стоять 9 временных единиц (одна единица «0,1 с); — X 2 5 — повторить последние 5 команд (можно применить один раз); — #3 — выстрелить лазером 3 раза. Программа в память робота записывается путем нажатия соответствующих клавиш. Выполняется программа после нажатия клавиши ПУСК. Вот программа, по которой Луноход проезжает контур треугольника с длинами сторон 3, 4 и 5 единиц. На каждой вершине Луноход останавливается на 1 с и выстреливает 1, 2 и 3 раза соответственно, ш 0- ыи.иш.вншдш. и.вншгаш-иШ'р™*! стоп JL 95
Зч*5*" ..ώ^* ie£ Вопросы и упражнения 1. Составить алгоритм, по которому в книге можно найти страницу по ее номеру. Проверить алгоритм, отыскав по нему 37-ю страницу этой книги. 2. Записать в форме алгоритма последовательность действий при отыскании в словаре слова "песня". 3. Придумать алгоритм по возможности более быстрого угадывания числа в игре "Угадай число". Один из участвующих в игре задумывает какое-нибудь двузначное число, а второй старается его угадать. Если названное число меньше задуманного, партнер говорит "мало", в противном случае — "велико", если совпадает — "угадано". 96
X2 Вам позвонил школьник, которому надо решить задачу: "В Декартовой прямоугольной системе координат отметить точки χ = 5, у = 3 и χ = 7, у = 6" (систему координат этот школьник еще не изучал). Что следует сказать школьнику чтобы он правильно отметил в системе координат эти, а также любые другие точки? Помните, что Вы ничего ему не можете продемонстрировать на бумаге. Разыграйте этот сюжет в классе с учеником, который стоит у доски и делает только то, что ему говорят. Поверхность воды образует зеркало. На левом берегу реки находится Г-образ- ный предмет высотой в 1 м. На правом берегу (на расстоянии 15 м от берега) находится наблюдатель. Построить изображение предмета, если глаза наблюдателя находятся 2 м, а предмет 4 м над уровнем воды. Действуя в соответствии с алгоритмом "Определение центра тяжести стержня" найти центр тяжести указки. Составить программу для игрушки "Луноход", чтобы она проехала по контуру: а) четырехугольника (например, класса) в направлении часовой стрелки, останавливаясь на каждой вершине по 2 с и выстреливая соответствующее количество раз, б) шестиугольника с использованием команды в) восьмерки. 4.2. АЛГОРИТМЫ В АРИФМЕТИКЕ В XV веке в Западной Европе начал распространяться письменный счет. В это время произошел переход на запись в десятичной системе счисления^ с введением которой началась быстрая алгоритмизация математики. Заметим, что многозначное число в его современной записи фактически представляет собой алгоритм нахождения его числового "значения", который мы довели до такого автоматизма, что не воспринимаем его как алгоритм. Местом цифры в числе определяется принадлежность ее к определенному разряду (единиц, десятков и др.): 1985 = 1 -103 + 9 · 102 + 8 - 101 + 5 · 10° 3,14 = 3 . 10° + 1 · КГ1 + 4 · 1(Г2 Алгоритм позиционной записи числа позволяет, в свою очередь, создать простые алгоритмы для всех арифметических действий с многозначными числами. И при вычислении столбиком, которое основательно усваивается в школе, мы даже не замечаем, что выполняем определенные алгоритмы: 11 "879 306 1185 333 64 269 ν30,6 Λ12 612 306 367,2 234 : 7 = 33 21 24 21 3 в остатке 3 4 6-372 97
Представьте себе, что вам нужно по телефону научить кого-нибудь выполнять арифметические действия столбиком. Только в этом случае мы начинаем сознавать, насколько сложен механизм этих, казалось бы, простейших алгоритмов и какие возможности таятся в них. Однако сегодня человек оказался в такой ситуации, когда надо уметь "обучать по телефону". Эта задача возникает при "обучении" электронной вычислительной машины арифметическим и другим, еще более сложным математическим операциям. Простейшие ЭВМ, точнее их арифметически-логические устройства, умеют выполнять только сложение. Для умножения, вычитания, деления уже необходимы алгоритмы. Такие алгоритмы можно продемонстрировать на примере с "испорченным" микрокалькулятором. Представим себе, что у калькулятора не действуют клавиши умножения и деления (работают только клавиши сложения и вычитания). Используя режим константы, можно написать простые алгоритмы вычисления произведения и частного. Например, произведение 97 X 7 найдем следующим образом: 97 [Т) 97 или [с]97(Т] (Τ) (ΜΚ-51) Ξ Μ повторить 6 раз Ы Для деления можно использовать вычитание в режиме константы. Число нажатий клавиши равно целой части частного, а показания индикатора - остатку. Пусть, например, 234 : 17 . [С] 17 0,7 ИЛИ 17 Ξ Ε! Ξ (ΜΚ-51) ΣΗ в повторять, пока X > 17, подсчитывая число нажатий До изобретения ЭВМ слово "алгоритм" обычно ассоциировалось с алгоритмом Эвклида — способом нахождения наибольшего общего делителя двух целых чисел а \лЬ. Этот алгоритм, так же как и арифметические действия столбиком, проще всего усвоить на примере. Вот как схематически можно изобразить нахождение наибольшего общего делителя чисел 57 и 36. 98
Алгоритм "Наибольший общий делитель н. о. д (д, Ь) " Как мы видим, на каждом следующем шаге делитель становится делимым, а остаток — делителем. Процесс следует продолжать до тех пор, пока в остатке не получится 0. Последний делитель и есть искомый н. о. д. (я, Ь). В этом алгоритме отчетливо видны ранее упомянутые свойства алгоритма: детерминированность, массовость и результативность. А именно: любым двум числам алгоритм однозначно ставит в соответствие их наибольший общий делитель; не существует двух таких чисел, для которых алгоритм не мог бы быть реализован; алгоритм всегда заканчивается после конечного числа шагов. Большая роль во введении алгоритмов в арифметику принадлежит выдающемуся математику Древнего Востока Мухаммеду аль-Хорезми (IX в.). Главный его труд по арифметике был переведен в Европе на латинский язык и начинался словами: "Dixit Algorizmi", что в переводе на русский означает: "Аль-Хорезми сказал". На латинском языке имя математика писали Алгоритмус, отсюда, по-видимому, и образовано слово "алгоритм". В средние века всю индийскую арифметику, которую популяризировал аль-Хорезми, обычно называли алгоритмом. В своем учебнике арифметики аль-Хорезми подробно описал преимущества позиционной системы счисления. В этой системе положение цифры в числе автоматически указывает на принадлежность ее к определенному разряду (единиц, десяток, сотен), например в числе 725 содержится 5 единиц, 2 десятка и 7 сотен. Огромна заслуга индийских математиков во введении нуля для указания пустого разряда, например нуль в записи числа 50 показывает, что разряд единиц пуст. Выполнение арифметических действий с десятичными числами аль-Хорезми описал в алгоритмической форме, в которой он часто использовал конструкцию "если. . ., то. ..". Например, объясняя сложение двух чисел столбиком, он писал примерно так:". . . если в каком-либо разряде результат окажется большим десяти, то пиши единицу, поместив ее над следующим разрядом. Если от этого числа что-либо останется и этот остаток меньше десяти, то запиши его в том же самом разряде. Если же ничего не останется сверх десяти, то запиши в этом разряде нуль...". а 57 = 36 = 21 = 15 = 6 = н. Ъ 1-36 + 21 1-21 + 15 1-15 + 6 2-6 + 3 2-3 + 0 о. д. {а, Ь) 4* 99
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Записать в развернутой форме числа 5090; 7,06. 2. Как выполнить вычитание на микрокалькуляторе, на котором не работает клавиша вычитания, но действует клавиша /—/? Записать программу вычитания для примера 78 — 29 и для общего случая η - т. 3. Записать алгоритм вычисления произведения, в котором используется только действие сложения, если на калькуляторе отсутствует режим константы при суммировании. 4. Почему в алгоритме вычисления произведения 97 X 7, в котором использу- нужно нажимать не 7, а только 6 раз? ется режим константы, клавишу 5. Записать алгоритм деления с использованием только действия вычитания без применения режима константы. Вычислить по этому алгоритму 234 : 17. 6. Найти наибольший общий делитель пар чисел (95, 57), (161, 92). 588 Сократить дробь , предварительно определив наибольший общий дели- 630 тель числителя и знаменателя. 4.3. ПОНЯТИЕ О ВЕЛИЧИНЕ КАК НОСИТЕЛЕ ИНФОРМАЦИИ Со словами "величина" в школе чаще всего приходится встречаться в курсе физики. Физическая величина характеризуется именем, числовым значением, единицей измерения, например, перемещение χ = 7 м, скорость ν = 10 м/с, сопротивление R = 4 Ома. Здесь имя, например, физической величины "скорость" есть ν , ее значение — число 10, единица измерения — метры в секунду. При решении задач по физике мы привыкли делить величины на данные и вычисляемые. Общепринятая форма записи таких задач, например Дано: х= 21 м Ι χ I 21 t = 3с ν =— ν =— = 7 — — ' 3 ν = ? Ответ: Ι Ι ν = 7 м/с является одной из наиболее распространенных записей алгоритма. В этой записи алгоритма видны следующие составные части: данные,или вводимые величины (перемещение х, время t), результаты, или выводимые величины (скорость ν ), алгоритм ν = x/t. Использование алгоритма 100
21 -= 7 одновременно является тестом для его проверки. Тест показывает, что алгоритм приводит к достижению цели. Переработка информации в этой задаче и ее обобщении может быть представлена такой схемой: Вводимые величины Алгоритм v = xjt Алгоритм Выводимые величины Физические величины делят на переменные и постоянные величины — константы. Скорость автомобиля — величина переменная, а ускорение свободного падения в Риге — константа. К константам относятся и все так называемые физические константы: скорость света, заряд электрона, масса протона. В запись физической величины входит еще одна ее важная характеристика — адрес значения величины. Допустим, что мы измерили период колебаний (t) тела, подвешенного на нити, и результаты занесли в таблицу. Из таблицы видно, что адресом значения периода 2,2 с является 4-я строка таблицы. В физике и математике адрес значения величины обычно указывают в виде индекса. Тогда, исходя из рассмотренного примера о периоде колебаний t, можно сделать следующую запись: 14 = 2,2 с. В математике широко используют различные последовательности, например геометрическую прогрессию. Если аг э2, а3 . . . члены геометрической прогрессии, a q знаменатель, то буква а есть имя члена этой последовательности, а индекс — адрес значения. Алгоритм ап + 1 = anq, по которому можно вычислить значение любого члена геометрической прогрессии, читается так: значение члена последовательности, адрес которого η + 1, можно вычислить путем умножения q на значение члена этой последовательности, адрес которого п. Отметим, что значение не всегда является числом. Значение величины может быть также словом, символами. Заглянем в классный журнал. В графе "фамилия" записаны конкретные фамилии учащихся класса. В данном случае "фамилия" — это имя величины, конкретные фамилии учащихся класса — значения, номер строки — адрес. В астрономии применяют величину под именем "планета", значениями которой Номер измерения 1 2 3 4 5 *(с) 2,1 2,0 2,1 2,2 2,0 101
могут быть слова "Меркурий", "Венера", "Земля", "Марс", "Юпитер" и т. д. Значения величин можно выразить в различных знаковых системах (в различных алфавитах). Так, значение величины с именем N (целое число) может быть выражено словом "пять", десятичной цифрой 5, римской цифрой V, двоичным кодом 101. Значения величины с именем ДН (день недели) можно записать словами: воскресенье, понедельник, вторник и так далее или цифрами 0, 1, 2,..., 6. При переводе алгоритмов на язык программирования ЭВМ приходится пользоваться определенными системами знаков записи значений величин. Имеются языки программирования, в которых определенные имена, например I, J, К , отводятся для величин, значения которых представляют собой целые числа. В некоторых ЭВМ используемую систему знаков указывают символом после имени величины, например знаком процента, если эта величина принимает только значения целых чисел (А%, I %), знаком Пили $, если значения составлены из букв, графических и других символов (W Π , ΥΠ). Последние величины часто называют литерными. В некоторых языках программирования пользователь в начале программы сам может указать тип величин (используемую знаковую систему), например А, В, С — натуральные числа, Р, К — вещественные, Μ, Η, Τ — литерные. Отметим, что знаковая система целых чисел и знаковая система вещественных чисел отличаются друг от друга использованием десятичной запятой (точкой) и показателя степени Ε (1000 и 1000. или 1.ЕЗ). Запись 3.14 как число имеет смысл значения выражения 3.14=3- 10°+ 1 -Ю-"1 +4- 1СГ2, а как значение литерной переменной — смысл цепочки четырех символов 3, точка; 1 и 4. ВОПРОСЫ И УПРАЖНЕНИЯ 2 1. На уроке математики задана задача: решить уравнение —0,1 χ + 1,7х + 2=0. Указать вводимые и выводимые величины. Составить алгоритм. 2. Требуется найти сумму 5 первых членов геометрической прогрессии, если первый член равен 1, а знаменатель — 3. Указать вводимые и выводимые величины. Составить алгоритм. 3. В тетради записано: 12 3 4 5 Рост, см 180 176 176 180 170 Указать имя, значение и адрес значений величины. 4. Один школьник говорит второму: "У меня есть три словаря — "Латышско- русский", "Латышско-немецкий" и "Латышско-английский". Что в этом предложении является именем величины, а что ее значениями? 102
5. Какие значения может принимать величина МГ (месяц года), если для записи значений использовать слова русского языка, римские цифры, целые десятичные числа, двоичный код? 4.4. КОМАНДА ПРИСВАИВАНИЯ ЗНАЧЕНИЯ В математике и физике величинам присваивают значения при помощи алгебраических равенств, например χ = 21, у = 3. Алгебраическим равенствам присущ ряд важнейших свойств, например обе части равенства можно умножать или делить на одно и то же число, к обеим частям равенства можно прибавить или от обеих частей равенства можно отнять одно и то же число. Именно это важное свойство является препятствием для использования знака равенства в описаниях процессов переработки информации. Рассмотрим, например, такой простой процесс, как счет, по порядку называя числа 1, 2, 3, ... .В этом случае переменной "счет" последовательно присваиваются численные значения 1,2, 3,... . Для получения каждого следующего значения мы к предыдущему прибавляем число 1. Если переменную "счет" обозначить буквой п, то процесс счета, казалось бы, можно описать равенством η = η + 1, однако с точки зрения алгебры это равенство в данном случае не имеет смысла. По этой причине в алгоритмах для присвоения значения не применяются алгебраические равенства. В записи алгоритмов для обозначения операции присвоения значения величине используют символы : = или-*- (в языках программирования, однако, часто пишут тот же знак равенства =, поскольку в них алгебраические уравнения не используются). В этой книге будем пользоваться знаком—, например, χ — 21, ί — 3, ν — x/t, CT— "Рига", До— 264, Ля — 440. Для исполнителя алгоритма эти уравнения присваивания являются командами присвоения значения: величине χ присвоить значение 21, величине t — значение 3, величине ν — значение выражения x/t (в данном случае 7) и т. д. С помощью команд присваивания очень просто менять значения величин и изображать процессы переработки информации. Например, алгоритм счета мы можем теперь записать так: и— 0 и-и + 1 Ч повторить По этому алгоритму величине η прежде всего присваиваем значение 0. Затем величине η присваиваем новое значение, равное сумме старого 103
χ 1 2 3 У 1 4 9 χ— О значения и числа 1. Кстати, подобным образом протекают многие физические процессы, например значение перемещения во время движения автомобиля непрерывно меняется: новое значение равно сумме старого значения и изменения перемещения: s~- s + As. Вспомним, что в алгоритме каждая величина имеет имя, а ее значение — адрес. Если в регистре памяти микрокалькулятора хранится значение величины "скорость", то эта величина имеет имя ν и адрес М. В целях экономии места имя величины и адрес ее значения часто обозначают одной буквой. Если имя некоторой величины Ν, а адрес ее значения не указан, то это означает, что адрес значения также обозначен через N. Этим часто пользуются в таблицах. Если, например, имя квадратичной функции^, то одновременно той же буквой у принято обозначать адрес этой величины, т. е. графу таблицы, в которой записаны значения этой величины. Поэтому уравнение присваивания можно прочитать несколько иначе. Рядом с таблицей показан алгоритм, с помощью которого можно получить данные таблицы. Соот- ЦповторитьМ ветствующие команды читаются следующим ' ' образом. Записать в адрес χ значение 0. Взять число из адреса χ (графы х), прибавить к нему единицу, результат занести в адрес х. Взять число из адреса х, возвести его в квадрат, результат занести в адресу. Повторить, начиная со второй строки х-»- χ + 1. С помощью команд присваивания можно наглядно описать работу микрокалькулятора. Вспомним, что у калькулятора есть регистры Χ, Υ, М, то есть адреса величин Χ, Υ, Μ или некоторых других величин s, t, v. Нажимая, например, клавишу [j5j , мы присваиваем величине X значение 5. При нажатии клавиши арифметического действия содержимое регистра X копируется в регистр Υ (см. гл. 1). С помощью уравнения присваивания эта операция изображается очень просто: F-- X. Рассмотрите самостоятельно приведенные ниже примеры. В первой колонке указана клавиша, которую следует нажать, во второй — с помощью уравнения присваивания раскрывается алгоритмическое содержание действия, в третьей — даны показания индикатора. 104
0 □ в в и и в 1х-»п| в в [πΞ3 В х—о Х-1 X* X · 10 + 4 χ—χ.ю + з У-Х X—7 X— У + Х м*-х X—3 У-Х х-м Χ-Ύ.Χ 0 1 14 143 143 7 150 150 3 3 150 0,02 ΕΞ3 И 0 [з1 [οΊ [sin] Ε ΕΞ3 И 0 [n^xj т Χ» 7 Χ—Χ2 Χ~3 Χ—Λ1· 10 + 0 ЛГ-sinjr Χ—6 Μ— Χ Χ—4 Μ~Μ+Χ Χ-Λί Χ—1/Χ Γ 7 49 3 30 0,5 6 6 4 4 10 0,1 С помощью команд присваивания значения составляются простые, так называемые линейные алгоритмы. Линейные алгоритмы позволяют вычисления по сложным формулам делить на элементарные шаги. Такое деление на шаги иногда помогает в работе тем, у которых еще нет достаточных навыков в пользовании калькуляторами. В качестве иллюстрации рассмотрим два примера линейных алгоритмов. 1. Время, выраженное в часах h, минутах т\л секундах s, Можно выразить в секундах по формуле t = h · 3600 + т · 60 + s = (h · 60 + m)6Q + s. Составим алгоритм, в котором на каждом шаге надо выполнить только одно арифметическое действие. Алгоритм: "hms-~s" Дано: время в часах А, минутах ^секундах s Результат: время в секундах s t — 60 - h Г— Г · 60 t-t + s 60-2=120 120 + 8 = 128 128-60 = 7680 7680 + 14=7694 105
2. Во второй главе данной книги дана формула, по которой можно подсчитать количество дней с 31 декабря 1899 года до любой даты нашего столетия. Дата выражена годом G„ месяцем М, днем месяца Д например, G = 1986, Μ - 3, D= 7. С помощью уравнений присваивания эту формулу можно записать в более удобной для вычислений форме. Алгоритм "Число дней в XX столетии" Дано: Год G, месяц М, день D Результат: п- число дней с 31.12.1899 доDMG /12 -М\ G+G- 1900-5 M^M+U-S-2 n^int(365,25.G) n^int(30,59 -M+n) n+n+D + 29 1986 86 Μ\$ S 31411 31411 31477 ВОПРОСЫ И УПРАЖНЕНИЯ 2. С помощью уравнения присваивания записать текст: "Время t изменилось на Δι с. Скорость ν падающего тела увеличилась на 9,8 м/с". Чему равно i, х \лу при выполнении следующих линейных алгоритмов: t—t -10 + 9 fW.10 + 8 /—Г -10 + 6 сообщить t χ+λ у—Бх+3 jy-e-Зу+4 сообщить у F^50,>>«~800 y~y + V сообщить V, у x—W,y+-2 z + x y + z сообщить χ, у 3. Описать алгоритмически так же, как в тексте, работу микрокалькулятора при нажатии следующих клавиш: 4. Составить алгоритмы для графов вычислений из рис. 2.1 и 2.2 и с их помощью вычислить 65835/(19 · 11), (83122 + 120} : (711 - 685), 842 + 10 62,41 (см. $.3.1). 5. Время, выраженное в часах h , минутах т и секундах s, можно записать в часах по формуле t = h + w/60 + s/3600 = [s/BO + w)/60 + h. Составьте линейный алгоритм для вычисления значения времени на микрокалькуляторе так, чтобы на каждом шаге надо было выполнить только одно арифметическое действие. Вычислите по алгоритму 2Ч8 13 . 6. По алгоритму "Число дней в XX столетии" вычислить, сколько дней прошло с 31 декабря 1899 до сегодняшнего дня. 106
4.5. РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ Как мы уже видели на примерах параграфа 4.1, распоряжения алгоритмов имеют грамматическую конструкцию "если. . . , то. . . , иначе". если (условие) то (распоряжения в случае выполнения условия) иначе (распоряжения в случае невыполнения условия) В таких распоряжениях, которые называются командами ветвления, после слова если обязательно следует условие, выполнение которого необходимо проверить, например, "раздастся ли непрерывный сигнал?", "мягок ли сваренный картофель?", "меньше ли χ нуля". Если проверяемое условие соблюдено, то надо выполнить распоряжения, следущие за словом то, а распоряжения, идущие вслед за словом иначе, в этом случае вообще не нужно читать. В свою очередь, если условие не соблюдено, то распоряжения после слова tq не читаются, а выполняются те распоряжения, которые следуют за словом иначе. Команды ветвления выполняются всеми электронными калькуляторами. Проверка условий осуществляется в арифметически-логическом устройстве. Название этого устройства "логическое" показывает, что в нем могут выполняться не только арифметические действия, но и проверка условий. Рассмотрим пример, показывающий, как операции сравнения используются в простейших калькуляторах. Если на калькуляторе нажать клавиши (ΊΓ] Qj \2j [==] , то он даст ответ 4; на "предложение" же |8| |7| |о| | = | калькулятор ответит словом Error, либо просто буквой £, либо черточками, что означает "ошибка", или "невыполнимая операция". Другими словами, калькулятор реализует следующий алгоритм. Для наглядного изображения разветвляющихся алгоритмов используют также блок-схемы и струк- турограммы. На блок-схемах уравнения присваивания записывают в прямоугольниках, вводимые и выводимые величины — в параллелограммах, а условия — в ромбах. Стрелками указывают направления потока информации. Блок-схема рассмотренного алгоритма показана на рис. 4.3. И структурограммы применяются для наглядного изображения резветвления алгоритма в зависимости от выполнения условия. Рассмотрим такой пример. В нашем современном календаре первым a □ ъ в Х*+а Y+X х~ъ если X « 0 то*-* "Error" иначе Х-*- Υ: X стоп 107
/χ<-γχ/ Ζ Q коней/) Рис. 4.3. Блок-схема разветвленного алгоритма "Деление" месяцем года является январь, однако по календарю Древнего Рима первым месяцем года был март. Очередность месяцев тогдашнего календаря еще и сегодня сохранилась в названиях некоторых месяцев: сентябрь — седьмой месяц, октябрь — восьмой, декабрь — десятый месяц. В календарных расчетах более удобным является именно старое деление года. Поэтому в вечных календарях месяцы с марта по декабрь — это первые 10 месяцев данного года, а январь и февраль — одиннадцатый и двенадцатый месяцы предыдущего года. Рассмотрим алгоритм, с помощью которого можно вычислить номер дня в обычном году (см. §3.5}. Алгоритм "День года" Дано: месяц М, день D Результат: η — номер дня года М-+- месяц D— день если Μ > 3, то л— 0, М~- Μ-2 иначе п~ 365, Μ* Μ + 10 п+ int(30,59Af -n+ D +29) стоп Структурограмма этого алгоритма изображена на рис. 4.4. На структу- рограммах хорошо видно, что делается в случае выполнения или невыполнения условий, поскольку оба распоряжения записаны рядом. Какой способ записи алгоритма выбрать — дело вкуса. У каждого способа записи есть свои преимущества. Часто выбор способа записи 108
алгоритма определяется имеющейся в вашем распоряжении вычислительной техникой. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Если попытаться на калькуляторе вычислить квадратный корень отрицательного числа или обратную величину от нуля, то на индикаторе появится ответ "Error". Изобразить с помощью алгоритма, как калькулятор после набора числа а и нажатия клавиши 1/Х принимает решение в зависимости от выполнения или невыполнения условия X < 0 или X = 0. 2. Начертить структурограмму алгоритма, блок-схема которого показана на рис. 4.3. 3. Начертить блок-схему алгоритма, структурограмма которого показана на рис. 4.4. 4. По алгоритму "День года" (рис. 4.4) найти номера следующих дней в году: 1 сентября, 23 февраля, сегодняшнего дня, вашего дня рождения. 5. Записать алгоритм, с помощью которого можно вычислить номер дня в високосном году (см. задачу 9 У 3.5). Μ «-месяц D«-geHb да ^^ч. ^s^ нет η <- 0 Ι Μ <- Μ - 2 η «-365 Μ <г Μ + 10 η <- int(30,59-M-h+D+29) η - номер дня ft году Рис. 4.4. Структурограмма разветвленного алгоритма "Номер дня в году" 109
4.6. ЦИКЛЫ В АЛГОРИТМАХ Повторение действий — очень распространенное явление в природе, науке, искусстве, быту. Времена года циклически следуют друг за другом. Маятник периодически повторяет свое движение. На вязаных вещах повторяются узоры, в песнях — припевы. С повторениями и циклами мы встречаемся также в математике. В средней и высшей школе, в практической деятельности часто требуется составлять таблицы значений функций и строить их графики. При формулировке таких задач обычно используют стандартные фразы, например вычислить квадратичную функцию для значений аргумента от χ = 0 до 5 с шагом 0,5. С помощью слова следующий табулирование функции можно наглядно описать следующим алгоритмом. Алгоритм "Табулирование квадратичной функции" Дано: хнац = 0, хкон = 5, шаг 0,5 Результат: таблица значений квадратичной функции qt χ = 0 до 5 шаг 0,5 у~х2 сообщить х. у следующий χ стоп X 0 0,5 1 1.5 У 0 0,25 1 2,25 Распоряжение сообщить х, у в данном случае означает, что исполнитель алгоритма должен словесно сказать или записать в таблицу значения χ \лу. Читая первый раз строку, начинающуюся словом от, величине χ нужно присвоить значение 0. Затем следует вычислить квадрат этого значения, полученное значение присвоить величине у и результаты записать. Команда следующий χ означает, что величине χ нужно присвоить новое значение, т. е. выполнить операцию χ + 0,5-^х и вернуться к строке, начинающейся со слова от. Теперь, а также после выполнения каждого последующего цикла значение χ нужно сравнить с конечным значением 5. Если χ < 5, то операции цикла надо повторить с новыми значениями х. Когда новое значение χ превысит 5, цикл больше повторять не надо, а следует прочитать и выполнить команду, следующую за строкой следующий х. С выполнением команды стоп операции алгоритма заканчиваются. Циклы широко используют при нахождении членов последовательно
ности и их суммы. Чтобы найти каждый последующий член геометрической прогрессии, надо предыдущий ее член умножить на знаменатель прогрессии: я— aq. Для нахождения суммы членов прогрессии надо к прежнему значению суммы прибавить новое значение члена прогрессии: S·*- S + а. Запишем теперь алгоритм с циклом, по которому можно вычислить значение л-го члена и сумму η членов геометрической прогрессии. Алгоритм "Сумма членов геометрической прогрессии" Дано: первый член а, знаменатель q, число членов η Результат: список значений суммы членов геометрической прогрессии от к = 1 до η шаг 1 S^r S + а сообщить к, a, S a~*-aq следующий κ стоп я = 1,<? = 3,и = 10 к 1 2 3 а 1 3 9 5 1 4 13 Используем алгоритм для того, чтобы ознакомиться с моделью распространения слухов. Допустим, что в 8 часов утра один школьник "видел" неопознанный летающий объект (НЛО). В течение 15 минут он встречается с тремя друзьями и каждому из них рассказывает о виденном. В следующие 15 минут каждый из этих трех также встречает трех своих друзей и рассказывает им о НЛО и т. д. Число людей, которые "знают" о НЛО, растет как сумма членов геометрической прогрессии {а = 1, q = 3). В алгоритме показано, как меняется S на первых трех этапах распространения слухов. С помощью циклов можно наглядно описать также действие различных технических устройств. Рассмотрим, например, действие электронных часов. 111
Алгоритм "Часы" Дано: начальный час Η и начальная минута Μ Результат: таблица показаний часов начало h~*-H, т-+ Μ от h =H до 12 шаг 1 от га =М до 59 шаг 1 сообщить /г, т следующий т следующий h вернуться к началу В этом алгоритме содержатся два новых элемента. Во-первых, один цикл включен в другой. Во-вторых, с помощью слов начало и вернуться к началу организуется бесконечно повторяемый цикл. Записи циклов ведутся по-разному, в отличие от записей команд ветвления. Ознакомимся с другими, более общими словесными описаниями цикла. Отметим два важных момента любой конструкции цикла. Цикл ограничивается начальным и конечным словом, выполнение цикла "управляется" проверкой условия. Так, в описании цикла от л; =а до Ъ. . . следующий х, цикл надо выполнить повторно, пока χ <&. Но наряду с описанием цикла от ... следующий распространены конструкции типа повторить цикл Д£ (выполнение условия) и пока (условие выполняется) цикл повторить. Для ознакомления с этими новыми конструкциями цикла опишем тремя способами набор числа в микрокалькуляторе, индикатор которого отображает восьмизначные числа. Известно, что после нажатия восьмой цифровой клавиши микрокалькулятор на дальнейшие нажатия цифровых клавиш не реагирует. Это и свидетельствует о наличии программы с циклом в постоянной памяти микрокалькулятора. Рассмотрим программу, которая имитирует работу микрокалькулятора при наборе числа, состоящего из цифр с, =3, с = 1, с3 = 5, с4 = 5, сБ = 6, с~ = 9, с7 " 2' с8 " 5/ с9 = 9/ сю = 7' *11 = 5· Число* которое получается после выполнения программы, представляет собой длину астрономического года в целых секундах. 7h57m 7h58m 7h59m 8h00m 8h01m 8h59m 9h00m 112
X+0 к~0,Х+ 0 к—0,Х-+0 от ас = 1 до 8 шаг 1 сообщить Χ следующий к стоп повторить Х~Х- W+cK сообщить X к* к + 1 ДО АС = 8 СТОП пока ас =£8 Х+Х-\Ъ+ск сообщить X АС—АС + 1 повторить стоп В описании цикла словами повторить ... до ас = 8 выполнение цикла надо повторить, если условие (ас = 8) не выполняется, а в описании цикла словами пока кф 8 . . . повторить — если условие (ас Φ 8) выполняется. Проверьте работу всех трех программ по шагам и убедитесь, что получается один и тот же результат. Итак, сколько целых секунд в астрономическом году? Преимущество новых конструкций цикла заключается в том, что с их помощью можно организовать циклы, в которых количество повторений нельзя предвидеть. Запишем алгоритм "Остывание чая" ( $ 2.8), пользуясь новыми конструкциями цикла. В этом алгоритме Г — начальная температура, Τ — конечная температура, a t — время в минутах. t^r О, 7W Τ ' н повторить Τ- (20 - Τ) Д2г<гк сообщить t стоп пока Т>ТК 0,03 + т т+ (20 - т) · 0,03 + τ повторить сообщить t стоп Ознакомимся с изображением цикла в структурограммах. В § 3.2 Алгоритм' е—0,01, 'Кубический корень" хн-а *с-*н *н-%/^5 повторить до (а>0) 3г-~ I 113
был рассмотрен алгоритм получения приближенного значения кубического корня с использованием оператора квадратного корня. Дополним этот алгоритм, указав желаемую точность приближения, например б = 0,01. Число е и определит количество повторений выполнения цикла. Через xQ и хн обозначены "старое" и "новое" значения корня. Работа цикла прекращается, когда модуль разности | хн — хс| станет меньше 0,01. Ранее мы уже ознакомились с алгоритмом нахождения наибольшего общего делителя. Теперь рассмотрим более простой алгоритм, в котором вместо деления используется вычитание. Цикл повторяется, пока значения а и Ъ отличаются. Цикл состоит из следующих операций. Если а >&, то из числа а надо вычесть Ъ и значение разности присвоить величине а, иначе Ъ вычитается из а и значение разности присваивается величине Ъ. В блок-схемах циклы изображаются с помощью блока сравнений. На рис. 4.5 изображены блок-схемы алгоритмов, которые целое десятичное число превращают в бинарное число и наоборот. В первом случае использована конструкция цикла повторить. . . до, во втором пока. . . повторить. Выбор конструкции цикла зависит от возможностей языка программирования. Во всех версиях языка программирования бейсик можно пользоваться конструкцией от . . . до . . . шаг . . . следующий (FOR ... ТО . . . STEP . . . NEXT). Во многих языках программирования пользуются конструкцией повторить . . . до (REPEAT . . . UNTIL). Этот тип цикла можно легко организовать и на входном языке прграммируемого микрокалькулятора. В новейших языках программирования все большее распространение получает конструкция цикла пока... повторить 114
(WHILE . . . WEND). При составлении алгоритмов рекомендуется пользоваться одной из конструкций цикла. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Составить алгоритм для табулирования функции 1/Х в промежутке от 1,05 до 1,95 с шагом 0,1. Начертить структурограмму и блок-схему. 2. Составить алгоритм, начертить структурограмму и блок-схему задачи С начало j / а-п10 / с—О; d—0,1 Ь—intla/2) с—с/Ю + а-2-b d—d-10 a~-b нет; /"a-c'd/ С коней, J С начало j / а^-п2 / b—inttc с«-с + (а d*-d-2 a —b ι/Ю) -b-10)d л y'rV ^7 ψ Г конец j Рис. 4.5. Блок-схема превращения целых десятичных чисел в двоичные числа с циклом типа повторить. . .go. и превращения двоичных чисел в десятичные с циклом типа Пока.. .повторить 115
табулирования функции у * χ для значений аргумента от χ до х^ с шагом Ах, используя конструкцию цикла пока . . . повторить (повторить . . . до). 3. Начертить блок-схему для вычисления суммы членов геометрической прогрессии. По алгоритму вычислить сумму 11 членов прогрессии. Сколько людей "знают" об НЛО через 2,5 часа? 4. Газета толщиной 0,1 мм развернута. Если сложить газетный лист, его толщина удвоится: Λ·*- 2 - h. Записать алгоритм, который описывает эту операцию, пока толщина газеты не превысит 100 мм, т. е. до h ^ 100. В цикл включить счетчик к<т- к + 1. Сделать расчеты по алгоритму и выяснить, сколько раз надо сложить газету. Возможно ли это? 5. Начертить структурограммы и блок-схемы алгоритма, по которому набирается число в микрокалькуляторе с тремя конструкциями цикла. 6. Начертить структурограмму и блок-схему алгоритма "Остывание чая". По алгоритму выяснить, через сколько минут температура чая будет 80°С? 7. Записать алгоритм "Кубический корень" по структурограмме и начертить блок-схему. Вычислить кубический корень от объема своего тела, которое в литрах численно равно вашей массе в кг. 8. Записать словесный алгоритм "н. о. д. (п, т) " и начертить блок-схему. По алгоритму в уме вычислить н. о. д. (35,21), н. о. д. (124,93), н. о. д. (204,187). 9. Начертить структурограммы к блок-схемам по рис. 4.5. Пользуясь алгоритмом, превратить числа 5, 7, 9, коды букв A, G, R и X : 65, 71, 82 и 88 в бинар^ ные числа. Превратить в десятичные числа бинарные числа 110, 1011 и коды букв С, F, Y: 1000011, 1000110, 1011001 (коды букв смотрите в приложении) . 4.7. ОПИСАНИЕ ДИАЛОГА В АЛГОРИТМАХ Предположим, что вам звонит друг и говорит: "Я слыхал, что у тебя есть алгоритм, с помощью которого можно определить число дней в XX столетии до любого дня. Вычисли число дней до моего дня рождения". Вы находите этот алгоритм (см. § 4.4) и начинаете читать его первую строку £ — int((12 — Λ/)/Ί0). Но тут же вынуждены сказать другу приблизительно следующее: "Алгоритм я нашел, но не смогу выполнить его первую команду, потому что не знаю месяца, в котором ты родился, т. е. значение М". Друг, конечно, вам назовет этот месяц, вы вычислите S и начнете читать вторую команду G-* G — 1900 - S. И снова будете вынуждены позвонить другу: "Я не могу продолжить вычисления, так как не знаю года твоего рождения, т. е. значение G". На что друг раздраженно ответит: "Неужели ты сразу не можешь выяснить все данные, которые тебе необходимы для вычислений?" И тогда вы поймете, что этот алгоритм несовершенный, что в начале его надо предусмотреть команду по присваиванию всем необходимым величинам конкретных значений. Такую команду можно наглядно записать с помощью вопросительного 116
знака: Μ —- ?, G —- ?, /)-* ?. Если бы в начале предыдущего алгоритма была такая строка, то вы сразу сказали бы другу: "Для выполнения алгоритма мне нужно знать год, месяц и число (дату) твоего дня рождения". К диалогу относится также ваш ответ после выполнения алгоритма. Допустим, что в результате вычислений получено η = 34 753 и это число вы назвали другу. Он, в свою очередь, спрашивает: "Так с какой же даты в действительности отсчитываются эти дни?" В §4.4. вы находите, что датой отсчета является 31 декабря 1899 г. И вы понимаете, что эту дату лучше было бы вписать в сам алгоритм, например, с помощью команды сообщить "с 31 декабря 1899 прошло", п, "дней". Дополним алгоритм вычислением дня недели и назовем его "Календарь XX столетия". Алгоритм "Календарь XX столетия" Дано: год G, месяцМ, день D Результат: число дней, прошедших с 31 декабря 1899, и день недели даты (ДН) G—?M-?Z>—? S— int((12 -Af)/10) G+G- 1900 -S M-+M+n-S-2 n-int(365,25.G) и—int(30,59 -M + nJ n^-n+D + 29 q+ Ы(пП) v^q -7 г-* η -v сообщить "с 31 декабря 1899 г. прошло", η "дней сообщить "это", г , "день недели". стоп После введения в алгоритмы значений величин (начальных данных) и сообщений результатов алгоритмы становятся легко автоматизируемыми. А в этом и заключается наша цель: научиться записывать алгоритмы так, чтобы их могли выполнять не только люди, но и вычислительные машины и роботы. Представьте себе, что в вашем распоряжении имеется домашний робот "Мальчик с пальчик", который умеет читать алгоритмические распоряжения, виртуозно считать и копировать какой угодно текст. Робот, прочитав первую строку алгоритма "Календарь XX столетия", спросит:"Какие значения просвоить величинам G, М, D?" После вашего ответа: "1986, 9, 1" — робот самостоятельно выполнит все 117
распоряжения и сообщит: "с 31 декабря 1899 года прошло 31 655 дней. Это 1-й день недели". Типичной задачей, содержащей много входных (вводимых) величин, является задача решения системы линейных уравнений. Команды диалога Х— ?, сообщить дают возможность записать наглядный и легко автоматизируемый алгоритм. Алгоритм "Система линейных уравнений' {ax + by = e сх + dy =/ d-?,e-?f/—? т^-а · d - Ъ · с если т = О то если а · /'— с - е = 0 то сообщить "имеется бесконечно много решений' иначе сообщить "решений нет" иначе χ -*· (е* d -f-bj/m y^(a*f-c- e)/m сообщить χ, у стоп ВОПРОСЫ И УПРАЖНЕНИЯ Правильно ли вычислил робот "Мальчик с пальчик" с помощью алгоритма "Календарь XX столетия" wn r ? Вычислить по этому алгоритму число дней, прошедших с 31 декабря 1899 года до вашего дня рождения и до сегодняшнего дня. Сколько дней вы прожили? С помощью алгоритма "Система линейных уравнений" решить следующую задачу. Сколько литров воды следует смешать с антифризом, плотность которого 1,135 кг/л, если требуется приготовить 100 л смеси, масса которой равна 102,7 кг? Обозначив количество антифриза через к, а количество воды через у, получим систему Г х+>> = 100 11,135х+>> = 102,7 Записать алгоритм "Квадратное уравнение" для робота "Мальчик с пальчик". 118
4.8. ВСПОМОГАТЕЛЬНЫЕ АЛГОРИТМЫ В § 4.6 мы выяснили, что с помощью цикла от . . .jo . . . следующий можно коротко и эффективно описать табулирование функций, и ознакомились с алгоритмом "Табулирование квадратичной функции". Для табулирования другой функции надо записать новый алгоритм. Возникает вопрос, нельзя ли записать такой алгоритм табулирования, который был бы пригоден для любой функции? Оказывается, очень многие алгоритмы можно обобщить, используя так называемые вспомогательные алгоритмы. В случае табулирования функции это делается очень просто. Алгоритм "Табулирование функции" Дано:/Μ, χ нач,*кон,А* Результат: таблица значений fix) *нач-?'*кон -?,Δ*~? И* = *на, Дойкой ЯШГА* У-fix) сообщить χ, ν следующий χ стоп Вспомогательный алгоритм: f(x) f(x)~(2V-2x)Wb-2x)x Команда в третьей строке алгоритма (у-*- f(x)) означает, что нужно обратиться к вспомогательному алгоритму с названием f(x) . В нашем конкретном случае с помощью алгоритма вычисляется значение функции (20 - 2х) (15 - 2х)х. Эта функция выражает объем коробки, имеющей длину (20 - 2х) см, ширину (15 - 2х) см и высоту χ см (см. задачу в гл. 1 об изготовлении коробочки наибольшего объема). После нахождения значения функции присваиваем это значение величине fix) и возвращаемся к основному алгоритму. Теперь алгоритм "Табулирование функции" применим для табулирования любой функции, нужно лишь менять вспомогательный алгоритм. Важно отметить, что в названии вспомогательного алгоритма фигурирует параметр х. Он показывает, какая входная величина должна быть вычислена перед обращением к вспомогательному алгоритму. Любой инженерный микрокалькулятор располагает целой библиотекой вспомогательных алгоритмов. Каждый алгоритм имеет свое название: —ϊ- , х2, sin, cos, 10х. Когда мы на калькуляторе набираем, 119
например, | 6 cos| , то после нажатия клавиши cos в библиотеке алгоритмов отыскивается вспомогательный алгоритм "косинус". Заметим, что значение аргумента 60° присваивается регистру X. После выполнения алгоритма результат также присваивается регистру X, поэтому действие вспомогательного алгоритма "косинус" можно изобразить с помощью следующего уравнения присваивания Х~ cos(X) Аналогично действуют и остальные вспомогательные алгоритмы: Х+ yfjxi Х~ х2(Х), Х~ ύη(Χ), Х- —(X). Символы Г 2 1 в этих записях означают не математические операции, а названия алгоритмов. Интересно отметить, что в инженерных микрокалькуляторах некоторые алгоритмы являются вспомогательными алгоритмами других алгоритмов. Если в калькуляторе определен алгоритм cos(x), то алгоритм sin(x) может быть очень простым, поскольку sin(x) = cos(7r/2 —л;) В свою очередь, если в калькуляторе определен вспомогательный алгоритм InU), то его можно использовать для вычисления Igx. Вы, очевидно, заметили, что некоторые калькуляторы особенно долго вычисляют значения степенной функции. Это легко понять, так как для нахождения ху вызываются два других вспомогательных алгоритма In и е*. Алгоритм sinx χ—? χ— 90 - χ x-*cosx Алгоритм Igx х-? χ—- Ιηχ j;—InIO x~yjx Алгоритм ху(х, у) х-*· Ιηχ х~*-х* у Вспомогательному алгоритму степенной функции надо задать две входные величины χ и у. В калькуляторе имеются также и другие вспомогательные алгоритмы с несколькими входными величинами. Таким алгоритмом является ΓΊ+ или SUM (суммирование в памяти). Полная запись этого вспомогательного алгоритма - М+Х -*~М, или SUM (Χ,Μ), и его действие можно изобразить двумя уравнениями присваивания М--М+Х X— X, т. е. значение суммы присваивается регистру памяти М, а содержание 120
регистра Хне меняется. В калькуляторах МКШ-2 и БЗ-32 есть клавиша fx!j Л , с помощью которой можно вызвать алгоритм "Квадратное уравнение". Полная запись этого вспомогательного алгоритма х1 2 (a, Ь, с). Это означает, что перед обращением к данному вспомогательному алгоритму нужно присвоить значения величинам а, Ь, с, которые являются коэффициентами квадратного уравнения ах2+ Ьх + с = 0. Если вспомогательный алгоритм включить в цикл, то можно реализовать такой алгоритмический прием, как самовоздействие. Переключим калькулятор на радианный режим и нажмем клавиши Го] |cos| . На индикаторе появится число 1 (cos 0 = 1). Нажмем клавишу [cos | еще несколько раз. После каждого нажатия на индикаторе будут появляться соответственно числа 0,54. . . , 0,85.. ., 0,65..., 0,79... . После примерно двадцати пяти нажатий первые три цифры после запятой уже не меняются. Это наводит на мысль, что самовоздействие алгоритма ведет к некоторому предельному числу, которое, очевидно, есть решение уравнения cos(x) — χ = 0. Действия, выполненные на калькуляторе, можно представить в виде следующих алгоритмов. Ё COS повторить до постоянного X Алгоритм "Вычисление корней уравнения f(xj-x = Q" χ -?,е*? нач · *~*нач повторить га— χ х-fix J до \т - х\<е сообщить χ стоп Вспомогательный алгоритм: f(x) f(x)~ cosfxj С помощью микрокалькулятора можно организовать также самовоздействие и более сложных алгоритмов. Если f(x) = 1/(х + 1), то самовоздействующий алгоритм х—- 1/ (х +1) можно реализовать даже в простейшем микрокалькуляторе. Сперва введем! или κπυ pccumjuBdiD дижс в ириыеишем микрикишькулмιυρΰ. омерва вве- ι программу вспомогательного алгоритма χ— χ + 1: [^Qj L+J \^\ [с] QJ [+J [Τ] [==] . Начальное значениеχ = 1. Набираем число 1 и 121
клавишей | = | вызываем программу х-»- χ + 1, а клавишей 11/Х| — программу χ «* 1/х. На индикаторе: 0,5. Теперь повторяем самовоздействие обоих вспомогательных алгоритмов: 1/Х на индикаторе: 0,66. . =ч |1/Х| на индикаторе: 0,6. = 1/Х на индикаторе: 0,625. Мы видим, что и в этом случае показания индикатора стремятся к некоторому пределу. Оно называется золотым сечением и является решением уравнения χ2 + χ — 1 = 0. Найдите золотое сечение с максимально возможной для вашего калькулятора точностью. В калькуляторах МК-51 и МК-71 имеется клавиша | ' "\ , которой также вызывается самовоздействующий алгоритм. Этим алгоритмом значение времени (угла), выраженное в часах (градусах), минутах и секундах, можно перевести в часы (градусы) и десятичные доли часа (градуса), например перевод 2Ч30М36С — 2,51 осуществляется так: Гс] 2 1° ' "1 30 1° ' "\ 36 1° ' "\ на индикаторе: 2,51. Изучите самостоятельно алгоритм "чмс-ч, ч", обращая особое внимание на изменение значений величин с, d при каждом вызове вспомогательного алгоритма. Алгоритм "чмс -»*ч,ч" Дано:х[ч],х[м],х[с] Результат: х[ ч,ч] с- 1,tf^0 х[ ч] "·■ ?, вспомогательный алгоритм х[ м]-·- ?, вспомогательный алгоритм х[ с]-·- ?, вспомогательный алгоритм стоп вспомогательный алгоритм d^-x/c +d с-* с · 60 сообщить d С Ь 2: И 1 - 60 = на инд ν 30 | 30: 60- на и 36 3 3 н 6: 60 а и о , „ -0 = 2 = 60 ιкаторе: о , „ 60 + 2: 60 = 3( ндикат( о , ,, 3600 + 0-60 = ндикат( 2 = 2,5 300 эре: 2,5 2,5 216 эре: «2,51 00 2,51 122
С самовоздействующими алгоритмами мы встречались фактически уже раньше. Таким алгоритмом, например, является счетчик шагов, который в качестве составной части входит во многие алгоритмы для управления алгоритмическими процессами. В простейших микрокалькуляторах часто используют самовоздействующие алгоритмы, которые реализуются с помощью режима константы, например, автоматическое умножение на константу: X *·* KXf автоматическое деление на константу: χ— χ : к Алгоритм "Счетчик' N~1 повторить п^г п+ 1 до η =Ν стоп ВОПРОСЫ И УПРАЖНЕНИЯ 1. Выполнить алгоритм "Табулирование функции", если xuQii я 0, χ в 7, нач кон Ах = 1. Построить график^ функции f(x). При каком значении χ функция f(x) принимает наибольшее значение? 2. Проверить на калькуляторе описанный в тексте этого параграфа алгоритм о о вычисления sin* для значений угла: χ = 27 , х = 68 . 3. Проверить на калькуляторе данный в тексте алгоритм \дх для значений аргумента: χ = 5, х = 17. 4. Проверить описанный в тексте параграфа алгоритм Х^, вычислив по нему 53,2Ί*. 5. Записать алгоритм "тангенс", используя только вспомогательный алгоритм cosx. 6*. Зная, что 10 = еп , записать алгоритм 10х, используя вспомогательные алгоритмы е и Ιηχ. 7. Найти решение уравнения cosx — χ я 0 с максимально возможной для калькулятора степенью точности. 8. Вычислить значение золотого сечения с максимально возможной степенью точности. 9. Квадратное уравнение ах + Ъх + с - 0 можно привести к виду х= -£l ах Это дает возможность с помощью алгоритма "Вычисление корней уравнения f(x) - χ = 0" найти корень квадратного уравнения без использования клавиши квадратного корня. Решить уравнение 1,2х + 3,5х — 9,2 = 0 с точностью до __2 10 , выбрав в качестве начального значения χ = c/b ^2. Второй корень можно найти по формуле х~ = с/а/х -. 123
10. Дополнить цикл алгоритма "Счетчик" строкой х-* 2х, записав в первой строке х-* ?. Что будет вычислено, если начальное значение N~ Б,χ - 1? Как реализовать этот алгоритм на инженерном микрокалькуляторе? 4.9. АЛГОРИТМЫ ВМЕСТО ТАБЛИЦ Еще совсем недавно для облегчения решения прикладных задач специалисты-вычислители неделями, месяцами и даже годами рассчитывали значения функций и составляли таблицы. Самым популярным "памятником" этому труду в нашей стране являются четырехзначные таблицы Брадиса. Естественно, что в память микрокалькулятора можно записать и таблицы. Однако это заняло бы миллионы ячеек памяти. Поскольку ЭВМ выполняет арифметические действия с колоссальной скоростью, все же проще заставить процессоры каждый раз заново вычислять значение функции. Поэтому в память ЭВМ вместо таблиц заносят алгоритмы или программы1. Алгоритм, который можно записать лишь в нескольких строках, заменяет сотни страниц математических таблиц с десятками тысяч чисел. Чтобы убедиться в этом, рассмотрим пример — алгоритм вычисления квадратного корня. Квадратный корень из числа А = 5 есть решение квадратного уравнения χ = 5. Попробуем найти его путем целенаправленного угадывания. Проверим, не является ли х* =3 корнем этого уравнения. Подставляя число 3 в уравнение х2 = 5, видим, что З2 > 5. Поэтому в качестве следующего приближения следует выбрать число, меньше трех. Нетрудно за- хл 3 метить, что таким числом является, например, число — = — = 1,66. о /|2 поскольку квадрат его определенно меньше А (так как хл >>А,то — < 1 2 <А). А Очевидно, что искомый корень находится между х1 и (между 3 и x^ 1,66). В качестве следующего приближения проще всего взять среднее (А \ 1 — + хЛ — . Это уравнение перепишем χλ Ι 2 ни как ко- \хл 7 2 манду присваивания (Δ \ /2 1 Программой называют алгоритм, записанный для определенного процессора в "понятной" для него форме. 124
Повторяя выполнение этой команды, мы будем получать все более лучшие приближения. Осталось лишь выбрать хорошее начальное приближение. В качестве него можно взять само число Л. Остается невыясненным, сколько раз следует повторять вычисление приближений. Все зависит от требуемой точности. Микрокалькуляторы выполняют действия с восьмизначными числами. Теперь мы можем записать алгоритм Алгоритм "Квадратный корень" Дано:А Результат: \р\ А*? Х~А повторить М~Х Х~ {А/М + М)/2 дрХ^М сообщить п\Га ~ ", X стоп Этот алгоритм легко проверить на калькуляторе, имеющем регистр памяти. Тогда нет необходимости записывать значение величины М. |Х-П|АШ|П-Х|[ЩП-Х| 0ЩЩ сообщить X | Г \У 1 и повторить до постоянного X Нетрудно заметить, что алгоритм "Квадратный корень" представляет собой частный случай алгоритма "Вычисление корней уравнения f(x) - - χ = О", так как, заканчивая алгоритм, получаем решение уравнения =1— + χ ~- , U /2 которое совпадает с уравнением χ = А. Записанная для калькулятора клавишная программа реализует самовоздействие алгоритма. Мы уже ранее выяснили, что в списке программ микрокалькулятора 125
содержится лишь несколько алгоритмов. Для вычисления значений тригонометрических функций вполне можно обойтись алгоритмом вычисления косинуса, для вычисления значений степенной и логарифмической функции необходимы алгоритмы ех и Ιηκ. Ознакомимся с этими алгоритмами. В основе всех их лежат ряды, в которых можно вычислить каждый последующий член, если известно значение предыдущего. Алгоритм "Косинус" Дано: α (в градусах) Результат: cosa a-? К~ (a/57,29578)2 и—0 Χ+λ Μ+λ повторить п+п + 2 X~-X-Kj(n-\)in М~М + Х до|Х|<10-6 сообщить "cosa = ", Μ стоп a = 60° η 0 2 4 6 К = 1,096627 Χ 1 -0,5483... 0,0501.. . -0,0018 Μ 1 Ι 0,4516... 0,5017... 0,4999... Ι На примере вычисления cos 60 показано, как меняются значения величин η, Χ, Μ. Уже в пятом приближении получаем результат требуемой точности. Алгоритм ех Дано:χ Результат: ех К^г χ H-0,X-1,/W- 1 повторить п~~п J 7 X+X.Kjn м+м+х др\Х\ <10~6 сообщить "ех яа", м стоп 126
На примере вычисления числа е показано, как меняются значения величин. С помощью алгоритмов, рассмотренных в этом параграфе, можно находить значения элементарных функций, используя простейший микрокалькулятор, который может выполнять лишь основные арифметические действия. Для сравнения заметим, что шестизначные тригонометрические таблицы занимают примерно пятьсот страниц. Нетрудно представить себе, какую колоссальную работу необходимо было проделать, чтобы без применения микрокалькуляторов вычислить значения тригонометрических функций с точностью до шестого знака. ВОПРОСЫ И УПРАЖНЕНИЯ 1. С помощью алгоритма "Квадратный корень" найти у25# γ 729, записывая последовательные приближения. Сколько приближений вам потребовалось для получения результата? о 2. Проверить алгоритм "Косинус", найдя cos 45 ρ χ 2 3. Проверить алгоритм "е , найдя е . 4.10. АЛГОРИТМ РЕШЕНИЯ УРАВНЕНИЙ С помощью инженерного микрокалькулятора можно решать также такие задачи, которые раньше из-за недостаточного знания математики были неразрешимы. Известно, например, что давление падает с изменением высоты по закону р-рое-*/800°. где р0 — давление воздуха над уровнем моря. Для того чтобы из этой формулы получить представление об изменении давления в зависимости от высоты, нужно знать свойства показательной (экспоненциальной) функции ех. Сейчас же достаточно умения пользоваться калькулятором, т. е. умения превратить эту формулу в программу аШвоооЕЮШИИ роВ Проводя вычисления по этой программе, за короткое время можно построить график функции и таким образом получить наглядное представление об изменении давления в зависимости от высоты. Умение подобным образом обращаться с алгоритмами позволяет решать такие задачи, которые раньше были под силу только "избранным", обладающим обширными математическими знаниями. В наши дни с формулой решения квадратного уравнения знаком каждый школьник, однако формулы решения кубических уравнений и уравнений четвертой степени знают 127
далеко не все выпускники высших технических учебных заведений, поскольку эти формулы очень сложны. Кроме того, в практике часто приходится решать так называемые трансцендентные уравнения, для которых невозможно написать формулы решения. Рассмотрим такую задачу. Из бумаги требуется изготовить такой квадратный столбик, площадь полной поверхности которого S равна 9 дм , а объем V — 1 дм . Если обозначим сторону основания столбика через а, а высоту через h, то S = 2a2 + 4ah, V=sa2h. Исключив из этих уравнений h, получим кубическое уравнение a3 - (S/2)a + 2V=Q,unua3 -4,50 + 2 = 0, Итак, надо найти корни кубического уравнения у(х) = 0, где у(х) = = х3 -4,5х + 2. Подставляя в выражение функции χ = 0 и х= 1, получаем, что у(0) = = 2, у(1) = —1,5. Таким образом, один из корней уравнения принадлежит интервалу ] 0; 1 [ . Затем продолжим поиск корня с помощью калькулятора методом целенаправленных проб. Вычислим, например, j(0,5) = —0,125 < 0. Это показывает, что корень находится в интервале ] 0; 0,5[. В качестве следующей пробы можно взять 0,25 и т. д. Такой способ называют методом половинного деления. Каждый раз нужно выбирать тот интервал, на концах которого функция принимает значения разных знаков. Эти операции можно описать алгоритмически. Начиная расчеты по алгоритму, нужно указать два значения аргумента а и Ъ, для которых соответствующие значения у(х) имеют противоположные знаки, например, у(а) > 0, у(Ъ) < 0. Следует также указать точность, с которой надо найти корень, например е = 10~~Ί. На численном примере можно проследить, как за пять повторений достигается заданная точность. Метод половинного деления не является единственным способом получения последовательности приближений к корню уравнения. Мы уже познакомились с алгоритмом нахождения корня уравнения f(x) - χ = 0. Для того чтобы этим алгоритмом можно было пользоваться для нахождения корня уравнения у(х) = 0, его просто надо преобразовать к виду f(x) - χ = 0 или χ -f(xj. Рассмотренное выше кубическое уравнение можно привести к виду: х3 + 2 За первое приближение к корню можно выбрать любое число, но лучше взять такое, которое по возможности мало отличается от значения корня. Существуют различные методы получения решения уравнения у(х) = 0. Один из таких методов носит имя Ньютона. Вспомним геометрическую интерпретацию решения уравнения у(х) = 0. Если построить 128
Алгоритм "Вычисление корня уравнения методом половинного деления" z^y(b) повторить а + Ъ х Г' если у (х) = О, то а-» х иначе если ζ · j/^ < 0, тоа-·· χ иначе £ -* х, z*- y(x) до | β -Ζ>| <6 сообщить χ стоп Вспомогательный алгоритм y(xj~-x3 -4,5х + 2 ;;М 0,25 0,375 0,4375 1 0,5 0,46875 -1,5 -0,125 0,5 0,25 0,375 0,4375 0,46875 -0,125 0,89 0,36 0,11 -0,006 график функции у(х), то решение соответствует точке пересечения графика функции с осью х. Касательная к графику в этой точке пересечет ось χ также в этой точке (рис. 4.6). Значение углового коэффициента касательной к кривой в некоторой точке можно вычислить как производную у'(х) в этой точке. В свою очередь производную в точке χ приближенно можно вычислить по формуле у9х J^£L_H—£LZ. • ν — ν 5 6-372 129
Рис. 4.6. График функции и его касательная пересекают ось χ в одной точке Если эту формулу применим к точке, соответствующей корню уравнения, в которой кривая пересекает ось х, т. е. у(х) = 0, то получим у'(х,) х^-х х=хл После алгебраических преобразований этой формулы получим уравнение x=f(x): У'(х,) ' где f(x)=x- у(х)1У(х). Чтобы вычислить корень по алгоритму Ньютона, необходимы вспомогательные алгоритмы вычисления значений функции у(х) и ее производной γ(χ). Для рассмотренного кубического уравнения у'(х) = 3 · χ2—4,5. ВОПРОСЫ И УПРАЖНЕНИЯ 2. Подставив в рассмотренное в этом параграфе кубическое уравнение х = = 2, получим у{2) - 1. Следовательно, в интервале [1; 2] также существует корень. Найти этот корень методом половинного деления. При * = —3 функция опять становится отрицательной. Значит и в интервале [—3; 0] находится корень. Правда, этот корень не имеет физического смысла (сторона, имеющая отрицательную длину), но все-таки найдите его. К стене максимально высоко нужно приставить лестницу длиной 5 м так, чтобы она одновременно касалась стены, пола и стола, высота и ширина которого равна 1 м (рис. 4.7). Исходя из рисунка, мы можем записать два Рис. 4.7. Как поставить лестницу, чтобы она касалась одновременно пола, стола и стены? 130
Алгоритм "Вычисление корня уравнения методом Ньютона" повторить Z-» X x~z-y(x)ly'(x) Ao\x-z\<e сообщить χ стоп Вспомогательные алгоритмы: у(х)~х3 -4,5*+ 2, у'(х)~3х2 -4,5. ν 1 2 2 2 уравнения Л = и {рс + 1) +0> + 1) = 5 · Исключив из них >>, получим одно 1 χ /равнение четвертой степени 1х + 1)2 + Н- +1Г = 25. И2": Привести уравнение к виду x=f(x) и, выбрав х0 = 2,5, найти решение этого уравнения с точностью до 10 2 (используя рассмотренный в § 4.8 алгоритм). 3. Найти корень рассмотренного в этом параграфе кубического уравнения с помощью алгоритма Ньютона, выбрав в качестве первого приближения jc- --3 (точность 6 »10"~ ). 4. Найти функцию f(x) для алгоритма вычисления корня методом Ньютона в случае линейного уравнения ах + b ~ 0 и квадратного уравнения ах +Ьх +с и 4.11. АЛГОРИТМЫ ВЫЧИСЛЕНИЯ ИНТЕГРАЛА И ПРОИЗВОДНОЙ Для определенного интеграла от неотрицательной функции у = f(x) на отрезке [а ; Ь] существует простая геометрическая интерпретация, а именно: он численно равен площади под графиком функции f(x) на отрезке [а; Ь]. Формулы вычисления площадей простейших фигур рассматриваются уже в начальных классах школы: 5* 131
квадрата S = a , прямоугольника S = а · b, треугольника S =1д . hf трапеции 5 = ^-^. h. Заметим, что из формулы площади трапеции вытекают остальные три формулы. Если а = Ъ = Л, мы получаем формулу площади квадрата, а если Ъ = 0 — формулу площади треугольника. Любую фигуру можно разбить на криволинейные трапеции и вычислить приближенно ее площадь, пользуясь методом, описанным в задаче 9 параграфа 3.6. В высшей математике доказывается, что очень важные в практической деятельности натуральные логарифмы имеют простую геометрическую интерпретацию: если Ъ > 1, то \х\Ъ численно равен площади под гиперболой у =— на отрезке [ 1; Ь]. Основываясь на этой простой геометрической интерпретации натурального логарифма, можно вычислить значение In* для любого χ > 1, разделив площадь под упомянутой гиперболой на отрезке [1; х] на меньшие криволинейные трапеции и вычислив приближенно площади этих трапеций и сумму этих площадей по формуле "средней точки" (см. задачу 9 §3.6). На рис. 4.8 показано, как можно подсчитать площадь этой криволинейной трапеции, разделив ее на 1,2,3 или 4 трапеции одинаковой ширины. Обобщив описанный прием, мы получим алгоритм, с помощью которого можно приближенно вычислить площадь под какой угодно кривой (графиком неотрицательной функции) на отрезке [а: Ь]. Словами этот алгоритм можно описать следующим образом: разделим отрезок [а;Ь] на к равных частей, вычислим значение функции в средней точке х^ каждой части, сложим все эти значения и полученную сумму умножим на (b - aj/k. Так как важной составной частью этого алгоритма является нахождение средних точек х. маленьких интервалов, то прежде всего запишем алгоритм вычисления этих средних точек. На примере рассмотрено деление отрезка [ 1; 2] на 4 части и определение средних точек на каждой из этих частей. Для получения алгоритма вычисления приближенного значения определенного интеграла дополним алгоритм "Деление отрезка [а;Ь] на к равных частей и определение средних точек" циклом qt. . . до, в котором вычисляется сумма площадей частей криволинейной трапеции. Так как в каждой задаче имеется своя функция, то необходим вспомогательный алгоритм для вычисления значения функции. 132
Алгоритм "Деление отрезка [ а: Ь ] на к равных частей и определение средних точек" k^r? а*? Ь+? Ах-~ (b - aj/k *нач-й + ^2 кон 2 от^=^начаохконшагАх сообщить χ следующий χ стоп £ = 4 0 = 1 Ь=2 Ах = 0,25 *нач=1'125 Ъон=1<875 1J 25 1,375 1,625 1,875 1 1,167 1,833 2 1 1,125 Рис. 4.8. Вычисление площади под графиком функции 1/х на промежутке [ 1; 2] по формуле средней точки, разделяя фигуру на 1, 2, 3 и 4 криволинейные трапеции 133
Алгоритм "Определенный интеграл" а^-1 Ь-~? 6-*? и— ? повторить M+S,S~0 хнв%га + Ы2,хкон~Ь-Ьх12 21*=хнач Ао^КОн ΒΒΓΔχ S~S+f(x) следующий χ «—н η + 1 до|Я-М| <б SV 5·Δχ сообщить £ стоп Вспомогательный алгоритм: значение//^ Если функция f(x) отрицательна на отрезке [а; Ь], то соответствующая криволинейная трапеция расположена под осью х. В этом случае определенный интеграл от функции f(x) равен площади криволинейной трапеции, взятой со знаком минус. Для того чтобы с помощью алгоритма "Определенный интеграл" вычислить Inx, нужно взять f(x) = 1/х, а пределам интегрирования а \л b следует присвоить следующие значения: еслих> 1,тоа-» 1, b-*-х, если χ < 1, то а -* х, Ь-~ 1 (натуральный логарифм от 1 равен 0). Также для значения производной функции существует простая геометрическая интерпретация, а именно: производная равна тангенсу угла наклона касательной к графику (рис. 4.9). Касательная — это прямая. Уравнение прямой, проходящей через точку (xQ, yQ), записывается так: у - у0 = k(x - xQ). Следовательно, задача "найти значение производной функции f[x) в точке xQ" равносильна задаче "определить коэффициент к". Найдем касательную к графику функции f(x), проведя прямую через две точки (χ + Δχ, ffx + Δχ)) и (χ—Δχ, f(x—Δχ)). Угловой коэффициент к этой прямой равен: uJ(x + bx) ~f(x-Ax) К 2Л~х · 134
Затем заново вычислим значение к, уменьшив Δχ в 2 раза. Если новое значение к отличается от предыдущего значения на малую величину, например, если разница меньше, чем е = 10~2, то можно считать, что производная найдена. Геометрически это означает, что обе проведенные прямые параллельны. Если разница больше чем е , то повторим предыдущее построение, точное описание которого дано в следующем алгоритме1 . Алгоритм "Значение производной" χ— ? Δχ-» ? е-» ? повторить У+ [f(* + Δχ)~ f(x - Ax)]jAxl2 Δχ— Δχ/2 ζ+ [f(x + Δχ) - f(x - Αχ J] /Δχ/2 Δχ— Δχ/2 Ao\y-z\<e сообщить ζ стоп Вспомогательный алгоритм://^ |_/w-** χ - 1 Αχ 0,1 0,05 0,025 0,125 Αχ = 0,1 У 2,7228 2,7185 е = 0,01 ζ 2,7194 2,7183 Сменив вспомогательный алгоритм, можно вычислить значение производной любой функции, даже такой, для которой трудно найти формулу производной. ВОПРОСЫ И УПРАЖНЕНИЯ 2. С помощью алгоритма "Деление отрезка [а; Ь]..." разделить отрезок [ 1; 2] на к <= 5 (6, 7, 8, 9, 10) частей и найти средние точки х, этих подинтервалов. На калькуляторе вычислить приближенное значение |п2 по программе: С помощью алгоритма "Определенный интеграл" вычислить Ιπ(0,5) с точностью 6 « 0,01. Вычисления начать сиМ, Обратить внимание на значение шага. Этот алгоритм можно применять только для таких функций, у которых существует производная. 135
У* (х.у) ;х0,у0) tgex=y~y° х-х0 3. Известно, что интеграл от функции f(xj = у/ *\ — χ на отрезке [0; 1 ] равен одной четвертой площади единичного круга. Принимая во внимание этот факт, вычислить π/4 с точностью до 0,01 с помощью алгоритма "Определенный интеграл". 4. По алгоритму "Значение производной" вычислено, что в точке χ = 1 производная функции ех равна ζ - 2,718. Вычисляя значение самой функции ех в точке χ β 1, получим то же самое число 2,718, т. е. в этой точке значение функции совпадает со значением ее производной. Случайность это или свойство функции ех? Найти значение функции ех и ее производной в других точках χ - 2,χ - 3,х = 4, χ * 5. 4.12. АЛГОРИТМИЧЕСКАЯ МОДЕЛЬ МЕХАНИЧЕСКОГО ДВИЖЕНИЯ Рис. 4.9. Значение производной в точке χ равно тангенсу угла наклона касательной к оси абсцисс: к - tga В школьном курсе физики мы ознакомились с равномерным и равноускоренным движением. Сила F, действующая на тело массой w,сообщает этому телу ускорение a=F/m. Если известно ускорение, то можно найти скорость через время t после начала движения ν =vQ + a· t. В свою очередь, зная скорость, мы можем вычислить перемещение тела x=xQ + (vQ + a· t/2)t = xQ + Vt, где V — средняя скорость за промежуток времени [0; t ]. Однако большинство тел в природе движется с переменным ускорением. Для исследования таких движений надо уметь решать дифференциальные уравнения. К тому же каждому виду движения соответствует свое дифференциальное уравнение. В средней школе, естественно, нет времени, да и необходимости для приобретения глубоких знаний по решению таких уравнений. Однако если в нашем распоряжении имеется электронно- вычислительная техника, то любое механическое движение можно исследовать с помощью алгоритма, для составления которого необходимы знания только о равноускоренном движении. Разделим время движения на маленькие промежутки времени 136
At и допустим, что в течение каждого такого промежутка времени тело движется равноускоренно. Тогда изменение скорости на временном промежутке At можно описать с помощью уравнения присваивания v-- v+aAt. В целях упрощения в формуле перемещения тела в качестве ν выберем новое значение скорости, тогда перемещение за промежуток времени At можно описать выражением χ**- χ + ν · At Этого вполне достаточно, чтобы можно было записать универсальную алгоритмическую модель механического движения. Алгоритм "Модель механического движения" 1 нач'Х нач' у нач ' кон *'ш т'п " повторить t^-t + At дтк= 1 до η вспомогательный алгоритм "Ускорение" v-~v+ aAt/n х~+ х + vAt/n следующий к сообщить t, ν, χ до t = t — кон стоп Вспомогательный алгоритм "Ускорение" а— 9,8 — 0,43у Заменив только вспомогательный алгоритм, можно исследовать какое угодно движение, в том числе и такое, для которого невозможно получить аналитическое решение (формулу). Для использования алгоритма нужно задать время начала t a и время конца ϊ движения, а нач кон также промежуток времени At. Следует также указать, на сколько частей необходимо разделить промежуток времени At, чтобы получить достаточно точный результат. Кроме того, как и во всякой задаче на механическое движение, надо указать начальное значение χ координаты тела и начальную скорость ν В качестве примера рассмотрим задачу о движении тела в среде, а именно: падение капли дождя. На каплю действуют две силы: сила притяжения Земли и сила сопротивления воздуха: ρν2 F=m-g-C-S—~ , где С — коэффициент сопротивления воздуха, S - площадь поперечного 137
сечения капли, ρ = 1,29 кг/ivr — плотность воздуха, g - ускорение свободного падения, ν — скорость капли, м/с. Приняв каплю за шарик радиусом г =0,6 мм = 0,0006 м и зная, что плотность воды р- = 1000 кг/м3, можно вычислить т = 4πρ8Γ3/3 = 9 · 10~7 кг и 5 = яг*= 1 · 10"6 м2. Коэффициент сопротивления воздуха С = 0,6. Таким образом, необходимая для вычисления ускорения формула, входящая во вспомогательный алгоритм, принимает вид fl=//m=9,8~0,43v2. Допустим, что капля падает с высоты 1000 м. Ось координат направим вертикально вниз, а началом координат выберем точку, с которой капля начинает падать. Тогда х_ = 0 и начальная скорость капли ν = Л г, ~ нач нач = 0. Падение дождевой капли рассмотрим в промежутке времени от ^нач " ^ до ^кон * ^,5, РазДелив этот промежуток на 5 равных частей, т. е. выберем At = 0,1 с. Каждый промежуток At разделим на п = 4 частей. Это означает, что для получения значений ν и χ в каждый момент времени внутренний цикл от... следующий следует выполнить 4 раза. Результаты вычислений сведены в таблицу, в которой для первого цикла записаны также те значения ν, χ, которые фактически являются промежуточными результатами. По этим результатам можно проследить за действием алгоритма и проверить его. i.c 0 0,1 0.2 0,3 ' 0,4 ' 0.5 а, м/с2 9,8 9,77 9,70 9,57 8,62 7,18 5,59 4,13 ν , м/с 0 0,24 0,49 0,73 0,97 1,87 2,65 3,27 3,73 х, м 0 I 0,006 0,018 0,037 0,061 0,215 0,452 6,757 1,114 Из таблицы видно, что ускорение уменьшается, а скорость растет, но все медленнее. Если эта тенденция сохранится, то можно ожидать, что ускорение уменьшится до нуля и капля дальше будет падать с постоянной скоростью. 138
ВОПРОСЫ И УПРАЖНЕНИЯ 3. Продолжить вычисления по алгоритму "Модель механического движения" для следующих 0,5 с. Чтобы это сделать, нет необходимости повторять вычисления до 0,5 с. Выбрать Гнач « 0,5 с, f kqh * 1 с. At = 0,1, η* 4, ν нац = 3,73 м/с, хнац « м 1,114 μ и начать вычисления по алгоритму с этими начальными данными. Для исследования движения капли в течение более длительного промежутка времени At можно не делить так мелко, т. е. значение η можно взять меньше, чем 4. С помощью алгоритма "Модель механического движения" определить зависимость скорости капли от времени в течение двух секунд через каждые 0,1 с,взяв и- 1 и не вычисляя х. Действительно ли скорость капли стабилизируется и она будет падать с постоянной скоростью? Чему тогда она равна? Совпадает ли это ее значение со значением скорости, которое можно получить 2 из уравнения 9,8 — 0,43у «· 0? С помощью алгоритма механического движения можно исследовать также движение шарика, подвешенного на нити (движение маятника). На рис. 4. 10 показаны силы, действующие на шарик. Если за χ взять длину траектории коле* баний шарика (дуги окружности), то ускорение (по касательной) вычисляется по формуле a = -980sinU/100), где χ выражен в сантиметрах, a — в сантиметрах на секунду в квадрате. Вычисляя ускорение по этой формуле, необходимо учитывать, что аргумент выражен в радианах. Вписать во вспомогательный алгоритм эту новую формулу и получить значения координаты (в сантиметрах) и скорости (в сантиметрах в секунду) в течение двух секунд через каждые 0,1 с, взяв й«* 1. Предполагается, что в начальном положении шарик отклонен на χ начальной скорости (у 10 см и отпущен без 0). Начертить графики x(t) и v(t) (скорость по касательной). Чему равен период колебаний? 4.13. АЛГОРИТМЫ ОБРАБОТКИ МАССИВОВ ДАННЫХ В предыдущей главе мы уже выяснили, что, применяя для расчетов ЭВМ, отпадает необходимость в таблицах элементарных функций, которые в калькуляторе фактически заменяются несколькими строками соответствующего алгоритма (программы). Но это не значит, что при выполнении расчетов на ЭВМ таблицы совсем не используются. Для решения г///////////////////. :9,84 Рис. 4.10. Математический маятник движется по дуге с ускорением ΊΓ 139
многих практических задач надо проводить обработку списков данных или таблиц. Такие списки данных образуют, например, коэффициенты рассматриваемого многочлена, результаты (значения) измерений, список дней недели или месяцев года. Элементами некоторых списков являются числа. Например, измерив рост пяти школьников, получают список чисел 176,180, 176,178, 177; список значений коэффициентов многочлена пятой степени у =а5х5 + а^х4 + а3х3 + а2х2 +а^х + aQ состоит из чисел aQta^ а2, а3, а4, а и т. д. Элементами списков могут быть и слова, например список дней недели имеет следующий вид: воскресенье, понедельник, вторник,. .., суббота. Списки будем обозначать одной буквой или комбинацией из нескольких букв, за которой в скобках следует обозначение индекса, а за скобками — перечень значений индекса. Так, список коэффициентов рассмотренного многочлена можно обозначить а (i ), i = 0, 1, 2, 3, 4, 5; а список дней недели ДН (i ), i = 0, 1, 2, . . ., 6. Индекс обычно обозначают буквой i или к и называют также адресом элемента списка. Чтобы узнать значение какого-либо элемента списка, надо указать его адрес в списке, например, ДН (0) = воскресенье, ДН (3) = среда и т. д. Как мы уже видели ранее, один и тот же алгоритм можно использовать во многих задачах, достаточно лишь заменить в нем вспомогательный алгоритм. Подобным образом в алгоритмы включают и списки, которые заносят в конец алгоритма за словом данные. Если в алгоритме используются все элементы списка, то в начале алгоритма пишут команду читать, например, читать ДН (0), ДН (1), . . ., ДН (6). Вместо этой команды можно также записать цикл от ... до ... следующий, например, от г = 0 до 6 шаг 1 читать ДН (/ ) следующий i Включение списка данных в алгоритм рассмотрим на примере вычисления значения многочлена 5-й степени по схеме Горнера и применим этот алгоритм для определения высоты полета ядра. Так как высота спортивного ядра над поверхностью Земли на расстоянии χ от места его толкания определяется уравнением у = 2 + 10,7х — 4,9х2 (см. § 2.6), то получаем следующий алгоритм. Отметим, что в списке данных обязательно нужно указывать все элементы списка, и поэтому в нашем примере список коэффициентов многочлена второй степени 2, 10.7, —4,9 надо дополнить еще тремя нулями. В списке данных в десятичных дробях вместо запятой в дальнейшем будем ставить точку, а запятой будем отделять друг от друга элементы списка. 140
Алгоритм "Многочлен 5-й степени" Щатъз(0),з(1),з(2),...,з(5) х-?,>>-0 от i » 5 до 0 шаг — 1 >>->>' χ +a(i) следующий i сообщить у стоп данные 2, 10.7, -4.9, 0, 0, 0 Рассмотрим еще один пример, связанный с алгоритмом "Календарь XX столетия". В этом алгоритме прежде всего определяется число дней п, прошедших с 31 декабря 1899 года до какой-либо определенной даты нашего столетия. Затем с помощью одной из цифр 0, 1, 2,..., 6 алгоритм "сообщает", какой день недели приходится на эту дату. Вторую часть этого алгоритма можно записать как самостоятельный алгоритм "День недели". Алгоритм "День недели" читать flH(0)#flH(1)fflH(2)#flH(3)fflH(4)fflH(5)fflH(6) и—? i^n-1 int(w/7) сообщить ДН (i ) данные воскресенье, понедельник, вторник, среда, четверг, пятница, суббота В некоторых случаях значение величины удобнее прочитать непосредственно перед выполнением соответствующего вычисления. Рассмотрим, как это можно сделать в алгоритме вычисления среднего арифметического и определения дисперсии. Соответствующие формулы мы рассмотрели в § 2.11. "Математическая обработка результатов наблюдений". Однако там данному алгоритму, который, между прочим, используется также в калькуляторах МК-51 и МК-71, присущи некоторые недостатки. В этот алгоритм входит вычисление разности двух больших чисел (х-2 + х22 -к ... + χ 2) - (х1 +x2+...+xfl) 21п. Так как калькулятор работает с восьмизначными числами, то обе упомянутые суммы могут 141
оказаться настолько большими, что различия в обоих числах начнутся только с девятого знака. Тогда окажется, что дисперсия равна нулю, т. е. все значения измерений одинаковы. Поэтому можно порекомендовать алгоритм, в котором сумма (п+1) значений измерений и сумма (п + 1) квадратов разностей вычисляется на основе уже вычисленных сумм предыдущих π значений измерений и π квадратов разностей. Алгоритм "Среднее арифметическое и дисперсия" п—1 п=Ъ к-+0, га— 0, q~*rQ повторить к—к + 1 читать χ (κ) у-~ т + (х(к) - т)1к q^q+ixfkJ-mftk-IJ/k дрк = п о «·%/ q/n сообщить "среднее арифметическое и т = 177,4 дисперсия" сообщить тв о стоп к 0 1 2 3 4 5 т 0 176 178 177,3 177,5 177,4 Q 0 0 8 10,6 11,0 11,2 о =1,5 данные 176, 180, 176,178, 177 До сих пор мы рассматривали лишь одномерные списки, однако очень широко используются также двухмерные списки или таблицы. Вот, например, фрагмент из таблицы, в которой представлены данные о некоторых школьниках. Данные этой таблицы можно поставить в соответствие некоторой двухмерной величине L(i, j) , где i есть номер строки, а/ — номер столбца. В этом массиве данных элемент L (2, 4) имеет значение 16, а элемент/, (3,3) —значение 174. Г № 1 2 3 4 5 6 Имя Роланд Анжелика Гита Эрик Гуна ρ Инесса Пол 1 0 0 1 1 0 Рост 170 164 174 190 176 161 Возраст 16 16 15 16 16 16 142
Как можно включить в алгоритм такой двухмерный массив данных? Данные всегда удобнее записывать в один непрерывный ряд. Поэтому условимся записывать в один ряд прежде всего элементы 1-й строки таблицы, затем элементы 2-й строки и т. д. С помощью алгоритма "Идеальная масса"( можно вычислить так называемое рекомендуемое значение массы в килограммах. Используемая формула пригодна в основном для нахождения массы взрослых людей. Но в качестве интересного примера вычислений ее можно использовать также для определения массы молодых людей. Алгоритм "Идеальная масса" от / = 1 до 6 шаг 1 читать£(/f1 ),L(i. 2),L(i,3),L(i,4) следующий i i — ? с- 0,025 -L(i,2) + 0,225 d~4,5-L(i, 2) +40,5 m - (3L(i, 3) - 450 + L(i, 4) )c+ d сообщить L(i, 1) сообщить "твоя идеальная масса" сообщить т стоп данные Роланд, 1, 170, 16, Анжелика, 0, 164,16, Гита, 0, 174, 15, Эрик, 1, 190, 16, Гунар, 1,176,16, Инесса, 0, 161,16 ВОПРОСЫ И УПРАЖНЕНИЯ 1. С помощью алгоритма "Многочлен 5-й степени" найти высоту ядра через χ «0,2 (0,4,1,0, 2,0, 2,2} с. 2. Что сообщит алгоритм "Многочлен 5-й степени", если в списке данных есть числа 6, 8, 9,1,0,ах« 10? 3. Записать данные для вычисления перемещения автомобиля s, если зависимость s от времени описывается многочленом: s - 0/7U2 - 0,17ί3 - 0,0002ί4. По алгоритму и этим данным вычислить путь, пройденный автомобилем за 0,2, 0,4, 0,6 0,8 с. 4. С помощью алгоритма "День недели" установить, в какие дни недели произошли перечисленные ниже события. 143
Событие η Великая Октябрьская социалистическая революция Образование СССР Начало Великой Отечественной войны День Победы Запуск первого спутника Земли Первый полет человека в космос 6520 8399 15148 16 565 21 096 22 382 5. Составить список, в который можно записать рост пяти (всех) мальчиков (девочек) своего класса. С помощью алгоритма "Среднее арифметическое и дисперсия" вычислить средний рост и дисперсию. 6. Составить массив данных L(i, jj, описанный в алгоритме "Идеальная масса" для пяти своих классных товарищей. Найти по этому алгоритму свою идеальную массу. 7. Даны две позиции игры "15" 13 9 5 1 14 10 6 2 15 11 7 3 12 8 4 13 9 1 2 14 10 5 4 12 3 6 11 15 | 7 8 которые можно записать в виде двухмерных массивов данных S(i,j). Каковы значения 5(1, 3),£(2, 2),£{1,2),5(3,1) и S(4,4)? 4.14. АЛГОРИТМЫ ПОИСКА И УПОРЯДОЧЕНИЯ ДАННЫХ Так как ЭВМ умеет выполнять операции сравнения величин, то на ней можно осуществлять поиск необходимой информации, ее упорядочение и обработку. Такие задачи приходится решать довольно часто. В классном журнале фамилии школьников нужно расположить по алфавиту, в начале урока физкультуры всем надо встать в строй по росту. В таблице тиража выигрышей в "спортлото" числа печатаются в возрастающей последовательности. В гонках, например лыжных, велосипедных, участники стартуют ежеминутно, а финишируют каждый со своим временем прохождения дистанции. Организаторам соревнования нужно расположить участников в последовательности, соответствующей 144
завоеванному месту. Для того чтобы на всей странице тетради в клетку красиво начертить график какой-либо функции, следует знать наибольшее и наименьшее значение функции. Ознакомимся с алгоритмом отыскания наибольшего и наименьшего числа. В списке участников кроса значатся пять человек. Результаты участников забега следующие: Y(1) = 13 мин 18 с, Υ(2) = 14 мин 6 с, Υ(3) =13 мин 21 c,Y(4) = 13 мин 16 с и Y(5) = 13 мин 54 с. Упорядочение числового множества столь небольшого объема не представляет никакого труда. Однако если необходимо найти меньшее или большее число из 1000 элементов, то простым пересмотром этого можно и не добиться. Необходимо просмотреть и сравнить все числа по порядку. Проиллюстрируем этот прием на примере результатов участников кроса. Запишем все результаты в одну строку и возьмем два листка бумаги. На одном из них^ напишем символ min (от латинского слова minimum - наименьший) , а на другом - символ max (от латинского слова maximum - наибольший) . В оба листка занесем первое число из списка результатов соревнований, т. е. 13 мин 18 с. Теперь будем двигать список вдоль этих листков. Если указанное время участника меньше времени, записанного на листке min, то предыдущую запись сотрем и вместо нее запишем новое значение времени. Так же поступим и с листком max, только на нем запишем новое число тогда, когда время участника будет больше времени, записанного на листке max. Вот как мог бы выглядеть этот процесс отыскания наименьшего и наибольшего числа. 13: 18 14: 06 13: 21 13: 16 13: 54 min 13 : 18 13: 18 14:06 13: 21 13: 1613: 54 min 13 : 18 13: 18 14:06 13: 21 13: 16 13: 54 min 13 : 18 13: 18 14:06 13: 21 13: 16 13: 54 min 13 : 16 13: 18 14:06 13 : 21 13: 16 13: 54 min 13 : 16 145
Значит наилучший результат — 13 : 16. Нахождение наименьшего и наибольшего числа можно описать с помощью алгоритма уже хорошо известным нам приемом. Первая строка алгоритма читать п, х(1) означает, что величине η нужно присвоить первое значение, стоящее в списке данных, 6, а величине х(1) — второе значение 9. Если в списке данных, приведенных ниже, элементы со 2-го по 7-й представляют собой выпавшие в розыгрыше "Спортлото" числа, то по этому алгоритму находится наименьшее и наибольшее из этих чисел. Алгоритм "min-max читать п. х(1) min -*- х(1), max-*- x(1) от / = 2 до η шаг 1 читать χ(ί) если х(г) <min то min-^x^V если xli) > max то max^x(i) следующий i сообщить min, max стоп данные 6,9, 22,7,11,48, 3 Одним из видов обработки информации, который выполняют с применением ЭВМ, является упорядочение списков. Рассмотрим эту задачу на примере с коробочкой для диапозитивов, имеющей 36 мест. В ней 35 диапозитивов, значит одно место пустое. После демонстрации диапозитивов они оказались перемешанными. Для нового показа диапозитивов их нужно расположить в правильной последовательности. Допустим, что в каждый момент из коробочки можно взять только один диапозитив. Для упорядочения диапозитивов разрешается использовать только свободное 36-е место в коробочке. Математически эту задачу можно сформулировать следующим образом: дан список величин d(i) и величина а, которой можно присвоить любое числовое значение. Требуется получить такой новый список, чтобы выполнялись неравенства ά(λ) < d(2) < d{3) . . .<d{3b). Здесь / — номер места в коробочке, d(i) — номер диапозитива, а — пустое место в коробочке. Допустим, что на первом месте в коробочке находится 9-й диапозитив, т. е. <2(1) β 9, на втором месте — 22-й диапозитив (d (2) - 22), на третьем месте — 7-й диапозитив ((d{3) ~ 7), на четвертом месте — 23-й диапозитив 146
(d (4) = 23). Предположим, что нам нужно упорядочить только те диапозитивы, которые расположены на первых четырех местах. На рис. 4.11 показано, как происходит упорядочение диапозитивов. Этот процесс можно описать следующим словесным алгоритмом. 1.2. Сравниваем номера диапозитивов, находящихся на 1-м и 2-м местах. Так как d (1) < d (2), то эти диапозитивы не меняем местами. 1.3. Сравниваем номера диапозитивов, которые находятся на 1-м и 3-м местах. Так как d (1) > d (3), то указанные диапозитивы надо поменять местами. Это выполняют, используя пустое место а. Поместим туда диапозитив с 3-го места, т. е. a**- d (3), затем на 3-е место поместим диапозитив с 1-го места (d (3) «* d (1) ив заключение диапозитив из места а переместим в 1-е место (d (1) —- a). 1.4. Сравниваем номера диапозитивов, находящихся на 1-м и 4-м местах. Так как d(\) < d {А), то оставляем диапозитивы на своих местах. Мы получили список 7, 22, 9, 23. Теперь на первом месте находится диапозитив с наименьшим номером и в дальнейшем его уже не нужно проверять. Поэтому переходим к сравнению второго места с третьим и четвертым. 2.3. Так как условие d{2) < d (3) не выполняется, то осуществляем обмен: a~d(3) d(3) + d(2) d(2) + a В коробочке сейчас следующий список номеров: 7,9, 22, 23. 2.4. Так как d (2) < d (4), диапозитивы оставляем на своих местах. Теперь мы уверены, что диапозитивы на 1-м и 2-м местах уже упорядочены. 3.4. Сравниваем номера 3-го и 4-го мест. Так как d(3) < of (4), то упорядочение закончено. Заметим, что на каждом последующем этапе требуется выполнять на одно сравнение меньше. Сейчас мы уже можем записать алгоритм, который упорядочивает список, состоящий из η элементов. Данные роста школьников, представленные в списке, рис> 4.11. Как упорядочить диапозитивы в требуется расположить в воз- порядке возрастания номеров, если для опе- растающей последователь- рации обмена разрешается пользоваться ности. Вначале величинам только первой пустой щелью? 147
χ (i ) присваиваются значения данных списка, однако с помощью последнего цикла сообщается новый список. Алгоритм "Упорядочение списка чисел" читать χ «1), χ (2), χ (3), χ (4), χ (5) от / = 1 до п — 1 шаг 1 от к = i + 1 go n шаг 1 ecmx(i)>x(k) то я -«- χ (к) х (к)—χ a j x(i ) + a следующий к следующий / от/ = 1 до и шаг 1 сообщить χ Г/ ) следующий / стоп данные 170,164,174, 160, 171 Ознакомимся еще с возможностью преобразования информации. Как известно, раньше в записи чисел использовали так называемые римские цифры. Числа, записанные римскими цифрами, совсем не так просто перевести в привычную десятичную форму. Однако это иногда приходится делать, например, читая какую-нибудь старинную книгу или исследуя архивные документы. Для описания алгоритма, переводящего римские числа в позиционные десятичные числа, нужно вспомнить значения римских цифр: I = 1, V = 5, X = 10, L = 50, С = 100, D = 500, Μ = 1000. Обратим число MCMLXXXVI. В этом римском числе η = 9 цифр. Прежде всего величине R присваиваем значение | , т. е. число 1, затем значение V, т. е. число 5, и т.д. 148
Алгоритм "Обращение римского числа в десятичную форму" β* 0f S— 0 сообщить "Сколько цифр в числе?" л-*? сообщить "Значения цифр вводить последовательно от конца числа к его началу" от i = 1 до η шаг 1 Д-? если/? < Q joS^S-R иначе S~ S + R Q~R следующий / сообщить S стоп R 1 = 1 V = 5 Х = 10 Х = 10 Х = 10 L = 50 S 0 1 6 16 26 36 86 Q 0 I 1 5 10 10 10 50 ВОПРОСЫ И УПРАЖНЕНИЯ 1. Показать в таблице, как меняются значения величин χ (i ), min и max в алгоритме "min-max". min др(1) χ(2) χ(3) χ(4) χ(5) χ(6) max 9 9 22 7 11 48 3 9 Упорядочить рост школьников в возрастающей последовательности с помощью алгоритма "Упорядочение списка чисел". Все шаги алгоритма отразить в таблице. i к а *(1) х(2) х(3) х(4) х{5) 170 164 174 160 171 1 2 164 170 164 Продолжить начатое в тексте этого параграфа обращение римского числа в десятичное. Записать в десятичной форме следующие римские числа: MCCI, MDCCCXLVIII, MCMXVII. Можете ли вы сказать, что это за исторические даты? 149
С какой скоростью приземляются спортсмены? v= v^^ihtM/c] - V254- h [км/ч] 1* ΓζΙ Ι В/О | |Ί=] | ΠΡΓ I (на индикаторе 00) 2. Ввести программу: [ип] [7] [х] [Т] [7] [с/П 3* ЕЕ] | АВТ I (на индикаторе 0) 4. Ввести константу: 254 Qj] [Τ] 5. Проверка: 2,5 [ Β/θ| |СП[ (на индикаторе 25,...) 6· 6 | В/О] | С/П | на индикаторе? и [в/о] Iс/п| GI П! ■—■■■* | I II М<?9 IWn/VXAUAAJCU nrvouuro 4&гшг. ТГоьлл, шлал,* ня+шз 5-w пинлтои ммм,- pjorKajubKufamDrb у. падая с Soccormc У [ j*4*J\ \ ^оли, аюгигь - 3 \ * л/ с* иш/ъоспьью < V^V <*^ ZSkd*/* -
5. ПРОГРАММИРУЕМЫЙ МИКРОКАЛЬКУЛЯТОР Г I L. 5. ПРОГРАММИРУЕМЫЙ МИКРОКАЛЬКУЛЯТОР В 1977 году был создан первый советский программируемый микрокалькулятор БЗ-21. В настоящее время ему на смену пришел калькулятор БЗ-34 и его аналоги МК-54 и МК-56 (рис. 5.1, 5.2). На первый взгляд кажется, что программируемый микрокалькулятор ничем не отличается от инженерного. Мы видим уже знакомые нам клавиши элементарных функций, цифровые клавиши и клавиши арифметических действий. Удивление, возможно, вызывает лишь то, что вместо клавиши |j==J име- | f I или [щ . Во всяком случае наличие уже знакомых ется клавиша нам клавиш свидетельствует о том, что на этих калькуляторах можно выполнять арифметические операции и находить значения элементарных функций. Кроме того, клавиши с надписями ПРГ , |авт| , х=о БП , С/П , ЛП указывают на то, что в отличие от инженерного программируемый микрокалькулятор имеет процессор для автоматической обработки алгоритма. Поэтому программируемый микрокалькулятор снабжен памятью, в которую можно записать программу. Программа — это алгоритм, записанный на языке калькулятора. Программа для программируемого микрокалькулятора составляется из стандартных программ, названия которых можно прочитать на клавиатуре (sin, In, Х-~П, X, +,...). Объем памяти для программы выражается в шагах. В калькулятор типа БЗ-34 можно ввести программу, состоящую не более чем из 98 шагов. Один шаг соответствует одной микропрограмме (одной операции). Другая важная особенность программируемого микрокалькулятора — регистры памяти, в которых можно хранить числа. Таких регистров 14, обозначим их через RO, R1, R2, . . ., R9 и RA, RB, RC, RD. Напомним, что в инженерном микрокалькуляторе имеется только один регистр памяти и два §абочих регистра X и Y. Калькуляторы типа БЗ- 34 снабжены также ольшим числом рабочих регистров — их всего пять. Обозначаются они через Χ, Υ,Ζ,Τ и XI. 151
Рис. 5.1. Крупноформатная модель программируемого микрокалькулятора БЗ-34 5.1. ВХОДНОЙ ЯЗЫК В ОБРАТНОЙ ПОЛЬСКОЙ ЗАПИСИ Сначала познакомимся с применением калькулятора типа БЗ-34 в режиме обычных (ручных) вычислений. Значения элементарных функций на этих калькуляторах вычисляются точно так же, как и на инженерном калькуляторе: сначала вводится число (операнд), а затем вызывается микропрограмма, которая обрабатывает число и выдает результат, например, 30 I F I sinl ; 25 3 в^И; 2 £ In 152
(символами sin, \Л, In, обозначаются стандартные программы). Однако в отличие от инженерных микрокалькуляторов двухместные арифметические операции (сложение, вычитание, умножение и деление) на калькуляторах типа БЗ-34 выполняются так же, как одноместные операции, - сначала вводятся оба числа, а затем вызывается стандартная программа +, —, X,:. Остается лишь неясным, как в калькулятор ввести одно за другим два числа, если после нажатия клавиш число заносится только в регистр X. Для этой цели используется клавиша "ввод", которая обозначается стрелочкой I f I или [в|| . При нажатии на клавишу[_У число, находящееся в регистре X, копируется и записывается в регистр Y. Выполнение арифметических действий на калькуляторах типа БЗ-34 легко описывается с помощью алгоритмических выражений присвоения значения. 'организации" арифметических операций имеются определенные преимущества. При нажатии клавиши [-5-J непосредственно вызывается программа "деление". Вместе с тем отпадает необходимость в операционном регистре, увеличивается скорость выполнения операции и освобождается место для нескольких рабочих регистров, которые обозначают символами Ζ, Τ, ΑΊ. Отметим сразу, что при нажатии клавиши [JJ содержимое регистра Ζ копируется в регистре Т, а содержимое регистра Υ — в регистре Ζ (рис. 5.3). Это позволяет в рабочих регистрах хранить одновременно четыре Рис. 5.2. Программируемый микрокалькулятор ΜΚ-54 153
ЕЙ τ ζ Υ χ -*- τ ■*- ζ χ; х^Гу Βχ Рис. 5.З. Обмен содержимым регистров при различных клавишных операциях числа. Вот каким образом в регистры вводятся числа 3, 5,7, Θ: ЗШ 5(1] 7Ш 9 Если теперь вызвать программу X , калькулятор перемножит числа из регистров X и Υ и на индикаторе появится число 63. Одновременно в регистр Υ будет скопировано содержимое регистра Ζ, а в регистр Ζ — содержимое регистра Г (см. рис. 5.3). Такая "организация" операций дает возможность без применения скобок сохранять структуру арифметического выражения и следует только помнить, что арифметическая операция выполняется калькулятором над последними двумя введенными числами. Если в регистр X вводится новое число или нажимается клавиша (JJ , предыдущий результат перемещается в рабочих регистрах 154
"наверх" и сохраняется для последующих вычислений. Вот как можно рассчитать выражение 5X7 — 4X6: |5 ♦ 7 Х| |4 ♦ 6 Х| - Каждая рамочка показывает, над какими числами выполняются действия. Если, например, необходимо записать в строчку такие выражения, как a + b . mv+MV c-d! m+M ' то без скобок обойтись нельзя, а именно: (a+b):(c-d); (mv+MV) : (m+M). С помощью обратной польской записи выражения такого типа можно записать без скобок \а | 6 + | \с ♦ d-\ : ! Mm ί ν Χ] \Μ \ν Χ| + \m ί Μ +| : По этой причине входной язык в обратной польской записи называется также языком бесскобочных записей. Существует несколько видов бесскобочной записи. Первый из них для записи логических выражений разработал польский математик Я. Лукасевич. При выполнении расчетов с элементарными функциями результат заносится в регистр X, а содержимое остальных регистров не изменяется. Это дает возможность просто и кратко вычислять такие часто встречающиеся выражения, как а + 6 2 и 1/а +1/6: U Fx2| |6Fx2| + Uf i/x| |6F1/X| + Обратите внимание на то, что в этих программах не нужно применять клавишу [Jj . Стоит также запомнить, что клавиша} \ \ не используется и в том случае, если ввод двух чисел разделен какой-либо выполняемой операцией. Точнее , клавишу [_у следует применять только тогда, когда два числа вводятся с помощью цифровых клавиш одно за другим. Это и понятно, поскольку калькулятор не может "решить", действительно ли 375 одно число, или введены два числа: 37 и 5 (3 и 75). Таким образом, нажимая клавишу[У|, мы словно сообщаем калькулятору/что ввод данного числа завершен и теперь будет вводится другая информация. Рабочие регистры калькулятора "соединены" как бы в кольцо и в 155
случае необходимости, нажимая клавишу FQ , можно последовательно просмотреть числа во всех рабочих регистрах. В свою очередь, клавиша дает возможность поменять местами числа, находящиеся в ре- X-STY гистрах X и Y. Такая необходимость может возникнуть, например, при вычислении Χγ. Название этой программы говорит о том, что число χ в момент вызова программы должно находиться в регистре X, а показатель степени — в регистре Υ. Если необходимо вычислить 25, то можно поступить двояко: 2Ш 5 Χ3ΤΥ F 3^ Или 5 [7] 2 |7] (хЗ При нахождении алгебраических выражений часто необходимо использовать результат предыдущего шага вычислений. В калькуляторе БЗ-34 это осуществляется нажатием клавиш [Г "вх) (восстановить X). Такое восстановление возможно потому, что результат выполнения каждой операции дублируется в регистре ΛΊ (см. рис. 5.3). ВОПРОСЫ И УПРАЖНЕНИЯ 1. Найти значения выражений (а + Ь) : {с — d) и (mv + MV): [т+ Л0 по программам, данным в этом параграфе, если а - 8, Ъ - 17, с = 49, d - —2, т = 70, ν = 4,ΛΓ = 400, F=-60. 2. Вычислить sin30°; In2; 103; е1; 7Г2; arccos0,5; \/289; 1/8; у/ З2 + 42; 11 О О *■ + -L-; sin30 + cos60 . При нахождении значений тригонометрических а 4 функций следует принять во внимание положение переключателя "Р— Г" (радианы — градусы). 3. Составить программы для расчетов значений данных выражений и с помощью рамочек показать, над какими величинами выполняются действия: и2 „_. а*Ъ ce-af /75 •4ас; с· d· е cb -ad 4ас. 4. Как калькулятор реагирует на невыполнимые операции 5/0; \J —25? Для отмены ошибочной команды необходимо нажать клавишу 5. Найти на калькуляторе значение выражений параграфа 3.1. 6. Вычислить γ2. 7. Ввести в рабочие регистры калькулятора следующие числа: 365,25 | f | 84 |t ) 30,59 | f J 10 и, повторно нажимая клавишу мое памяти "кольца" рабочих регистров. FQ , просмотреть содержи- 156
5.2. ВЫЧИСЛЕНИЯ С ИСПОЛЬЗОВАНИЕМ РЕГИСТРОВ ПАМЯТИ Числа в регистры памяти RO, RI, . . ., R9, RA, RB, RC, RD вводятся через регистр X. Содержимое регистра X копируется в любом регистре П или Х~М а затем кла- памяти при нажатии сначала клавиши виши, указывающей адрес регистра. Чтобы кратко записать, например, действие "занести число а в регистр R6" , будем использовать команду присваивания и запишем а ♦ R6. Аналогично запись RA ** X означает "скопировать содержимое регистра RA в регистр X". Тогда для выполнения действий 1986 — RA; 12 -* RB; 5/9 +- R9; 1/60 ^R7; 107 -^R8; —95 -»-R6 поступим следующим образом: нажимаемые клавиши 1986 [Й][а] (ЙИИ ишишиш ышишшии Ш [впЦИИШ ИШЕЗИИ показание индикатора 1986 12 5,5555555 1,6666666 10000000 -95 -0,1 -0,2 Чтобы скопировать содержимое регистра памяти в регистр X, необходимо нажать клавишу |ИП| или [ Π -^>Χ| , а затем клавишу, указывающую адрес регистра. Если вы уже ввели в калькулятор заданные числа, то можете проверить, действительно ли они находятся в соответствующих регистрах. Для этого надо нажать клавиши @ 0; @ (Т); (ип) [а 1 ип] в 8 И Π 6 Число, записанное в регистр памяти, хранится там до тех пор, пока туда не будет записано новое число или калькулятор не будет выключен. Использование регистров памяти может быть проиллюстрировано на следующем примере. В результате измерений роста 5 юношей получены следующие числа: 176; 180; 176; 178; 177 (в сантиметрах). Найти средний рост и дисперсию значений измерений о. 157
Сначала запишем значения измерений в регистры памяти R1, R2, R3, R4, R5, а в регистр R6 занесем число 5 (количество измерений): 176 [ПЩ; 180 [И] [Т|; 176 [π] (ΊΓ] ; 178 [И] |Т]; 177 00; 5 [п][|]. Затем вычислим средний рост и его значение занесем в регистр R7: Θ И И ИИ И ШИ И И В И ИИ [йп] (НЕКИЕ)· Чтобы найти дисперсию, нет необходимости еще раз вводить значения измерений, поскольку они продолжают храниться в соответдтвую- щих регистрах. Дисперсия о рассчитывается по формуле [ип Ύ\ и шиш σ= у/((Х,-Х)* + (Х2-Х)2 + ... + [Хъ-Х)2)1Ь Программа вычислений такова: НИЙИВИЙ ΞΕ) ΗΗΘΞΞΞΘΗΘΗΘΞΕ] И И И ИВЕ) 0 Ε) И ВШЕ) И Используя регистры памяти для хранения начальных данных и промежуточных результатов, можно составить программу практически для любой формулы (линейного алгоритма). Рассмотрим, как на калькуляторе БЗ-34 определяется кратчайшее расстояние между городами, если даны их географические координаты. Для Риги географическая широта φλ = 56,95, долгота λ^ = 24,12, для Москвы соответственно φ 2 β 55,75, λ2 =s 37,62. Расстояние находится по формулам: ζ = ύηφλ sin^2 + cos^1 cos^2cos(X1 - λ2); γ = arccosz; s = 111 ,2γ. Числовые данные разместим по адресам: величина адрес % RA λ1 RB *2 RC λ2 RD 111,2 R7 Для присвоения регистрам конкретных значений нажимаем: ; 24,12 0[вГ); 55,75 56,95 |П ПС; 37,62 П D 158
Вычисления проводятся по программе (калькулятор надо переключить в градусный режим): И 0 \ВВ \Т\ |cos| |ИП| ][х][ип| 0 [К. Ε [Τ] [cos] [χ] [ЙП] [в] э @fcims B0G arccos ВИ0 Если при нажатии клавиш не допущены ошибки, то на индикаторе появится число 841, .. . . После вызова стандартных программ cos и sin необходимо немного подождать, пока на индикаторе не высветится результат, и только тогда можно нажать следующую клавишу. В дальнейшем нам часто будет необходим вспомогательный алгоритм int для отделения целой части числа. На калькуляторах БЗ-34, МК-54 и МК-56 целую часть числа можно найти следующим образом1: вычесть из данного числа 5/9, прибавить 107 и отнять 107. Проверьте этот алгоритм на численном примере: 2,99 ШВШ И Ш G Ш И И И Ш Ел] И g На индикаторе должно появиться число 2. Может оказаться, что в новейших моделях калькуляторов отпадает необходимость в вычитании 5/9. Однако в нынешних моделях такое действие необходимо, поскольку при сложении с числом 10 происходит автоматическое округление с избытком. Если целая часть числа отделяется часто, то константы 5/9 и 107 целесообразно хранить в регистрах памяти и при необходимости вызывать их. Запишем константы в регистры R8 и R9: ИШИШ0И; ШёпЦЗИ 8 Тогда программа для отделения целой части числа X будет такой: ВОПРОСЫ И УПРАЖНЕНИЯ 1. Ввести в регистры Rl, R2, . .., R9 число дней в январе, феврале,. .., сентябре, а в регистры RA, RB, RC — число дней в октябре, ноябре и в декабре соответственно. Найти число дней в году по программе Θ И И ЕВИ И + ••■ИЕЕ] Записать в регистр RA год своего рождения, в регистр RB — месяц рождения, в регистр RC — день рождения, в регистр R1 — свой рост в сантиметрах, а в ι На калькуляторах ΜΚ-61 и ΜΚ-52 с помощью оператора int целую часть числа можно отделить автоматически, например, 2,99 Κι [ Х]| — на индикаторе: 2. 159
регистр R2 — свой возраст в годах. Кроме того, ввести в память еще такие числа: 3 0Ш 45° И И; °-25 И Ξ; 45ШИ; °'2250И; 40,5 [7Г][Т| Вызвать содержимое регистров и убедиться в том, что введены заданные числа. Найти свою идеальную массу. Юношам вычисления производить по программе а девушкам — по программе 0Ш0ИИ0ИВ0И00ИННШЕ1 3. Ввести в регистры R1, R2, R3 соответственно константы —195,8; 5,98 ■ 10 ; 27 1,7 · 10 . Вызвать содержимое 1, 2, 3-го регистров. 4. Разместить в адресах R1, R2, R3 R4, R5 значения роста в сантиметрах пяти юношей (девушек) своего класса, а в R6 — число 5. По программе, данной в этом параграфе, найти средний рост и дисперсию. 5. По программе, приведенной в этом параграфе, определить кратчайшее расстояние от Риги до Берлина (φ2 = 52,48, \~ β 13,05), до Праги [φ2 ~ 50,09, Xj ~ 14,42), до Северного полюса {φ2 ~ 90 , λ2 = 24,12). 6. Найти целую часть от следующих чисел: 3,14; 5,98; (365,25 Х87); (30,59 X X 11); (365,25 X G); 30,59 X М), где G — ваш возраст в годах, Μ — порядковый номер месяца вашего рождения. 7. Написать, какие клавиши необходимо нажать, чтобы определить скорость mv + MV центра массы по формуле , если значения величин размещены по т+М следующим адресам: т RA V RB Μ RC V RC Проверить программу с использованием чисел т = 70, ν - 4; Μ - 400; V - 60. 2 Составить линейную программу для решения квадратного уравнения ах + + Ъх + с = 0, если коэффициенты а, Ъ, с записаны соответственно в регистрах RA, RB, RC. Корни вычислить по формулам: Х~- Ы>+ \/b2 - Лас) /а/2; Х2~с/а/ху Решить уравнение, если а = —4,9, Ъ = 10,7, с = 2. Значение дискриминанта анализировать не надо. Если оно будет отрицательным, то при нажатии клавиш I F J |у [, микрокалькулятор сообщит "Error" (ошибка), что будет означать, что уравнение не имеет вещественных корней. 160
5.3. ДЕЙСТВИЯ С ИСПОЛЬЗОВАНИЕМ КОСВЕННОЙ АДРЕСАЦИИ РЕГИСТРОВ Если перед обращением к памяти нажата клавиша К (от слова "косвенный") , то число, записанное в регистре, воспринимается как адрес. Проиллюстрируем это на примере: 3 1201 на Ж1 4М аем ая клавиша 7Г 1 [ К А "гП Га" показание индикатора 3 1201 (ил ["а] [Щ Qf [К ИП Z1 3 1201 1201 содержание действия запись адреса регистра R3 в регистр RA запись числа 1201 в регистр, адрес которого находится в регистре RA; в этом случае число 1201 будет записано в регистр R3 вызов содержимого регистра RA вызов содержимого регистра R3 вызов числа из регистра, адрес которого записан в регистре RA, то есть вызов числа из регистра R3 Таким же образом можно выполнить действия с регистрами RB, RC, RD, R9, R8, R7, Если с помощью клавиши К обратиться к регистрам R4, R5, R6,to номер адреса в указанном регистре сначала увеличивается на единицу, а затем выполняется действие над содержимым регистра по новому адресу, например. нажимаемая клавиша 1986 ίΟ Ε 80S 505 И И И показание содержание индикатора действия 1986 введение числа 1986 в регистр R8 8 запись адреса в регистр R4 505 увеличение на единицу адреса, записанного в регистре R4, и запись числа 505 по новому адресу в регистр R(8 + 1) = R9 6 6-372 161
ип [ип [игГ JB] Τ] [йп] Т] [К [игГ| И 1986 вызов числа из регистра R8 9 вызов числа из регистра R4 505 вызов содержимого регистра R9 3 увеличение на единицу адреса, записанного в регистре R4, и вызов числа из регистра с новым адресом R(9 + 1) = = RIO = RA 10 вызов содержимого регистра R4 При выполнении действий, записанных в 5-й и 8-й строках, можно убедиться, что число, записанное в регистре R4, действительно увели- лилось на единицу. Здесь следует принять во внимание, что регистр RA имеет номер 10, а регистры RB, RC, RD — соответственно 11, 12 и 13. Если с помощью клавиши К обратиться к регистрам R0, R1, R2, R3, то значения адресов, записанных в этих регистрах, сначала уменьшаются на единицу, а затем выполняется действие над содержимым регистра по новому адресу, например. нажимаемые клавиши [йп) Ε ип ΊΓ] показание индикатора 10 505 1986 содержание действия запись адреса в регистр R3 уменьшение на единицу адреса, записанного в регистре R3 (R(10 - 1) = R9), и вызов числа из регистра R9 уменьшение на единицу адреса, записанного в регистре R3 (R(9 - 1) = R8), и вызов числа из регистра R8 162
Действия, использующие косвенную адресацию, алгоритмически можно изобразить с помощью уравнений присваивания. Обозначим через S(i) величину, хранящуюся в регистре R/. Рассмотрим пример: нажимаемые алгоритмическое нажимаемые алгоритмическое клавиши χ i χ [к] [ΊΤ] [к] рт] [ΊΓ] [π] (ΊΕΓ Ε содержание действия /-RD X-S(RD) /^R6 R6+1 ~R6 X~S(R6) *-^R3 клавиши [ил] Ί5] содержание действия i J Ji £l_ 10 Ijl лп\ Ε '0Ш ^00[3] R3-1-R3 X*S(R3) S(RD) ~X /^R6 R6 + 1 - R6 S(R6)^X /[п][з] /^R3 [к] [ИП] [Τ] R3 - 1 ^ R3 S(R3)-^X С помощью косвенной адресации в регистрах R4, R5, R6 можно организовать счетчики "вперед", а в регистрах RO, R1, R2, R3 - счетчики "назад". Попробуйте ввести следующие программы: иии π к Θ И Θ И записать X повторить, roX~ 5 Л ип за т 0 icai гь ИП X повторить, Д о Х = = ( 3] JL С помощью регистров R7, R8, R9, RA, RB, RC, RD можно составить программу, которая определяет целую часть числа χ > 1: х 0Ш Ε ЁП] Ш И 0 записать int(x) Регистры с косвенной адресацией можно эффективно использовать для автоматизации ввода в регистры списка чисел. В предыдущем параграфе была рассмотрена задача по определению среднего роста. При решении этой задачи результаты измерений необходимо было ввести 6* 163
в регистры R1, R2, . дующей программы: ., R5. Это можно реализовать с помощью еле- X Е)ШН ι Ε 01] [ип] [ΊΓ] повторить, до / = 5 ID Сложение значений измерений можно реализовать с помощью столь же короткой программы: ΊΠ [Щ ПГ ΕΙ Ι ΒΘΗΗΞ НИ повторить, доХ= 1 в записать сумму Изменение адресов можно использовать и в других расчетах. Допустим, что надо получить квадраты чисел 11, 12, . . ., 20. Вычисления проводятся по программе: ю И Ш I F | |х2| записать X 0 Θ [Т| [йгт| [Т| повторить, доХ= 20 164
ВОПРОСЫ И УПРАЖНЕНИЯ 2. 4. 5. Нажать клавиши: Π В 121 искать число 121? Вызовите его. Нажать клавиши: Π К | |П || В |. В каком регистре следует ИИ НЕЕ ШИ·в каком регистре записано число 5/9? Набрать на клавишах 9 Π и трижды нажать клавиши И [ип] и Какое число теперь записано в регистре RO? Как это выяснить? По программе выделения целой части числа, приведенной в этом параграфе. рассчитать целую часть 22 Μ 10 , где Μ — номер месяца 1, 2, 12. Найти также целую часть числа 365,25 · G, где G — год (1957, 1961, 1986}. С использованием косвенной адресации для регистра R5 записать в регистры А, В, С год, месяц и день своего рождения, например 1965, 3, 22. Выполнить приведенную в параграфе программу ввода в регистры R1, R2, , R5 значений измерений х. , а также программу вычисления их суммы, если х1 я 176, х2 ss 180, *3 » 176, *4 » 178, xg « 177. Преобразовать приведенную в параграфе программу вычисления квадратов так, чтобы можно было вычислить квадраты чисел 21, 22,. . „ 29. 5.4. ПРОГРАММНОЕ УПРАВЛЕНИЕ МИКРОКАЛЬКУЛЯТОРА Рассмотрим простую задачу определения расстояния до линии горизонта, если известны диаметр планеты D (в тыс. км) и высота h (в м) места, где находится наблюдатель. Например, диаметр Земли 12,74 тыс, км. Запишите это число в регистр RD. Так как расчетная формула s = \JD · h> то соответствующая клавишная программа имеет следующий вид 12,74 [п] [Б] Щ 0ИШ IvH записать ; Выполнив эту программу при /г «2 м, получим 5 = 5,0 ... км. Если мы хотим узнать расстояние до горизонта с другой высоты наблюдения, нужно изменить только значение h и повторить 2-ю строку программы. Как уже говорилось, микрокалькуляторы БЗ-34, МК-54, МК-56 имеют программную память. Нажимая клавиши, мы можем записать в эту память названия стандартных программ и затем заставить калькулятор автоматически выполнять их в той последовательности, в какой они были записаны. Другими словами, если микрокалькулятору один раз 165
продемонстрировать, какие клавиши необходимо нажать для решения какой-нибудь задачи, он способен абсолютно точно повторить указанные действия. Человек же, повторяя вычисления по написанной программе, может и ошибиться. Чтобы микрокалькулятор выполнил действия по вашей программе, его нужно "обучить". По команде |F| |ПРГ"| микрокалькулятор переключается в режим "обучения". Запишем теперь полный список всех тех инструкций, которые необходимо выполнить, чтобы "научить" микрокалькулятор автоматически вычислять расстояние до линии горизонта. Для контроля за правильным вводом инструкций во второй графе помещенной ниже таблицы дается показание индикатора, в третьей графе разъясняется содержание вводимой инструкции. Микропрограмма Показание индикатора Комментарии В/О ИИ [йп D FJ У 00 6Г 01 [Ϊ2 6Г 02 I [21 12 6Г 03 I гашение регистра X установка счетчика шагов на нулевой шаг (на начало) переключение микрокалькулятора на режим программирования ("обучения") ; на индикаторе виден номер шага программы символ 6Г является кодом наименования программы "Вызов копии числа из регистра RD"; число 01 показывает, что название следующей микропрограммы запишется в шаг 01 число 12 является кодом программы "Умножение", символ 6Г — код предыдущей программы, 02 — номер следующего шага 21 — код программы "Квадратный корень"; эта программа находится на 2-м шаге, число 12 является содержанием 1-го шага (точнее, программы с кодом 12), а символ 6Г — содержание (код) нулевого шага 166
cm 50 21 12 04 Ш И 12,74 |7Г| [5 2 [в/о] ic/ril 12,74 12,74 5,0477717 50 — код команды "Стоп", записанной в 3-м шаге, значения остальных кодов см. в предыдущих комментариях переключение микрокалькулятора в режим автоматических вычислений ввод диаметра Земли в регистр X копирование содержимого регистра X в регистр RD гашение регистра X ввод высоты наблюдения установка счетчика шагов программы на нулевой шаг (на начало программы) команда "Пуск" для выполнения автоматического счета по введенной программе; после выполнения на индикаторе видно расстояние (в километрах) до линии горизонта По команде "Пуск" микрокалькулятор работает следующим образом: вызывается и выполняется программа, записанная в указанном шаге, затем значение счетчика шагов увеличивается на единицу и читается название программы, записанное в следующем шаге,и т. д. Чтобы микрокалькулятор мог производить автоматический счет по составленной программе, следует выполнить следующие операции. 1. Переключить микрокалькулятор на режим программирования: В/О F ПРГ 2. 3. 4. 5. Ввести программу. Переключить микрокалькулятор на режим автоматической работы: Ввести в регистры памяти константы, используемые в программе. Ввести входные величины, запустить программу и после ее выполнения считать с индикатора результаты. 167
Сравнивая программу, которую выполняет человек, нажимая нужные клавиши, с программой, осуществляемой в автоматическом режиме, мы замечаем одну важную особенность. Программа, предусмотренная для работы в автоматическом режиме, обязательно должна содержать 'Стоп" (клавиша команду бесконечно много раз С/П ), иначе вычисление будет повторяться Программная память образует кольцо и после выполнения 98-го шага микрокалькулятор возвращается к началу программы. Как мы позже увидим на примерах, команда "Стоп" может находиться и в середине и даже в начале программы, но она обязательно должна быть. Теперь по данной программе мы можем повторить расчеты какое угодно число раз. Чтобы вычислить расстояние от наблюдателя, находящегося на высоте h = 8 м, до линии горизонта, остается на клавишах набрать 8 В/О С/П или в общем случае А В/О С/П Используя введенную программу, определите, как далеко вы видите, находясь на башне церкви Петра (h= 70 м), в самолете (h « =а 10 000 м), в космическом корабле (h = 200000 м). Как мы уже выяснили, каждой клавишей вызывается соответствующая программа. Название этой программы написано на клавише, напри- ГйгП мер. X . Было бы очень хорошо, если бы в режиме ввода программы при нажатии клавиши [Xj на индикаторе появился знак X (знак умножения). Однако вместо него появляется число 12. Это связано лишь с ограниченными техническими возможностями индикатора — знак умножения на семисегментном индикаторе нельзя отобразить. В последнее время в некоторых странах стали производить программируемые микрокалькуляторы с 16- или 35-сегментными (точечными) индикаторами для изображения цифр, букв и математических символов. на индикаторе такого микрокалькулятора Познакомимся теперь с названиями кодов [Β7ΰ| [Г] [ИРГ] . На ин- X При нажатии клавиши появится знак умножения некоторых программ. Нажмите клавиши дикаторе появится 00. Это означает, что микрокалькулятор переключен на нулевой шаг режима программирования. Если вы сейчас нажмете клавишу [+J , на индикаторе будет виден код программы "Сложение" — число 10. Нажмите клавишу ПП для вызова программы "Вычитание", 168
и на индикаторе появится число 11. Далее даются коды названий некоторых программ (проверьте их на своем микрокалькуляторе) [Г]02; 0 ОГ; 00-; 0020; 0047; (ип) 067; Ι*-; И ИИ L7'* η к [ИП] 0 Г7; 0 0 1С. Полный список кодов программ содержится на форзаце данной книги. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Скорость (км/ч) приземления спортсменов при прыжках в высоту, с шестом, в воду можно вычислить по формуле ν = у 254 . h Если число 254 записать в регистр D, то скорость приземления можно узнать, нажав клавиши 254 ИИ h (ип) 000 (^записатьу Какой командой следует дополнить этот список клавишных операций, чтобы этой программой управлять автоматической работой микрокалькулятора? Записать полную инструкцию работы с программой для этой задачи на микрокалькуляторе. Выполнить все действия, записать показания индикатора и определить, с какой скоростью приземляется спортсмен, прыгая в высоту (Л = 2,5 м), с шестом (Л = 6 м), в воду (h = 11 м) ? Изучите обзорную картинку этой главы. 2. Нажать клавиши |С I |В/0| I F | |ПРГ| и прочитать коды команд, которыми вызываются программы Γ7Ί, U^J\ |вп] , ПП , Щ] , ГгП0 , (и^рТ π "в1 Можете ли вы сказать, какие существуют закономерности в записях кодов команд арифметических действий, посылки чисел в регистры, вызова чисел из регистров, цифровых клавиш? На индикаторе высвечивается запись 50 1С 67 03 , Кодом какой команды является 67 (1С, 50)? В каком шаге программы записана команда с кодом 67, в каком шаге — с кодом 1С и с кодом 50? Что показывает счетчик шагов? Что вычисляется по этой программе? . Что записано в 6, 7 и 8-м На индикаторе высветилась запись шагах программы? 01 0- 03 09 169
5. В микрокалькулятор требуется ввести программу, по которой находят целую часть числа (см. $ 5.2). Составить программу, записать коды команд и инструкцию обслуживания. Проверить программу, вычислив int(3,14), int(10,59), int(122,36). Найти int(365,25 X G), если G= 1985, G = 1986. 5.5. ПРОВЕРКА И ИСПРАВЛЕНИЕ ПРОГРАММЫ с/п , то Если программу, данную в § 5.2, дополнить командой можно автоматизировать определение наикратчайшего расстояния между городами. Нажмите клавиши |В/0] , |θχ| и переключите микрокалькулятор в режим программирования | F | [ПРГ] . Теперь введите программу, нажимая указанные в таблице клавиши. Вводя программу даже такого небольшого объема, нет гарантии, что при этом не допущены ошибки (пропущена операция, вместо нужной клавиши нажата другая и т. п.). Поэтому всегда есть смысл проверить список кодов введенных команд, т. е. сравнить их с таблицей. Для этого пользуются клавишами нажимайте клавишу ШГ ШГ| (шаг вперед) и I ШГ| (шаг назад). Теперь до тех пор, пока на счетчике шагов не появится число 10. Если в этом месте программа введена правильно, то на Если на инди- 12 1Г 6С 10 индикаторе должны появиться символы каторе отобразились другие коды, то их нужно исправить. Пока вы еще не приобрели достаточных навыков в исправлении ошибок, лучше вернуться к началу программы. Нажмите клавишу |ШГ"1 столько раз, пока на счетчике шагов не появится 00. Если теперь клавишу 1Шм нажать один раз, на индикаторе отобразится содержимое нулевого шага еще раз, на индикаторе должен появиться символ 6Г ШГ 6 L, нажав Допустим, что это ошибка и в 1-м шаге должен быть код 60, соответствующий вызову числа из нулевого регистра. Чтобы исправить эту ошибку, поступим следующим образом: нажав клавишу немея на шаг назад и запишем правильную команду Ш£ , вер- ИП . На индикаторе появится 60. Чтобы эта ошибочная команда в программе все- таки не осталась, вернитесь еще раз на шаг назад и запишите в 1-м шаге соответствующую нашей программе необходимую команду |ИП| | D | Далее, с помощью клавиши |ШТ| просмотрите содержимое других шагов, и, если оно не совпадает с кодом, данным в программе, исправьте 170
Программма "Расстояние между городами" Номер шага 00 01 02 03 04 05 06 07 08 0Θ 10 11 12 13 14 15 16 17 18 I 19 Какие клавиши следует нажать [йгЦ (~в~| И [д] В ΘΘ (ил) 0 ΕΘ И ИИ ΘΒ Ξ Гигт] [а] [f] [sinl [ип] [с] |F | |sin| Ξ И |F 11arccosl B0 0 [c/n] Код команды 6L 6Г 11 1Г 6- 1Г 12 6С 1Г 12 6- 1С 6С 1С 12 10 1- 61 12 50 Номер следующего шага 01 02 03 04 05 06 07 | 08 09 10 11 12 13 14 15 16 17 18 19 20 | 171
If ошибочное место, как это было указано ранее: нажав клавишу вернитесь на один шаг назад и нажмите нужные клавиши. Сравнением списка названий микропрограмм проверка еще не заканчивается. Микрокалькулятор нужно еще переключить на режим автоматической работы (нажать клавиши |_FJ | АВТ[ ) и проверить программу по тесту, т. е. провести расчеты По введенной программе, заложив в нее данные примера с известным ответом. Введем в регистры R1, RA, RB, RC, RD константу 111,2 и географические координаты Риги и Москвы: 111,2 0 [Г); 56,95 [Η] 24,12 55,75 ГвТо с/п ; 37,62 [ΊγΓ] [5j и запустим программу, нажав клавиши | В/О Приблизительно через 15 секунд на индикаторе должно появиться число 841,03. . . км. Если это так, то поданной программе можно смело проводить расчеты для других городов. Если требуется найти расстояние от Риги до другого города, то нет необходимости заново вводить координаты Риги, надо лишь задать координаты второго города и запустить программу. Если проверка по тесту показала, что программа ошибочна, следует проверить программу по шагам. Для этого прежде всего нужно нажать , установив тем самым счетчик шагов на начало. Затем (пошаговое прохождение программы), на индикаторе появится число 24,12 — содержимое регистра RB. При повторном нажатии клавиши На следующее нажатие клавишу В/О надо нажать клавишу ПП ПГ1| на индикаторе высветится число 37,62. 13,5. Таким индикатор отвечает числом образом можно проследить за каждым шагом программы. Если при записи программы в память была пропущена какая-либо операция, то всю ту часть программы, которая следует за последней правильной операцией, нужно ввести заново. Если же какая-либо операция оказалась в программе лишней, то на ее место можно записать пус- (клавиша К и К НОП тую операцию, которую вводят клавишами нулевая клавиша). Допустим, что в микрокалькулятор записана программа оо (игу [а] 6- 01 [Q ОЕ 02 Ш И 6L 03 [Χ] 12 04 Гслт! 50 172
На шаге 01 записанная команда [ f | лишняя. Поэтому в режиме программирования с помощью клавиш счетчик шагов на 01 и набираем Ш£ ШГ устанавливаем К НОП — на индикаторе появляется код команды "Нет операции" — 54. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Ввести программу "Расстояние между городами" и найти расстояние от Риги до Вильнюса [φ « 54,88, λ = 25,27), от Риги до Таллина (φ ~ 59,43, λ = *= 24,75) и от Риги до других городов, географические координаты которых даны в приложении. 2. Переключить калькулятор на режим программирования и ввести данную в ИШ0 конце этого параграфа программу мощью клавиши И Π [в] [χ] [c/nj . Спо- ШГ| вернуться на 1-й шаг и записать в нем пустую операцию К НОП Переключить микрокалькулятор на режим автоматического вы- .7 0Н. числения и проверить программу по такому тесту: 4 1в7о| (с7п \п "а] . На индикаторе должно появиться число 28. Это свидетельствует о том, что "стрелка" в программе лишняя и пустая операция не мешает выполнению программы. Набрать В/О и с помощью клавиши ΙΠΠ выяснить, каков результат выполнения на каждом шаге. Ввести в регистры RA и RB другие числа (например, 237 и 784; 1986 и 365,26) и вычислить произведение этих чисел. Записать программу вычисления среднего арифметического пяти значений измерения (см. § 5.2). (Не забудьте, что программу необходимо закончить ,} Пронумеро- командой "Стоп", которая вводится нажатием клавиши С/П вать операции, начиная с шага 00, записать код каждой операции. Переклю- И чить микрокалькулятор на режим программирования ( |с ПРГ В/О ) и ввести программу. Просмотреть программу с помощью клавиш И, Ш1 нажав клавиши . Исправить найденные ошибки. Вернуться в режим вычислений, | F [ I АВТ| . В регистры R1, R2, R3, R4, R5, R6 ввести " ), числа 176, 180,176,178,177, Б и запустить программу ( ГсП |"в/Ь| С/П Через 4 секунды на индикаторе появится число 177,4. По этой же программе вычислить средний рост для пяти мальчиков (девочек) своего класса. В таблице дана программма перевода времени из часов, минут и секунд а часы, и десятые доли часа. Но в инструкции пропущены некоторые операции. 173
Записать эти операции и выполнить верить программу по тесту 2Ч8М13С s Номер Название Код шага микропрограммы 00 01 02 03 04 05 06 07 08 09 00 ИИ и ИИ и ни и ни и |с/п| 6С 61 13 6L 10 61 13 6- 10 50 инструкцию работы с программой. Про- = 2,13694... 1. Подготовить микрокалькулятор к введению программы ππαα 2. Ввести программу 3. Переключить микрокалькулятор в режим автоматической работы 4. Ввести значения 60 Π 1 \ .h НИ гЛ [в] ни 5. Запустить программу □ □ С помощью этой программы можно выразить в градусах и десятичных долях градуса угол, заданный в градусах, минутах и секундах. Вычислить географические координаты Риги (5б°57'; 24°7'12") в десятичной форме. 5.6. ПОДПРОГРАММЫ Для составления программы, соответствующей алгоритму "Календарь XX столетия", надо использовать метод выделения целой части числа, рассмотренный в § 5.2. В упомянутый алгоритм входит вспомогательный алгоритм "int", который состоит из 6 операций и используется повторно 4 раза. В программируемом микрокалькуляторе предусмотрена возможность таких частей программы, по которым расчеты во время выполнения программы нужно проводить повторно несколько раз, записывать только один раз как вспомогательную программу, или подпрограмму. Распределение величин по адресам: [~12 R0 1900 R1 365,25 R2 30,59 R3 Sviq R4 49 R7 107 R8 5/9 R9 G RA Μ RB D RC η RD (в регистр R7 записан адрес начала подпрограммы "int" - 49). 174
Запишем алгоритм "Календарь XX столетия" (см. § 5.2) сначала с именами величин, потом с адресами регистров и, наконец, на языке команд микрокалькулятора. 5—int 12-Μ 10 G~G- 1900 -S M+M+12-S-2 п~- int(365,25G) η — int(30,59Af + η + D + 29) q^\nt(n/7) X~ n-1 -q стоп Шаги 00-07 int((R0-RB) : 10)~R4 RA - R1 - R4 *-RA RB - R0 · R4-2 *RB int(R2.RA)—RD int(R3-RB+ RD+RC + 29)^RD int(RD: 7)~R4 RD-7 -R4~X стоп 08-13 14-21 22-26 27-38 39-42 43-48 49-55 ИПО60 ИПА 6 ИПВ 6L ИП2 62 ИПЗ 63 2 °2 707 ИПй61" ИП969 ИПВ 6L ИП1 61 ИПО60 ИПА 6_ ИПВ 6L 909 л13 ИП464 _ 11 11 - 11 ИП464 X12 X12 +10 КПП7 ~7 707 ИП868 1 01 ИП464 X12 КПП7 ~7 КПП7 ~7 П04Г П4441 Χ12 + 10 о00 11 + 10 П04Г ипо6г _ 11 ИП868 ■f 13 ПА4- 2 02 КПП7 7 44 П4 ** 11 пв 4Ч + 10 С/П50 11 ИПС 6С + 1°П В/О52 В калькуляторах MK-61, МК-52 подпрограмма содержит всего две команды К | [х ]| [В/О] , а регистры R8 и R9 не используются. 175
Обратим внимание на микропрограмму [_к] |ПП| | 7 | , которая записана в 6, 25, 30 и 41-м шагах. Дойдя до 6-го шага, микрокалькулятор, как всегда, увеличивает значение счетчика шагов на единицу и "уходит" в адрес, записанный в регистре памяти R7. В этот регистр запишем число 49, поскольку с 49-го шага начинается подпрограмма "int". Когда микрокалькулятор дойдет до 55-го шага, он исполнит команду В/О "возврат обратно" и вернется на 7-й шаг. Чтобы можно было контролировать ввод программы, при каждой клавишной операции записан код команды. Инструкция работы с программой "Календарь XX столетия" ПРГ| . 2. Ввести программу. 3. [Т] | АВТ | . ; 1900 [Π] Η ; 365,25 [П] [2] ; 7ИИ'5Ш9Е1И 9 [п] Ц] ; 1 0 В/О Ввести константы 12 30,59 П Π 49 Π ВП 9 5. Проверка: 1986 ΙΓΊ В/О С/П . Через 25 секунд на индикаторе должно появиться число 1, означающее, что 1 сентября 1986 года будет понедельник. Нажав клавиши [ИП] [ Р| , мы узнаем, что с 31 декабря 1899 года прошло 31 655 дней. 6. Теперь можно применять программу для любой даты: , номер дня в месяце |Т^ [cj , год Π , месяц Π В 17о| ГсТгТ К подпрограмме можно обращаться также прямо по команде ПП т J , указав номер шага пт, с которого начинается подпрограмма Эта команда занимает два шага. При составлении программы адрес шага нужно лишь взять в рамку, но не заполнять. После того как записана основная программа, мы можем узнать начальный адрес подпрограммы, который запишем в зарезервированных шагах адресов. Составим программу счета по алгоритму "hms •**h/ h", рассмотренному в § 4.8. Алгоритм "hms -*>h,h" с-1,</^0 00-03 [Τ] [Π 3 И ГЛГпрг ΕΙ ΕΙ х I h ] ·» ? вспомогатель- 04-06 |С/П| [пп] \Y \ 4| ный алгоритм 1 Через Ж обозначено двузначное число с цифрами η и т. 176
χ [ m] —- ? вспомогатель- 07-09 |C/fl| | ПП] 11 | 4| ный алгоритм __^__ х[ s ]«·-? вспомогатель- 10-12 |С/Г1| |ПП| | 1 | 4| ный алгоритм стоп Вспомогательный алгоритм d -· χ/с + d с-*-с -60 сообщить d 13 С/П 14-18 |ип | с[ (Т| |ип | р| [+] |п I р| 19-23 |ИП | CJ ЩИ Ξ ln I cl 24 ИП 25 (В/О) (F][ABT) Этой программой можно имитировать оператор калькуляторов МК-51, МК-71 [с] на индикаторе: 0 инженерных В/О С/П на индикаторе: 0 МК-51 2Ρ ' "[на индикаторе: 2 БЗ-34 2 |С/П| на индикаторе: 2 и 30 РЗЭ на индикаторе: 2,о 30 С/П на индикаторе: 2,5 МЮ71 36 1° ' "[на индикаторе: 2Г51 36 |с/п] на индикаторе: 2,1 Если в программе требуется исправить адрес подпрограммы, то нужно исправить также предыдущий шаг, другими словами, адрес можно . Если к подписать только после того, как написана инструкция программе обращаться командой [к] ПП ПП [ν| , то в качестве N рекомендуется использовать 7, 8,9,A,B,C,D. Соответствующие регистры R7r R8r R9, RAr RB, RC, RD в вычислениях использовать нельзя, поскольку там хранится адрес начала подпрограммы. ВОПРОСЫ И УПРАЖНЕНИЯ 1. С помощью программы "Календарь XX столетия" определить, какой сегодня день недели. Какой день недели приходится на ваш день рождения в этом году? Вычислить «для следующих дат: 22 июня 1941 года и 9 мая 1945 года. Сколько дней продолжалась Великая Отечественная война? Пользуясь 55°45' уясь программой "hms -»»h, h", пересчитать географическую широту >' и долготу 37 37Ί2" Москвы,рекордное время в беге на 10 км 27М22,6С. 177
5.7. БЕЗУСЛОВНЫЙ ПЕРЕХОД Программируемый микрокалькулятор удобно применять при табулировании функций, в численных экспериментах и математических играх. В этих случаях одна и та же программа используется много раз. Однако для того, чтобы микрокалькулятор начал выполнение рассмотренных до этого программ, каждый раз следует нажимать две клавиши . Нажатие клавиши В/О С/П В/О возвращает счетчик шагов на нуль 00 (начало программы). Этот возврат можно также автоматизировать с , которая означает безусловный БП помощью команды переход на нулевой шаг. Эту команду можно использовать как в самой программе, так и в работе над ней. Используем ее в игре "Найди квадратный корень": Ε [в/о] ПРГ 3 Θ |БП| |0 0] |F АВТ] В/О В счетчике шагов сейчас 04, поэтому перед началом игры в счетчик надо вписать 00. До сих пор мы это делали с помощью клавиши перь же используем безусловный переход. Набираем проверяем: БП , те- и 2,3 С/ГН на индикаторе: 5, 29, следовательно 2,3 > у/Б , 2,2 С/ш на индикаторе: 4, 84, следовательно 2,2 < \fb , 2,25 [С/П] на индикаторе: 5,0625, следовательно 2,25 > V~5 . Очевидно, значение \/"Т> находится между числами 2,2 и 2,25. Продолжайте попытки и найдите значение \/~5 с максимально возможной точностью. Не обязательно начинать программу с нулевого шага. Используя безусловный переход, программу можно записать начиная с любого шага. Если, например, мы хотим записать программу начиная с 35-го шага, то нужно нажать клавиши |БП) [з[ [δ) (на индикаторе ничего не меняется), а затем набрать [FJ | ПРГ] (на индикаторе: 00 00 00 35). Нажмите указанные клавиши и запишите, начиная с 35-го шага, программу нахождения приближенного значения кубического корня, в которой используется только команда вычисления квадратного корня (см. ξ 3.2). 178
Программа "Кубический корень, >4 >0" 35 А-х П гх-» -\/\/А* χ 36-39 сообщить χ 40 повторить [ил а| х)1ЕЕ31ГИ E0J 41-42 L[in) |з | б| После ввода программы по командам | F | АВТ и [БП][3][5] возвращаемся в режим автоматической работы и записываем в счетчик шагов начальный адрес программы. Для вычисления, например, v807 — на индикаторе поя- Для определения следующих приближений нужно и считывать значение очередного при- С/П вводим число 80 и нажимаем клавишу [ С/И вится число 8,94 нажимать лишь клавишу ближения. При безусловном переходе, так же как и при вызове подпрограммы, можно использовать косвенную адресацию. Запишем в регистр R9 число 70: 70 (7Г| 9 и нажмем клавиши [К БП 9 F П Ρ Г на индикаторе высветится 00 00 00 70. Запишем, начиная с этого шага, программу табулирования функции у =ах2 + Ьх + с = (ах + Ь)х + с с шагом б?. Программа "Табулирование квадратного трехчлена" гт-у - (ах + Ь)х + с 70-78 »- сообщить х, у 79-80 >x—x+d 81-84 85 ИП ИП 1ип 1 11 0 ип 1 1| [с/п ИП [ип | 1| |ип | о) (Т| |п | 1| к БП ~9^ Нажав клавиши [?J | АВТ К БП 9 , возвращаемся в режим автоматической работы и в счетчик шагов записываем начальный адрес, который хранится в регистре R9. Произведем табулирование функции у = —0,057х + 0,38х + 1,14, которая описывает траекторию 179
центра массы спортсмена из США Б. Бимона, установившего мировой рекорд в прыжках в длину. Введем константы: 0,057 /-/ П ,0,38 И Ε ,1,14 [Л] [С], 1 ϋϊ [^ и начальное значение аргумента xQ = 0: | С^ [ίΤ| [ϊ| . Теперь мы можем табулировать и вычерчивать траекторию: 0, С/П на индикаторе: xQ Ж С/П на индикаторе: х1 = 1, С/П нажимаем клавишу на индикаторе: у0 = 1,14 нажимаем клавишу |^Υ| на индикаторе: j1 « 1,463 на индикаторе: х2 = 2, нажимаем клавишу |jC?| на индикаторе: j2 = 1,672 Используя команду Гк~" БП N] , нельзя забывать уже рассмотренные правила косвенной адресации. Если iV= 7, 8, 9, А, В, С, D, то после команды | К | БП | Ν | в счетчик шагов записывается число, находящееся в регистре RN. Если N = 4, 5, 6, то число в регистре RN прежде всего увеличивается на единицу, а если N— 0, 1, 2, 3 — уменьшается на единицу. Преимущество команды | К | БП | N\ заключается в том, что для организации безусловного перехода используется только один шаг программы и адрес перехода можно записать в регистр RN позже, тогда, когда микрокалькулятор будет переключен на режим вычислений. С помощью безусловного перехода в микрокалькулятор можно записать несколько программ и при необходимости обращаться к каждой из них. ВОПРОСЫ И УПРАЖНЕНИЯ 1. θ программах "Найди квадратный корень" и "Кубический корень" изменить адреса перехода так, чтобы эти программы начинались соответственно с 17-го и 24-го шагов. Проверить программу на примерах, данных в тексте. Вычислить по введенным программам квадратный корень из значения своего роста (в сантиметрах) и кубический корень из значения своей массы (в килограммах), 2. Записать программу "Табулирование квадратного трехчлена" начиная с 52-го шага. Решить задачу № 6 § 3.4, если а = 39 . Вычертить траекторию полета ядра. На каком расстоянии упадет ядро? 3. Записать программы для табулирования функций, данных в задачах § 3.4, 180
4. По программе "Математическая обработка наблюдений", приведенной в приложении, вычислить среднюю продолжительность месяца простого и високосного годов (см. у 1.8). 5.8. УСЛОВНАЯ ПЕРЕДАЧА УПРАВЛЕНИЯ. РАЗВЕТВЛЕНИЯ В программируемом микрокалькуляторе работой управляет счетчик шагов. Когда устройство управления заканчивает выполнение какой- либо команды, число в счетчике шагов увеличивается на единицу (т. е. выполняется команда S*+- S + 1} и микрокалькулятор переходит к выполнению команды следующего шага. Когда в устройство управления поступает команда безусловного перехода | БП | 0 | 0| или [к] БП| |9| , то в счетчик шагов записывается новый адрес, т. е. выполняется команда S-*- 0 или команда £-·- R9, где R9 является содержимым 9-го регистра, и затем выполняется команда, записанная в соответствующем шаге. Содержимое счетчика шагов можно менять также в зависимости от результата проверки условия X = О (Χ Φ О, X < О, X > 0). С помощью команд условной передачи управления (команд перехода по условию) можно образовывать разветвления и циклы. Познакомимся с формированием разветвления в программе "Абсолютное значение". В последней колонке показано, какие изменения происходят в счетчике шагов. в и° ПРГ 5*0 |F [Х<0| | 0 | 3| если χ < 0, то 5- S + 2, иначе S—- 3 (77] 5-5+1 [f~ АВТ X— ? если χ < О 00-01 то х-- ~х 02 сообщить χ 03 Проверка программы: III E3 11° торе: 3. Так же как и при безусловном переходе, в условной передаче управления можно использовать косвенную адресацию. В этом случае команда перехода по условию занимает в программе только один шаг, но адрес нужно записать в каком-либо регистре памяти. С командами перехода по условию [f Г~Х < 0| \п т\ или С/П на индикаторе: 3. В/О С/П на индика- 181
|Κ Ι Χ <б] \Ν] можно образовывать только простые разветвления если.. . то ... .На практике же чаще требуется использовать полную команду разветвления если . . . то . . . иначе. Для формирования такого разветвления нужно использовать безусловный переход. Ознакомимся с таким разветвлением в программе "Номер дня в году" (см. задачу 1 в §33 и алгоритм в $4.5). Программа "Номер дня в году" 0 И ПРГ если ft > 3 то d— О b*b-2 иначе ί/-* R3 b-+ b + 10 χ— R1 -b-d + + c+ R2 i/-»int(x) сообщить d 00-04 05-06 ип l в) 0 El lF I x>qI HjD 07-12 [ипТв| [J] В ИЗ ЁЭ 13-14 ИП Π 15-19 20-28 ИП НИВШЁ ИП ИП 3 Η |й^ Ξ 29-32 |П 33 ИП ИП ΙΞ ИИ с/п |f авт! Вводим константы: 30,59 [π] [Τ] , 29 года 30 [π] [Τ] f 366 варя и 31 декабря: 1-00 1 η , 365 Π (в случае високосного и проверяем программу для 1 ян- П В/О С/П на индикаторе: 1 12 0 0 31 [д] 0 [Β/θ! |C/nj на индикаторе: 365 (366) В последнем шаге строки 00-04 этой программы находится адрес 13, куда нужно перейти в случае невыполнения условия (для января и февраля) . Если условие выполняется, микрокалькулятор выполняет команды 05-12, которые заканчиваются безусловным переходом на 20-й шаг. Напомним, что при выполнении последовательности команд после слова то, последовательность команд после слова иначе не выполняется — ее следует обойти. Этот обход и достигается с помощью безусловного перехода. 182
ВОПРОСЫ И УПРАЖНЕНИЯ 1. По программе "Номер дня в году" вычислить, каким днем в году является 1 июня, 24 июня, 1 сентября, ваш день рождения. 2. Записать программу "Абсолютное значение" начиная с 52-го шага, использовав и после команды С/П для перехода по условию команду | К | |Х <sO| записав еще команду |БП| | 5 | | 2 | . Проверить программу при χ ~ —7, χ « 0,4, χ » —0,01. Нельзя забывать, что после ввода программы в регистр R9 надо записать требуемый адрес перехода, а в счетчик шагов — начальный адрес программы. Закончить программу "Обращение римского числа в десятичное" В/0| |F | ПРГ| 00-02 С если a Kb jgc-^-c-a 10-15 иначес^с+а 16-19 Z>— a 20-21 сообщить с 22-24 Π В Π 03-04 [с/п] [Н 05-09 imDmm η DC DC ]D ИП F | АВТ| | В/О | | С/П | Проверить программу на примере CXLV = 145. Ввести значение последней цифры 5 и нажать клавишу I С/П I — на индикаторе: 5. Ввести значение сле- — на индикаторе: 55. Ввести дующей цифры L — 50 и нажать клавишу значение цифры X — 10 и нажать С/П С/П цифры С — 100 и нажать клавишу С/П — на индикаторе: 45. Ввести значение — на индикаторе: 145. При переходе Ре- В/О С/П к следующей задаче не забывайте вначале нажать клавиши шить задачу для чисел: MCCI, MDCCCXLVllI, MCMXVIl, MCMLXXXVI (напоминаем значения цифр: I = 1, V « 5, X = 10, L = 50, С β 100, D « 500, Μ - 1000). Какие это года? 183
5.9. ПРОГРАММЫ С ЦИКЛАМИ В четвертой главе мы выяснили, что при решении сложных задач часто используются циклы. Для формирования циклов в программируемом микрокалькуляторе имеются специальные команды т_ L0 η т И 0 ИИ> \п т\ с помощью которых замыкается организация цикла. Начало цикла обозначает адрес пт. Буква L — первая буква английского слова Loop (петля, цикл). Цифры при букве L означают, что для формирования цикла используется один из регистров RO, R1, R2, R3. С помощью указанных команд можно формировать циклы от RN = к go 0 шаг — 1 . . . следующий RN. Когда в устройство управления поступает команда I F | lUVJ I п\ \т\ , гдеN= 0, 1,2,3,содержимое регистра RNуменьшается на единицу. Затем проверяется условие RN= 0. Если это условие выполняется, то команда цикла закончена, в противном случае команда цикла повторяется. Другими словами, устройство управления действует по следующему алгоритму: Шаг Команда Алгоритм работы устройства управления пт s+λ 5+2 UV [и т если RN>0 L' то s-* пт иначе s-- s + 2 Познакомимся с использованием цикла на простейшем примере. Многие, наверное, видели картину русского художника Н. Р. Богданова-Вельского (1868—1945) "Устный счет". На ней изображен урок арифметики в сельской школе в конце XIX столетия, который проводил профессор С. А. Рачинский, отказавшийся от работы в университете, 184
чтобы стать сельским учителем. На картине на классной доске записан пример: 1Q2 + 112 + 122 + 132 + 142 365 ~ ? Попытайтесь и вы устно решить эту задачу! Однако сейчас мы попробуем "научить" решать эту задачу не человека, а программируемый микрокалькулятор. Основную часть задачи составляет нахождение суммы квадратов хо2+ Ц) + 1)2+ (*о + 2)2 + ··· Вычисление этой суммы можно кратко описать с помощью цикла Программа "Сумма квадратов" ΓβΤοΙ Π ПРГ °°·01 Θ Г"Т"в] 02'06 1ИП I в1 1ИП I Al lF I х^1 ЕЕ от R3 = идо О шаг —1 b^b+a2 а^а +d следующий R3 сообщить Ъ стоп Введем начальное значение xQ =* 10, значение шага cfs1 и число повто- 07-10 |ИП| А| |ИП | Р\ [+] J Π I A) 11-12 13-14 ИП И Ш^\ Cf АВТ| рений 5: 10 , 1 . 5 Л _з_ Нажимаем клавиши В/О С/П . Приблизительно через 15 секунд получаем результат 730. Таким образом, ответ на задачу С. А. Рачин- ского 730/365 и 2. Так как в программируемом микрокалькуляторе есть команда ветвления, то можно формировать и такие циклы, число повторений которых заранее не известно. В этом случае можно использовать циклы повторить.. . д£ (условие) и пока (условие) .. . повторить. Чтобы ознакомиться с формированием цикла повторить ... до в программируемом микрокалькуляторе, преобразуем алгоритм "Кубический корень", рассмотренный в §4.6. 185
Программа "Кубический корень", а >0" ПРГ повторить с— \f/a^b 00-01 |П | А| [П J С| 02-оз |ип | с| |п | в| 04-09 ИП а) [ип | в[ [х] \~П7 10-12 13-18 [йгГ If Ы [с И F | Гйп | F | Х<0 Ij vl и DB |йп"[" w\ о] х—-с — Ь до 1 х| «d сообщить с, стоп Проверьте эту программу, вычислив кубический корень из 80 с точ- 0,01 19-20 [ИП | С) Гс/П |7~ АВТ| η 80 В/О С/П , на индикаторе: ностью d = 0,01 4,31. . . . Обратите внимание на строку программы 12-17! Абсолютное значение определяется возведением числа в квадрат и нахождением квадратного корня из результата1. В программируемом микрокалькуляторе можно также реализовать цикл пока . . . повторить, но в этом случае нужно использовать еще и безусловный переход. В качестве примера рассмотрим алгоритм "Остывание чая", рассмотренный в § 4.6. Величины 7"а — температуру окружающей среды, 7"с - температуру чая, 7"ь - желательную конечную температуру, константы D = 0,03 и время t запишем в адреса RA, RC, RB, RDn R4. Программа "Остывание чая" ί-0 0 Ш 00-01 [<D |П | 4| F ПРГ В калькуляторах MK-61 и MK-52 имеется оператор абсолютного значения, который вызывается командой Κ Ι | χ | I . 186
пока Гс > Ги ί— ί + 1 Тс~ К ~ ■rc»D+7"c 02-06 [Ζ 07 I 08-15 ИП Гс1 Х>0| к | ИП ИП | А ΡΊ 1 1 81 hi |ип ~s| с| 3Ξ ИЕ Ξ fmTTciRrnTcl 16-17 [En] |0 | 2\ 18-19 |ИП | 4| fc/ff] [f АВТ| повторить сообщить t, стоп В этой программе счетчик времени реализован в регистре R4 с использованием косвенной адресации. Программу можно проверить, проводя расчеты с числами 7" = 90° (начальная температура чая), 7"ь « =* 80° (конечная температура), 7"а = 20° (температура окружающей среды). В результате должно получиться число ί - 6 минут). Так как в программируемом микрокалькуляторе в командах условной передачи управления содержимое регистра X сравнивается с числом 0, то иногда в целях сокращения программы целесообразно преобразовать алгоритм. Убедимся в этом на примере программы "н. о. д. {а, Ь)" Программа "н. о. д. [а, Ь) " Первоначальный алгоритм пока а ФЬ если а >Ь тоа-*а — Ь иначе 6—-Ь -а повторить сообщить а Преобразованный алгоритм поках=а -ЬФО 00-04 ИП В/О] |F | ПРГ| ИП х^о[ [и еслих>0 05-06 |F [ Х>0[| 1 | θ[ тоз-х 07-09 [П I А| [бл] |1 I 2| иначе b^r-x 10-11 |/-/| | Π | в] повторить 12-13 |БП| | 0 | 0| сообщить а 14 |ип а] 187
стоп стоп 15 IC/ΓΊ pF" авт! Проверьте эту программу, вычислив по ней н. о. д. (35, 21} ВОПРОСЫ И УПРАЖНЕНИЯ 1. По программе "Сумма квадратов" найти 1,052+ 1,152 + 1,252 + .. .+ 1,952. Разделив полученный результат на 10, получить приближенное значение площади под кривой у = χ на отрезке Г 1:2]. Полученный результат сравнить с 3 3 точным значением площади (2 — 1 ) /3 = 7/3 « 2,333... . 2. Преобразовать программу "Сумма квадратов" (см. задачу 1) в программу "Сумма обратных величин" и вычислить 1,05 1,15 ...+ 1,95 Разделив полученный результат на 10, получить приближенное значение пло- 1 щади под гиперболой у * на отрезке [ 1; 2] .Сравнить с точным значением χ Ιπ2. 3. Заменив в программе "Кубический корень" третью строчку командой С — ~m-(a/b+ b)/2, получить программу "Квадратный корень". Вычислить по этой программе квадратный корень из 5 с точностью до 0,00001. 4. С помощью программы "Остывание чая" определить, за сколько минут температура чая упадет от 90 до 60 . 5. По программе "н. о. д." (а, Ь)" вычислить н. о. д. (630, 588), н. о. д. (26,39), н.о.д. (42,70). 6. Преобразовать в программы алгоритмы "Обращение десятичного числа в двоичное" и "Обращение двоичного числа в десятичное'' (см. § 4.6). Для выделения целой части числа использовать совокупность команд ΓΠΓΠΐ π | в] [к| ип | в| |ип | ΒίΓΠΗ 5.10. ПРОГРАММЫ С МЕНЯЮЩИМИСЯ ПОДПРОГРАММАМИ Можно записать многие алгоритмы, не связывая их с конкретными функциями. В предыдущей главе мы рассмотрели алгоритмы вычисления производной, интеграла, корней квадратного уравнения, наименьшего и наибольшего значений функции. В этих алгоритмах общая часть одинакова для всех функций. При решении конкретной задачи нужно менять только вспомогательный алгоритм. 188
Рассмотрим программу вычисления корня уравнения f(x) = χ. Β этой программе запишем подпрограмму для функции 1/ (1 +х). Корнем уравнения χ = 1/tl + х) является так называемое золотое сечение. Программа "Корень уравнения//^ = х" величина адрес m RB X RC е RD в/о [f ПРГ повторить т—■ χ х-fix) до | m - х\ < е сообщить х, стоп подпрограмма 1/(1 +х) 00 01-02 03-05 06-14 15-16 17-20 3 ип СП В пп ЩЦпЩ ип ип И [йпООИЗИИ 3 Ξ (Цх<о) ИЗ [ИП | С| \Ш\ 17-20 |Т|(Т| | F | 1/х | [В/О LL ~АВТ] Для получения значения золотого сечения с точностью е = 0,0001 . Выберем на- это число нужно ввести в регистр RD : 0,0001 ΓΊ чальное значение xQ « 2, наберем его и нажмем клавиши I В/О I | С/П приблизительно через 50 секунд на индикаторе появится результат 0,61801... . Эту же программу можно использовать и для решения других уравнений. В четвертой главе было рассмотрено кубическое уравнение χ = = (х +2) /4,5. Чтобы в подпрограмму ввести функцию f(xj, нужно нажать клавиши |БГ1| [Τ] [Τ] \Τ\ \ ПРГ"| и набрать подпрограмму ИШИ@Ш[в/0] .Нажав! ИП клавиши Ξ lABT| , вернемся в режим вычислений. Введем точность: 0,01 [Η] [р|, наберем начальное значение xQ = 0,5 и нажмем клавиши | Β/θ| | С/П] ; 189
приблизительно через 20 секунд на индикаторе получим приближенное значение корня 0,467... . При решении многих задач по физике требуется найти наименьшее или наибольшее значение функции. Такова, например, задача об изготовлении максимального объема коробочки из листа бумаги размером 20 см X 15 см, задача отыскания наикратчайшего пути и другие задачи. В четвертой главе мы познакомились с алгоритмом, который в данном списке находит наименьший (наибольший) элемент. Если человеку необходимо найти наименьшее значение какой-либо функции, то наиболее простой способ — произвести табулирование функции и после просмотра списка ее значений найти нужное. Однако как табулирование функции, так и поиск наименьшего значения можно автоматизировать, поэтому объединим обе эти задачи в одном алгоритме. Рассмотрим задачу об отыскании наименьшего значения функции cosx в промежутке Μ60°; 200°], просматривая значения этой функции через каждые 10 . В регистры RA и RB запишем соответственно начало и конец просматриваемого промежутка, в регистр RD — шаг просмотра, в регистр RC — значение аргумента. Регистры R2 и R1 резервируем для наименьшего значения функции и соответствующего значения аргумента, а в регистр R3 будем заносить значение просматриваемой функции в данной точке. Программа "Наименьшее значение функции" величина рдрес Хнач RA Хкон RB X RC Δχ RD S< [ xmin R1 Ш\[ •*min R2 F | ПР У R3 D xmin"* *■* *нач повторить х-· χ + Δχ если у(х)*+ у min ^Хпт-Х'Упп-У 00-02 |ИП |А| ffffc] рТ[7| 03-05 |ПД| |2 | 8| | Π | 2| 06-оэ |ип | с| | ип | р| [Т| j π | с| 10-15 [ПИ] |2 | 8| | ИП | 2| \^\ If | х<о| |2 | о| 16-19 | ИП | С| |П | 1[ [ЙП~ ШЕИ 190
ДОХ=Х 20-24 И Π С ИП UB F Х=0 0 6 сообщитьxmin,vm|n, стоп 25-27 |ИП | 2| |ИП | 1| |С/П 3 1П I 3 подпрограмма у -* cosx 28-30 F cos АВТ Инструкция работы с программой "Наименьшее значение функции". Установить переключатель Ρ—Γ в положение Г (градусный режим) и ввести значения начала и конца промежутка, а также значение шага: 160 П 200 [пГ ΠΠ ,ιο (7Γ й . Нажать клавиши В/О С/П | . Приблизительно через 30 секунд на индикаторе высветится число 180 — значение аргумента, которому соответствует наименьшее Значение функции. Наименьшее значение этой функции можно узнать после нажатия клавиши J3y . Оно равно —1. Чтобы программу можно было применять для другой функции, нужно начиная с 28-го шага записать новую программу, которую обязательно следует завершить командой В/О Рис. 5.4. Как определить радиус X изогнутой линейки? 191
ВОПРОСЫ И УПРАЖНЕНИЯ 1. По программе Корень уравнения fix) -л—6 точностью до 10 χ вычислить золотое сечение с записать подпрограмму !. Переключить калькулятор в радианный режим, нажать клавиши □ El· ~" БП! В/О Решить уравнение χ' ν-3 и с начальным значениемх«=1. = COSX С ТОЧНОСТЬЮ ДО 10" 3. Длина эластичной линейки 2L. Линейку сгибают, образуя таким образом дугу окружности (рис. 5.4). Чему равен радиус X этой окружности, если расстояние между концами равно 2D? Руководствуясь геометрическими соображениями, мы можем записать два уравнения s'ma= D/X и Ха~ L, из которых получим трансцендентное уравнение X = D/s\n(L/XJ, Отведя для величин L и D регистры R1 и R2, записать подпрограмму, ввести ее в программу "Корень уравнения f(xj β χ"и решить уравнение с точность до 10"" , если L я 50 см и D- 48 см. 4. По программе "Наименьшее значение функции" найти наименьшее значение функции χ + 2х + 1 на отрезке [ —1,6; 0,6] с шагом 0,2. 5 .Приготовить для работы программу Наименьшее значение функции". Нажать Переклю- клавиши |бп| [XlL^LfJ |ПРГ| и ввести команду (JFJ | X>0 чить калькулятор на режим вычислений. Нажать клавиши |БП| | 2 | | 8 || F | ПРГ и записать в подпрограмме пг sin LEU ULJ I B^°l · ВеРнУться · режим вычислений и найти наибольшее значение функции sin* на отрезке [340 ; 380 ] , просматривая значения функции с шагом 10 градусов. Не забудьте переключить микрокалькулятор в градусный режим. По подготовленной в задаче 5 программе "Наибольшее значение функции" определить максимум функции (20 — 2х) (15 — 2х) χ на отрезке [2; 5] с шагом 0,5 (см. задачу о наибольшем объеме коробки, изготовленной из листа бумаги размером 20 см X15 см). В программе для алгоритма упорядочения списка чисел х. (i = 1, 2, . . . , 9) не записаны некоторые команды присваивания и адреса переходов. Запишите их. Убедитесь, что этим алгоритмом (программой) можно упорядочить буквы и слова в алфавитном порядке. Введите в регистры R1, R2, R3 закодированные слова (коды букв см. на форзаце) USSR, RIGA, LSSR: 82737165 [π] jTj , 85838382 ΓπΊΓΤΊ , 76838382 |^[ΤΊ , а в RB - длину списка: 3 [7Г| [Τ] . По завершению работы программы вызовите содержимое этих же регистров. величина адрес а RA η RB / RC к RD х(1) R1 х{2) R2 • > · ... *(9) R9 I 192
i~ n - 1 пока j =^0 к + η пока кФ i ecnux(i) ^х(к) SH ПРГ оо-оз |ип | в|рГ|Г-1| п 1 с1 04-05 |f | х^о| | | | 06-07 | ип | в| | | | 08-12 |ип | р| [ип | с|Г^| |f \хФ о|[ | | 13-17 |к | ип I с] | к| ип| р|Г~] HE3L то а ■» x(ij x(ij*x(k) x(kj~ /<■—■ κ — 1 повторить /«•-ι -1 повторить стоп а 18-19 20-21 22-23 24-27 28-29 30-33 34-35 36 ИП С Π А [к ип J к π с 22-23 | ИП | А| | К | Π | Ρ :dde dd (απ) IF АВТ Проверка программы для χ И) = 9, χ (2) = 22, χ (3) = 7, χ (4) =23, «=4 (см. § 4.14) : 9 | Π | ΐ| , 22 | Π | 2J , 7 | Π | 3| , 23 | Π | 4| , 4 | Π | Β | [с/гГ] В/О , Через 35 с на индикаторе: 0. Вызовом регистров R1, R2, R3, R4 убедитесь в том, что список упорядочен в возрастающем порядке значений. Упорядочить список jc(1) = 13,13; х{2) * 14,06; х(3) * 13,21; х(4) = 13,16; х{5) = = 13,54 ( 9 4.14). Как следует изменить программу, чтобы она упорядочила список чисел в убывающем порядке значений? 7 6-372
r> LIST 10N = 1 20A = 10 + INT(90*RND) 30B = 10 + INT(90*RND) 40 PRINT "РЕШИ X+"; A; "="; A + В 50 PRINT N; "ПОПЫТКА X = ?" 60 INPUT X 70 PRINT TAB(12)X; "+"; A; "-"; A + X 80 N = N + 1 90IFXOBTHEN50 100 PRINT "ПОЗДРАВЛЯЮ" 200 END 1МММЛППП1 3 с каооипьь . (г КйААПЬЮпиф/ ΗΐΛθυλ ' п/юг/гоиллш, -решите устно», LIST, ^ комльюпщъ vbdoqajrv i 110 PRINT "ПОВТОРИТЬ-1,КОНЧИТЬ-2' 120 INPUT К 130 IF K«1 THEN 10 s f силпист ασηαΑ/-λ ΗΜίΜ mjaicMjuubu игуияооиииии* I RUN Ί РЕШИ Х +57 = 126 1. ПОПЫТКАХ*? ?59 59 + 57 = 116 2. ПОПЫТКА X - ? ?69 69 + 57 = 116 ПОЗДРАВЛЯЮ Ι γ £\ \ "wwofron ч II ι Δ m\ \ с п/гоугам, - /
6. ВИДЕОКОМПЬЮТЕР И ЯЗЫК ПРОГРАММИРОВАНИЯ БЭЙСИК 6.1. ОТЛИЧИЕ ЭВМ ОТ ИНЖЕНЕРНОГО И ПРОГРАММИРУЕМОГО МИКРОКАЛЬКУЛЯТОРА Если необходимо найти значения какой-либо элементарной функции или выполнить арифметические действия с многозначными числами, то нет лучшего вспомогательного средства, чем инженерный микрокалькулятор. Табулировать функцию, решать простое уравнение или же вычислять значение сложного выражения удобнее всего с помощью программируемого микрокалькулятора. Однако в четвертой главе "Алгоритмы" мы познакомились с некоторыми задачами переработки информации, например с задачей упорядочения элементов длинного списка чисел или слов по рпределенному признаку, для решения которых ни инженерный, ни программируемый микрокалькуляторы уже не годятся. Что же ограничивает возможности использования этих микрокалькуляторов? Вспомним принципы устройства инженерных и программируемых микрокалькуляторов. На клавиатуре калькулятора мы видим тот список микропрограмм, которые хранятся в памяти — синус, . . , . Нажимая ту калькулятора: sin — умножение, или иную клавишу, мы прямо обращаемся к соответствующей микропрограмме. Для решения более сложных задач составляем программу, располагая нужные микропрограммы в определенной последовательности. Так, реализуя последовательность микропрограмм ^0^00^ + с « мы можем найти значение квадратичной функции ах + Ьх+ с. При работе с программируемым микрокалькулятором существует возможность заставить сам микрокалькулятор читать составленный список микропрограмм и автоматически выполнять его. Но программируемый микрокалькулятор делает это очень медленно. Прежде всего читается название очередной программы, затем она отыскивается в библиотеке программ, выполняется, после чего микрокалькулятор читает название следующей микропрограммы и т. д. Программируемый микрокальку- 7* 195
лятор большую часть времени тратит не на выполнение программ, а на их чтение и поиск. Совсем иначе происходит в больших ЭВМ. В них используется язык, близкий алгоритмическому языку, с которым мы познакомились в четвертой главе. Различие лишь в том, что команды пишутся с использованием слов английского языка. Так же как в классической математике мы используем буквы и сокращения латинского языка, в информатике принято использовать слова английского языка и их сокращения. Понятно, что в каждом языке программирования имеется строго определенный список используемых инструкций, аналогичный списку микропрограмм в микрокалькуляторах. В больших ЭВМ имеется специальная программа, переводящая распоряжения алгоритма вычислений на язык единиц и нулей. В современных ЭВМ используются программы перевода двух видов — интерпретаторы и компиляторы. Интерпретаторы в электронно-вычислительной машине введенную программу переводят по строкам — прочитывают очередную строку программы, переводят ее и выполняют, затем читают следующую строку, переводят ее, выполняют и т. д. Работа интерпретатора подобна работе программируемой карманной ЭВМ. Однако есть и отличие — если в программируемом микрокалькуляторе отдельно читается каждая микропрограмма, то интерпретатор читает сразу целую строку, которая может содержать несколько инструкций и сложных алгебраических выражений. Можно сказать, что программируемый микрокалькулятор читает и переводит программу по отдельным словам, а интерпретатор — целыми предложениями. В отличие от интерпретатора компилятор переводит сразу весь текст программы, располагает его в одну длинную инструкцию, которая затем очень быстро выполняется. Компиляторы применяются в больших ЭВМ, интерпретаторы — в малых. В этой книге мы познакомимся с наиболее распространенным и простым языком интерпретатора, который называется бэйсиком (сокращение полного названия этого языка в английском языке пишется BASIC). Так как в языках программирования в записи команд используют не названия микропрограмм, а слова естественного языка, то клавиатура ЭВМ в основе своей представляет собой клавиатуру пишущей машинки, дополненную несколькими специальными знаками. Клавиатура и программа перевода — не единственное отличие ЭВМ от микрокалькуляторов. В больших ЭВМ имеются разнообразные устройства вывода информации. Очень часто в качестве устройства вывода используют специальный экран — так называемый дисплей. В микрокалькуляторах используют 7-сегментные цифровые формирователи. К сожалению, они не позволяют изобразить все буквы алфавита. Чтобы на индикаторе можно было изобразить буквы, необходим 16-сегментный 196
буквенно-цифровой формирователь1 (рис. 6.1). В настоящее время все большее распространение получают индикаторы на жидких кристаллах с 35-точечной матрицей для формирования отдельного знака (см. рис.6.1). На этом индикаторе можно изобразить очень много различных символов. Однако изготовление столь сложного индикатора обходится все еще очень дорого. Конечно, создатели микропроцессорной вычислительной техники не оставили без внимания такое давно освоенное универсальное устройство вывода, как электронно-лучевая трубка, или кинескоп, являющийся главной составной частью обычного телевизора. Движением электронного луча в кинескопе можно управлять. Когда мы смотрим телепередачи, электронным лучом управляет сигнал, который приходит от телевизионного передатчика или видеомагнитофона. Так как процессор может решать любую задачу переработки информации, то не составило никакой особой трудности создать видеопроцессор. Видеопроцессор преобразует информацию, хранимую в оперативной памяти вычислительной машины, в электрические сигналы, управляющие электронным лучом так, чтобы на экране информация представала в виде известных символов, букв, цифр, графических рисунков. С переходом на производство видеопроцессоров отпадает необходимость в изготовлении сложных и дорогих выводных устройств, поскольку телевизор есть в каждом доме и в каждом учреждении. Третье существенное отличие ЭВМ от микрокалькуляторов заключается в хранении информации. В инженерном микрокалькуляторе, пока он включен, обычно можно хранить только одно число. В программируемом микрокалькуляторе можно хранить несколько чисел и небольшую программу. Однако программу каждый раз нужно вводить заново. В больших ЭВМ как данные (числа, тексты, символы), так и программы хранятся на перфокартах, перфолентах или магнитных дисках. Особенно много информации можно хранить на дисках. И в быту мы также пользуемся дешевыми и широко распространенными устройствами для хранения информации. Такими устройствами являются, например, магнитофоны. На магнитной ленте можно хранить 1 Н*4 тр. л*4 ъш *М £*ч t"»W Рис. 6.1. 16-сегментная и 35-точечная матрицы для отображения цифр, букв и знаков Эти индикаторы использовались в так называемых электронных переводчиках, которые были созданы в Советском Союзе перед Московскими Олимпийскими играми. 197
не только записи звуков, но и информацию, закодированную нулями и единицами. Таким образом, кассетные магнитофоны могут заменить дорогие полупроводниковые устройства памяти, в которые записываются программы управления самими микропроцессорами. Правда, производство полупроводниковых устройств памяти развивается так быстро, что скоро, возможно, их будут использовать шире, чем магнитные ленты. Скорость записи и считывания информации с полупроводниковых устройств памяти очень большая. Кроме того, в этих устройствах нет подвижных, наиболее часто портящихся деталей. Использование экрана телевизора и кассетного магнитофона создали возможность начать производство электронно-вычислительных машин нового типа. Эти вычислительные машины называются персональными видеокомпьютерами (см. рис. 6.2). Рис. 6.2. Первый советский бытовой видеокомпьютер БК-0010 198
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Напишите свое имя и фамилию буквами, которые можно образовать в 16- сегментном буквенном формирователе. 2. Как в матрице из 35 точек изобразить буквы ъ, б, д, ф, я, щ? 6.2. ВИДЕОКОМПЬЮТЕР В микропроцессорных устройствах информация кодируется и хранится на языке единиц и нулей. Алфавит этого языка состоит из двух "букв" — единицы и нуля. Количество информации, которую можно выразить двумя буквами этого самого короткого алфавита, называется битом. С помощью одного бита можно выразить количество информации, содержащей в себе сообщение типа "да — нет": +, —; сигнал есть - сигнала нет; включено — выключено; черный — белый и т.д. Нетрудно убедиться в том, что десятичные цифры можно изобразить как "слова", состоящие из четырех "букв" алфавита 0,1: десятичные изображение десятичной цифры цифры в алфавите 0,1 0 1 2 3 4 5 6 7 8 9 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Таким образом, каждая десятичная цифра содержит 4 бита информации. Чтобы с помощью алфавита 0,1 записать символы клавиатуры пишущей машинки, каждый из них нужно изобразить как "слово", длина которого в этом алфавите составляет 7 "букв". Это изображение можно реализовать, например, с помощью 7 переключателей, каждый из которых имеет два состояния — включен и выключен. Международный список кодов букв латинского алфавита, цифр и знаков препинания дается на форзаце. Нетрудно убедиться, что он основан на преобразовании численных десятичных кодов символов клавиатуры пишущей машинки в двоичную систему. Количество информации, которое можно задать с помощью последовательности, состоящей из 8 букв алфавита 0,1, называется байтом. Как и наш естественный язык состоит из слов, так и информация, 199
хранящаяся в микропроцессоре, состоит из "слов". Только "слова" эти образованы "буквами" алфавита 0, 1. При этом текст в процессоре ЭВМ составляется из слов одинаковой длины. Микрокалькулятор оперирует словами, состоящими из 4 битов, т. е. словами, длиной в 4 буквы. Первые видеокомпьютеры оперировали 8-битовыми словами. В настоящее время наиболее распространенные процессоры работают со словами, состоящими из 16 битов. Характеризуя ту или иную ЭВМ, говорят, что она имеет 8-, 16- или 32-битовый процессор. Важнейшая составная часть видеокомпьютера — память. Так же как и в программируемых микрокалькуляторах, в видеокомпьютерах имеется постоянная и оперативная память. В постоянной памяти хранятся стандартные программы, программы перевода, программы управления, а в оперативной памяти — программа обработки информации и числа. В русском языке эти типы памяти сокращенно обозначают ПЗУ (постоянное запоминающее устройство) и ОЗУ (оперативное запоминающее устройство). В английском языке соответствующие сокращения представлены аббревиатурами ROM (от слов "read only memory" ж память, из которой можно только считать информацию) и RAM (отелов "random access memory" — память, к которой можно обращаться выборочно) . Емкость запоминающих устройств обычно выражают в килобайтах. Один килобайт содержит 210 = 1024 байта. Емкость ПЗУ не превышает несколько десятков килобайтов, емкость же ОЗУ может быть 4,8, 16,32,64 или 128 килобайтов. Так как видеокомпьютер выводит информацию на экран, то важно знать, сколько знаков можно на нем показать. Нетрудно понять, что это зависит от видеопроцессора. Обычно различают два вида вывода информации: текстовый и графический. Текстовая информация выводится в виде матрицы тХ η (например, 24 X 32, 22 X 28, 22 X 64), где т- число строк, п— число знаков в строке. Каждый отдельный блок, в котором изображается какой-либо знак письма, разделен на точки, чаще всего число точек равно 64 (8X8). Это означает, что максимальная разрешающая способность экрана составляет 8п X Вт точек, например 256 точек по горизонтали и 192 точки по вертикали. Если возникает необходимость в таких буквах, которых нет на клавиатуре (например, в буквах греческого алфавита или в буквах латышского алфавита а, е", 7, й, к, J, р, . . . , с, s, ζ), то таблицу знаков на клавиатуре можно дополнить знаками, определенными пользователем. Имеются видеокомпьютеры, в которых предусмотрены такие возможности. Программы и данные, которые необходимы в работе пользователя видеокомпьютера, обычно хранятся в кассетах кассетного магнитофона. Главным техническим показателем здесь является количество информации, которую за одну секунду можно перенести из оперативной памяти на магнитную ленту или с ленты в оперативную память. Количество информации, передаваемое в секунду, измеряют в бодах. Один бод равен 200
одному байту в секунду. Для кассетного магнитофона наиболее подходящая скорость передачи информации равна 1000 бодов. Самым популярным языком программирования на видеокомпьютере является бэйсик, однако используются и другие языки. Например, язык ФОКАЛ был внедрен на одном из первых советских видеокомпьютеров БК-0010. Все большее распространение получает графический язык программирования ЛОГО, рассчитанный на маленьких детей, и язык очень высокого уровня ПАСКАЛЬ, предназначенный для профессиональных программистов. И в Советском Союзе разработаны новые языки, например РАПИРА, ШПАГА, ШКОЛЬНИЦА. ВОПРОСЫ И УПРАЖНЕНИЯ 1. С помощью международной таблицы кодов можно составить любое слово. Например, кодом слова USSR является 85 83 83 82. Напишите в этом коде слова MOSCOW, RIGA, свое имя, пользуясь латинскими буквами. 2. Все знаки в памяти микрокомпьютера записаны в двоичном коде. Используя таблицу кодов, расшифруйте слово 1010010 1001001 1000111 1000001 0100000. 3. На листке клеточной бумаги размерами 24 клетки Х24 клетки закрасьте клетки так, чтобы образовалась фраза ЭВМ В ШКОЛЕ. 4. На листке 8 клеток X 8 клеток нарисовать буквы б, ж, д, ф, я, щ (каждую букву на своем листке) . Как вы это сделаете? Фактически можно использовать только 7X7 клеток. Когда видеокомпьютер изображает какой-либо знак, то блоки знаков соприкасаются. Если для букв отвести все 8X8 клеток, то буквы сливаются. 5. В обычном инженерном микрокалькуляторе имеется один 12-разрядный регистр памяти: 2 разряда для ввода знака числа и знака порядка, 8 разрядов для мантиссы и 2 разряда для порядка. Сколько битов информации можно записать в таком регистре памяти? Напомним, что для изображения одной десятичной цифры необходимы 4 бита. Для знака числа + или — достаточно одного бита. 6. На семисегментном индикаторе программируемого микрокалькулятора изображаются следующие знаки: 0, 1, 2, . . . , 9, —, L, С, Г, Е. Сколько битов информации необходимо для кодирования одного знака в двоичной системе? 7. В программируемом микрокалькуляторе имеется 14 регистров памяти (см. задачу 5). Сколько битов информации в них можно записать? Длина программной памяти 98 шагов. В каждом шаге можно изобразить один из знаков, указанных в задаче 6. Охарактеризуйте память программируемого микрокалькулятора в битах и байтах. 8. На экране телевизора показан текст, который заполняет знаковую площадь 24 X 32. Какой емкости память необходима для хранения этого текста в 7-битовом коде? 201
9. Емкость оперативной памяти ЭВМ составляет 16 килобайтов. Сколько знаков входит в текст, который полностью занимает всю память? 6.3. ДИАЛОГ С КОМПЬЮТЕРОМ. РАБОТА С ГОТОВОЙ ПРОГРАММОЙ Когда компьютер подключен к телевизору, на экране появляется сообщение компьютера о готовности. READY Слово READY (готов) на некоторых компьютерах не вы- > Е^Я водится. Мерцающую площадку за знаком > называют курсором. Курсор указывает место на экране, куда будет выведен следующий знак. Если в нашем распоряжении имеется готовая программа, то ее нужно ввести в компьютер. Программу вводят по строкам. Это значит, что нужно набрать номер строки, затем соответствующую команду и лишь затем нажать клавишу "ввести", которую чаще всего обозначают словом ENTER, RETURN, ВВОД или ВК (ввод кадра). Введите в компьютер следующую программу 10 PRINT "ВВЕДИТЕ СВОЮ МАССУ" ВВОД 20 INPUT M ВВОД 30 PRINT "ТВОЙ ОБЬЕМ" ВВОД 40 PRINT М/1000 ВВОД 50 PRINT "КУБИЧЕСКИЕ МЕТРЫ" ВВОД 60 END ВВОД Давая распоряжения компьютеру, необходимо соблюдать все знаки. Если, например, в 10-й строке после текста не поставить кавычки, то это будет грамматической ошибкой. По всей вероятности, компьютер сообщит о ней, например, с помощью надписи SYNTAX ERROR (синтаксическая ошибка). В этом случае строку программы нужно набрать заново. Допустим, что программа введена без ошибок. Тогда программу следует проверить в работе. Чтобы заставить компьютер выполнять программу, надо набрать RUN (беги, действуй) и, конечно, нажать клавишу ВВОД] . Компьютер прочитает 10-ю строку, и на экране появится В некоторых версиях бэйсика вместо команды PRINT (или наряду с командой PRINT) применяется команда DISPLAY (показать). 202
текст ВВЕДИ СВОЮ МАССУ, поскольку слово PRINT означает "печатать, показать". Затем компьютер прочитает 20-ю строку, и на экране появится знак вопроса "?". Это означает, что нужно ввести значение величины М. Наберем число 54 и нажмем клавишу |ВВОД| . Компьютер присвоит это значение величине Μ и в соответствии со следующей командой в 30-й строке напечатает текст ТВОЙ ОБЬЕМ. Затем компьютер перейдет к 40-й строке, в которой приказано напечатать значение выражения М/1000. Следовательно, компьютер прежде всего вычислит частное от 54 : 1000 и результат 0,054 выведет на экран. В заключение (см. 50-ю строку) компьютер напечатает слова КУБИЧЕСКИЕ МЕТРЫ и в соответствии с распоряжением END (конец) остановится. Если мы хотим повторить программу, то нужно набрать RUN и нажать клавишу ВВОД В рассмотренном примере строки программы пронумерованы с шагом 10. Условие это не обязательное, но мы рекомендуем придерживаться его. Если возникнет необходимость дополнить программу, то при такой нумерации всегда найдется место, куда можно будет вписать дополнительную строку. В современных вариантах бэйсика после распоряжения PRINT можно писать и текст, и названия величин, и выражения, а сразу же вслед за распоряжением INPUT — текст, содержащий .вопрос. Это позволит существенно сократить программу. Чтобы предыдущая программа нам не мешала, ее можно стереть. Для этого используют команду NEW (новая . . . программа), SCRATCH (стереть) или же другое аналогичное слово, которое дано в инструкции. Сокращенная программа могла бы выглядеть следующим образом: 10 INPUT "ВВЕДИ СВОЮ МАССУ": Μ 20 PRINT "ТВОЙ ОБЪЕМ"; М/1000; "КУБИЧЕСКИЕ МЕТРЫ" 30 END К сожалению, в каждой версии бэйсика имеются свои законы применения знаков препинания. Например, в 10-й строке после текста вместо двоеточия надо, может быть, поставить запятую. Это всегда нужно выяснить из описания конкретной версии бэйсика. К знакам препинания относится также знак пробела. В компьютере, как и в пишущей машинке, клавишей этого знака обычно является большая длинная клавиша. В 20-й строке нашей программы после точек с запятой должны быть пробелы, в противном случае весь текст будет напечатан слитно с вычисленными величинами: ТВОЙ ОБЪЕМ0,054КУБИЧЕСКИЕ МЕТРЫ. Во время выполнения программы в компьютер нельзя вводить другую программу. Это можно делать только тогда, когда на экране появится надпись READY или другой сигнал, свидетельствующий об окончании выполнения программы. RUN не является единственным 203
приказом, который можно дать компьютеру прямо с клавиатуры. Вторым важным приказом является LIST. После ввода этого приказа компьютер копирует на экран содержимое программной памяти, т. е. текст программы. Если после слова LIST указан номер строки, например LIST 10, то на экран будет выведена только 10-я строка, а при выполнении приказа LIST 10-20 на экран будут выведены все строки, начиная с 10-й и кончая 20-й. Кроме того, в каждом компьютере имеется клавиша, с помощью которой можно остановить выполнение программы. Она может быть обозначена словом BREAK (прервать) или каким-либо другим словом. Мы познакомились с двумя важными операторами бэйсика PRINT и INPUT, с помощью которых можно организовать диалог между машиной и человеком. Однако при обработке информации важное значение имеет команда присваивания. В 4-й главе команду присваивания мы записывали с помощью стрелки, например т*х. В бэйсике применяют слово LET (перевод этого слова "пусть") и знак равенства: LET A = 0 LET P =3.14 LET Υ = Χ LETY = A*X + B На многих компьютерах слово LET можно и не писать: А = 0, Ρ = 3.14, Υ = Χ, Υ=Α*Χ + Β. Теперь познакомимся с более сложной программой, в которой использованы уже четыре оператора PRINT, INPUT, LET и STOP (оператор STOP равноценен оператору END). На сей раз не будем стирать предыдущую программу и новую программу начнем писать с 100-й строки. 100 PRINT "ВОЗРАСТ ФАЗЫ ЛУНЫ В XX СТОЛЕТИИ" 110 PRINT "ВВЕДИ ГОД, ДЕНЬ, МЕСЯЦ" 120 INPUTG 130 INPUTD 140 INPUT M 150LETS = INT(1/M+0.6) 160 LET N = INT((G - 1900 - S)*365.25) + INT((M + S*12-2)* 30.59)'+D +57.5 170 LET V = N - 29.530589κΙ NT(N/29.530589) 180 PRINT"B03PACT ФАЗЫ ЛУНЫ" 180 PRINT INT (V) 200 PRINT "ДНЕЙ" 210 STOP Прочитав эту программу, легко заметить, что в бэйсике умножение обозначается звездочкой, деление — косой чертой, а вместо запятой в десятичной дроби ставится точка. Следует помнить, что запятой в 204
бэйсике отделяются друг от друга величины, например PRINT S, V, N. При написании числовых констант нельзя путать нуль с буквой О. Поэтому нуль в программах обозначают символом 0. Когда программа введена в компьютер, то приказом LIST компьютер заставляют выпе- чатать программу, чтобы сравнить текст на экране с записанной программой. Затем программу обычно проверяют с помощью какого- либо простого теста. Проверку приведенной выше программы можно, например, провести для 16 апреля 1986 года. После приказа RUN 100 на экране должен появиться следующий текст диалога. ВОЗРАСТ ФАЗЫ ЛУНЫ В XX СТОЛЕТИИ ВВЕДИ ГОД, ДЕНЬ, МЕСЯЦ 7 1986 ?16 ?4 ВОЗРАСТ ФАЗЫ ЛУНЫ 7 ДНЕЙ Фазы Луны меняются с периодом 29,5 дня. Если возраст фазы Луны 0 дней, то это молодая Луна (новолуние) и она не видна. На 15-й день наступает полнолуние, на 7-й день — 1-я четверть, на 22-й — последняя четверть. И эту программу можно сократить, записав в 180-й строке команду 180 PRINT "ВОЗРАСТ ФАЗЫ ЛУНЫ"; INT(V); "ДНЕЙ" и стерев 190-ю и 200-ю строки. Чтобы стереть какую-либо строку, нужно набрать номер строки и нажать клавишу ввода: 190 ВВОД , 200 ВВОД . Точно так же 110, 120, 130 и 140-ю строки можно объединить в одну строку: 110 INPUT "ВВЕДИ ГОД, ДЕНЬ, МЕСЯЦ": G, D, Μ Однако в этом случае все ответы на вопрос компьютера надо записать в одну строку: 1986, 10, 4 [ВВОД . По описанию конкретной версии бэйсика необходимо выяснить, возможна ли та или иная команда и какие знаки препинания (двоеточие, точку с запятой или запятую) нужно ставить после текста, а какие (запятую или точку с запятой) — между названиями величин. После выполнения этих сокращений нельзя забывать стереть 120,130 и 140-ю строки. Между видами записи алгоритмов, приведенной в 4-й главе, и записью программы на бэйсике существует простое соответствие. Рассмотрим это на примере программы, переводящей запись времени из шестидесятиричной системы в десятичную. сообщить "HMS»H, Η" 10 PRINT "HMS ->H, Η" h+Ί 20 INPUT Η га — ? 30 INPUT M 205
s-~? 40 INPUTS t - h + m/60 + s/3600 50 LET Τ = Η + Μ/60 + S/3600 сообщить "t = ": t 60 PR I NT "T=": Τ стоп 70 STOP Чтобы лучше знать, какую величину нужно вводить в данный момент, написанную на бэйсике программу можно усовершенствовать: 20 INPUT "Н=": Η 30 INPUT"M=":M 40 INPUT "S=": S Напоминаем, что в конкретной версии бэйсика вместо двоеточия может ставится запятая или точка с запятой. В современных версиях бэйсика в одной строке можно писать несколько команд. Тогда приведенную программу можно написать в одной строке: 10 PRINT "HMS - > Η, Η": INPUT "Η, Μ, S"; Η, Μ, S: LET Τ = Η + Μ/60 + S/3600 : PRINT "Τ="; Τ: END Здесь двоеточие служит для отделения команд. ВОПРОСЫ И УПРАЖНЕНИЯ 1. Что произойдет, если после ввода программы "Объем" будет набрано RUN 20 ВВОД? 2. Что появится на экране после выполнения приказа LIST 20-40, если в компьютер введена программа "Объем"? 3. Какие грамматические ошибки допущены в такой записи выражений на бэйсике Ρ = 3.14; Υ = Α:Β;Ζ = ΑΧΥ; ΙΝΤ(Α/Β); 7ΙΝΤ(|\|/7)? 4. Поэкспериментируйте с программой "Возраст фазы Луны в XX столетии". Каков возраст фазы Луны сегодня? В какие числа в этом месяце наступит новолуние, полнолуние? 5. Можно ли с помощью вашего компьютера реализовать сокращенную программу на бэйсике? 6. Каким приказом на вашем компьютере можно стереть предыдущую программу? Каким приказом можно прервать выполнение программы? 7. Сотрите предыдущую программу и введите программу "HMS -*■ Η, Η". Проверьте программу по тесту 2 30m3s = 2,51 часа. По этой же программе угол, записанный в градусах, минутах и секундах, можно перевести в угол, записанный в градусах и в десятых долях градуса. Перевести в градусы и в деся- о о тые доли градуса географическую широту 56 57' и долготу 24 7Ί2" города Риги. Перевести в часы следующее рекордное время забегов: в беге на 100 м - 9,9 с, в беге на 1500м - 3 мин 31,36 с, в беге на 5000 м- 13 мин 0,42 с. 8. Программу "HMS -»■ Η, Η" можно преобразовать в программу "Скорость", 206
по которой можно найти скорость движения спортсменов в км/ч. Ввести в компьютер программу "НМН *-Н, Н" и затем дополнительно ввести следующие строки 5 PRINT "СКОРОСТИ В СПОРТЕ" 10 PRINT "ВВЕСТИ ВРЕМЯ - ЧАСЫ, МИНУТЫ, СЕКУНДЫ" 45 PRINT "ВВЕСТИ ДЛИНУ ДИСТАНЦИИ В КМ" 47 INPUT X 60 PRINT "СКОРОСТЬ" 65 PRINT ХД 67 PRINT "КМ/Ч" После такого усовершенствования программы ее обязательно следует вывести на экран: LIST ВВОД . Если нет ошибок, проверьте программу на примере х~ 50 км; t = 2 ч, ν = 25 км/ч. Вычислить скорости, соответствующие приведенному в задаче 7 рекордному времени забегов. Составить программу для алгоритма "Календарь XX столетия" (см. 4-ю главу) . При вводе программы не забудьте каждой строке дать свой номер. 6.4. СТАНДАРТНЫЕ ФУНКЦИИ В БЭЙСИКЕ Одну стандартную функцию ΙΝΤ(Χ) мы уже рассмотрели. Эта функция выделяет целую часть числа, заключенного в скобки, т. е. находит наибольшее целое число, меньшее, чем X: ΙΝΤ0.14) = 3, ΙΝΤ (2.99) = 2, ΙΝΤ(-5,1) = -6. Во многих версиях бэйсика стандартные функции обозначают тремя буквами. Так как на клавиатуре нет знака >/~ , то для обозначения квадратного корня используют символ SQR(X) (от английских слов "square root" — квадратный корень). Обычно используют такие стандартные функции и их обозначения: INT(X) — целая часть SGN(X) - знак числа X : SGN(78) = 1, SGN(O) = 0, SGN(-9) = -1 ABS(X) - абсолютное значение числа: ABS(-9) = 9, ABS(78) = 78 SQR(X) — квадратный корень из X ЕХР(Х)-ех LOG(X) -InX SIN(X) - sin X, Χ - в радианах COS(X) — cos X, Χ — в радианах ΤΑΝ(Χ) - tg X, Χ - в радианах ΑΤΝ(Χ) — arctg X, результат в радианах RND — случайное число из интервала ] 0; 1 [ или RND(1) В этом списке нет такой часто используемой функции, как у*. 207
В бэйсике любую степень можно вычислить с использованием знака возведения в степень /ν (или ю<): 10х -10/nX; А2- А/\2; ^Γχ_Χ/Ν(1/3). Чтобы вычислить значение тригонометрической функции, если значение аргумента X задано в градусах, аргумент нужно умножить на π/180, например cos (X*3.1415926/180). Чтобы вычислить угол у по заданному значению косинуса угла, следует сперва вычислить тангенс, а потом арктангенс: X=tg7= V 1 /cosy/cosy- 1; 7 = ATN(X). В свою очередь, для того чтобы с помощью стандартной функции ATN получить значение угла в градусах, нужно использовать множитель 18(#г, например, у = 180/3.1415926* ATN(X). Так как значениями как аргументов, так и функций являются числа, то надо знать, в каком диапазоне чисел работает конкретный компьютер. Во всех версиях бэйсика применяют одну и ту же стандартную запись числа с указанием мантиссы и порядка: 6,02 1023 6.02Е23 -1,6 10~19 -1.6Е-19. Однако число разрядов в мантиссе и диапазон порядка в разных компьютерах могут быть различными. Чаще всего встречаются варианты, в которых число разрядов мантиссы равно 4 или 8, а диапазон порядка — от —32 до 32. В современных компьютерах числа могут иметь мантиссы даже с 15 разрядами, а порядки их могут быть от —128 до 128. При использовании стандартных функций важно знать, какие обозначения можно применять для имен величин (прочитайте § 4.3). Во всех вариантах бэйсика название переменной может обозначаться любой буквой латинского алфавита. Во многих компьютерах название переменной может также обозначаться буквой латинского алфавита и следующей за ней цифрой:А1, ХЗ, V1, V2. В современных компьютерах имя величины можно обозначать более длинными цепочками символов, например TIME, VELOCITY, ROOT1, ROOT2. В этом случае, однако, следует помнить, что в качестве названий величин нельзя использовать названия стандартных функций и операторов. Основываясь на полученных знаниях о бэйсике и его грамматике, составим программу "РАССТОЯНИЕ МЕЖДУ ГОРОДАМИ". Так как по описанным ранее формулам вычисления угла результат получается только в случае острого угла, то надо перейти к половинным углам. 208
Расчетные формулы имеют следующий вид: Vcost + 1 — 7 = 2*ATN(SQR(1/Z/Z-1)). Напомним также формулы, по которым можно вычислить расстояние между городами: cosy = sin^sin^ + coS(/?(.cos^2cos(X1 - λ^, 7 = arccos(cos7>, S = 111,27· Используя эти формулы, можно записать следующую программу: 10 PRINT "РАССТОЯНИЕ МЕЖДУ ГОРОДАМИ" 20 LET К = 3.1415926/180 30 PRINT "ВВЕДИТЕ ГЕОГРАФИЧЕСКИЕ КООРДИНАТЫ" 40 PRINT "1-ГО ГОРОДА: ШИРОТУ, ПОТОМ ДОЛГОТУ" 50 INPUT P1 60 INPUT L1 70 PRINT "2-ГО ГОРОДА: ШИРОТУ, ПОТОМ ДОЛГОТУ" 80 INPUT P2 90 INPUT L2 100 LET Z = SIN(KkP1)kSIN(K*P2) + COS(K*P1)*COS(K*P2)*COS (K*(L1 -L2)) 110LETZ = SQR«Z + 1)/2) 120 PRINT "РАССТОЯНИЕ МЕЖДУ ЭТИМИ ГОРОДАМИ" 130 PRINT INT(222.4/K*ATN(SQR(1/Z/Z - 1))) 140 PRINT "КИЛОМЕТРОВ" 150 END Проверка программы: координаты Риги Р1 = 56,95; L1 =24,12, координаты Москвы Р2 = 55,75, L2 = 37,62. После ввода приказа RUN на экране должен появиться следующий текст диалога. РАССТОЯНИЕ МЕЖДУ ГОРОДАМИ ВВЕДИТЕ ГЕОГРАФИЧЕСКИЕ КООРДИНАТЫ 1-ГО ГОРОДА: ШИРОТУ, ПОТОМ ДОЛГОТУ ? 56.95 ? 24.12 2-ГО ГОРОДА: ШИРОТУ, ПОТОМ ДОЛГОТУ ? 55.75 ? 37.62 РАССТОЯНИЕ МЕЖДУ ЭТИМИ ГОРОДАМИ 841 КИЛОМЕТРОВ 8 6-372 209
Рассмотрим еще одну программу, в которой требуется использовать степенную и логарифмическую функции. Между десятичными и натуральными логарифмами существует взаимосвязь lgx = Ira/In 10. Площадь кожи тела человека (£) определяется по так называемой формуле Б оде >>= (35,75-lgM)/53,2, S=(1000M^°<3/3118,2[m2], где Μ — масса человека в кг, А — рост в см„ 10 PRINT "ПЛОЩАДЬ КОЖИ" 20 PRINT "ВВЕДИТЕ СВОЮ МАССУ В КГ" 30 INPUT M 40 PRINT "И РОСТ В CM" 50 INPUT A 60 LET Y = (35J5 - LOG(M)/LOG(10))/53.2 70 PRINT "ПЛОЩАДЬ КОЖИ" 80 PRINT (1000хМ)/-чУ*А/Ч).3/3118.2 90 PRINT "КВАДРАТНЫХ МЕТРОВ" 100 END ВОПРОСЫ И УПРАЖНЕНИЯ 1. Чтобы выяснить, является ли какой-либо треугольник прямоугольным, нужно 2 2 проверить, удовлетворяют ли длины его сторон формуле Пифагора с ■ а + 2 + Ъ . Закончить программу, с помощью которой можно решить эту задачу: 10 PRINT "ФОРМУЛА ПИФАГОРА" 20 PRINT "ВВЕДИ ДЛИНЫ СТОРОН А И В" 30 INPUT A 40 INPUT В 50 60 PRINT "ДЛИНА СТОРОНЫ С" 70 PRINT С 80 END В 50-й строке надо записать команду присваивания с -* V а + Ъ в соответствии с правилами языка бэйсик. Используя готовую программу, решить задачу 10 параграфа 3.6. 2. По программе "Расстояние между городами" найти кратчайшее расстояние от Риги до экватора (Северного полюса, Южного полюса) по географической долготе Риги, если географическая широта экватора равна 0 , а Северного и Южного полюсов соответственно 90 и —90 . Вычислить также расстояние между различными городами. Географические координаты даны в таблице в приложении. 210
Можно ли на вашем компьютере сократить программу "Расстояние между городами", объединив 40, 50, 60-ю строки в такую одну строку: INPUT "1-ГО ГОРОДА: ДОЛГОТУ, ШИРОТУ": Р1, L1 Можно ли на вашем компьютере объединить 120, 130 и 140-ю строки в такую одну строку: PRINT "РАССТОЯНИЕ"; INT(222.4/K*ATN(SQR(1/Z/Z-1))); "KM" Эсли эти операции возможны, то максимально сократите программу "Расстояние между городами". Перед вводом сокращенной программы советуем стереть предыдущую. Если 40, 50 и 60-ю строки удалось объединить оператором INPUT, не забудьте, что после появления на экране вопроса 1-ГО ГОРОДА: ДОЛГОТУ, ШИРОТУ нужно ввести обе координаты, например 56.95, 24.12 ВВОД На этом примере хорошо видно, почему для выделения десятичной части в бэйсике применяют точку. Запятой отделяются вводимые величины. По программе "Площадь кожи" определить площадь кожи своего тела. Сравните эту площадь с площадью кожи маленького ребенка, вес которого 5 кг, а рост 50 см. Сократить программу в соответствии с возможностями вашего компьютера. Составить программу "Период колебаний маятника", по которой можно вычислить период колебаний математического маятника, если алгоритм имеет следующий вид ( I — длина маятника, g — ускорение свободного падения): 1*7 Ρ -3.14 Г-2Р sjifg сообщить "Т~"; Т; "секунд" Ответить на следующие вопросы: а) Чему равен период колебания маятника Фуко, если длина его 93 м, a g * «9,8? б) Как изменится период колебаний маятника, длина которого равна 1 м, если этот маятник перенести с Северного полюса {g ж 9,83 м/с } на экватор (g**9,78 м/с2). Составить программу для вычисления давления в зависимости от высоты по формуле, данной в } 2.7. 6.5. ОПИСАНИЕ АЛГОРИТМИЧЕСКИХ ПРОЦЕССОВ НА БЭЙСИКЕ До сих пор мы рассматривали только линейные программы. В главе об алгоритмах мы уже познакомились с разветвляющимися и циклическими алгоритмами. Для описания разветвляющихся алгоритмов используют конструкцию если ... то ... иначе. В бэйсике структура этим конструкции сохраняется, только ее нужно писать по-английски 8* 211
IF . . . THEN .. . ELSE. После IF следует условие, а послеТНЕЫ и ELSE — номера строк, к выполнению команд которых нужно перейти, если условие выполняется (THEN) или не выполняется (ELSE)1. Если слово ELSE в операторе отсутствует, то в случае невыполнения условия компьютер переходит к выполнению следующей строки. Познакомимся с применением оператора IF .. .THEN для усовершенствования диалога. Все рассмотренные до сих пор программы имеют один недостаток: каждый раз, когда мы хотим повторить выполнение программы, нужно заново дать приказ RUN и читать заголовок программы. Запишем программу "Календарь XX столетия". 10 PRINT "КАЛЕНДАРЬ XX СТОЛЕТИЯ" 20 PRINT "ВВЕДИТЕ ГОД, ДЕНЬ, МЕСЯЦ" 30 INPUTG,D,M 40LETS=INT((12-M)/10) 50 LET N=INT((G-1900-S)^365.25)+INT((M+12hS-2)h30.59)+D+29 60 PRINT "С 31-ГО ДЕК. 1899 Г. ПРОШЛО"; N; "ДНЕЙ" 70 PRINT "ЭТО"; N-7*INT(N/7);; "ДЕНЬ НЕДЕЛИ" 80 PRINT "ПОВТОРИТЬ-1, ЗАКОНЧИТЬ-2" 90 INPUT A 100 IF А-1 THEN 20 110 END (Перед вводом этой программы необходимо убедиться в том, что на имеющемся у вас компьютере не нужно каждую из команд, записанных в 30, 60 и 70-й строках, заменять тремя командами, а также проверить, не надо ли применять другие знаки препинания.) Если после сообщения компьютера ПОВТОРИТЬ-1, ЗАКОНЧИТЬ-2 введено число 1 и нажата клавиша ВВОД , то условие А « 1, проверка которого осуществляется в 100-й строке, выполнено и компьютер возвращается к 20-й строке. Если будет введено число 2, компьютер выполнит команду, записанную в 110-й строке. Для реализации полного разветвления если . . . jja . . . иначе используют безусловный переход GOTO (иди на), после которого указывают номер соответствующей строки. В качестве примера рассмотрим программу решения системы линейных уравнений. 10 PRINT "СИСТЕМА УРАВНЕНИЙ" 20 PRINT "A*X + B*Y = E" 30 PRINT "СкХ+ D*Y = F" 40 PRINT "ВВЕДИТЕ А, В, С, D" а~?,Ъ~ ?,с- ?,d- ? 50 INPUT А, В, С, D В современных версиях бэйсика после слов THEN и ELSE можно писать команды LET, PRINT, IF. 212
60 LET M = A*D - C*B 70 IF Μ =0 THEN 80 ELSE 100 80 PRINT "ЕДИНСТВЕННОГО РЕШЕНИЯ НЕТ" 90 GOTO 140 100 PRINT" ВВЕДИТЕ Ε, F" 110 INPUT Ε, F 120 PRINT "X="; (DkE - B*F)/M 130 PRINT "Y="; (AkF - C*E)/M 140 PRINT "ПОВТОРИТЬ-1, ЗАКОНЧИТЬ-2" 150 INPUT Ζ 160 IF Ζ = 1 THEN 20 ELSE 180 170 GOTO 10 180 END m-~ad -cb если т = 0 то сообщить "Единственного решения нет" иначе сообщить "введите е, f" е-~ ?,/* ? сообщить "х='\ (de - bf)/m сообщить "у=", (af- cej/m сообщить "повторить-1, закончить-2" ζ— ? если ζ = 1 то вернуться к началу иначе стоп Программу следует проверить на нескольких примерах: -у = 1 Ьс + >> = 100 •у = 2 \l,l35*+>> = 102,7 решения нет χ = 20,у = 80 В бэйсике можно проверить следующие условия. А = В,А>В,А<В А > = В (больше или равно) А < = В (меньше или равно) АОВ (не равно) С помощью оператора IF . . . THEN . . . ELSE можно формировать также такой цикл, который содержит конструкцию повторить . . . до. В § 4.9 об алгоритмах мы познакомились со способом нахождения квадратного корня. Преобразуем алгоритм квадратного корня в программу на языке бэйсик. 10 PRINT "ВВЕДИТЕ ЧИСЛО И ТОЧНОСТЬ" 20 INPUT A, E 30 IF А < 0 ΤΗ ΕΝ 40 ELSE 60 'корня нет" 40 PRINT "КОРНЯ НЕТ" 50 GOTO 120 60 LETX = A 70 PRINT "ВЫПОЛНЯЮ ЦИКЛ" 80 90 100 Алгоритм " у/77 а-* ?,е — ? если а < 0 то сообщить иначе х-+ а повторить т<*~ χ х«~ (а/т + т)12 до \х - т | < е сообщить " \/a"s=' стоп LET Μ = X LETX = (A/M + M)/2 IF ABS(X-M)<ETHEN110 ELSE 80 110 PRINT "КВАДРАТНЫЙ КОРЕНЬ ИЗ", А, "РАВЕН", X 120 END 213
Если А = 5 и точность Ε = 0.001, то программа выведет на экран следующую информацию. ВВЕДИТЕ ЧИСЛО И ТОЧНОСТЬ 7 5,0.001 КВАДРАТНЫЙ КОРЕНЬ ИЗ 5 РАВЕН 2.236.. . Если программу дополнить строкой 95 PRINT X, то на экране отобразится последовательность приближенных значений квадратного корня 3, 2.333.. ., 2.238... и 2.236... . Применяя команды IF . . . THEN . . . ELSE и GOTO, на бэйсик можно легко перевести также конструкцию цикла пока. . .повторить. Вот как переводится алгоритм "Остывание чая" на бэйсике. га—0 10 LET M =0 Т^ ?, Гь— ?, Га— ? 20 INPUT "ВВЕДИТЕ НАЧАЛЬНУЮ, КОНЕЧНУЮ, ОКРУЖАЮЩУЮ ТЕМПЕРАТУРУ": S,B,A Г- Τ 30 LET T = S пока Т>ТЬ 40 IFT>BTHEN50 ELSE 80 ra«*ra + 1 50 LET Μ = Μ + 1 Г-7Га - 1)0,03 + Γ 60 LETT = (A-T)k0.03 + T повторить 70 G ОТО 40 сообщить "чай остывает от" 80 PRINT "ЧАЙ ОСТЫВАЕТ ОТ", S; rs' "А0"' гь' "гРаАУсов "ДО"'в; "градусов за", за",/я/'минут" М; "МИНУТ" стоп 90 END В тех случаях, когда число повторений известно или его можно определить заранее, удобнее всего применять оператор FOR · . . ТО . . .STEP . . . NEXT . . ., который соответствует уже хорошо известной нам команде от. . .дсэ.. .шаг.. .следующий. Рассмотрим табулирование функции с применением этого оператора. 10 PRINT "ТАБУЛИРОВАНИЕ ФУНКЦИИ" 20 PRINT "ВВЕДИТЕ НАЧАЛО ИНТЕРВАЛА, КОНЕЦ, ШАГ" 30 INPUT А, В, D 40 PRINT "Χ", "Υ" 50 FORX = ATOBSTEPD 60 LET Υ = X*X 70 PRINT Χ, Υ 80 N EX™ 90 END Слова FOR и NEXT обозначают тело действия цикла. Приступая к выполнению 80-й строки, компьютер увеличивает значение X на величину D и возвращается к 50-й строке. Если новое значение X не превышает В, цикл повторяется, в противном случае компьютер цикл завершает и переходит к 90-й строке. 214
ВОПРОСЫ И УПРАЖЕНИЯ 1. По программе "Календарь XX столетия" определить день недели своего дня рождения, сегодняшнего дня, важнейших исторических событий (см. таблицу из § 3.5). 2. По программе "Система уравнений" решить упражнение 4 у 2.10 и записать программу алгоритма "Нахождение центра и радиуса окружности", приведенного в приложении. 3. По программе "Квадратный корень" найти квадратный корень из 5, 25, 10 с точностью до 10"~ . Сколько приближений потребовалось для достижения этой точности? 4. Составить программу вычисления корней квадратного уравнения и решить уравнение —0,1 χ +1,7χ + 2=0. 5. Преобразовать программу "Табулирование функции" так, чтобы по ней можно было табулировать элементарные функции 1/х, siru, |ruc,arcsinx. 6. Составить программу для нахождения координат вершин правильного многоугольника и по результатам вычислений начертить правильный пятиугольник, правильный семиугольник, циферблат часов (см. задачу 22 из J 3.4). 7. По алгоритму, данному в 4-й главе, составить программу вычисления суммы членов геометрической прогрессии. 8. Составить программу "Часы" по алгоритму, приведенному в 4-й глазе. 9. Составить программу "Наибольший общий делитель" по алгоритму, данному в 4-й главе. 10.3аписать программу для какого-либо выбранного по собственному желанию алгоритма из 4-й главы. 6.6. ПОДПРОГРАММЫ В БЭЙСИКЁ Прежде всего отметим, что на языке бэйсик в программе возможно определять необходимую функцию. Это позволяет записать достаточно универсальные программы. К универсальным и длинным программам часто необходимы комментарии. Чтобы их можно было включить в текст программы, используют оператор REM (от слова "ремарка" — примечание). Текст, следующий за этим словом, компьютер вообще не анализирует. Однако когда мы даем компьютеру приказ LIST вывести всю программу на экран, появляется и указанный текст. Это помогает ориентироваться в самой программе. Для определения функции используется слово DEF, после которого следует название1 и определение по формуле, например DEF С(Х) = А #? X + В. С помощью этих двух новых операторов усовершенствуем программу "Табулирование функции". В некоторых версиях бэйсика название функции должно обязательно начинаться с определенных букв, например FN. 215
10 REM ΠΡΟΓΡΑΜΜΑ ТАБУЛИРОВАНИЯ ФУНКЦИИ 20 REM ОПРЕДЕЛЯЕМУЮ ФУНКЦИЮ НАПИСАТЬ В 30-Й СТРОКЕ 30 DEF F(X) = (16- 2*Х)*(12 - 2*Х)*Х 40 PRINT "ВВЕДИ НАЧАЛО, КОНЕЦ, ШАГ ИНТЕРВАЛА" 50 INPUT А, В, D 60 PRINT "X", "F(X)" 70 FORX = ATOBSTEPD 80 PRINTX, F(X) 90 NEXT Χ 100 END В рассмотренной программе табулируется функция, для которой нужно найти максимум, чтобы из листа бумаги размером 16 см X 12 см можно было изготовить коробку наибольшего объема (см. рис. 3.1). Нахождение наибольшего или наименьшего значения является одной из характерных задач обработки информации. Поэтому составим программу, реализующую алгоритм "min-max", рассмотренный в § 4.14. Программу разделим на несколько частей: присвоение начальных значений, просмотр значений функции, определение наименьшего и наибольшего значения, вывод результатов. 10 REM* НАИМЕНЬШЕЕ И НАИБОЛЬШЕЕ ЗНАЧЕНИЕ ФУНКЦИИ* 20 REM * ФУНКЦИЮ ОПРЕДЕЛИТЬ В 30-Й СТРОКЕ * 30 DEF F(X) =(16- 2хХ)х(12 - 2хХ)хХ 40 REM ^ПРИСВОЕНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ χ 50 PRINT "ВВЕДИ НАЧАЛО, КОНЕЦ, ШАГ ИНТЕРВАЛА" 60 INPUT A 70 INPUT В 80 INPUT D 90M = F(A) 100 L = M 110 REM * ПРОСМОТР СПИСКА ЗНАЧЕНИЙ ФУНКЦИИ * 120FORX=ATOBSTEPD 130 Y = F(X) 140 GOSUB220 150 NEXT X 160 PRINT "КООРДИНАТЫ НАИМЕНЬШЕГО ЗНАЧЕНИЯ ФУНКЦИИ Χ,Υ" 170PRINTX1,M 180 PRINT "КООРДИНАТЫ НАИБОЛЬШЕГО ЗНАЧЕНИЯ ФУНКЦИИ Χ,Υ" 190 PRINT X2,L 200 END 210 REM * ПОДПРОГРАММА MIN-MAX * 220 IF Υ > = Μ THEN 250 216
230 Μ= Υ 240 Х1 = Χ 250 IF Y < = LTHEN280 260 L = Υ 270 X2 = Χ 280 RETURN При записи этой программы в компьютер строки с комментариями можно и не вводить. В 140-й строке записан оператор бэйсика GOSUB (это сокращение означает "иди к подпрограмме"), за которым следует номер строки, с которой начинается подпрограмма. В данном случае подпрограмма начинается с 220-й строки, следовательно, после основной программы. Сама подпрограмма оканчивается словом RETURN — "вернуться". Это слово обязательно, поскольку в противном случае компьютер не будет знать, когда нужно вернуться к основной программе. При проверке этой программы на экран выводится следующий диалог. ВВЕДИ НАЧАЛО, КОНЕЦ, ШАГ ИНТЕРВАЛА ?0 ?6 ?0.5 КООРДИНАТЫ НАИМЕНЬШЕГО ЗНАЧЕНИЯ ФУНКЦИИ Χ, Υ 0 0 КООРДИНАТЫ НАИБОЛЬШЕГО ЗНАЧЕНИЯ ФУНКЦИИ Χ, Υ 2.5 192.5 Следовательно, чтобы изготовить коробку наибольшего объема, высоту ее нужно взять равной 2,5 см. Если бы мы просматривали значения функции с меньшим шагом, то получили бы более точный результат. Однако в каждом конкретном случае точность следует связывать с потребностями практики. Нет никакого смысла решать рассмотренную задачу, например, с точностью до 0,01 см, поскольку так точно вырезать лист бумаги невозможно. Программу с такой структурой можно широко применять в программировании других алгоритмов. Во-первых, заменив в 30-й строке программы определенную функцию, можно найти наименьшее и наибольшее значение других функций. Во-вторых, если в какой-либо программе необходима подпрограмма отыскания наименьшего и наибольшего значения функции, то содержание 220 — 280-й строк можно прямо перенести в эту программу. Необходимо, конечно, учитывать, что при изменении адреса начала подпрограммы обязательно надо изменить также адрес в основной программе, стоящий за оператором GOSUB. Перед первым обращением к подпрограмме следует присвоить значения величинам Μ и L, а перед каждым следующим обращением к этой подпрограмме нужно присваивать значение величине Υ. В-третьих, основную 217
программу можно использовать для решения других задач, например для определения корней уравнения. Однако данную программу можно также дополнить новой подпрограммой. Сделаем это, введя в программу "Наименьшее и наибольшее значение функции" следующие дополнительные строки: 105LETZ = M 145GOSUB300 290 REM * НАХОЖДЕНИЕ КОРНЕЙ* 300 IF Υ Ο0 THEN 330 310 PRINT "ЗНАЧЕНИЕ КОРНЯ"; X 320 GOTO 350 330 IF Y*Z> = 0 THEN 350 340 PRINT "КОРЕНЬ НАХОДИТСЯ В ИНТЕРВАЛЕ"; X-D, X 350 LET Z = Υ 360 RETURN Если эту дополненную программу мы применим к функции, выражающей объем коробки, т. е. к функции (16 — 2х) (12 — 2х)х на промежутке [0; 8] с шагом 0.5, то на экране появится текст: RUN ВВЕДИ НАЧАЛО, КОНЕЦ, ШАГ ИНТЕРВАЛА ?0 ?8 ?0.5 ЗНАЧЕНИЕ КОРНЯ 0 ЗНАЧЕНИЕ КОРНЯ 6 ЗНАЧЕНИЕ КОРНЯ 8 КООРДИНАТЫ НАИМЕНЬШЕГО ЗНАЧЕНИЯ ФУНКЦИИ Χ, Υ 7 -28 КООРДИНАТЫ НАИБОЛЬШЕГО ЗНАЧЕНИЯ ФУНКЦИИ Χ, Υ 2,5 192,5 READY С помощью этой программы мы узнали очень многое о функции у - (16 — 2я:)(12 — 2xjx; а именно: координаты минимума и максимума, а также те значения х, при которых у(х) = 0. Для этой конкретной функции корни можно легко найти также аналитическим путем. Однако для большинства применяемых в практике функций корни вообще нельзя найти аналитическим путем. 218
ВОПРОСЫ И УПРАЖНЕНИЯ 1. В программе "Табулирование функции" изменить 30-ю строку, чтобы можно было табулировать функцию F(x) * V 400+х2+ \/ 100 + (10 -х)2. С помощью этой программы табулировать F(x) на отрезке [О; 10] с шагом 0.5. Физическое содержание этой задачи смотри в описании 3-й задачи у 6 3-й главы. 2. Найти наименьшее значение функции F(xJ = γ 400 + χ + γ 100 + (10 — jc) с помощью программы "Наименьшее и наибольшее значение функции". 3. Использовав программу "Наименьшее и наибольшее значение функции", решить 4-ю задачу $3.6. 4. Оформить дополненную программу "Наименьшее и наибольшее значение функции" как самостоятельную программу "Анализ функции", записав также нужные комментарии и перенумеровав строки с шагом 10. Особое внимание обратить на правильное изменение адресов после операторов GOSUB, IF ... THEN ..., GOTO. 5. Используя программу "Анализ функции" (см. упражнение 4), определить наименьшее и наибольшее значение функции F(x) = cos(* * 3,1415926/180) на отрезке [0°; 200 ], если шаг равен 10 . Как с помощью этой же программы можно уточнить значение корня? 6. С помощью программы "Анализ функции" (см. упражнение 4), найти корни кубического уравнения χ - 4,5х + 2 = 0 на отрезке [0; 2] с шагом 0,05. Геометрическое описание задачи см. в $4.10. 7. Решить упражнение 2 § 4.10, использовав программу "Анализ функции" (см. упражнение 4}. 8. Проанализировать программу "Угадай число от 10 до 99". Что появится на ? Какая высветится надпись, если после ВВОД экране после приказа RUN появления вопросительного знака будет введено 8? В какой строке программы происходит обращение к подпрограмме? Опробовать программу в работе. 10 PRINT "УГАДАЙ ЧИСЛО ОТ 10 ДО99" 20 PR I NT "* * * * * * * * *♦ * η * *" 30 REM it ПРИСВОЕНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ* 40 LET Ν = 0 50 LET M = 10 60 LET L=99 70 REM * ГЕНЕРАТОР СЛУЧАЙНЫХ ЧИСЕЛ * 80 LET Ζ = |NT(90*RND) + 10 90 REM* ВВОД ПРЕДПОЛАГАЕМОГО ЧИСЛА* 100 INPUT X 110 REM *СЧЕТЧИК ХОДОВ* 219
120 LET N = Ν + 1 130 REM * АНАЛИЗ УСПЕХА* 140 IF XOZ THEN 200 150 PRINT "УГАДАНО ЗА"; Ν; "ХОДОВ" 160 PRINT "ЕСЛИ ХОЧЕШЬ ЕЩЕ ИТРАТЬ-1, КОНЧИТЬ-2" 170 INPUT К 180 IF K=1 THEN 10 190 END 200GOSUB230 210 GOTO 100 220 REM * ПОДПРОГРАММА АНАЛИЗА ГАДАНИЯ *· 230 IF X<M THEN 300 240 IF X >L THEN 300 250 IF X <Z THEN 280 260 PRINT "ВЕЛИКО" 270 GOTO 310 280 PRINT "МАЛО" 290 GOTO 310 300 PRINT "ЧИСЛО НЕВЕРНОЕ, ТАК КАК ОНО НАХОДИТСЯ ВНЕ УКАЗАННЫХ ГРАНИЦ" 310 RETURN 6.7. РАБОТА СО СПИСКАМИ ВЕЛИЧИН В предыдущих параграфах мы познакомились с несколькими возможностями бэйсика присваивать величинам значения. Это можно сделать, во- первых, с помощью оператора LET и, во-вторых, с помощью оператора INPUT. Однако если по программе предусмотрена работа с большим количеством констант, то присвоение значений соответствующим величинам с применением этих двух операторов занимает много места и времени. Поэтому бэйсик обладает еще одной возможностью присваивания величинам значений, а именно: с использованием операторов READ (читай) и DATA (данные). Убедимся в этом на простом примере. 10READG,M,D 20 PRINT G, M, D 30 END 40 DATA 1961,4,12 В 10-й строке сообщается, что надо считать значения величин G, M, D. Компьютер отыскивает строку со словом DATA, по порядку считывает его значения и присваивает величине G число 1961, величине Μ — число 4, величине D — число 12. Затем компьютер переходит к 20-й строке и выпечатывает эти величины на экране. Применим эти операторы 220
в программе, по которой можно обсчитывать лабораторные работы. 10 REM χ ЧИСЛО ИЗМЕРЕНИЙ И ЗНАЧЕНИЯ ИЗМЕРЕНИЙ ПИСАТЬ НАЧИНАЯ С 210-Й СТРОКИ* 20 READM,Q>N 30 FOR K-1 TO N 40 READX 50 PRINT X 60 LETY = M + (X-M)/K 70 LETQ = Q+ (X-Μ) λ2*(Κ-1)/Κ 80 LET Μ = Υ 90 NEXT К 100 PRINT "СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ И ДИСПЕРСИЯ РАВНЫ" 110 PRINT M,SQR(Q/N) 120 END 200 DATA 0,0 210 DATA 5,176,180,176,178,177 В 210-й строке записано значение N = 5 и рост пяти учеников. Выполнив команду, записанную в 20-й строке, компьютер считывает значения Μ и Q (нули) в 200-й строке и значение N (пять) в 210-й строке, поскольку других данных в 200-й строке нет. Оператор READ имеется также в цикле. Каждый раз при выполнении команд цикла компьютер считывает следующее число в 210-й строке. Чтобы убедиться в том, что машина обрабатывает требуемые значения измерений, в 50-й строке имеется оператор PRINT, который выводит на экран каждое прочитанное значение измерения из массива данных. Если программа введена верно, то компьютер сообщит, что среднее арифметическое равно 177,4, а дисперсия — 1,49... . В главе об алгоритмах уже говорилось о том, что сейчас ЭВМ все больше используется для поиска и обработки информации. В предыдущих параграфах мы познакомились с одной из задач поиска — нахождением наименьшего и наибольшего значения и корней. Нерассмотренной еще осталась задача об упорядочении информации. В бэйсике можно оперировать не только отдельными величинами, но и списками, которые задаются с помощью имени ш индекса, например Х(1), Μ (К). В начале каждой программы на бэйсике нужно сообщить длину списка. Это делают посредством оператора DIM. Так, DIMX(75), M (5) означает, что в списке Х(1) зарезервировано место для 75 величин, а в списке Μ (К) — для 5. Теперь, когда мы уже познакомились с важнейшими операторами бэйсика, можно легко перевести алгоритм "Упорядочение списка чисел" (см. У 4.14) в программу на бэйсике. 10 REM * УПОРЯДОЧЕНИЕ СПИСКА ЧИСЕЛ ж 20 REM * ОПРЕДЕЛЕНИЕ МАКСИМАЛЬНОЙ ДЛИНЫ СПИСКА * 221
30DIMX000) 40 REM* ПРИСВОЕНИЕ ЗНАЧЕНИЯ ВЕЛИЧИНЕ Ν* 50 READ N 60 REM * СЧИТЫВАНИЕ СПИСКА* 70 FOR I = 1 TON 80 READX(I) 90 NEXT I 100 REM*.ynOPRA04EHHE СПИСКА* 110 FOR 1 = 1 TON-1 120 FOR K = 1 + 1 TON 130 IFX(I)> = X(K)THEN170 140 LETA = X(K) 150 LETX(K)=X(I) 160 LETX(I)=A 170 NEXT К 180 NEXT I 190 REM* ВЫПЕЧАТЫВАНИЕ УПОРЯДОЧЕННОГО СПИСКА* 200 FOR 1 = 1 TON 210 PRINT X(l) 220 NEXT I 230 END 240 REM* КОЛИЧЕСТВО ВЕЛИЧИН И СПИСОК ЗНАЧЕНИЙ* 250 DATA 5,170,164,174,160,171 Если программа работает верно, то после инструкции RUN на экране появится упорядоченный список: 174 171 170 164 160 Если в 250-й строке не умещаются все значения элементов списка, то следует написать 260 DATA и вслед за этим продолжать список значений, пока не будут записаны все значения. В начале 250-й строки надо точно указать число значений, после последнего значения не должно быть никакого знака (точки, запятой и т.д.). На многих компьютерах можно выполнять действия также с двухмерными и трехмерными списками M(l, К), S(l, J, К). В начале программы необходимо определить объемы этих массивов. Чтобы описать, например, игру "15", необходимо определить DIM (4, 4) (см. § 4.13). 222
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Используя программу "Обработка лабораторных работ", найти средний рост мальчиков (а затем девочек) в классе и дисперсию.Если все величины нельзя записать в 210-й строке, то список следует продолжить в 220-й, 230-й, строках. В начале 210-й строки задать точное число значений. 2. При помощи программы "Обработка лабораторных работ" определить среднюю продолжительность календарного месяца в днях и дисперсию. 3. С помощью программы "Упорядочение списка чисел" расположить номера учеников в списке класса по росту школьников так, чтобы первым в списке был ученик наименьшего роста, . . ., последним — самый высокий ученик. В 250-й строке записать сначала количество учеников в классе, затем соответствующее каждому школьнику пятизначное число, в каждом из которых первые три цифры обозначают рост этого школьника в сантиметрах, а последние две цифры — порядковый номер школьника в классном журнале, например 17601, 16305, 18204, 16614. Как изменится список, напечатанный компьютером, если в 130-й строке записать IFX(I)<=X(K)THEN170 Какой список напечатает компьютер, если дополнить программу следующими строками: 30 DIMX(100),F(100) 124 LET F(i) = X(l) - 100*INT(X(I)/10Q) 128 LET F(K) =X(K) - 100*INT(X(K)/100) 130 IF F(IJ<=F(K) THEN 170 6.8. ОПЕРАЦИИ С БУКВАМИ, СЛОВАМИ, ТЕКСТАМИ И ЦЕПОЧКАМИ СИМВОЛОВ В современных вариантах бэйсика можно также использовать символические переменные. Имя такой переменной всегда оканчивается знаком Пили $, например ΑΠ,ΤΠ (I), LETTERD . Значениями символических переменных могут быть пробел, буква, слово, цепочка цифр, знаки препинания, графические символы. При помощи команды присваивания символическим переменным можно присвоить значения или вычислить для них новое значение, например, AU= "ВИДЕО", В$ = = "КОМПЬЮТЕР", К8= АП& ВПили К8= АП+ ВП (в некоторых версиях бэйсика употребляют знак &, а в некоторых — знак +). Символические переменные можно также использовать в командах, например INPUT NJ3, PRINT K$, IF L$ = "ДА" THEN. . . . Сравнение значений символических переменных основывается на сравнении соответствующих этим символам кодов (см. 3-ю страницу обложки этой книги). Так, с помощью оператора CHRD (65) числу 65 ставится 223
в соответствие буква А, а в результате выполнения оператора PRINT CHRP (34) будут напечатаны кавычки ". Важным символом является пробел, код которого 32. Если DD = "!" и СР = " ", то ASC(DP) значению величины DP τ. е. знаку ! поставит в соответствие ее код 69, а после выполнения оператора PRINT ASC(CD) будет напечатан код пробела — 32. Тексты можно обрабатывать с помощью оператора LEN, который определяет длину цепочки символов (количество символов в этой цепочке), например LEN(Kp), ставит β соответствие слову ВИДЕОКОМПЬЮТЕР число 14, а также с использованием оператора SEGD или MIDP, например, SEGp(Kp 6, 9) или МЮСНКЦ 6, 9) слову ВИДЕОКОМПЬЮТЕР ставит в соответствие его часть (сегмент), которая начинается с 6-й буквы и состоит из 9 букв, т. е. сегмент КОМПЬЮТЕР. Чтобы с числами можно было оперировать так же, как и с цепочками символов, каждое число можно "обратить" в цепочку символов с помощью оператора STRP. Так,если R = 3.14, то ZP = STRQ(R) уже не число, а цепочка символов, состоящая из символа 3, точки, символа 1 и символа 4. Теперь, применив LEN(ZP) и SEG(ZP, 1, 1), узнаем, что в этой цепочке символов 4 знака и первый знак слова Ζ О— 3. При помощи оператора N = VAL(ZP) величине N можно присвоить численное значение 3.14. Изучите следующую диалоговую программу. 10 LET АР= "ВИДЕО" 20READBP,CP,Dp,EP,FP 30 DATA КОМПЬЮТЕР, , !, МОЕ ИМЯ, МОЛОДЕЦ 40 LETKP=AP+BP ww/40LETKP = AP&BP 50 INPUT "ВВЕДИ СВОЕ ИМЯ"; NP 60 PRINT ΝΠ+ CD + DP;CP; ЕР; " - "; КП 70 INPUT "ВВЕДИ ПРАВИЛЬНОЕ МОЕ ИМЯ"; LP 80 IF LD= КП THEN 90 ELSE 60 90 PRINT FD; ","; NP + CP + DP 100LETG = LEN(NP) 110 PRINT "ТВОЕ ИМЯ СОСТОИТ ИЗ", G, "БУКВ" 120 INPUT "БУКВУ С КАКИМ НОМЕРОМ ИЗ ТВОЕГО ИМЕНИ ХОЧЕШЬ УЗНАТЬ"; S 130 IF S>G THEN 110 140 LET VD * SEGD(Na, S, 1) или 140 LET VD = MIDD(ND, S, 1) 150 PRINT "ЭТО БУКВА", VCl "С КОДОМ", ASC(VD) 160 INPUT "ПОВТОРИТЬ (ДА/НЕТ)"; LD 170 IF LQ« "ДА" THEN 110 180 END 224
ВОПРОСЫ И УПРАЖНЕНИЯ 1. Ввести в ваш компьютер программу, данную на вводном рисунке этой главы, с дополнениями Анны и проверить ее работу. 2. Есть ли на вашем компьютере операторы, описанные в этом параграфе? По* пробуйте пропустить программу "КОДЫ СИМВОЛОВ КЛАВИАТУРЫ ЭВМ" из приложения. 3. В программе "Упорядочение списка чисел" (см. 9 6.7) заменить величины Х(100), X (| ), Х(К), А соответственно на X П(ЮО), ХП(1), ХП(К), A Q; в 130-й строке записать IF Χ Π(Ι) <=ХП(Ю THEN 170 и в вашем распоряжении теперь имеется программа "УПОРЯДОЧЕНИЕ СПИСКА СЛОВ". Чтобы этой программой можно было пользоваться, в 250-й строке надо записать число слов в списке, а затем сами слова, входящие в список. Упомянутая программа расставляет слова в алфавитном порядке. 4. С помощью программы "ДЛИНА СЛОВ И РАСПРЕДЕЛЕНИЕ БУКВ" проанализировать какое-нибудь стихотворение, народную песню или рассказ.
ПРИЛОЖЕНИЕ АЛГОРИТМ И ПРОГРАММА "МАТЕМАТИЧЕСКАЯ ОБРАБОТКА РЕЗУЛЬТАТОВ НАБЛЮДЕНИЙ" Величины адреса хп + 1 R1 η R4 а = Σχ. RA Ъ = Σχ? RB X RC о RD Ь«- а ^- п*» сообщить п, а-*- а +х Ь~Ь + х2 п^п + 1 х^а/п σ— γ bjn - сообщить х% а*+а-х 0 ^ + 1-? -х2 а 00-03 04-06 07-10 11-15 16 17-18 19-22 23-30 31-32 33-37 ч Сх| ИП [в/о] ΓΐΤηΡΓί |П | 4| |П | А| |П| В| 4||с/п||п| ι| ИП | а| |ип| 1|| + ||п| А| ип| в||ипЫ|рН1+||п|в| |к~ ип Т] БП L2_ _3 (йп ~А| ИП ЗШИЦ 23-зо |ип |в! |ип| 4| \Т] |ип| с| 31-32 |ИП] С) |C/nj 33-37 |П| 1| [ЙП ип 3ΞΕΘ 226
b~b-x2 и» п— 1 38-42 |ИП[ в] [ИП I l| |f| х21 Р]|П[ В| 43-46 ИП 47-48 БП 0 4 LL ABTI Ввод значений измерений (ху = 31, х2 « 28, *3 « 30) Нажимаем клавиши В/О С/П __ — на индикаторе: 0. Вводим х1 : : 31 lc^nl ~ чеРез 5 секунд на индикаторе: 1 (порядковый номер введенного числа). Повторяем ввод значений измерений χ : |с/П| , пока не будут введены все числа. Исправление. Допустим, что вместо числа 28 нужно ввести число 29. Если какое-нибудь из введенных чисел нужно исправить, то ошибочное значение измерения следует ввести повторно и передать управление программой на 33-й шаг: 28 (βΤΪ] [ 3~|~3| | С/п] - на индикаторе значение η — 1 =2. Теперь можно вводить правильное значение измерения: 29 — на индикаторе:^» 3. С/П Обработка [In] 11 | 9| [с/п] - через 5 секунд на индикаторе: χ = 30 или 29,66, . ., (если х2 = 28), нажать клавишу катера значение дисперсии о = 0,816. . . или 1,247. и считать с инди- . (если х2 = 28). ПРОГРАММА "НАХОЖДЕНИЕ ЦЕНТРА И РАДИУСА ОКРУЖНОСТИ, ПРОХОДЯЩЕЙ ЧЕРЕЗ ТРИ ДАННЫЕ ТОЧКИ, НЕ ЛЕЖАЩИЕ НА ОДНОЙ ПРЯМОЙ" Величины адреса *1 R1 У\ R2 х2 R3 Уг R4 *3 R5 Уг R6 *с R7 Ус R8 s R9 т R0 а RA Ъ RB с RC d RD β R1 ^ R2 ст^*· Хя Χ* 6*^2 -J, С~Х3~*1 00-03 04-07 08-11 12-15 Θ |ип |ип [йгГ [ип_ [в/оЦТ з| {ип | Lil ΙϋπΙ ~5J [ИП] 3 ГйгП |прг] 3Ξ0 _^Ы[п] ЗЕИ USE "а] в] 3 [о] 227
2 ? /я— с b -a.d у ~(c.e-a.f)/m 16-21 ИП IF | x2l |mf зиши e»(x22 + >>22 - sJ/2 22-31 | ИП | 3| | F 1 х21 | ИП | 4| ИЗ И ИЗ G CD ШИЗ /-fc32 + у32 - s//2 32-41 |ИП| 5| \ F 1 х2| 1 ИП | б| [Π3ΞΗ3ΒΞ ШИЗ 42-49 |ИП | С| |ИП| В| [х] (ЙП ИП зшшиз xe»(b.f-d. е)/т 50-59 | ИП | в| |ИП | 2| [х] |ИП| D |ип| HfxIR [йп шиз 60-69 [ип | с| 1 ип | ι| [х] 1ип 1 а| ШВИИШ ИП |п 3 г* >/(x2-xJ**(y3-yc)2 70-79 |ИП | 31 1ИП1 7| Q | F 1 х21 ГЩТ] (шШШИЗ сообщить г ,стоп 80 ПШ F АВТ 228
Даны три точки (хл;ул), (х2;У2)>1хуУз)> например (1; 1), (2; 7), (8; 4). Вводим координаты точек: 1 |П | 1| ,1 |П | 2| ,2 [Ίπ ~~ [п~ _3 > 8 [Π | 5 | , 4 |П Ι б| и нажимаем клавиши | Β/θ[ | С/П через 27 секунд на индикаторе появится значение радиуса г » 4. Наби- - на индикаторе: *с ^4,0, нажимаем раем на клавиатуре ИП ИП 8 - на индикаторе:у ^3,6. Если в калькулятор ввести координаты точек, лежащих на одной прямой, то на индикаторе появится сообщение Error — ошибка. МОДЕЛЬ ОТЯМОЛИНЕЙНОГО ДВИЖЕНИЯ ( величины адреса kf s R0 η R1 At R2 а RA Сх V RB рус см. 3 X RC 4.12) t RD Г) | F | ГИТ 9,8 R8 0,43 R9 t~t + At отк = sqq 1 шаг-1 вспомогательный алгоритм v—-v + aAt/n х*~-х + vAt/n следующий κ 00-03 [ИП [ Pi [ИП | 2| [+] [П 1 Р| 04-05 ИП 06-07 \Ш\ |3 | 0| 08-15 | ИП | В] | ИП | А| [ЙП X 16-23 ИП ип| в| |ип | 2| ИП nmmnrra 24-25 26-29 [f L0| Ήϋ сообщить t вспомогательный алгоритм я-9,8-0,43); 2 30-37 [йп _5) C/Π БП Го" 0 1ип "ΊΠ ИП | 9| [Ж |Т) |авт | в/о в/о 229
Вводим константы η = 4, At = 0,1, νβ = 0, χ = 0, ί = 0 и числа 9,8 и 0,43: 4 [П| 1) ,0,1 |П \ 2| , [ζ) |Π | BJ , [Π 1 C| , Π 9,8 |Π I 8| и 0,43 [Π | 9| . Нажимаем клавишу |С/Пj - через 35 секунд на индикаторе появится t = 0,1, нажатием клавиши на индикаторе: χ «0,061; |ИП[ на индикаторе: а ХУ В [ип X] на индикаторе: ν ^0,97, = 9,57. Нажав С/ш , определяем t, χ, ν, а для следующего момента времени t = 0,2 [ с], χ ^0,215[ M]tv « ^1,87[м/с],д^8,62[м/с2]. ПРОГРАММА "ДЕСЯТИЧНЫЕ И ДВОИЧНЫЕ КОДЫ СИМВОЛОВ КЛАВИАТУРЫ КОМПЬЮТЕРА" С помощью этой программы можно найти десятичные и двоичные коды символов клавиатуры вашего компьютера. Перед вводом программы выясните, не следует ли вместо оператора & использовать +. 10 LET = 30 20 FOR I=AT0 255 30 LET N=l 40 LET В Π =" " 50 FOR Κ=1 TO 8 60LETD=N-2*INT(N/2) 70 LET BQ =STR Π (D)&BСЗ 80LETN=INT(N/2) 90 NEXT К 100 PRINT STRCUDu" "&CHRp(l)&" "&BQ 110 IF l-A<=20 THEN 170 120 LETA=A+20 130 PR I NT "ПРОДОЛЖИТЬ-П, 3 АКОНЧИТЬ-К" 140 INPUT LD 150 IF LD="n" THEN 170 160 LET 1=255 170 NEXT I 180 END ПРОГРАММА "ИССЛЕДОВАНИЕ РАСПРЕДЕЛЕНИЯ ДЛИН СЛОВ И БУКВ В ТЕКСТЕ" Выясните, не следует ли на вашем компьютере команду присваивания писать с LET, а также не нужно ли вместо SEG писать MID, а вместо ASC — CODE, а вместо знака D— знак $. Начиная работу с программой, 230
в ответ на предложение каталога следует ввести 1. Ввод слов можно прервать в любой момент, чтобы ознакомиться с распределением слов или букв, а затем снова продолжить ввод слов. 100 DIM V(20), Х(50), M(50), Ц255) 110 S-0 120Z-0 125 REM КАТАЛОГ 130 PRINT "ВВОД СЛОВ-1" 140 PRINT "РАСПРЕДЕЛЕНИЕ СЛОВ-2" 150 PRINT "РАСПРЕДЕЛЕНИЕ БУКВ-3" 160 PRINT "КОНЕЦ-4" 170 INPUTN 180 ON N GOSUB 200,400, 600,999 190 GOTO 120 195 REM ВВОД СЛОВ 200 PRINT "ВВЕДИТЕ СЛОВА! В КОНЦЕ ВВЕДИТЕ ТОЧКУ." 210 INPUT VD 220 IF VC$="/'THEN 320 230 S-S+1 240G-LEN(VU) 250 V(G)=V(G)+1 260 FOR K=1 TO G 270Ba-SEGa(Va,K,1) 280J-ASC(Ba) 290 L(J)=L(J)+1 300 NEXT К 310 GOTO 210 320 RETURN 395 REM РАСПРЕДЕЛЕНИЕ СЛОВ 400 FOR K=1 TO 20 410X(K)=V(K) 420 M(K)=K 430 NEXT К 440 N=20 450 GOSUB 800 460 PRINT "ВВЕДЕНО", S, "СЛОВ" 470 PR INT "ЧИСЛО БУКВ", "ЧИСЛО СЛОВ" 480 PRINT "В СЛОВЕ", "В ТЕКСТЕ" 490 FOR K=1 ТО 20 500 IFX(K)=0THEN520 510 PRINT M(K),X(K) 520 NEXT К 530 RETURN 231
595 REM РАСПРЕДЕЛЕНИЕ БУКВ 600 N=0 610 FOR K=65T0 255 620 IF L(K)=0 THEN 670 630 N=N+1 640X(N)=L(K) 650M(N)=K 660 Z=Z+X(N) 670 NEXT К 680 GOSUB 800 690 PRINT "В ТЕКСТЕ"; Ζ; "БУКВ" 700 PRINT "БУКВА И ЕЕ ПОВТОРЯЕМОСТЬ" 710J=INT(N/2) 720 FOR К=1 TO J 730 PRINT CHRCi(V(K));X(K), CHRt3(M(K+J)) 740 NEXT К 750 RETURN 795 REM УПОРЯДОЧЕНИЕ СПИСКА 800 PRINT "ПОДОЖДИТЕ! УПОРЯДОЧИВАЮ СПИСОК" 810 FOR 1=1 TON-1 820 FOR K=l+1 TO N 830 IF X(I)>=X(K) THEN 900 840C=X(K) 850X(K)=X(I) 860X(I)=C 870 D=M(K) 880M(K)=M(I) 890M(I)=D 900 NEXT К 910 NEXT I 920 RETURN 999 PRINT "КОНЕЦ" 1000 PRINT "ДЛЯ ИССЛЕДОВАНИЯ НОВОГО ТЕКСТА ВВЕДИТЕ КОМАНДУ RUN" 1010 END 232
ГЕОГРАФИЧЕСКИЕ КООРДИНАТЫ ГОРОДОВ Город Москва Рига Владивосток Алма-Ата Ашхабад Баку Вильнюс Душанбе Ереван Киев Кишинев Минск Таллин Ташкент Тбилиси Фрунзе Берлин Будапешт Бухарест Прага София Варшава Сидней Токио Географическая широта в градусах 55,75 56,95 43,12 43,26 37,75 40,35 54,88 38,55 40,23 50,45 47,03 53,90 59,43 41,33 41,70 42,88 52,48 47,49 44,41 50,09 42,68 52,22 -33,86 35,67 Географическая долгота в градусах 37,62 24,12 131,90 76,95 58,40 49,85 25,27 68,75 44,50 30,45 28,82 27,57 24,75 69,30 44,82 74,62 13,05 19,06 26,11 14,42 23,34 21,01 -151,20 -139,54 233
МЕЖДУНАРОДНЫЕ КОДЫ СИМВОЛОВ Символ 1 ' 1 ! " ι # I »(П) % & ' ( 1 ) * + » — / 0 1 2 3 4 5 6 7 8 9 1 ' < = > 1 з А В С J D Десятичный код 2 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 Двоичный код _ _ ~ | 0100000 0100001 0100010 0100011 0100100 0100101 0100110 0100111 0101000 0101001 0101010 0101011 0101100 0101101 0101110 0101111 0110000 0110001 0110010 0110011 0110100 0110101 0110110 0110111 0111000 0111001 0111010 0111011 0111100 0111101 0111110 0111111 3000000 1000001 1000010 1000011 1000100 I 234
Γ 1 Ε F G Η I J К L Μ N 0 Ρ Q R S Τ U V w X Υ ζ с \ ] х\ — \ а ь с d е f 9 h i J к I m 2 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 3 1000101 1000110 1000111 1001000 1001001 1001010 1001011 1001100 1001101 1001110 1001111 1010000 1010001 1010010 1010011 1010100 1010101 1010110 1010111 1011000 1011001 1011010 1011011 1011100 1011101 1011110 1011111 1100000 1100001 1100010 1100011 1100100 1100101 1100110 1100111 1101000 1101001 1101010 1101011 1101100 1101101 J 235
Ι 1 η 0 Ρ q г s t u V w X У ζ 2 110 111 112 113 114 115 116 117 118 119 120 121 122 3 1101110 1101111 1110000 1110001 1110010 1110011 1110100 1110101 1110110 1110111 1111000 1111001 1111010
СОДЕРЖАНИЕ Предисловие 3 1. Устройство микрокалькулятора и клавишные операции 7 1.1. Простейшие и инженерные микрокалькуляторы 7 1.2. Устройство микрокалькулятора 10 1.3. Как работает микрокалькулятор 13 1.4. Гашение содержимого регистра и обмен между регистрами 15 1.5. Клавишные операции с памятью 16 1.6. Микрокалькулятор как исполнитель оператора. Программирование режима константы 18 1.7. Специальные операторы или стандартные функции 22 1.8. Режим статистических вычислений 24 1.9. Входной язык микрокалькулятора 25 2. Занятия с микрокалькулятором 29 2.1. Графы вычислений и программы 29 2.2. Преобразование обыкновенных дробей в десятичные 32 2.3. Целая часть числа int 33 2.4. Вычисление остатка отделения 34 2.5. Приближение чисел в микрокалькуляторе и приближенные вычисления 36 2.6. Проверка решения с помощью микрокалькулятора 38 2.7. Получение наглядной информации с помощью микрокалькулятора 39 2.8. Численный эксперимент,или моделирование 41 2.9. Случайные числа 43 2.10. Некоторые важнейшие программы для курса алгебры 45 2.11. Математическая обработка результатов наблюдений 47 237
3. Вычислительный практикум 53 3.1. Игра в числа-слова , 53 3.2. Игра в режиме константы 56 3.3. Игры с клавишами элементарных функций . 60 ЗА Графики 61 3.5. Задачи на целую часть и остаток. Календарные расчеты 67 3.6. Численные эксперименты и численный анализ 70 4. Алгоритмы 91 4.1. Инструкции, рецепты и правила в качестве алгоритмов 91 4.2. Алгоритмы в арифметике 97 4.3. Понятие о величине как носителе информации 100 4.4. Команда присваивания значения 103 4.5. Разветвляющиеся алгоритмы 107 4.6. Циклы в алгоритмах . 110 4.7. Описание диалога в алгоритмах 116 4.8. Вспомогательные алгоритмы 119 4.9. Алгоритмы вместо таблиц 124 4.10. Алгоритмы решения уравнений 127 4.11. Алгоритмы вычисления интеграла и производной 131 4.12. Алгоритмическая модель механического движения 136 4.13. Алгоритмы обработки массивов данных 139 4.14. Алгоритмы поиска и упорядочения данных 144 5. Программируемый микрокалькулятор . 151 5.1. Входной язык в обратной польской записи 152 5.2. Вычисления с использованием регистров памяти «... 157 5.3. Действия с использованием косвенной адресации регистров 161 5.4. Программное управление микрокалькулятора 165 5.5. Проверка и исправление программы . 170 5.6. Подпрограммы 174 5.7. Безусловный переход 178 5.8. Условная передача управления. Разветвления 181 5.9. Программы с циклами 184 5.10. Программы с меняющимися подпрограммами 188 238
6. Видеокомпьютер и язык программирования бэйсик 195 6.1. Отличие ЭВМ от инженерного и программируемого микрокалькулятора 195 6.2. Видеокомпьютер 199 6.3. Диалог с компьютером. Работа с готовой программой 202 6.4. Стандартные функции в бэйсике 207 6.5. Описание алгоритмических процессов на бэйсике 211 6.6. Подпрограммы в бэйсике 215 6.7. Работа со списками величин 220 6.8. Операции с буквами, словами, текстами и цепочками символов 223 Приложение 226
ТОМАС БАРОМЕЕВИЧ РОМАНОВСКИЙ МИКРОКОМПЬЮТЕР В ШКОЛЕ Пособие для учащихся Редактор Л. Л. Розумова. Худржеств. редактор В. А. Пузанкевич. Обложка художника Д. Лапса. "Пехнич. редактор Н. А. Головина- Информ. бланк № 6129 Подписано к печати с диапозитивов 17.07.86. Формат 60χ90/ΐ6· Бумага офсетная № 2. Гарнитура журнально-рубл. Способ печати офсетный. Условн.-печ. лист 15+0,25 форз. Условн. кр.-отт. 16. Уч. изд. лист. 12,26+0,29 форз. Тираж 150 000 экз. Изд. № 31085. Зак. № 6-372. Цена 55 к. Издательство «Радянська школа», 252053, Киев, Ю. Коцюбинского, 5 Харьковская книжная фабрика «Коммунист», 310012, Харьков, Энгельса, 11
Игра„ПопаЗи | ВвоЗ программы „ум | С | 23 ШШ 23 или| с 23 АО На какое число программа отвечает 25 851? ? | С 0,0625 [Q 0,0625 С 0,0625 |Щ Q ? С 12,74 12,74 | С 12,74 Q В! На высоте 8 м наЭ В самолете 10000 | С какой высоты ви< * В ножение на 23" И 5Ξ9 В 5ЕЭ\ В БЕП В 575 В 05/1 В 0Л03В0БЕ\ В З.ВОБЕ-031 В / „Расстояние 6о В 1БЕ301Б 1 В 1БВ301Б 1Я \Ш.П955ЧЗ\ уровнем моря виЗно ЕР ? Эно на расстоянии ГЯ \ЗП.ЕВББЗ 1 в цель " Ввоб программы „умно, | Сх | |В/0 F ПРГ | ИП А С/П F АВТ 23 40 ? 0,0625 100 ? «ениена а' БЗ-34 Π А В/О С/П В/О С/П Π А В/О С/П В/О С/П в микрокалькулятор ОО 50ЕБ-ПЗ ЕВ BED B5I Б.ЕБ Б.ЕБ 1 -DE горизонта" s=Vi274-h' Сх |в/о ИП | D F АВТ F ПРГ ш С/П \5РЕ11ЕПЧ\ 12,74 8 Π D 1Е1Ч в/о С/П 10.095543 на расстоянии 10 км 10 000 В/О С/П 30 км ? В/О С/П [ЗОЁВББЗ
Ql· ш a, ш 1 ai