Семакин Информатика и икт 10 Базовый уровень 2015.pdf

  • pdf
  • 29.04.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Семакин Информатика и икт 10 Базовый уровень 2015.pdf

И. Г. Семакин

Тею. Шеина

иноорммип

БАЗОВЫЙ УРОВЕНЬ

ЕИ3ДАТЕльство

Б НОМ

И. Г. Семакин, Е. К. Хеннер,

Т. Ю. Шеина иноорммип

БАЗОВЫЙ УРОВЕНЬ

Учебник для 10 класса

4-е издание

Рекомендовано

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

Москва

БИНОМ. Лаборатория знаний

2015

удк 004.9 ББК 32.97 сзо

Семакин И. Г.

СЗО Информатика. Базовый уровень учебник для 10 класса / И. Г, Семакин, Е. К. Хеннер, Т. Ю. Шеина. — 4-е изд. — М. : БИНОМ. Лаборатория знаний, 2015. — 264 с. : ил.

rsBN 978-5-9963-1930-5

Учебник предназначен для изучения курса информатики на базовом уровне в 10 классах общеобразовательных учреждений. Содержание учебника опирается на изученный в основной школе (в 7—9 классах) курс информатики. В учебнике рассматриваются теоретические основы информатики: понятие информации, информационные процессы, измерение информации, кодирование и обработка информации в компьютере. Излагаются принципы структурной методики программирования, язык программирования Паскаль. В состав учебника входит практикум, структура которого соответствует содержанию теоретического раздела учебника.

Учебник входит в учебно-методический комплект, включающий в себя также учебник для 11 класса, методическое пособие для учителя, электронное приложение.

Соответствует Федеральному государственному образовательному стандарту (ФГОС) среднего (полного) общего образования (2012 г.).

удк 004.9 ББК 32.97

Учебное изДание

Семакин Игорь Геннадьевич

Хеннер Евгений Карлович Шеина Татьяна Юрьевна

ИНФОРМАТИКА.

БАЗОВЫЙ УРОВЕНЬ

Учебник для 10 класса

Ведущий редактор О. А. Полежаева. Редактор Е. В. Баклашова Ведущий методист И. Л. Сретенская

Художественное оформление: С. Инфантэ, И. Е. Марев

Художественный редактор Н. А. Новак. Иллюстрации: Я. В. Соловцова

Технический редактор Е. В. Денюкова. Корректор Е. Н. Клитина Компьютерная верстка: С. А. Янковая, В. А. Носенко

Подписано в печать 13.11.14. Формат 70х 100/16.

Усл. печ. л. 21,45. Тираж 25 ООО экз. Заказ № 36960.

Издательство «БИНОМ. Лаборатория знаний»

125167, Москва, проезд Аэропорта, д. З. Телефон: (499) 157-5272 e-mail: binom@Lbz.ru, http://www.Lbz.ru, http://e-umk.Lbz.ru, http://metodist.Lbz.ru

При участии ООО Агентство печати «Столица» www.apstolica.ru; e-mail: apstolica@bk.ru

Отпечатано в соответствии с качеством предоставленных издательством электронных носителей в ОАО «Саратовский полиграфкомбинат».

410004, г. Саратов, ул. Чернышевского, 59. www.sarpk.ru

         rsBN 978-5-9963-1930-5                     ф) БИНОМ. Лаборатория знаний, 2015

Оглавление

Введение5

Глава 1. Информация11

Понятие информации. 11

Предоставление информации, языки, кодирование . . 15 Измерение информации. Алфавитный подход. 21 Измерение информации. Содержательный подход .. 26


Представление чисел в компьютере . . Представление текста, изображения и звука в компьютере43

Глава 2. Информационные процессы .53

S 7. Хранение информации .                  

      . 53

S 8. Передача информации               

     . 59

S 9. Обработка информации и алгоритмы                         

    . 64

S 10. Автоматическая обработка информации .                

     . 69

S 11. Информационные процессы в компьютере .            

     . 74

Глава З. Программирование обработки информации86

S 12. Алгоритмы и величины .. 86

S 13. Структура алгоритмов. 92

S 14. Паскаль— язык структурного программирования . . . . 99 S 15. Элементы языка Паскаль и типы данных. 105 S 16. Операции, функции, выражения110

S 17. Оператор присваивания, ввод и вывод данных .116

S 18. Логические величины, операции, выражения. .123

           Программирование ветвлений        

S 20.Пример поэтапной разработки программы

. 132

решения задачи

. 136

S 21.Программирование циклов             

. 142

S 22.Вложенные и итерационные циклы                              

. 150

S 23.Вспомогательные алгоритмы и подпрограммы .           

. 155

24.Массивы

. 163

S 19.

S 25.Организация ввода и вывода данных


с использованием файлов. 169

S 26.Типовые задачи обработки массивов .. 175


S 27.Символьный тип данных181

S 28.Строки символов185

S 29.Комбинированный тип данных . . . . . . . .190

Практикум197

Практические работы к главе 1 «Информация»197 Практические работы к главе 2 «Информационные процессы ». 215 Практические работы к главе З «Программирование обработки информации »231

Ответы к заданиям практических работ . .263

Введение

Что изучается в курсе информатики для 10—11 классов


Изучение любого школьного предмета можно сравнить со строительством дома. Только этот дом складывается не из кирпичей и бетонных плит, а из знаний и умений. Строительство дома начинается с фундамента. Очень важно, чтобы фундамент был прочным, потому что на него опирается всё остальное сооружение. Фундаментом для курса «Информатика 10—11» являются знания и умения, которые вы получили, изучая курс информатики в основной школе в 7—9 классах. Вам уже не требуется объяснять, что такое компьютер и как он работает; с какой информацией может работать компьютер; что такое программа и программное обеспечение компьютера; что такое информационные технологии. В курсе информатики основной школы вы получили представление о том, в каком виде хранится информация в памяти компьютера, что такое алгоритм, информационная модель. Вы научились обращаться с клавиатурой, мышью, дисками, принтером; работать в среде операционной системы; получили основные навыки работы с текстовыми и графическими редакторами, с базами данных и электронными таблицами. Все эти знания и навыки вам будут необходимы при изучении курса «Информатика 10-11».

Термин «информатика» может употребляться в двух смыслах:

*     информатика как научная область, предметом изучения которой являются информация и информационные процессы; в которой осуществляется изобретение и создание новых средств работы с информацией;

*     информатика как практическая область деятельности людей, связанная с применением компьютеров для работы с информацией.

Как современная техника немыслима без открытий теоретической физики, так и развитие информатики и информационных технологий невозможно без теории информации, теории алгоритмов и целого ряда других теорий в области кибернетики, лингвистики, семиотики, системологии и прочих наук.

В соответствии с современным пониманием, в информатике можно выделить четыре части:

1)  теоретическая информатика;

2)  средства информатизации;

З) информационные технологии; 4) социальная информатика.

Теоретическая информатика — это научная область, предмет изучения которой — информация и информационные процессы. Как любая фундаментальная наука, теоретическая информатика раскрывает законы и принципы в своей предметной области.

Введение


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

В последние годы в информатике сформировалось новое направление, которое называют социальной информатикой. Его появление связано с тем, что широкое внедрение в жизнь компьютерных технологий и современных средств информационных коммуникаций (Интернета, сотовой связи) оказывает всё более сильное влияние на общество в целом и на каждого отдельного человека. Общественное развитие движется к своей новой ступени — к информационному обществу.

Предметная область современной информатики очень велика и разнообразна. Как известно, нельзя объять необъятное. И наш курс затронет лишь часть тем и задач информатики. Вопросы,

которые мы с вами будем изучать, относятся к четырем важнейшим понятиям информатики:

1)  информационные процессы;

2)  информационные системы; З) информационные модели;

4) информационные технологии.

Правила техники безопасности и гигиены при работе на персональном компьютере

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

Введение


Прежде всего, не надо забывать, что компьютер электроприбор, находящийся под напряжением, величина которого может быть смертельно опасной. Под опасным напряжением находятся и многие отдельные узлы системного блока, а также устройства, составляющие часть рабочего места человека, пользующегося персональным компьютером, — монитор, принтер, сканер, звуковые колонки и т, д. В связи с этим недопустимо:

    вскрывать корпус компьютера, не отключенного от электрической сети;

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

Следует также знать, что на отдельных элементах компьютера (например, мониторах некоторых типов, источниках бесперебойного питания) высокое напряжение может сохраняться и некоторое время после отключения компьютера от сети.

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

Давайте не будем путать: из того, что вы умеете программировать, инсталлировать и удалять программы, создавать презентации, общаться в Интернете и т. д., вовсе не следует, что вы являетесь квалифицированным специалистом по сборке-разборке компьютера. От правильной самооценки в этих вопросах зависит ваше здоровье (и даже жизнь).

Введение


Если правила техники безопасности при работе с компьютером, связанные с «электрической» составляющей, относительно просты и легко выполнимы, то правила личной гигиены в этой сфере (тоже не очень сложные) гораздо реже соблюдаются на практике, особенно когда мы не в школьном компьютерном классе, где за их соблюдением следит учитель, а дома. Вспомните, что элементарное требование «регулярно мойте руки мылом» предохраняет здоровье миллионов людей эффективнее самых совершенных лекарств, но многие люди болеют лишь потому, что его нарушили. При работе с компьютером имеет место аналогичная ситуация люди, не соблюдая элементарные гигиенические нормы, теряют зрение, портят осанку, чрезмерно утомляются и даже доводят себя до психических расстройств. Длительная работа за компьютером негативно сказывается на многих функциях человеческого организма: эндокринной, иммунной и репроДуктивной системах, на зрении и костно-мышечном аппарате.

Обсудим некоторые проблемы в этой сфере детальнее.

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

Вредное влияние на зрение, оказываемое монитором, можно уменьшить как за счет высокого качества монитора, так и путем периодического выполнения несложных упражнений для глаз. Монитор должен удовлетворять международным стандартам безопасности, что фиксируется в сопроводительной документации. На него не должны падать блики от источников света; расстояние от экрана монитора до глаз пользователя должно составлять от 50 до 70 см. Не надо стремиться отодвинуть монитор как можно дальше, опасаясь вредных излучений, потому что для глаза важен также угол обзора наиболее характерных объектов. Оптимально размещение монитора на расстоянии примерно полутора размеров диагонали экрана. Важным параметром является частота кадров — она должна быть не менее 85 Гц. Периодически, почувствовав утомление зрения, необходимо сделать перерыв, отвести взгляд от экрана и сфокусировать его на удаленных предметах. Вредное влияние на зрение оказывает и недостаточная освещенность как помещения в целом, так и рабочего места в частности.

 

э.


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

И наконец, нельзя не сказать о вредном влиянии на психику, наблюдаемом у некоторых пользователей персональных компьютеров, число которых, к сожалению, возрастает. Компьютерная зависимость, проявляющаяся в том, что люди (прежде всего молодые) теряют интерес ко всему, кроме компьютерных игр и/или общения в Интернете, по классификации Всемирной организации здравоохранения отнесена к опасным психическим расстройствам. Эти люди постепенно теряют связь с действительностью и начинают жить в воображаемом мире. «Техника безопасности» здесь состоит в самоконтроле и контроле со стороны окружающих, помогающих вовремя оторваться от виртуального мира и вернуться в мир реальный.


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

В работе с книгой вам помогут навигационные значки:

важное утверждение или определение.

— вопросы и задания к параграфу.

— задания для подготовки к итоговой аттестации.

— практические работы на компьютере.

Введение


— К каждой главе учебника рекомендуется электронный образовательный ресурс (ЭОР) с сайта Федерального центра образовательных ресурсов (ФЦИОР): http://fcior.edu.ru Доступ к ЭОР из каталога ФЦИОР:

http://fcior.edu.ru/catalog/meta/4/mc/disciplineYo 2000/ mi/4.06/p/page.html, где ресурсы размещены в алфавитном порядке, согласно названиям учебных тем.

 Проектное или исследовательское задание.

В ходе выполнения проекта (исследования) определите вид, в котором будут представлены его результаты. Можно выбрать один (или несколько) из следующих вариантов:

 подготовить набор полезных ссылок с использованием мтеЬ-ресурсов;  подготовить небольшое выступление с использованием презентации (5—7 мин);  оформить доклад и поместить его на сайт школьной конференции;  подтвердить полученные результаты расчетами или графиками (диаграммами);  подготовить видеоролик;  разместить материалы проекта (исследования) в коллекции обучающих модулей по предмету на сайте школы.

Глава 1

Информация

5 1

Понятие информации

Наверное, самый сложный вопрос в информатике — это «Что такое информация?». На него нет однозначного ответа. Смысл этого понятия зависит от контекста (содержания разговора, текста), в котором оно употребляется.

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


Рассказывая о компьютере, мы говорили, что компьютер это универсальный программно управляемый автомат для работы с информацией. В таком контексте не обсуждается смысл информации. Смысл — это значение, которое придает информации человек. Компьютер же работает с битами, с двоичными кодами. Вникать в их «смысл» компьютер не в состоянии. Поэтому правильнее называть информацию, циркулирующую в устройствах компьютера, данными. Тем не менее в разговорной речи, в литературе часто говорят о том, что компьютер хранит, обрабатывает. передает и принимает информацию. Ничего страшного в этом нет. Надо лишь понимать, что в «компьютерном контексте» понятие

«информация» отождествляется с понятием «данные».

В Толковом словаре В. И. Даля нет слова «информация». Термин «информация» начал широко употребляться с середины ХХ века. В наибольшей степени понятие информации обязано своим распространением двум научным направлениям: теории связи и кибернетике. Автор теории связи Клод Шеннон, анализируя технические системы связи: телеграф, телефон, радио, рассматривал их как системы переДачи информации. В таких системах информация передается в виде последовательностей сигналов: электрических или электромагнитных. Развитие теории связи послужило созданию теории информации, решающей проблему измерения информации.

Основатель кибернетики Норберт Винер анализировал разнообразные процессы управления в живых организмах и в технических системах. Процессы управления рассматриваются в кибернетике как информационные процессы. Информация в системах управления циркулирует в виДе сигналов, передаваемых по информационным каналам.

Информация


В ХХ веке понятие информации повсеместно проникает в науку. Нейрофизиология (раздел биологии) изучает механизмы нервной деятельности животного и человека. Эта наука строит модель информационных процессов, происходящих в организме. Поступающая извне информация превращается в сигналы электрохимической природы, которые от органов чувств передаются по нервным волокнам к нейронам (нервным клеткам) мозга. Мозг передает управляющую информацию в виде сигналов той же природы к мышечным тканям, управляя, таким образом, органами движения. Описанный механизм хорошо согласуется с кибернетической моделью Н. Винера.

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

Понятие информации относится к числу фунДаментальных, т. е. является основополагающим для науки и не объясняется через другие понятия. В этом смысле информация встает в один ряд с такими фундаментальными научными понятиями, как вещество, энергия, пространство, время. Осмыслением информации как фундаментального понятия занимается наука философия.

Согласно одной из философских концепций, информация является свойством всего сущего, всех материальных объектов мира. Такая концепция информации называется атрибутивной (информация атрибут всех материальных объектов). Информация в мире возникла вместе со Вселенной. С такой предельно широкой точки зрения, информация проявляется в воздействии одних объектов на другие, в изменениях, к которым такие воздействия приводят.

Другую философскую концепцию информации называют функциональной. Согласно функциональному подходу, информа-

Понятие информации

 

13

венцем жизни, так как связана с функционированием сложных 47•      самоорганизующихся          систем, к которым относятся живые организмы и            человеческое общество. Можно еще сказать так: информация — это атрибут, свойственный только живой природе. Это один из существенных признаков, отделяющих в природе живое от неживого.

Третья философская концепция информации — антропоцентрическая, согласно которой информация существует лишь в человеческом сознании, в человеческом восприятии. Информационная деятельность присуща только человеку, происходит в социальных системах. Создавая информационную технику, человек создает инструменты для своей информационной деятельности.

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

Информация


Можно сказать, что употребление понятия «информация» в повседневной жизни происходит в антропоцентрическом контексте. Для любого из нас естественно воспринимать информацию как сообщения, которыми обмениваются люди. Например, средства массовой информации (СМИ) предназначены для распространения сообщений, новостей среди населения.

Система основных понятий

Философия

Атрибутивная концепция:

информация — всеобщее свойство (атрибут) материи

Функциональная концепция:

информация и информационные процессы присущи только живой природе, являются ее функцией

Антропоцентрическая концепция:

информация и информационные процессы присущи только человеку

Теория информации

Результат развития теории связи (К. Шеннон)

Информация содержание, заложенное в знаковые (сигнальные) последовательности

Кибернетика

Исследует информаци-

онные процессы в системах управления (Н. Винер)

Информация — содержание сигналов, передаваемых по каналам связи в системах управления

Нейрофизиология

Изучает информационные процессы в механизмах нервной деятельности животного и человека

Информация содержание сигналов электрохимической природы, передающихся по нервным волокнам организма

Генетика

Изучает механизмы наследственности, пользуется понятием «наследственная информация »

Информация — содержание генетического кода — структуры молекул ДНК, входящих в состав клетки живого организма


Вопросы и задания

1. Какие существуют основные философские концепции информации?

2. Какая, с вашей точки зрения, концепция является наиболее верной?

З. Благодаря развитию каких наук понятие информации стало широко употребляемым?

4.  В каких биологических науках активно используется понятие информации?

5.  Что такое наследственная информация?

6.  К какой философской концепции, на ваш взгляд, ближе употребление понятия информации в генетике?

7.  Если под информацией понимать только то, что распространяется через книги, рукописи, произведения искусства, средства массовой информации, то к какой философской концепции ее можно будет отнести?

8.  Согласны ли вы, что понятие информации имеет контекстный смысл? Если да, то покажите это на примерах.

52

Представление информации, языки, кодирование


Представление информации, языки, кодирование

Из курса основной школы вам известно:

   Историческое развитие человека, формирование человеческого общества связано с развитием речи, с появлением и распространением языков. Язык это знаковая система для представления и передачи информации.

   Люди сохраняют свои знания в записях на различных носителях. Благодаря этому знания передаются не только в пространстве, но и во времени — от поколения к поколению,

   Языки бывают естественные, например русский, китайский, английский, и формальные, например математическая символика, нотная грамота, языки программирования.

Письменность и кодирование информации

Под словом «кодирование» понимают процесс представления информации, удобный для ее хранения и/или передачи. Следовательно, запись текста на естественном языке можно рассматривать как способ кодирования речи с помощью графических элементов (букв, иероглифов). Записанный текст является кодом, заключающим в себе содержание речи, т. е. информацию.

Процесс чтения текста — это обратный по отношению к письму процесс, при котором письменный текст преобразуется в устную речь. Чтение можно назвать декодированием письменного текста. Схематически эти два процесса изображены на рис. 1.1.

 

Устная речь

Рис. 1.1. Схема передачи информации с помощью письменности

Схема на рис. 1.1 типична для всех процессов, связанных с передачей информации.

Информация

Цели и способы кодирования

Теперь обратим внимание на то, что может существовать много способов кодирования одного и того же текста на одном и том же языке. Например, русский текст мы привыкли записывать с помощью русского алфавита. Но то же самое можно сделать, используя латинский алфавит. Иногда так приходится поступать, отправляя SMS по мобильному телефону, на котором нет русских букв, или электронное письмо на русском языке за границу, если у адресата нет русифицированного программного обеспечения. Например, фразу «Здравствуй, дорогой Саша!» приходится писать так: «Zdravstvui, dorogoi Sasha!».

Существует множество способов кодирования. Например, стенография — быстрый способ записи устной речи. Стенография появилась во времена, когда не существовало техники звукозаписи. Ею владели лишь немногие специально обученные люди — стенографисты. Они успевали записывать текст синхронно с речью выступающего человека. В стенограмме один значок обозначает целое слово или сочетание букв. Расшифровать (декодировать) стенограмму мог только сам стенографист.

16

Посмотрите на текст стенограммы на рис. 1.2. Там написано следующее: «Говорить умеют все люди на свете. Даже у самых примитивных племен есть речь. Язык — это нечто всеобщее и самое  человеческое, что есть на свете».

Можно придумать и другие спо- Рис. 1.2. Стенограмма собы кодирования.


Приведенные примеры иллюстрируют следующее важное правило: для кодирования одной и той же информации могут быть использованы разные способы; их выбор зависит от ряда обстоятельств: цели кодирования, условий, имеющихся средств. Если надо записать текст в темпе речи, делаем это с помощью стенографии; если надо передать текст за границу, пользуемся латинским алфавитом; если надо представить текст в виде, понятном для грамотного русского человека, записываем его по правилам грамматики русского языка.

Представление информации, языки, кодирование


Еще одно важное обстоятельство: выбор способа коДирования информации может быть связан с предполагаемым способом ее обработки. Обсудим это на примере представления чисел — количественной информации. Используя русский алфавит, можно записать число «тридцать пять». Используя же алфавит арабской десятичной системы счисления, пишем: 35. Пусть вам надо произвести вычисления. Скажите, какая запись удобнее для выполнения расчетов: «тридцать пять умножить на сто двадцать семь» или «35 х 127»? Очевидно, что для перемножения многозначных чисел вы будете пользоваться второй записью.

Заметим, что эти две записи, эквивалентные по смыслу, используют разные языки: первая естественный русский язык, вторая — формальный язык математики, не имеющий национальной принадлежности. Переход от представления на естественном языке к представлению на формальном языке можно также рассматривать как кодирование. Человеку удобно использовать для кодирования чисел десятичную систему счисления, а компьютеру — двоичную систему.

Широко используемыми в информатике формальными языками являются языки программирования.

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


прочитать те, кому не положено. Это называется защитой от несанкционированного Доступа. В таком случае секретный текст шифруется. В давние времена шифрование называлось тайнописью. Шифрование представляет собой процесс превращения открытого текста в зашифрованный, а дешифрование — процесс обратного преобразования, при котором восстанавливается исходный текст. Шифрование это тоже кодирование, но с засекреченным методом, известным только источнику и адресату. Методами шифрования занимается наука криптография.

История технических способов кодирования информации

Информация


С появлением технических средств хранения и передачи информации возникли новые идеи и приемы кодирования. Первым техническим средством передачи информации на расстояние стал телеграф, изобретенный в 1837 году американцем Сэмюэлем Морзе. Телеграфное сообщение — это последовательность электрических сигналов, передаваемая от одного телеграфного аппарата по проводам к другому телеграфному аппарату. Эти технические обстоятельства привели Морзе к идее использования всего двух видов сигналов короткого и длинного для кодирования сообщения, передаваемого

Сэмюэль Финли

по линиям телеграфной связи.

      Бриз Морзе

Такой способ кодирования получил на-

(1791-1872), США

звание азбуки Морзе. В ней каждая буква

алфавита кодируется последовательностью коротких сигналов (точек) и длинных сигналов (тире). Буквы отделяются друг от друга паузами — отсутствием сигналов.

В таблице на рис. 1.3 показана азбука Морзе применительно к русскому алфавиту. Специальных знаков препинания в ней нет.

Их обычно записывают словами: «тчк» — точка, «зпт» — запятая

Самым знаменитым телеграфным сообщением является сигнал бедствия «SOS» (Save 0ur Souls — спасите наши души). Вот как он выглядит в коде азбуки Морзе:

Три точки обозначают букву S, три тире — букву О. Две паузы отделяют буквы друг от друга.

 

 

 

й.———

 

 

 

 

 

ф

 

 

х

з

Я.—

Рис. 1.3. Кодовая таблица азбуки Морзе

Характерной особенностью азбуки Морзе является переменная длина кода разных букв, поэтому код Морзе называют неравномерным кодом. Буквы, которые встречаются в тексте чаще, имеют более короткий код, чем редкие буквы. Например, код буквы «Е» — одна точка, а код буквы «Ъ» состоит из шести знаков. Зачем так сделано? Чтобы сократить длину всего сообщения. Но из-за переменной длины кода букв возникает проблема отделения букв друг от друга в тексте. Поэтому приходится для разделения использовать паузу (пропуск). Следовательно, телеграфный алфавит Морзе является троичным, так как в нем используется три


Представление информации, языки, кодирование


знака: точка, тире, пропуск.

Равномерный телеграфный код был изобретен французом Жаном Морисом Бодо в конце XIX века. В нем использовалось всего два вида сигналов. Неважно, как их назвать: точка и тире, плюс и минус, ноль и единица. Это два отличающихся друг от друга электрических сигнала.

В коде Бодо длина кодов всех символов алфавита одинакова и равна пяти. В таком случае не возникает проблемы отделения

букв друг от друга: каждая пятерка сигна-

Жан Морис Эмиль

лов — это знак текста.

Бодо (1845-1903),

Франция

Информация


КОД БоДо — это первый в истории техники способ двоичного кодирования информации. Благодаря идее Бодо удалось автоматизировать процесс передачи и печати букв. Был создан клавишный телеграфный аппарат. Нажатие клавиши с определенной буквой вырабатывает соответствующий пятиимпульсный сигнал, который передается по линии связи. Принимающий аппарат под воздействием этого сигнала печатает ту же букву на бумажной ленте.

Из курса информатики основной школы вам известно, что в современных компьютерах для кодирования текстов также применяется равномерный двоичный код. Проблемы кодирования информации в компьютере и при передаче данных по сети мы рассмотрим несколько позже.

Система основных понятий

Представление информации

Языки представления информации

Естественные:

русский, китайский, английский и др.

Формальные:

язык математики, нотная грамота, языки программирования и др.

Кодирование

Цели коДирования

Засекречивание информации

Быстрый способ записи

Передача по техническим каналам связи

Выполнение математических вычислений

Шифрование

Стенография

Телеграфный код

Системы счисления

Алгоритмы криптографии

Один

знак — слово или сочетание букв

код

Морзе:

неравномерный, троичный код

Код Бодо:

равномерный, двоичный код

Для человека: десятичная с. с.

Для

КОМпьютера: двоичная с. с.


Вопросы и задания

1. Чем отличаются естественные языки от формальных?

2. Как вы думаете, латынь — это естественный или формальный язык?

З. С каким формальным языком программирования вы знакомы? Для чего он предназначен?

4.  Что такое кодирование и декодирование?

5.  От чего может зависеть способ кодирования?

6.  В чем преимущество кода Бодо по сравнению с кодом Морзе?

7.  В чем преимущество кода Морзе по сравнению с кодом Бодо?

Измерение информации. Алфавитный подход

Измерение информации. Алфавитный подход


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

Алфавитный подход к измерению информации применяется в цифровых (компьютерных) системах хранения и передачи информации. В этих системах используется двоичный способ кодирования информации. При алфавитном подходе для определения количества информации имеет значение лишь размер (объем) хранимого и передаваемого кода. Алфавитный подход еще называют объемным подходом. Из курса информатики 7—9 классов вы знаете, что если с помощью Ёразрядного двоичного кода можно закодировать алфавит, состоящий из лт символов (где лг — целая степень двойки), то эти величины связаны между собой по формуле: 2i=N.

Число лт называется мощностью алфавита.

Если, например, i = 2, то можно построить 4 двухразрядные комбинации из нулей и единиц, т. е. закодировать 4 символа. При i = З существует 8 трехразрядных комбинаций нулей и единиц (кодируется 8 символов):

i=2:

ОО

01

10

11

 

 

 

 

i=3:

000

001

010

011

100

101

110

111

Английский алфавит содержит 26 букв. Для записи текста нужны еще как минимум шесть символов: пробел, точка, запятая, вопросительный знак, восклицательный знак, тире. В сумме получается расширенный алфавит мощностью в 32 символа.

Поскольку 32 = 2 5 , все символы можно закодировать всевозможными пятиразрядными двоичными кодами от 00000 до

Информация


аппаратах, появившихся еще в XIX веке. Телеграфный аппарат при вводе переводил английский текст в двоичный код, длина которого в 5 раз больше, чем длина исходного текста.

о В двоичном коде каждая двоичная цифра несет одну единицу информации, которая называется 1 бит.

Бит является основной единицей измерения информации.

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

Информационный объем текста складывается из информационных весов всех составляющих текст символов. Например, английский текст из 1000 символов в телеграфном сообщении будет иметь информационный объем 5000 битов.

Алфавит русского языка включает 33 буквы. Если к нему добавить еще пробел и пять знаков препинания, то получится набор из 39 символов. Для двоичного кодирования символов такого алфавита пятиразрядного кода уже недостаточно. Нужен как минимум 6-разрядный код. Поскольку 2 6 = 64, остается еще резерв для 25 символов (64 — 39 = 25). Его можно использовать для кодирования цифр, всевозможных скобок, знаков математических операций и других символов, встречающихся в русском тексте. Следовательно, информационный вес символа в расширенном русском алфавите будет равен 6 битам. А текст из 1000 символов будет иметь объем 6000 битов.

Итак, если i информационный вес символа алфавита, а К — количество символов в тексте, записанном с помощью этого алфавита, то информационный объем I текста выражается формулой:

I = К х i (битов).

Измерение информации. Алфавитный подход


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

Для определения информационного веса

А. Н. Колмогоров (1903-1987),

символа полезно знать ряд целых степеней двойки. Вот как он выглядит в диапазоне от

Россия

2 1 до 2 10 :

i

1

2

з

4

5

6

7

8

9

10

 

2

4

8

16

32

64

128

256

512

1024

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

Пример. Определим информационный вес символа алфавита, включающего в себя все строчные и прописные русские буквы (66); цифры (10); знаки препинания, скобки, кавычки (10). Всего получается 86 символов.

Поскольку 26 < 86 < 2 7 , информационный вес символов данного алфавита равен 7 битам. Это означает, что все 86 символов можно закодировать семиразрядными двоичными кодами.

Для двоичного представления текстов в компьютере чаще всего применяется восьмиразрядный код. С помощью восьмиразрядного кода можно закодировать алфавит из 256 символов, поскольку 256 = 2 8 . В стандартную кодовую таблицу (например, используемую в ОС Windows таблицу ANSI) помещаются все необходимые символы: английские и русские буквы — прописные и строчные, цифры, знаки препинания, знаки арифметических операций, всевозможные скобки и пр.

Более крупной, чем бит, единицей измерения информации является байт: 1 байт = 8 битов.

Информационный объем текста в памяти компьютера измеряется в байтах. Он равен количеству символов в записи текста.

Информация


Одна страница текста на листе формата А4 кегля 12 с одинарным интервалом между строками в компьютерном представлении будет иметь объем 4000 байтов, так как на ней помещается примерно 4000 знаков.

Помимо бита и байта, для измерения информации используются и более крупные единицы:

1 Кб (килобайт) = 2 10 байтов = 1024 байта;

                                  1 Мб (мегабайт) = 2 10 Кб         = 1024 Кб;

1 Гб (гигабайт) = 2 10 Мб      = 1024 Мб; 1 Тб (терабайт) = 2 10 Гб = 1024 Гб.

Объем той же страницы текста будет равен приблизительно 3,9 Кб. А книга из 500 таких страниц займет в памяти компьютера примерно 1,9 Мб.

В компьютере любые виды информации: тексты, числа, изображения, звуки — преДставляются в форме двоичного коДа.

Объем информации любого вида, выраженный в битах, равен длине двоичного кода, в котором эта информация представлена.

Измерение информации. Алфавитный подход

 

 

25

Система основных понятий

Измерение информации. Алфавитный (объемный) подход

Применяется в цифровых системах хранения и передачи информации

Объем информации равен Длине двоичного коДа

Основная единица: 1 бит — один разряд двоичного кода

Информационный вес символа (i битов) алфавита мощностью лт определяется из уравнения:

2i = М, где М — ближайшая к лт сверху целая степень двойки

Информационный объем I текста, содержащего К символов:

I = К • i битов, где i — информационный вес одного символа

Производные единицы

Байт

1 байт =

8 битов

Килобайт (Кб)

1024 байта

Мегабайт (Мб)

1 мб =

1024 Кб

Гигабайт (Гб)

1024 мб

Терабайт (Тб)

1 Тб =

1024 Мб

Вопросы и задания

1. Есть ли связь между алфавитным подходом к измерению информации и содержанием информации?

2. В чем можно измерить объем письменного или печатного текста? З. Оцените объем одной страницы данного учебника в байтах.

4.     Что такое бит с позиции алфавитного подхода к измерению информации?

5.     Как определяется информационный объем текста по А. Н. Колмогорову?

6.     Какой информационный вес имеет каждая буква русского алфавита?

7.     Какие единицы используются для измерения объема информации на компьютерных носителях?

8.     Сообщение, записанное буквами из 64-символьного алфавита, содержит 100 символов. Какой объем информации оно несет?

9.     Сколько символов содержит сообщение, записанное с помощью 16-символьного алфавита, если его объем составляет 1/16 Мб?

10. Сообщение занимает 2 страницы и содержит 1/16 Кб информации. На каждой странице 256 символов. Какова мощность используемого алфавита?

11. Возьмите страницу текста из данного учебника и подсчитайте информационные объемы текста, получаемые при кодировании его семиразрядным и восьмиразрядным кодами. Результаты выразите в килобайтах и мегабайтах.

Измерение информации. Содержательный подход

Неопределенность знания и количество информации

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

Информация


Чем больше первоначальная неопределенность знания, тем больше информации несет сообщение, снимающее эту неопреДеленность.

Приведем примеры, иллюстрирующие данное утверждение.

Ситуация 1. В ваш класс назначен новый учитель информатики; на вопрос «Это мужчина или женщина?» вам ответили: « Мужчина».

Ситуация 2. На чемпионате страны по футболу играли команды «Динамо» и «Зенит». Из спортивных новостей по радио вы узнаете, что игра закончилась победой «Зенита».

Ситуация З. На выборах мэра города было представлено четыре кандидата. После подведения итогов голосования вы узнали, что избран Н. Н. Никитин.

Вопрос: в какой из трех ситуаций полученное сообщение несет больше информации?

Неопределенность знания — это количество возможных вариантов ответа на интересовавший вас вопрос. Еще можно сказать: возможных исходов события. Здесь событие — например, выборы мэра; исход — выбор, например, Н. Н. Никитина.

В первой ситуации 2 варианта ответа: мужчина, женщина; во второй ситуации З варианта: выиграл «Зенит», ничья, выиграло «Динамо»; в третьей ситуации — 4 варианта: 4 кандидата на пост мэра.

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

В 40-х годах ХХ века проблема измерения информации была решена американским ученым Клодом Шенноном         основателем теории информации. Согласно Шеннону, информация — это снятая неопределенность знания человека об исходе какого-то события.

В теории информации единица измерения

Клод Элвуд Шеннон

информации определяется следующим образом.

(1916-2001)

 

27

Измерение информации. Содержательный подход

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

Согласно этому определению, сообщение в первой из описанных ситуаций несет 1 бит информации, поскольку из двух возможных вариантов ответа был выбран один.

Следовательно, количество информации, полученное во второй и в третьей ситуациях, больше, чем один бит. Но как измерить это количество?

Рассмотрим еще один пример.

Ученик написал контрольную по информатике и спрашивает учителя о полученной оценке. Оценка может оказаться любой: от 2 до 5. На что учитель отвечает: «Угадай оценку за два вопроса, ответом на которые может быть только ” да“ или ”нет” Подумав, ученик задал первый вопрос: «Оценка выше тройки?». «Да», ответил учитель. Второй вопрос: «Это пятерка?». «Нет», — ответил учитель. Ученик понял, что он получил четверку. Какая бы ни была оценка, таким способом она будет угадана!

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

2

з

4

5

 

 

 

 

 

4

5

 

 

 

 

 

4

 

Первоначальные варианты:

Варианты, оставшиеся после 1-го вопроса:

(1 бит)

Вариант, оставшийся после 2-го вопроса: (+ 1 бит)

Узнав оценку (одну из четырех возможных), ученик получил 2 бита информации.

Рассмотрим еще один частный пример, а затем выведем общее правило.

Вы едете на электропоезде, в котором 8 вагонов, а на вокзале вас встречает товарищ. Товарищ позвонил вам по мобильному телефону и спросил, в каком вагоне вы едете. Вы предлагаете угадать номер вагона, задав наименьшее количество вопросов, ответами на которые могут быть только слова «да» или «нет».

Немного подумав, товарищ стал спрашивать:

— Номер вагона больше четырех?

Информация


— да.

— Номер вагона больше шести?

— Нет.

— Это шестой вагон?

— Нет.

— Ну теперь все ясно! Ты едешь в пятом вагоне!

Схематически поиск номера вагона выглядит так:

1 2 3 4 5

 

7

8

 

 

 

 

 

 

 

 

5

 

7

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

Первоначальные варианты:

После 1-го вопроса (1 бит):

После 2-го вопроса (+ 1 бит):

После 3-го вопроса (+ 1 бит):

Каждый ответ уменьшал неопределенность знания в два раза. Всего было задано три вопроса. Значит, в сумме набрано З бита информации. То есть сообщение о том, что вы едете в пятом вагоне, несет З бита информации.

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

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

«Главная формула» информатики


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

Тогда полученные нами результаты описываются следующими формулировками:

    сообщение об одном из двух равновероятных исходов некоторого события несет 1 бит информации;  сообщение об одном из четырех равновероятных исходов некоторого события несет 2 бита информации;

    сообщение об одном из восьми равновероятных исходов некоторого события несет 3 бита информации.

Обозначим буквой лт количество возможных исходов события, или, как мы это еще называли, — неопределенность знания. Буквой i будем обозначать количество информации в сообщении об одном из лт результатов.

В примере с учителем: лт = 2, i = 1 бит; в примере с оценками: лт = 4, i = 2 бита; в примере с вагонами:      8, i = 3 бита.


Нетрудно заметить, что связь между этими величинами выраэкается следующей формулой:

2i=N.

Действительно: 2 1 = 2 ; 22 = 4 ; 2 3 = 8.

С полученной формулой вы уже знакомы из курса информатики для 7 класса и еще не однажды с ней встретитесь. Значение этой формулы столь велико, что мы назвали ее главной формулой информатики. Если величина лт известна, а i неизвестно, то данная формула становится уравнением для определения i. В математике такое уравнение называется показательным уравнением,

Пример. Вернемся к рассмотренному выше примеру с вагонами. Пусть в поезде не 8, а 16 вагонов. Чтобы ответить на вопрос, какое количество информации содержится в сообщении о номере искомого вагона, нужно решить уравнение:

2i = 16.

Поскольку 16 = 24 , то i = 4 бита.

Информация

Количество информации i, содержащееся в сообщении об одном из N равновероятных исходов некоторого события, определяется из решения показательного уравнения:

2i=N.

Пример. В кинозале 16 рядов, в каждом ряду 32 места. Какое количество информации несет сообщение о том, что вам купили билет на 12-й ряд, 10-е место?

Решение задачи: в кинозале всего 16 • 32 = 512 мест. Сообщение о купленном билете однозначно определяет выбор одного из этих мест. Из уравнения 2 i = 512 = 2 9 получаем: i = 9 битов.

Но эту же задачу можно решать иначе. Сообщение о номере ряда несет 4 бита информации, так как 2 4 = 16. Сообщение о номере места несет 5 битов информации, так как 2 5 = 32. В целом сообщение про ряд и место несет: 4 + 5 = 9 битов информации.

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

зо

Сделаем одно важное замечание. С формулой 2i = лт мы уже встречались, обсуждая алфавитный подход к измерению информации (см. S 3). В этом случае лт рассматривалось как мощность алфавита, а i — как информационный вес каждого символа алфавита. Если допустить, что все символы алфавита появляются в тексте с одинаковой частотой, т. е. равновероятно, то информационный вес символа i тождественен количеству информации в сообщении о появлении любого символа в тексте. При этом лт неопределенность знания о том, какой именно символ алфавита должен стоять в данной позиции текста. Данный факт демонстрирует связь между алфавитным и содержательным подходами к измерению информации.

Формула Хартли

Измерение информации. Содержательный подход


Если значение лг равно целой степени двойки (4, 8, 16, 32, 64 и т. д.), то показательное уравнение легко решить в уме, поскольку i будет целым числом. А чему равно количество информации в сообщении о результате матча «Динамо»—«Зенит»? В этой ситуации лт = З. Можно догадаться, что решение уравнения

будет дробным числом, лежащим между 1 и 2, поскольку 2 1 = 2 З, а 2 2 = 4 > З. А как точнее узнать это число?

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

i = log2 N.

Читается это так: «логарифм от лт по основанию 2». Смысл очень простой: логарифм по основанию 2 от лт — это степень, в которую нужно возвести 2, чтобы получить N. Например, вычисление уже известных вам значений можно представить так:

log22 = 1, log2 4 = 2, 10g28 = З.

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


 

1

 

i (битов)

2

з

 

1

 

i (битов)

2

з

1 ,584962501

Рис. 1.4. Определение количества информации в электронных таблицах с помощью функции логарифма

В табличном процессоре Microsoft Excel функция логарифма имеет следующий вид: LOG(apryмент; основание). Аргумент — значение лт находится в ячейке А2, а основание логарифма равно 2. В результате получаем с точностью до девяти знаков после запятой:

i = log23 = 1,584962501 (бита).

Формула для измерения количества инфор-

Информация


Ральф Хартли мации: log2N была предложена американским (1888-1970) ученым Ральфом Хартли — одним из основоположников теории информации.

формула Хартли:

i = logaN

Здесь i — количество информации, содержащееся в сообщении об одном из равновероятных исходов события.

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

Измерение информации. Содержательный подход


Система основных понятий

Измерение информации. Содержательный подход

Измеряется количество информации в сообщении об исходе некоторого события

Равновероятные исходы:

никакой результат не имеет преимущества перед другими

Неопределенность знания — количество возможных исходов события (вариантов сообщения) — лт

Количество информации в сообщении об одном исходе события — i битов

 

Частный случай: два равновероятных результата события

 

i 1 бит

1 бит — количество информации в сообщении об одном из двух равновероятных результатов некоторого события

Формула Хартли: i = log2 лт

Вопросы и задания

1. Что такое неопределенность знания об исходе некоторого события?

2. Как определяется единица измерения количества информации в рамках содержательного подхода?

З. Придумайте несколько ситуаций, при которых сообщение несет 1 бит информации.

4.  В каких случаях и по какой формуле можно вычислить количество информации, содержащейся в сообщении, используя содержательный подход?

5.  Сколько битов информации несет сообщение о том, что из колоды в 32 карты достали «даму пик»?

б. При угадывании методом половинного деления целого числа из диапазона от 1 до был получен 1 байт информации. Чему равно N?

7. Проводятся две лотереи: «4 из 32» и «5 из 64». Сообщение о результатах какой из лотерей несет больше информации?

8. Используя формулу Хартли и электронные таблицы, определите количество информации в сообщениях о равновероятных событиях:

а) на шестигранном игральном кубике выпала цифра 3;

б) в следующем году ремонт в школе начнется в феврале;

в) я приобрел абонемент в бассейн на среду;

г) из 30 учеников класса дежурить в школьной столовой назначили Дениса Скворцова.

9. Используя закон аддитивности количества информации, решите задачу о билете в кинотеатр со следующим дополнительным условием: в кинотеатре 4 зала. В билете указан номер зала, номер ряда и номер места. Какое количество информации заключено в билете?

Представление чисел в компьютере

Главные правила представления данных в компьютере

Информация


Если бы мы могли заглянуть в содержание компьютерной памяти, то увидели бы там примерно то, что условно изображено на рис. 1.5.

Рис. 1.5. Образ компьютерной памяти

Рисунок 1.5 отражает известное вам еще из курса информатики основной школы правило представления данных, которое назовем правилом Л) 1: Данные (и программы) в памяти компьютера хранятся в двоичном виде, т. е. в виде цепочек единиц и нулей.

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

Правило ЛЕ 2: представление Данных в компьютере дискретно.

Правило Л) З: множество представимых в памяти компьютера величин ограничено и конечно.

Представление чисел

Сначала поясним на образном примере, что такое дискретНОСТЬ.

Представление чисел в компьютере

 

35

Дискретное множество состоит из отделенных друг от друга элементов. Например, песок дискретен, поскольку он состоит из отдельных песчинок. А вода или масло непрерывны (в рамках наших ощущений, поскольку отдельные молекулы мы всё равно ощутить не можем). Этот пример нужен нам только для аналогии. Здесь мы не станем углубляться в изучение материального мира, а вернемся к предмету изучения информатики — информации.

Самым традиционным видом данных, с которым работают компьютеры, являются числа. ЭВМ первого поколения умели решать только математические задачи. Люди начали работать с числами еще с первобытных времен. Первоначально человек оперировал лишь целыми положительными (натуральными) числами: . Очевидно, что натуральный ряд — это Дискретное множество чисел.

В математике ряд натуральных чисел бесконечен и не ограничен. С появлением в математике понятия отрицательного числа (Р. Декарт, XVII век в Европе; в Индии значительно раньше) оказалось, что множество целых чисел не ограничено как «справа», так и «слева». Покажем это на числовой оси (рис. 1.6), символы оо обозначают бесконечность.

Рис. 1.6. Математическое множество целых чисел на числовой оси

Из сказанного следует вывод: множество целых чисел в математике Дискретно и не ограничено. Отметим еще один факт: разность соседних чисел натурального ряда (данного и предыдущего) всегда равна единице. Эту величину назовем шагом числовой последовательности.

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

Самое большое по абсолютной величине (модулю) отрицательное число:

Информация


Аналогично дело обстоит и в компьютере.

Целые числа в компьютере

Правило 4: в памяти компьютера числа хранятся в двоичной системе счисления*. С двоичной системой счисления вы знакомы из курса информатики 7—9 классов. Например, если под целое число выделяется ячейка памяти размером в 16 битов, то самое большое целое положительное число будет таким:

В десятичной системе счисления оно равно: 2 15 -1 = 32 767.

Конечно, и «внутри калькулятора» числа представляются в двоичном виде. Однако мы в это вдаваться не будем, рассмотрев лишь внешнее представление. Пример с калькулятором нам нужен был только для иллюстрации проблемы ограниченности.

Здесь первый бит играет роль знака числа. Ноль — признак положительного числа. Самое большое по модулю отрицательное число равно —32 768. Напомним (это было в курсе информатики основной школы), как получить его внутреннее представление:

1) перевести число 32 768 в двоичную систему счисления; это легко, поскольку 32 768 2 15 :

1000000000000000;

2) инвертировать этот двоичный код, т. е. заменить нули на единицы, а единицы — на нули:

Представление чисел в компьютере

 

37

З) прибавить единицу к этому двоичному числу (складывать надо по правилам двоичной арифметики), в результате получим:

Единица в первом бите обозначает знак «минус». Не нужно думать, что полученный код — это «минус ноль». Этот код представляет число —32 768. Таковы правила машинного представления целых чисел. Данное представление называется дополнительным кодом.

Если под целое число в памяти компьютера отводится лт битов, то диапазон значений целых чисел:

1],

то есть ограниченность целого числа в компьютере возникает из-за ограничений на размер ячейки памяти. Отсюда же следует и конечность множества целых чисел.

Мы рассмотрели формат представления целых чисел со знаком, т. е. положительных и отрицательных. Бывает, что нужно работать только с положительными целыми числами. В таком случае используется формат представления целых чисел без знака. В этом формате самое маленькое число — ноль (все биты нули), а самое большое число для 16-разрядной ячейки:

В десятичной системе это 2 16 — 1 65 535, примерно в два раза больше по модулю, чем в представлении со знаком.

Из всего сказанного делаем вывод: целые числа в памяти компьютера это Дискретное, ограниченное и конечное множество.

Границы множества целых чисел зависят от размера выделяемой ячейки памяти под целое число, а также от формата: со знаком или без знака. Шаг в компьютерном представлении последовательности целых чисел, как и в математическом, остается равным единице.

Информация


Рисунок 1.7 отражает то обстоятельство, что при переходе от математического представления множества целых чисел к представлению, используемому в информатике (компьютере), происходит переход к ограниченности и конечности.

Рис. 1.7. Представление о множестве целых чисел в математике и в информатике

Вещественные числа в компьютере

Понятие вещественного (действительного) числа в математику ввел Исаак Ньютон в XVIII веке. В математике множество вещественных чисел непрерывно, бесконечно и не ограничено. Оно включает в себя множество целых чисел и еще бесконечное множество нецелых чисел. Между двумя любыми точками на числовой оси лежит бесконечное множество вещественных чисел, что и означает непрерывность множества.

Как мы говорили выше, числа в компьютере (в том числе и вещественные) представлены в двоичной системе счисления. Покажем, что множество вещественных чисел в компьютере дис-

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

Снова для примера возьмем калькулятор с десятиразрядным индикаторным табло. Экспериментально докажем дискретность представления вещественных чисел. Выполним на калькуляторе деление 1 на 3. Из математики вам известно, что 1/3 — это рациональная дробь, представление которой в виде десятичной дроби содержит бесконечное количество цифр: 0,3333333333... (3 в периоде). На табло калькулятора вы увидите:

Первый разряд зарезервирован под знак числа. После запятой сохраняется 8 цифр, а остальные не вмещаются в разрядную сетку (так это обычно называют). Значит, это не точное значение, равное 1/3, а его «урезанное» значение.

Представление чисел в компьютере


Следующее по величине число, которое помещается в разрядную сетку:

Оно бОЛЬШе предыдущего на 0,00000001. Это шаг числовой последовательности. Следовательно, два рассмотренных числа разделены между собой конечным отрезком. Очевидно, что предыдущее число такое:

Оно тоже отделено от своего «соседа справа» по числовой оси шагом 0,00000001. Отсюда делаем вывод: множество вещественных чисел, преДставимых в калькуляторе, Дискретно, поскольку числа отделены друг от друга конечными отрезками.

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

Вычислим выражение 100000/3. Получим:


Это число в 100 ООО раз больше предыдущего и, очевидно, тоже приближенное. Легко понять, что следующее вещественное число, которое можно получить на табло калькулятора, будет больше данного на 0,0001. Шаг стал гораздо больше.

Отсюда приходим к выводу: множество вещественных чисел, преДставимых в калькуляторе, Дискретно с переменной величиной шага мелсДу СОСеДНи.ми числами.

Если отметить на числовой оси точные значения вещественных чисел, которые представимы в калькуляторе, то эти точки будут расположены вдоль оси неравномерно. Ближе к нулю чаще, дальше от нуля — реже (рис. 1.8).

Числовая ось

Рис. 1.8. Условное представление взаимного расположения множества вещественных чисел, представимых в компьютере

Информация


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

Ответим на вопрос: ограничено ли множество вещественных чисел в памяти компьютера? Если продолжать эксперименты с калькулятором, то ответ на этот вопрос будет таким: да, множество вещественных чисел в калькуляторе ограничено. Причиной тому служит все та же ограниченность разрядной сетки. Отсюда же следует и конечность множества.

Самое большое число у разных калькуляторов может оказаться разным. У самого простого это будет то же число, что мы получали раньше: 999999999. Если прибавить к нему единицу, то калькулятор выдаст сообщение об ошибке. А на другом, более «умном» и дорогом, калькуляторе прибавление единицы приведет к такому результату:

Данную запись на табло надо понимать так: 1 • 109 .

Такой формат записи числа называется форматом с плавающей запятой, в отличие от всех предыдущих примеров, где рассматривалось представление чисел в формате с фиксированной запятой.

Число, стоящее перед буквой «е», называется мантиссой, а стоящее после порядком. «Умный» калькулятор перешел к представлению чисел в формате с плавающей запятой после того, как под формат с фиксированной запятой не стало хватать места на табло.

В компьютере то же самое: числа могут представляться как в формате с фиксированной запятой (обычно это целые числа), так и в формате с плавающей запятой.

Но и для формата с плавающей запятой тоже есть максимальное число. В нашем «подопытном» калькуляторе это число:

Представление чисел в компьютере


То есть 99999 • 1099 . Самое большое по модулю отрицательное значение —99999 • 1099 . Данные числа являются целыми, но именно они ограничивают представление любых чисел (целых и вещественных) в калькуляторе.

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

Рассмотрим пример: пусть под всё число в компьютере выделяется 8 байтов — 64 бита, из них под порядок — 2 байта, под мантиссу — 6 байтов. Тогда диапазон вещественных чисел, в переводе в десятичную систему счисления, оказывается следующим:

                                                        324                     308

- 1,7-10).

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

Информация


Рис. 1.9. Представление о множестве вещественных чисел в математике и в информатике

Система основных понятий

Целые числа

Вещественные числа

В математике:

- десятичное представление;

- множество: дискретно, бесконечно, не ограничено

В компьютере

(информатике):

- двоичное представление;

- множество:

дискретно, конечно, ограничено

В математике:

- десятичное представление;

- множество:

непрерывно, бесконечно, не ограничено

В компьютере

(информатике):

- двоичное представление;

- множество:

дискретно, конечно, ограничено

Представление целых чисел в компьютере

Представление вещественных чисел в компьютере

Со знаком (положительные и отрицательные

Без знака

(положительные)

МХ2Р

М — двоичная мантисса,

Р — двоичный целый порядок

Диапазон:

2N-l , 2N-1-1]

Диапазон:

[0, 2Nl

Диапазон ограничен

максимальными значениями

МиР

Формат с фиксированной запятой

Формат с плавающей запятой

Вопросы и задания

1. Почему множество целых чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?

2. Определите диапазон целых чисел, хранящихся в 1 байте памяти в двух вариантах: со знаком и без знака.

З. Получите внутреннее представление числа 157 в 8-разрядной ячейке памяти в формате со знаком.

4.  Получите внутреннее представление числа —157 в 8-разрядной ячейке памяти в формате со знаком.

5.  Почему множество действительных (вещественных) чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?

6.  На какие две части делится число в формате с плавающей запятой?

56

Представление текста, изображения и звука


Представление текста, изображения и звука в компьютере

В этом параграфе обсудим способы компьютерного кодирования текстовой, графической и звуковой информации. С текстовой и графической информацией конструкторы «научили» работать ЭВМ, начиная с третьего поколения (1970-е годы). А работу со звуком «освоили» лишь машины четвертого поколения, современные персональные компьютеры. С этого момента началось распространение технологии мультимедиа.

Что принципиально нового появлялось в устройстве компьютеров с освоением ими новых видов информации? Главным образом, это периферийные устройства для ввода и вывода текстов, графики, видео, звука. Процессор же и оперативная память по своим функциям изменились мало. Существенно возросло их быстродействие, объем памяти. Но как это было на первых поколениях ЭВМ, так и осталось на современных ПК — основным навыком процессора в обработке данных является умение выполнять вычисления с двоичными числами. Обработка текста, графики и звука представляет собой тоже обработку числовых данных. Если сказать еще точнее, то это обработка целых чисел. По этой причине компьютерные технологии называют цифровыми технологиями.

О том, как текст, графика и звук сводятся к целым числам, будет рассказано дальше. Предварительно отметим, что здесь мы снова встретимся с главной формулой информатики:

Смысл входящих в нее величин здесь следующий: i — разрядность ячейки памяти (в битах), лт — количество различных целых положительных чисел, которые можно записать в эту ячейку.

Текстовая информация

Принципиально важно, что текстовая информация уже дискретна — состоит из отдельных знаков. Поэтому возникает лишь технический вопрос — как разместить ее в памяти компьютера.

Информация


Напомним о байтовом принципе организации памяти компьютеров, обсуждавшемся в курсе информатики основной школы. Вернемся к рис. 1.5. Каждая клеточка на нем обозначает бит памяти. Восемь подряд расположенных битов образуют байт памяти. Байты пронумерованы. Порядковый номер байта определяет его адрес в памяти компьютера. Именно по адресам процессор обращается к данным, читая или записывая их в память (рис. 1.10).

Рис. 1.10. Байтовая организация памяти

Модель представления текста в памяти весьма проста. За каждой буквой алфавита, цифрой, знаком препинания и иным общепринятым при записи текста символом закрепляется определенный двоичный код, длина которого фиксирована. В популярных системах кодировки (Windows-1251, k018 и др.) каждый символ заменяется на 8-разряДное целое положительное Двоичное число; оно хранится в одном байте памяти. Это число является порядковым номером символа в кодовой таблице. Согласно главной формуле информатики, определяем, что размер алфавита, который можно закодировать, равен: 2 8 — 256. Этого количества вполне достаточно для размещения двух алфавитов естественных языков (английского и русского) и всех необходимых дополнительных символов.

Поскольку в мире много языков и много алфавитов, постепенно совершается переход на международную систему кодировки Unicode, в которой используются многобайтовые коды. Например, если код символа занимает 2 байта, то с его помощью можно закодировать 2 16 65 536 различных символов.

При работе с электронной почтой почтовая программа иногда нас спрашивает, не хотим ли мы прибегнуть к кодировке Unicode для пересылаемых сообщений. Таким способом можно избежать проблемы несоответствия кодировок, из-за которой иногда не удается прочитать русский текст.

Представление текста, изображения и звука

 

45

Текстовый документ, хранящийся в памяти компьютера, состоит не только из кодов символьного алфавита. В нем также содерэкатся коды, управляющие форматами текста при его отображении на мониторе или на печати: тип и размер шрифта, положение строк, поля и отступы и пр. Кроме того, текстовые процессоры (например, Microsoft Word) ПОЗвОляюТ включать в документ и редактировать такие «нелинейные» объекты, как таблицы, оглавления, ссылки и гиперссылки, историю вносимых изменений и т. д. Всё это также представляется в виде последовательности байтовых кодов.

Графическая информация

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

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

Дискретное представление изображения. Изображение на экране монитора дискретно. Оно составляется из отдельных точек, которые называются пикселями (picture elements — элементы рисунка). Это связано с техническими особенностями устройства экрана, независимо от его физической реализации, будь то монитор на электронно-лучевой трубке, жидкокристаллический или плазменный. Эти «точки» столь близки друг другу, что глаз не различает промежутков между ними, поэтому изображение воспринимается как непрерывное, сплошное. Если выводимое из


компьютера изображение формируется на бумаге (принтером или плоттером), то линии на нем также выглядят непрерывными. Однако в основе всё равно лежит печать близких друг к другу точек.

В зависимости от того, на какое графическое разрешение экрана настроена операционная система компьютера, на нем могут размещаться изображения, имеющие размер 800 х 600, 1024 х 768 и более пикселей. Такая прямоугольная матрица пикселей на экране компьютера называется растром.

Качество изображения зависит не только от размера растра, но и от размера экрана монитора, который обычно характеризуется длиной диагонали. Существует параметр разрешения экрана. Этот параметр измеряется в точках на дюйм (по-английски dots per inch — dpi). У монитора с диагональю 15 дюймов размер изображения на экране составляет примерно 28 х 21 см2 . Зная, что в одном дюйме 25,4 мм, можно рассчитать, что при работе монитора в режиме 800 х 600 пикселей разрешение экранного изображения равно 72 dpi.

Информация

При печати на бумаге разрешение должно быть намного выше. Полиграфическая печать полноцветного изображения требует разрешения 200—300 dpi. Стандартный фотоснимок размером 10 х 15 см2 должен содержать примерно 1000 х 1500 пикселей.

Дискретное представление цвета. Восстановим ваши знания о кодировании цвета, полученные из курса информатики основной школы. Основное правило звучит так: любой цвет точки на экране компьютера получается путем смешивания трех базовых цветов: красного, зеленого, синего. Этот принцип называется цветовой моделью RGB (Red, Green, Blue).

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

Дискретность цвета состоит в том, что интенсивности базовых цветов могут принимать конечное число Дискретных значений.

Пусть, например, размер кода цвета пикселя равен 8 битам

1 баиту. Между базовыми цветами они могут быть распределены так:

к

к

з

з

 

 

 

 

46

2 бита — под красный цвет, З бита — под зеленый и З бита — под синий.

Интенсивность красного цвета может принимать 2 2 4 значения, интенсивности зеленого и синего цветов — по 2 3 = 8 значений. Полное число цветов, которые кодируются 8-разрядными кодами, равно: 4 • 8 • 8 = 256 = 28. Снова работает главная формула информатики.

Из описанного правила, в частности, следует:

Красный

Зеленый

Синий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— код черного цвета

— код белого цвета

— код бледно-серого цвета — код ярко-зеленого цвета

— код бледно-зеленого цвета

Представление текста, изображения и звука


Обобщение этих частных примеров приводит к следующему правилу. Если размер кода цвета равен Ь битов, то количество цветов (размер палитры) вычисляется по формуле:

Величину Ь в компьютерной графике называют битовой глубиной цвета.

Еще один пример. Битовая глубина цвета равна 24. Размер палитры будет равен:

к- 2 24 = 16 777216.

В компьютерной графике используются разные цветовые модели для изображения на экране, получаемого путем излучения света, и изображения на бумаге, формируемого с помощью отражения света. Первую модель мы уже рассмотрели — это модель RGB. Вторая модель носит название смук.

Цвет, который мы видим на листе бумаги, — это отражение белого (солнечного) света. Нанесенная на бумагу краска поглощает часть палитры, составляющей белый цвет, а другую часть отраэкает. Таким образом, нужный цвет на бумаге получают путем «вычитания» из белого света «ненужных красок». Поэтому в цветной полиграфии действует не правило сложения цветов (как на экране компьютера), а правило вычитания. Мы не будем углубляться в механизм такого способа цветообразования. Расшифруем лишь аббревиатуру СМУК: Суап — голубой, Magenta пурпурный, Yellow — желтый, black — черный.

Растровая и векторная графика

О двух технологиях компьютерной графики — растровой и векторной — вы знаете из курса информатики основной школы.

В растровой графике графическая информация — это совокупность данных о цвете каждого пикселя на экране. Это то, о чем говорилось выше. В векторной графике графическая информация это данные, математически описывающие графические примитивы, составляющие рисунок: прямые, дуги, прямоугольники, овалы и пр. Положение и форма графических примитивов представляются в системе экранных координат.

Информация


Растровую графику (редакторы растрового типа) применяют при разработке электронных (мультимедийных) и полиграфических изданий. Растровые иллюстрации редко создают вручную с помощью компьютерных программ. Чаще для этой цели используют сканированные иллюстрации, подготовленные художником на бумаге, или фотографии. Для ввода растровых изображений в компьютер применяются цифровые фото- и видеокамеры. Большинство графических редакторов растрового типа в большей мере ориентированы не на создание изображений, а на их обработку.

Достоинство растровой графики — эффективное представление изображений фотографического качества. Основной недостаток растрового способа представления изображения — большой объем занимаемой памяти. Для его сокращения приходится применять различные способы сжатия данных. Другой недостаток растровых изображений связан с искажением изображения при его масштабировании. Поскольку изображение состоит из фиксированного числа точек, увеличение изображения приводит к тому, что эти точки становятся крупнее. Увеличение размера точек растра визуально искажает иллюстрацию и делает ее грубой.

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

Достоинства векторной графики сравнительно небольшой объем памяти, занимаемой векторными файлами, масштабирование изображения без потери качества. Однако средствами векторной графики проблематично получить высококачественное художественное изображение. Обычно средства векторной графики используют не для создания художественных композиций, а для оформительских, чертежных и проектно-конструкторских работ.

Графическая информация сохраняется в файлах на диске. Существуют разнообразные форматы графических файлов. Они делятся на растровые и векторные. Растровые графические файлы (форматы JPEG, ВМР, TIFF и другие) хранят информацию о цвете каждого пикселя изображения на экране. В графических файлах векторного формата (например, WMF, CGM) содержатся описания графических примитивов, составляющих рисунок.

Следует понимать, что графические данные, помещаемые в видеопамять и выводимые на экран, имеют растровый формат вне зависимости от того, с помощью каких программных средств (растровых или векторных) они получены.

Представление текста, изображения и звука


Звуковая информация

Принципы дискретизации звука («оцифровки» звука) отражены на рис. 1.11.

Рис. 1.11. Оцифровка звука

(у — интенсивность (уровень) звукового сигнала, t — время)

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

Промежуток времени между двумя измерениями называется периодом измерений — т с. Обратная величина называется частотой дискретизации — 1/т (герц). Чем выше частота измерений, тем выше качество цифрового звука.

Результаты таких измерений представляются целыми положительными числами с конечным количеством разрядов. Вы уже знаете, что в таком случае получается дискретное конечное множество значений в ограниченном диапазоне. Размер этого диапазона зависит от разрядности ячейки — регистра памяти звуковой карты. Снова работает формула 2i, где i — разрядность регистра. Число i называют также разрядностью дискретизации. Записанные данные сохраняются в файлах специальных звуковых форматов.

Информация


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

При хранении оцифрованного звука приходится решать проблему уменьшения объема звуковых файлов. Для этого кроме коДирования Данных без потерь, позволяющего осуществлять стопроцентное восстановление данных из сжатого потока, используется коДирование Данных с потерями. Цель такого кодирования добиться схожести звучания восстановленного сигнала с оригиналом при максимальном сжатии данных. Это достигается путем использования различных алгоритмов, сжимающих оригинальный сигнал путем выкидывания из него слабослышимых элементов. Методов сжатия, а также программ, реализующих эти методы, существует много.

Для сохранения звука без потерь используется универсальный звуковой формат файлов WAV. Наиболее известный формат «сжатого» звука (с потерями) — МРЗ. Он обеспечивает сжатие данных в 10 раз и более.

Представление текста, изображения и звука


Система основных понятий

Текст

Графика

Звук

Таблицы кодировки

Дискретность изображения

Дискретность цвета

Дискретные измерения звукового сигнала

8-разрядные

16-разрядная

Растр сетка пикселей

Модели цвета

Частота дискретизации

Разрядность дискретизации

ASCII, ков и др.

Unicode

размер растра, dpi — разрешение

RGB Излучаемый свет

СМУК Отражаемый свет

1 [период

(герц)

i — разрядность, ЛТ — количество уровней измерения звука

Вопросы и задания

1.     Когда компьютеры начали работать с текстом, с графикой, со звуком?

2.     Что такое таблица кодировки? Какие существуют таблицы кодировКИ?

3.     На чем основывается дискретное представление изображения?

4.     Что такое модель цвета RGB?

5.     Напишите 8-разрядный код ярко-синего цвета, ярко-желтого (смесь красного с зеленым), бледно-желтого.

6.     Почему в полиграфии не используется модель RGB?

7.     что такое смук?

8.     Какое устройство в компьютере производит оцифровку вводимого звукового сигнала?

9.     Как (качественно) качество цифрового звука зависит от частоты дискретизации и разрядности дискретизации?

10. Чем удобен формат МРЗ?


ЭОР к главе 1 на сайте ФЦИОР (http://fcior.edu.ru)

    Аппаратное и программное обеспечение для представления звука

Информация

www

   


Аппаратное и программное обеспечение для представления изображения

    Единицы измерения информации

    Представление текста в различных кодировках

    Числа в памяти ЭВМ. Средства обработки числовой информации

 Числа с фиксированной и плавающей запятой

    Число и его компьютерный код

Глава 2 Информационные процессы

Хранение информации

Из курса основной школы вам известно:

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

Рассмотрим способы хранения информации более подробно.


Информация может храниться в различных видах: в виде записанных текстов, рисунков, схем, чертежей; фотографий, звукозаписей, кино- или видеозаписей. В каждом случае применяются свои носители.

Носитель — это материальная среда, используемая для записи и хранения информации.

Практически носителем информации может быть любой материальный объект. Информацию можно сохранять на камне, дереве, стекле, ткани, песке, теле человека и т. д. Здесь мы не станем обсуждать различные исторические и экзотические варианты носителей. Ограничимся современными средствами хранения информации, имеющими массовое применение.

Использование бумажных носителей информации

Носителем, имеющим наиболее массовое употребление, до сих пор остается бумага. Изобретенная во П веке н. э. в Китае бумага служит людям уже 19 столетий.

Для сопоставления объемов информации на разных носителях будем пользоваться единицей байтом, считая, что один знак текста «весит» 1 байт. Нетрудно подсчитать информационный объем книги, содержащей ЗОО страниц с размером текста на странице примерно 2000 символов. Текст такой книги имеет объем примерно 600 ООО байтов, или 586 Кб. Средняя школьная библиотека, фонд которой составляют 5000 томов, имеет информационный объем приблизительно 2861 Мб = 2,8 Гб.

Информационные процессы


Что касается долговечности хранения документов, книг и прочей бумажной продукции, то она очень сильно зависит от качества бумаги, красителей, используемых при записи текста, условий хранения. Интересно, что до середины XIX века (с этого времени для производства бумаги начали использовать древесину) бумага делалась из хлопка и текстильных отходов — тряпья. Чернилами служили натуральные красители. Качество рукописных документов того времени было довольно высоким, и они могли храниться тысячи лет. С переходом на древесную основу, с распространением машинописи и средств копирования, с началом использования синтетических красителей срок хранения печатных документов снизился до 200—300 лет.

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

Использование магнитных носителей информации

В XIX веке была изобретена магнитная запись. Первоначально она использовалась только для сохранения звука. Самым первым носителем магнитной записи была стальная проволока диаметром до 1 мм. В начале ХХ столетия для этих целей использовалась также стальная катаная лента. Тогда же (в 1906 г.) был выдан и первый патент на магнитный диск. Качественные характеристики всех этих носителей были весьма низкими. Достаточно сказать, что для производства 14-часовой магнитной записи устных докладов на Международном конгрессе в Копенгагене в 1908 г. потребовалось 2500 км, или около 100 кг проволоки.

В 20-х годах ХХ века появляется магнитная лента сначала на бумажной, а позднее — на синтетической (лавсановой) основе, на поверхность которой наносится тонкий слой ферромагнитного порошка. Во второй половине ХХ века на магнитную ленту научились записывать изображение, появляются видеокамеры, видеомагнитофоны.

Хранение информации


На ЭВМ первого и второго поколений магнитная лента использовалась как единственный вид сменного носителя для устройств внешней памяти. Любая компьютерная информация на любом носителе хранится в двоичном (цифровом) виде. Поэтому независимо от вида информации: текст это, или изображение, или звук — ее объем можно измерить в битах и байтах. На одну катушку с магнитной лентой, использовавшейся в лентопротяжных устройствах первых ЭВМ, помещалось приблизительно 500 Кб информации.

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

На первых ПК использовались гибкие магнитные диски (флоппи-диски) — сменные носители информации с небольшим объемом памяти — до 2 Мб. Начиная с 1980-х годов, в ПК начали использоваться встроенные в системный блок накопители на

жестких магнитных дисках, или НЖМД (англ. НТ) — Hard Disk Drive). Их еще называют винчестерскими дисками.

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

Информационная емкость современных винчестерских дисков измеряется в терабайтах.

Оптические диски и флеш-память

:

Информационные процессы


Применение оптического, или лазерного, способа записи информации начинается в 1980-х годах. Его появление связано с изобретением квантового генератора — лазера, источника очень тонкого (толщина порядка микрона) луча высокой энергии. Луч способен выжигать на поверхности плавкого материала двоичный код данных с очень высокой плотностью. Считывание происходит в результате отражения от такой «перфорированной» поверхности лазерного луча с меньшей энергией («холодного» луча). Первоначально на ПК вошли в употребление оптические компактдиски — CD, информационная емкость которых составляет от 190 Мб до 700 Мб.

Во второй половине 1990-х годов появились цифровые универсальные видеодиски DVD (Digital Versatile Disk) с большой емкостью, измеряемой в гигабайтах (до 17 Гб). Увеличение их емкости по сравнению с CD связано с использованием лазерного луча меньшего диаметра, а также двухслойной и двусторонней записи. Вспомните пример со школьной библиотекой. Весь ее книжный фонд можно разместить на одном DVD.

В настоящее время оптические диски (СГ) и DVD) являются наиболее надежными материальными носителями информации, записанной цифровым способом. Эти типы носителей бывают как однократно записываемыми — пригодными только для чтения, так и перезаписываемыми пригодными для чтения и записи.

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

Хранение информации

 

57

В качестве внешнего носителя для компьютера широкое распространение получили так называемые флеш-брелоки (их называют в просторечии «флешки»), выпуск которых начался в 2001 году. Большой объем информации, компактность, высокая скорость чтения/записи, удобство в использовании основные достоинства этих устройств. Флеш-брелок подключается к USB-rropTY компьютера и позволяет скачивать данные со скоростью около 10 Мб в секунду.

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


Информационные процессы

Система основных понятий

Носители информации

Нецифровые

Цифровые (компьютерные)

Исторические: камень, дерево, папирус, пергамент , шелк и др.

Современные: бумага

Магнитные

Оптические

Флеш-носители

Ленты

Диски

Карты

СЛ)

DVD

Флеш- карты

Флешбрелоки

Факторы качества носителей

Вместимость — плотность хранения дан- ных, объем данных

Надежность хранения — максимальное время сохранности данных, зависимость от условий хранения

Наибольшей вместимостью и надежностью на сегодня обладают оптические носители СГ) и DVD

Перспективные виды носителей:

носители на базе нанотехнологий

Вопросы и задания

1.     Какая, с вашей точки зрения, сохраняемая информация имеет наибольшее значение для всего человечества, для отдельного человека?

2.     Назовите известные вам крупные хранилища информации.

3.     Можно ли человека назвать носителем информации?

4.     Где и когда появилась бумага?

5.     Когда была изобретена магнитная запись? Какими магнитными носителями вы пользуетесь или пользовались?

6.     Какое техническое изобретение позволило создать оптические носители информации? Назовите типы оптических носителей.

7.     Назовите сравнительные преимущества и недостатки магнитных и оптических носителей.

8.     Что означает свойство носителя «только для чтения»?

9.     Какими устройствами, в которых используются флеш-карты, вы пользуетесь? Какой у них информационный объем?

10.Какие перспективы, с точки зрения хранения информации, открывают нанотехнологии?

58

Передача информации

Из курса основной школы вам известно:

*     Распространение информации происходит в процессе ее передачи.

*     Процесс передачи информации протекает от источника к приемнику по информационным каналам связи.

В этом параграфе более подробно будут рассмотрены технические системы передачи информации.

Передача информации


В S 2 уже говорилось о том, что первой в истории технической системой передачи информации стал телеграф. В 1876 году американец Александр Белл изобрел телефон. На основании открытия немецким физиком Генрихом Герцем электромагнитных волн (1886 год), А. С. Попов в России в 1895 году и почти одновременно с ним в 1896 году Г. Маркони в Италии изобрели радио. Телевидение и Интернет появились в ХХ веке.

Модель передачи информации К. Шеннона

Все перечисленные способы информационной связи основаны на передаче на расстояние физического (электрического или электромагнитного) сигнала и подчиняются некоторым общим законам. Исследованием этих законов занимается теория связи, возникшая в 1920-х годах. Математический аппарат теории связи — математическую теорию связи разработал американский ученый Клод Шеннон.

Клодом Шенноном была предложена модель процесса передачи информации по техническим каналам связи, представленная схемой на рис. 2.1.

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

Рис. 2.1. Модель передачи информации по техническим каналам связи

ка информации. Здесь пришедший электрический сигнал превращается в звук.

В S 2 уже говорилось о кодировании на примере передачи информации через письменный документ. Кодирование там было определено как процесс представления информации в виде, удобном для ее хранения и/или передачи.

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

Информационные процессы


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

Пропускная способность канала и скорость передачи информации

Разработчикам технических систем передачи информации приходится решать две взаимосвязанные задачи: как обеспечить наибольшую скорость передачи информации и как уменьшить потери информации при передаче. К. Шеннон был первым ученым, взявшимся за решение этих задач и создавшим новую для того времени науку — теорию информации.

Шеннон определил способ измерения количества информации, передаваемой по каналам связи. Им было введено понятие пропускной способности канала как максимально возможной скорости переДачи информации. Эта скорость измеряется в битах в секунду (а также килобитах в секунду, мегабитах в секунду).

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

    телефонные линии;

    электрическая кабельная связь;

    оптоволоконная кабельная связь;  радиосвязь.

Пропускная способность телефонных линий — десятки и сотни Кбит/с; пропускная способность оптоволоконных линий и линий радиосвязи измеряется десятками и сотнями Мбит/с.

Передача информации

 


Скорость передачи информации связана не только с пропускной способностью канала связи. Представьте себе, что текст на русском языке, содержащий 1000 знаков, передается с использованием двоичного кодирования. В первом случае используется телеграфная 5-разрядная кодировка. Во втором случае компьютерная 8-разрядная кодировка. Тогда длина кода сообщения в первом случае составит 5000 битов, во втором случае — 8000 битов. При передаче по одному и тому же каналу второе сообщение будет передаваться дольше в 1,6 раза (8000/5000). Отсюда, казалось бы, следует вывод: длину кода сообщения нужно делать минимально возможной.

Однако существует другая проблема, которая на рис. 2.1 отмечена словом «шум».

Шум, защита от шума

Термином «шум» называют разного рода помехи, искажающие передаваемый сигнал и приводящие к потере информации. Такие помехи, прежде всего, возникают по техническим причинам, таким как плохое качество линий связи, незащищенность друг от друга различных потоков информации, передаваемых по одним и тем же каналам. Существуют и другие источники помех, имеющие физическое происхождение.

Иногда, например, беседуя по телефону, мы слышим шум, треск, мешающие понять собеседника, или на наш разговор накладывается разговор других людей.

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

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

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

Информационные процессы


Однако нельзя делать избыточность слишком большой. Это приведет к задержкам и удорожанию связи. Теория кодирования как раз и позволяет получить такой код, который будет оптимальным: избыточность передаваемой информации будет минимально возможной, а достоверность принятой информации максимальной.

Большой вклад в научную теорию связи внес известный советский ученый Владимир Александрович Котельников. В 1940— 1950-х


годах им получены фундаментальные научные результаты по проблеме помехоустойчивости систем передачи информации.

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

Владимир

рая передается вместе с данным блоком.

Александрович

В месте приема заново вычисляется конт-

Котельников

рольная сумма принятого блока и, если она

(1908-2005),

Россия

не совпадает с первоначальной суммой, пере-

дача данного блока повторяется. Так проис-

ходит до тех пор, пока исходная и конечная контрольные суммы не совпадут.

Передача информации


Система основных понятий

Передача информации в технических системах связи

Модель К. Шеннона

Процедура кодирования

Процесс передачи по каналу связи

Процедура декодирования

Пропускная способность канала

Воздействие

шумов на канал связи

Защита информации от потерь при воздействии шума

Кодирование

с оптимальноизбыточным кодом

Частичная потеря избыточной информации при передаче

Полное восстановление исходного сообщения

Вопросы и задания

1. Для чего нужна процедура кодирования передаваемой информации?

2. Что такое декодирование? Каким должен быть его результат?

З. Каким техническим средством связи вы чаще всего пользуетесь? Замечали ли вы при этом факты потери информации?

4.  Назовите устройства кодирования и декодирования при использовании радиосвязи.

5.  Что такое шум по отношению к системам передачи данных?

б. Какие существуют способы борьбы с шумом?

7.  Пропускная способность канала связи 100 Мбит/с. Уровень шума пренебрежимо мал (например, оптоволоконная линия). Определите, за какое время по каналу будет передан текст, информационный объем которого составляет 100 Кб.

8.  Пропускная способность канала связи 10 Мбит/с. Канал подвержен воздействию шума, поэтому избыточность кода передачи составляет 20 0/0. Определите, за сколько времени по каналу будет передан текст, информационный объем которого составляет 100 Кб.

59

Обработка информации и алгоритмы

Из курса основной школы вам известно:

Обработка информации, наряду с хранением и передачей, относится к основным видам информационных процессов.

Варианты обработки информации

Информационные процессы


Обработка информации производится каким-то субъектом или объектом (например, человеком или компьютером) в соответствии с определенными правилами. Будем его называть исполнителем обработки информации. Информация, которая подвергается обработке, представляется в виде исходных данных. На рисунке 2.2 в обобщенном виде представлен процесс обработки информации.

Можно привести множество примеров, иллюстрирующих схему на рис. 2.2.

Первый пример: ученик (исполнитель), решая задачу по математике, производит обработку информации. Исходные данные содержатся в условии задачи. Математические правила, описанные в учебнике, определяют последовательность вычислений. Результат это полученный ответ.

Второй пример: перевод текста с одного языка на другой — это пример обработки информации, при которой не меняется ее содержание, но изменяется форма представления другой язык. Перевод осуществляет переводчик по определенным правилам, в определенной последовательности.

Третий пример: работник библиотеки составляет картотеку книжного фонда. На каждую книгу заполняется карточка, на которой указываются все параметры книги: автор, название, год издания, объем и пр. Из карточек формируется каталог библиотеки, где эти карточки располагаются в строгом порядке. Например, в алфавитном каталоге карточки располагаются в алфавитном порядке фамилий авторов.

Обработка информации и алгоритмы


Четвертый пример: в телефонной книге вы ищете телефон нужной вам организации, например плавательного бассейна; или в том же библиотечном каталоге разыскиваете сведения о нужной вам книге. В обоих случаях исходными данными является информационный массив телефонный справочник или каталог библиотеки, а также критерии поиска — название организации или фамилия автора и название книги.

Приведенные примеры иллюстрируют четыре различных вида обработки информации:

1)  получение новой информации, новых сведений;

2)  изменение формы представления информации; 3) систематизация, структурирование данных; 4) поиск информации.

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

Если исполнителем обработки информации является человек, то правила обработки, по которым он действует, не всегда формальны и однозначны. Человек часто действует творчески, неформально. Даже однотипные математические задачи он может решать раз-


ными способами. Работа журналиста, ученого, переводчика и других специалистов — это творческая работа с информацией, которая выполняется ими не по формальным правилам.

Об алгоритмах

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

Информационные процессы


Из курса информатики основной школы вы знаете, что слово «алгоритм» произошло от имени выдающегося математика средневекового Востока Мухаммеда аль-Хорезми, описавшего еще в IX веке правила выполнения вычислений с многозначными десятичными числами. Правила сложения, вычитания, умножения столбиком, деления «уголком», которым Аль-Хорезми вас учили в младших классах, — это алгоритмы (780-850 гг. н. э.) аль-Хорезми.

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

1. Если числа не равны, то большее из них заменить на разность большего и меньшего из чисел.

2. Если два числа равны, то за НОД принять любое из них, иначе перейти к выполнению пункта 1.

Первоклассник, который не знает, что такое НОД, но умеет сравнивать целые числа и выполнять вычитание, сможет исполнить алгоритм. Действовать при этом он будет формально.

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

Алгоритмические машины и свойства алгоритмов

В 30-х годах ХХ века возникает новая наука — теория алгоритмов. Вопрос, на который ищет ответ эта наука: для всякой ли задачи обработки информации может быть построен алгоритм решения? Но чтобы ответить на этот вопрос, надо сначала договориться об исполнителе, на которого должен быть ориентирован алгоритм.

Английский ученый Алан Тьюринг предложил модель такого исполнителя, получившую название «машина Тьюринга». По замыслу Тьюринга, его «машина» является универсальным исполнителем обработки любых символьных последовательностей в любом алфавите. Практически одновременно с Тьюрингом (1936—1937 гг.) другую модель алгоритмической машины описал Эмиль Пост. Машина Поста работает с двоичным алфавитом и не-

сколько проще в своем «устройстве». Можно

Алан Тьюринг

сказать, что машина Поста является частным

(1912-1954),

случаем машины Тьюринга. Однако именно

Англия

Обработка информации и алгоритмы

 

67

работа с двоичным алфавитом представляет наибольший интерес, поскольку, как вы знаете, современный компьютер тоже работает с двоичным алфавитом. Подробнее с машиной Поста вы познакомитесь в следующем параграфе.

На основании моделей Тьюринга, Поста и некоторых других ученые пришли к выводу о существовании алгоритмически неразрешимых задач.

Язык программирования алгоритмических машин представляет собой описание конечного числа простых команд, которые могут быть реализованы в автоматическом устройстве.

Совокупность всех команД языка исполнителя называется системой команД исполнителя алгоритмов — СКИ.

Алгоритм управления работой алгоритмической машины представляет собой конечную послеДовательность команд, посредством выполнения которой машина решает задачу обработки информации.

Алгоритм управления такой машиной должен обладать следующими свойствами;

    дискретностью (каждый шаг алгоритма выполняется отдельно от других);

    понятностью (в алгоритме используются только команды из ски);

    точностью (каждая команда определяет однозначное действие исполнителя);

    конечностью (за конечное число шагов алгоритма получается искомый результат).

Информационные процессы


Отметим разницу между понятиями «команда алгоритма» и «шаг алгоритма». Команда — это отдельная инструкция в описании алгоритма, а шаг алгоритма — это отдельное действие, которое исполнитель выполняет по команде. В циклических алгоритмах число шагов при выполнении алгоритма может быть больше, чем число команд в алгоритме, за счет повторного выполнения одних и тех же команд.

Система основных понятий

Виды обработки информации

Получение новой информации

(новых данных)

Изменение формы представления информации

Структурирование данных

Поиск данных

Исполнитель обработки

Человек

Автомат (машина)

Алгоритм обработки — формализованные правила, определяющие последовательность шагов обработки информации

Алгоритмическая машина автоматический исполнитель обработки знаковых последовательностей

Модели алгоритмических машин в теории алгоритмов

Машина Тьюринга

Машина Поста

Свойства алгоритма

Дискретность:

каждый шаг алгоритма выполняется отдельно от других

Понятность: в алгоритме используются только команды из СКИ

Точность:

каждая команда определяет однозначное действие исполнителя

Конечность:

за конечное число шагов алгоритма получается искомый результат

Вопросы и задания

1.  Приведите примеры процессов обработки информации, которые чаще всего вам приходится выполнять во время учебы. Для каждого примера определите исходные данные, результаты и правила обработки. К каким видам обработки относятся ваши примеры?

2.  Если вы решаете задачу по математике или физике и при этом используете калькулятор, то какова ваша функция в этом процессе и какова функция калькулятора?

3.  Используя алгоритм Евклида, найдите НОД для чисел 114 и 66. Сколько шагов алгоритма при этом вам пришлось выполнить?

4.  Какие проблемы решает теория алгоритмов?

5.  Почему калькулятор нельзя назвать алгоритмической машиной, а компьютер можно?

6.  Придумайте минимально необходимую систему команд для кассового аппарата, который подсчитывает стоимость покупок и сумму сдачи покупателю. Опишите алгоритм управления работой такого авто-


мата.

Автоматическая обработка информации

510

 

69

5 10

Автоматическая обработка информации

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

Договоримся о терминологии: под словом «программа» мы всегда будем понимать алгоритм, записанный по строгим правилам языка команд исполнителя — на языке программирования для данного исполнителя.

Опишем архитектуру машины Поста

(рис, 2.3). Имеется бесконечная информаци-

Эмиль Пост

онная лента, разделенная на позиции

(1897-1954),

клетки. В каждой клетке может либо стоять

США

метка (некоторый знак), либо отсутствовать (пусто).

Рис. 2.3. Модель машины Поста

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

Каретка является еще и процессором машины. С ее помощью машина может:

 распознать, пустая клетка или помеченная знаком;  стереть знак в текущей клетке;  записать знак в пустую текущую клетку.

Информационные процессы


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

Назначение машины Поста — производить преобразования на информационной ленте. Исходное состояние ленты можно рассматривать как исходные данные задачи, конечное состояние ленты — как результат решения задачи. Кроме того, в исходные данные входит информация о начальном положении каретки.

Теперь рассмотрим систему команд машины Поста (табл. 2.1). Запись всякой команды начинается с ее порядкового номера в программе — п. Затем следует код операции и после него — номер следующей выполняемой команды программы — т.

Рассмотрим пример программы решения задачи на машине Поста. Исходное состояние показано на рис. 2.3. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. Программа приведена в табл. 2.2.

Таблица 2.1. Система команд машины Поста

Команда

Действие

Сдвиг каретки на шаг влево и переход к выполнению команды с номером т

Сдвиг каретки на шаг вправо и переход к выполнению команды с номером т

 

Запись метки в текущую пустую клетку и переход к выполнению команды с номером т

п т

Стирание метки в текущей клетке и переход к выполнению команды с номером т

 

Остановка выполнения программы

Переход в зависимости от содержимого текущей клетки: если текущая клетка пустая, то следующей будет выполняться команда с номером т, если непустая команда с номером К

Автоматическая обработка информации

5 10


Таблица 2.2. Программа для машины Поста

Команда

Действие

1

Стирание метки; переход к следующей команде

2

Сдвиг вправо на один шаг

3 ? 2 4

Если клетка пустая, то переход к команде 2, иначе к команде 4

4

Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы)

5 v 6

Запись метки в пустую клетку

 

Остановка машины

В процессе выполнения приведенной программы многократно повторяется выполнение команд с номерами 2 и З. Такая ситуация называется циклом. Напомним, что цикл относится к числу основных алгоритмических структур вместе со следованием и ветвлением.

А теперь научим машину Поста играть в интеллектуальную игру, которая называется «Игра Баше»: Опишем правила игры.

Играют двое. Перед ними 21 (или 16, или 11 и т. д.) фишка. Игроки берут фишки по очереди. За один ход можно взять от 1 до 4 фишек. Проигрывает тот, кто забирает последнюю фишку.

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

Информационные процессы


Роль фишек на информационной ленте машины Поста будут выполнять метки (знаки). Машина играет с человеком. Человеку предоставляется возможность стирать метки (брать фишки) первым. Машина будет вступать в игру второй. Исходная обстановка: на ленте массив из 21 клетки содержит метки. Каретка установлена на крайней слева клетке этого массива. Стирать метки можно только подряд. Выигрышным результатом должна быть одна оставшаяся метка перед очередным ходом человека.

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

Программа управления машиной Поста в игре Баше против человека приведена в табл. 2.3.

Таблица 2.3. Программа игры Баше

Команда

Действие

1 ? 2,1

Машина ждет появления пустой клетки над кареткой. После очередного хода человека машина делает свой ход. Если человек видит всего одну метку на ленте, он прекращает игру, признав свое поражение

 

Эта серия команд выведет каретку на пятую (десятую, пятнадцатую и т. д.) позицию. Какой бы ход ни сделал соперник, в ней обязательно будет стоять метка

 

4

5

6

7

Стирается метка в текущей клетке

 

Шаг влево

8 ? 96

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

9

Каретка перемещается к первой помеченной клетке. После этого машина возвращается к команде 1 и ждет хода человека (или признания им своего поражения)

10 ? 9,1

Действуя по данной программе и начиная стирать метки второй после человека, машина всегда будет выигрывать, если правильно задано начальное число меток, которое должно быть равно 5п + 1, где п — любое натуральное число. В противном случае машина может проиграть.

Подведем итог. Автоматическая обработка информации возможна, если:

1) информация представлена в формализованном виде в конечном алфавите некоторой знаковой системы;

Автоматическая обработка информации

5 10

2)


реализован исполнитель, обладающий конечной системой команд, достаточной для построения алгоритмов решения определенного класса задач обработки информации;

З) реализовано программное управление работой исполнителя.

Машина Поста — пример автоматического исполнителя обработки информации с ограниченными возможностями. Компьютер удовлетворяет всем вышеперечисленным свойствам. Он является универсальным автоматическим исполнителем обработки информации.

Система основных понятий

Автоматическая обработка информации

Свойства алгоритмической машины

Дискретное, сим- вольное представле- ние данных (инфор- мации) в памяти машины

Достаточная конечная сис- тема команд для решаемо- го класса задач

Автоматическое исполнение процессором программы, изменяющей содержимое памяти

Алгоритмическая машина Поста

Двоичное представление информации на бесконечной ленте памяти

— команды выставления и удаления метки;

— команды смещения каретки влево и вправо;

— безусловный и условный переходы;

— остановка машины

Исполнение начинается с первой команды и заканчивается командой остановки. Процессор последовательно выполняет команды программы


Вопросы и задания

1. На информационной ленте машины Поста расположен массив из меток. Каретка находится под крайней левой меткой. Какое состояние установится на ленте после выполнения следующей программы?

2 1 3

4 ? 5,2

7 !

2. На информационной ленте на некотором расстоянии справа от каретки, стоящей под пустой клеткой, находится непрерывный массив меток. Требуется присоединить к правому концу массива одну метку.

З. На ленте расположен массив из 2n — 1 меток. Составить программу отыскания средней метки и стирания ее.

Информационные процессы


4. На ленте расположен массив из 2n меток. Составить программу, по которой машина раздвинет на расстояние в одну клетку две половины данного массива.

5 1 1

Информационные процессы в компьютере

Из курса основной школы вам известно:

*      Компьютер (ЭВМ) — автоматическое, программно-управляемое устройство для работы с информацией.

*      В состав компьютера входят устройства памяти (хранение данных и программ), процессор (обработка информации), устройства ввода/вывода (прием/передача информации).

*      В 1946 году Джоном фон Нейманом были сформулированы основные принципы устройства ЭВМ, которые называют фон-неймановской архитектурой.

*      Современный компьютер представляет собой единство аппаратуры (hardware) и программного обеспечения (software).

Серийное производство электронных вычислительных машин (ЭВМ) начинается в разных странах в 1950-х годах. Историю развития ЭВМ принято делить на поколения. Переход от одного поколения к другому связан со сменой элементной базы, на которой создавались машины, с изменением архитектуры ЭВМ, с развити-

ем основных технических характеристик (скорости вычислений, объема памяти и др.), с изменением областей применения и способов эксплуатации машин.

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

В основе архитектуры ЭВМ разных поколений лежат принципы Джона фон Неймана. Однако в процессе развития происходят некоторые отклонения от фон-неймановской архитектуры.

Однопроцессорная архитектура ЭВМ

Информационные процессы в компьютере

 


Элементной базой ЭВМ первого поколения (1950-е годы) были электронные лампы, а ЭВМ второго поколения (1960-е годы) создавались на базе полупроводниковых элементов. Однако их архитектура была схожей. Она в наибольшей степени соответствовала принципам фон Неймана. В этих машинах один процессор управлял работой всех устройств: внутренней и внешней памяти, устройств ввода и вывода, как показано на рис. 2.4.

Рис. 2.4. Структура однопроцессорной ЭВМ. Сплошные стрелки — передача данных, пунктирные стрелки — управляющее воздействие

Согласно принципам фон Неймана, исполняемая программа хранится во внутренней памяти — в оперативном запоминающем устройстве (ОЗУ). Там же находятся данные, с которыми работает программа. Каждая команда программы и каждая величина (элемент данных) занимают определенные ячейки памяти, как пока-

 

Внутренняя память

Номер ячейки

Содержимое ячейки

Программа

1

 

2

 

 

 

 

 

 

Команда УГОР

Данные

 

Величина 1

 

Величина 2

 

 

 

 

Рис. 2.5. Размещение в ОЗУ программы и данных

Процессор начинает выполнение программы с первой команды и заканчивает на команде остановки, назовем ее STOP. При выполнении очередной команды процессор извлекает из памяти обрабатываемые величины и заносит их в специальные ячейки внутренней памяти процессора — регистры. Затем выполняется команда, например складываются два числа, после чего полученный результат записывается в определенную ячейку памяти. Процессор переходит к выполнению следующей команды. Исполнение программы закончится, когда процессор обратится к команде STOP.

Информационные процессы


Среди команд программы существуют команды обработки данных и команды обращения к внешним устройствам. Команды обработки данных выполняет сам процессор с помощью входящего в него арифметико-логического устройства — АЛУ, и этот процесс происходит сравнительно быстро. А команды управления внешними устройствами выполняются самими этими устройствами: устройствами ввода/вывода, внешней памятью. Время выполнения этих команд во много раз больше, чем время выполнения команд обработки данных. При однопроцессорной архитектуре ЭВМ, показанной на рис. 2.4, процессор, отдав команду внешнему устройству, ожидает завершения ее выполнения. При большом числе обращений к внешним устройствам может оказаться, что 66.льшую часть времени выполнения программы процессор «простаивает» и, следовательно, его КПД оказывается низким. Быстродействие ЭВМ с такой архитектурой находилось в пределах 10—20 тысяч операций в секунду (оп./с).

Использование периферийных процессоров

Информационные процессы в компьютере


Следующим шагом в развитии архитектуры ЭВМ стал отказ от однопроцессорного устройства. Уже на последних моделях машин второго поколения, помимо центрального процессора (ЦП), выполнявшего обработку данных, присутствовали периферийные процессори, которые назывались каналами ввода/вывода (рис. 2.6). Их задача состояла в автономном управлении устройствами ввода/вывода и внешней памяти, что освобождало от этой работы центральный процессор. В результате КПД центрального процессора существенно возрос. Быстродействие некоторых моделей машин с такой архитектурой составляло от 1 до З млн оп./с.

Рис. 2.6. Структура ЭВМ с одним центральным процессором и периферийными процессорами управления внешними устройствами (треугольники)

На всех моделях ЭВМ третьего поколения, которые создавались на базе интегральных схем (1970—80-е годы), использовалась архитектура с одним центральным процессором и периферийными процессорами внешних устройств. Такая многопроцессорная архитектура позволяла реализовать мультипрограммный режим работы: пока одна программа занята вводом/выводом данных, которым управляет периферийный процессор, другая программа занимает центральный процессор, выполняя вычисления. Благодаря совершенствованию элементной базы и других аппаратных средств на некоторых моделях ЭВМ третьего поколения достигалось быстродействие до 10 млн оп./с.


Для разделения ресурсов ЭВМ между несколькими выполняемыми программами потребовалось создание специального программного обеспечения: операционной системы (ОС). К разделяемым ресурсам, прежде всего, относятся время работы центрального процессора и оперативная память. Задача ОС состоит в том, чтобы разные программы, выполняемые одновременно на ЭВМ, «не мешали» друг другу и чтобы КПД центрального процессора был максимальным, иначе говоря, чтобы ЦП не «простаивал». ОС берет на себя также заботу об очередности использования несколькими программами общих внешних устройств: внешней памяти, устройств ввода/вывода.

Архитектура персонального компьютера

Информационные процессы

Персональный компьютер (ПК) — самый распространенный в наше время тип компьютера. Появление ПК связано с созданием микропроцессоров, которое началось в 1970-х годах. До недавнего времени в устройстве ПК существовал один центральный процессор и множество периферийных процессоров, управляющих внешними устройствами, которые называются контроллерами. Архитектура такого ПК изображена на рис. 2.7.

Рис. 2.7. Архитектура персонального компьютера (сплошные стрелки — направление потоков информации, пунктирные — направление управляющих сигналов, К — контроллер)

Для связи между отдельными функциональными узлами ПК используется общая информационная магистраль, которая называется системной шиной.

78

Системная шина состоит из трех частей:  шина данных (для передачи данных);

• шина адреса (для передачи адресов устройств, которым передаются данные);  шина управления (для передачи управляющих сигналов, синхронизирующих работу разных устройств).

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

Открытая архитектура персонального компьютера — это архитектура, предусматривающая модульное построение компьютера с возможностью добавления и замены отдельных устройств.

Информационные процессы в компьютере

 


Важное событие в совершенствовании архитектуры ПК произошло в 2005 году: был создан первый двухъядерный микропроцессор. Каждое ядро способно выполнять функции центрального процессора. Эта особенность архитектуры позволяет производить на ПК параллельную обработку данных, что существенно увеличивает его производительность. Выпускаемые в настоящее время микропроцессоры содержат до 8 ядер.

Архитектура ненеймановских вычислительных систем

Несмотря на стремительно нарастающую производительность ЭВМ, которая каждые 4—5 лет по важнейшим показателям практически удваивается, всегда есть классы задач, для которых никакой производительности не хватает. Укажем некоторые из них.

1. Математические расчеты, лежащие в основе реализации математических моделей многих процессов. Гигантские вычислительные ресурсы, которые можно реализовать очень быстро (как иногда говорят, в масштабе реального времени), необходимы для более надежного и долгосрочного прогноза погоды, для решения аэрокосмических задач, в том числе и оборонных, для решения многих инженерных задач и т. д.

2. Поиск информации в гигантских базах данных, в информационном пространстве Интернета.

3. Моделирование интеллекта — при всех фантастических показателях, объем оперативной памяти современных компьютеров составляет лишь малую долю объема памяти человека.

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

Чтобы стало понятнее, зачем компьютеру несколько процессоров, обсудим алгоритм решения простейшей математической задачи. Есть массив из 100 чисел: ат, а,2, ... , % 00. Требуется найти их сумму.

Информационные процессы


Нет ничего проще! И на компьютере, и без него мы, скорее всего, поступим так: сложим первые два числа, как-то обозначим их сумму (например, S), затем прибавим к ней третье, и будем делать это еще 98 раз. Это пример последовательного вычислительного процесса. Его блок-схема приведена на рис. 2.8.

Рис. 2.8. Алгоритм решения задачи последовательного сложения массива чисел

Поскольку у человека нет второй головы, иначе эту задачу в одиночку не решить. Но представим, что мы решаем ее не в одиночку, а всем классом (25 человек). Тогда возникает возможность совсем иной последовательности действий.

1. Объединим числа в пары — по два на каждого (итого распределили 50 чисел); например, ученик 1 берет себе 01 и 02 , ученик № 2 аз и а4 , и т. д.

2. Даем команду «складывай!» — и каждый складывает свои числа. З. Даем команду «записывай!» и каждый записывает мелом на классной доске свой результат.

4.  Поскольку у нас осталось еще 50 необработанных чисел (а51, , ато), повторяем пункты 1—3. После этого имеем на доске 50 чисел b1 а1 + а,д, , b50 = 099 + 0100 — результаты парных сложений.

5.  Объединим в пары числа bi и повторим выполнение пунктов

Информационные процессы в компьютере


Продолжаем этот процесс (2—5) до тех пор, пока не останется одно число — искомая сумма.

Первое впечатление, что очень сложно, гораздо сложнее, чем алгоритм на рис. 2.8. Если бы мы захотели записать этот алгоритм в виде блок-схемы, то нам бы пришлось кроме описания порядка и объектов действий сделать то, что мы никогда при записи алгоритмов не делали, предусмотреть синхронизацию параллельных процессов по времени. Например, выполнение команд 2 и З должно завершиться всеми участниками вычислений до того, как они будут продолжены (до перехода к п. 4), иначе даже при решении этой простой задачи наступит хаос.

Но сложность не есть объективная причина отвергнуть такой путь, особенно если речь идет о возможности значительного ускорения компьютерных вычислений. То, что мы предложили выше, называется на языке программистов распараллеливанием вычислений и вполне поддается формальному описанию. Эффект ускорения вычислений очевиден: пункт 2 в приведенном выше алгоритме ускоряет соответствующий этап работы в 25 раз!

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

Такие многопроцессорные вычислительные комплексы — реальность сегодняшней вычислительной техники.

Вернемся, однако, к описанной выше последовательности действий — в ней еще есть источники проблем. Представим себе, что в схеме на рис. 2.7 мы дорисовали еще 24 центральных процессора, соединенных с шиной. При реализации в таком компьютере команды З произойдет одновременное обращение 25 процессоров к системной шине для пересылки результатов сложения в оперативную память. Но поскольку шина одна, числа по ней могут пересылаться только по одному! Значит, для выполнения команды З придется организовать очередь на передачу чисел в память. Тут же возникает вопрос: не сведет ли к нулю эта очередь все преимущества от параллельности выполнения операций на шаге 2? А если преимущества останутся, то насколько они велики? Окупятся ли расходы на 24 дополнительных процессора?

В возникшей ситуации естественен следующий шаг «изобретательской мысли»: ввод в архитектуру нескольких системных шин. А если еще подумать над возможными проблемами, то и нескольких устройств оперативной памяти.

Информационные процессы


Как видите, всё это очень непросто! Обсуждаемые изменения в устройстве компьютера приводят к «ненеймановским» архитектурам. Изобретателям таких систем приходится искать компромисс между возрастающей сложностью (и, как следствие, — стоимостью) и ускорением их работы.

Варианты реализации ненеймановских вычислительных систем

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

Распределенные вычисления способ реализации паралдельных вычислений путем использования множества компьютеров, объединенных в сеть. Такие вычислительные системы еще называют мультикомпьютерными.

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

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

Информационные процессы в компьютере

 

83

Один из самых мощных в мире суперкомпьютеров под названием «Ломоносов» (рис. 2.9) произведен в России и работает в Московском государственном университете. Его быстродействие составляет более ста триллионов операций в секунду.

Рис. 2.9. Суперкомпьютер «Ломоносов» (МГУ им. М. В. Ломоносова)

Информационные процессы


Система основных понятий

Информационные процессы в компьютере

Эволюция поколений ЭВМ

 

1

1950-е годы

2

1960-е годы

з

1970-е годы

4

(ПК, суперЭВМ) Начиная с 1970-х

Элементная база

Электронные лампы

Транзисторы

Интегральные схемы (ИС) и большие интегральные схемы (БИС)

БИС, СБИС (сверхбольшие ИС), микропроцессоры

Максимальное быстродействие (оп./с)

10—20 тыс.

100 тыс. — З млн

10 млн

109-1012

новская однопроцессорная

ская однопроцессорная .

Появление периферийных процессоров

процессор + каналы ввода/вывода. Шинная архитектура

векторные, матричные, многопроцессорные, мультикомпьютерные системы

Ненеймановские вычислительные системы

Ведущий принцип: отказ от последовательного выполнения операций

Техническое решение

Программное решение

Мультипроцессорные системы — суперкомпьютеры; мультикомпьютерные системы (кластеры)

Параллельное программирование: выделение в программе нескольких одновременно выполняемых действий (распараллеливание)

Вопросы и задания

1. Расскажите о смене элементной базы компьютеров, происходившей при переходе от одного поколения к другому. Как при этом менялись основные характеристики ЭВМ?

2. В чем состоял отход от архитектуры фон Неймана на ЭВМ второго и третьего поколений?

З. Что позволило реализовать мультипрограммный режим работы на ЭВМ третьего поколения?

4.      Чем принципиально отличается архитектура ПК от классической архитектуры компьютеров первых поколений?

5.      Какие функции выполняют контроллеры внешних устройств на ПК?

6.      В чем состоит принцип открытости архитектуры ПК?

7.      Какие функции выполняли первые операционные системы?

8.      Для каких классов задач нужны сверхпроизводительные вычислительные системы?

9.      Что такое параллельные вычисления?

Информационные процессы в компьютере

 

 

85

10.  Для примера со сложением чисел 25 учениками попробуйте проанализировать следующие ситуации: в классе всего 1 кусочек мела; в классе 5 кусочков мела; в классе 25 кусочков мела. Оцените, как от этого зависит время решения задачи (учтите еще ширину доски и время перемещения учеников по классу). Попробуите построить модель такого процесса. Переведите эту ситуацию на язык компьютерной терминологии для многопроцессорных систем.

11.  Чем отличаются мультикомпьютерные системы от мультипроцессорных? По какому принципу работают суперкомпьютеры?

www

ЭОР к главе 2 на сайте ФЦИОР (http://fcior.edu.ru)

*     Архитектура компьютера

*     Архитектура машин пятого поколения

*     Внутренняя память компьютера. Внешняя память компьютера. Типы накопителей информации

*     Магистраль. Передача данных внутри компьютера  От абака до ноутбука. Поколения компьютерной техники

*     Понятие алгоритма

*     Принцип открытой архитектуры

*     Принципы и системы передачи информации

*     Принципы и системы передачи информации. Вычисление объема информации при передаче. Практическая работа


Глава З

Программирование обработки информации

Основы алгоритмизации и программирования вы изучали в курсе информатики основной школы.

Вы уже знакомы со следующими понятиями:

 алгоритм, исполнитель алгоритма, система команд исполнителя, свойства алгоритма;  структуры алгоритмов: линейная ветвящаяся, циклическая;  вспомогательный алгоритм;  программа, языки программирования.

Вы имеете опыт программирования на языке Паскаль.


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

512

Алгоритмы и величины

Этапы решения задачи на компьютере

Работа по решению любой задачи с использованием компьютера делится на следующие этапы:

1. Постановка задачи.

О 2. Формализация задачи.

3.  Построение алгоритма.

4.  Составление программы на языке программирования.

5.  Отладка и тестирование программы.

6.  Проведение расчетов и анализ полученных результатов.

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

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

Второй этап — формализация задачи. Здесь чаще всего задача переводится на язык математических формул, уравнений, отношений. Если решение задачи требует математического описания какого-то реального объекта, явления или процесса, то формализация равносильна получению соответствующей математической моДели.

Третий этап — построение алгоритма. Опытные программисты часто сразу пишут программы на языках программирования, не прибегая к каким-либо специальным способам описания алгоритмов (блок-схемам, псевдокодам). Однако в учебных целях полезно использовать эти средства, а затем переводить полученный алгоритм на язык программирования.

Алгоритмы и величины

5 12

 

87

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

Таким образом, программист должен обладать следующими знаниями и навыками:

 уметь строить алгоритмы;  знать языки программирования;  уметь работать в соответствующей системе программирования.

Основой программистской грамотности является развитое алгоритмическое мышление.

Понятие алгоритма

Одним из фундаментальных понятий в информатике является понятие алгоритма. Сам термин «алгоритм» пришел из математики. Это слово происходит от «Algorithmi» — латинского написания имени Мухамеда аль-Хорезми (787—850 гг.), выдающегося математика средневекового Востока. В XII веке был осуществлен латинский перевод его математического трактата, из которого европейцы узнали о десятичной позиционной системе счисления и правилах арифметики многозначных чисел. Именно эти правила в то время называли алгоритмами. Сложение, вычитание, умножение «столбиком», деление «уголком» многозначных чисел вот первые алгоритмы в математике. Правила алгебраических преобразований, вычисление корней уравнений также можно отнести к математическим алгоритмам.

В наше время понятие алгоритма трактуется шире. Алгоритм — это послеДовательность команД управления каким-либо исполнителем. В школьном курсе информатики с понятием алгоритма, с методами построения алгоритмов ученики впервые знакомятся на примерах учебных исполнителей: Робота, Черепашки, Чертежника и др. В нашем учебнике для 9 класса описан графический исполнитель — ГРИС. Эти исполнители ничего не вычисляют. Они создают рисунки на экране, перемещаются в лабиринтах, перетаскивают предметы с места на место. Таких исполнителей принято называть исполнителями, работающими в обстановке.

Программирование обработки информации


В разделе информатики под названием «Программирование» изучаются методы программного управления работой компьютера. Следовательно, в качестве исполнителя выступает компьютер. Он работает с величинами — различными информационными объектами: числами, символами, кодами и пр. Поэтому алгоритмы, предназначенные для управления компьютером, принято называть алгоритмами работы с величинами.

Данные и величины

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

Рис. 3.1. Уровни данных относительно программы

Например, при решении квадратного уравнения: ах2 + bx + + с О исходными данными являются коэффициенты а, Ь, с; результатами корни уравнения хт, х2; промежуточными данными — дискриминант уравнения: D = b2 — 4ас.

Для успешного освоения программирования необходимо усвоить следующее правило: всякая величина занимает свое определенное место в памяти компьютера. Иногда говорят ячейку памяти. Хотя термин «ячейка», с точки зрения архитектуры современных компьютеров, несколько устарел, однако в учебных целях его удобно использовать.

У всякой величины имеются три основных свойства: имя, значение и тип. На уровне команд процессора величина идентифицируется адресом ячейки памяти, в которой она хранится. В алгоритмах и языках программирования величины делятся на константы и переменные. Константа — неизменная величина, и в алгоритме она представляется собственным значением, например: 15, 34.7, 'k', true. Переменные величины могут изменять свои значения в ходе выполнения программы и представляются символическими именами — идентификаторами, например: Х, S2, cod15. Любая константа или переменная занимают ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке.

Алгоритмы и величины

5 12


Теперь о типах величин типах данных. С понятием типа данных вы уже встречались, изучая в курсе информатики основной школы электронные таблицы и базы данных. Это понятие является фундаментальным для программирования.

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

Типы констант определяются по контексту (т. е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных.

Есть еще один вариант классификации данных: классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина одно значение. Для структурированных: одна величина множество значений. К структурированным величинам относятся массивы, строки, множества и др.

Компьютер — исполнитель алгоритмов. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя, в рамках его системы команд. О каком же исполнителе идет


Программирование обработки информации


Таблица 3.1

 

Значения

Операции

Внутреннее едставление

Целый

Целые положительные и отрицательные числа в некотором диапазоне.

Примеры: 23,

-12, 387

Арифметические операции с целыми числами: +, —, *, целочисленное деление и остаток от деления.

Операции отношений

>, = и др.)

Формат с фиксированной запятой

Вещественный

Любые (целые и дробные) числа в некотором диапазоне.

Примеры: 2.5,

-0.01, 45.0,

3.6 109

Арифметические операции: -е,

Операции отношений

Формат с плавающей запятой

Логический

true (истина) false (ложь)

Логические операЦИИ: И (and), ИЛИ (от), НЕ (not).

Операции отношений

1 бит: 1 — true;

О — false

Символь-

Любые символы компьютерного алфавита. Примеры: 'а' ,

Операции отношений

Коды таблицы символьной кодировки.

1 символ — 1 байт

речь в теме «Программирование обработки информации»? Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс: компьютер + система программирования (СП). Программист составляет программу на том языке, на который ориентирована СП. Схематически это изображено на рис. 3.2, где ВХОДнЫМ языком исполнителя является язык программирования Паскаль.

Рис. 3.2. Взаимодействие программиста с компьютером

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

      присваивания;

      ввода;

      вывода;

Алгоритмы и величины

 

5 12

     


обращения к вспомогательному алгоритму (подпрограмме);  цикла;  ветвления.

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

Система основных понятий

Этапы решения задачи на компьютере

1.   Постановка задачи.

2.   Формализация задачи. З. Построение алгоритма.

4.  Составление программы на языке программирования.

5.  Отладка и тестирование программы.

6.  Проведение расчетов и анализ полученных результатов

Компьютер + система программирования = исполнитель алгоритмов обработки данных

Система команд исполнителя

Классификация данных

- присваивание;

- ввод;

- вывод;

- ветвление;

- цикл;

- обращение к подпрограмме

По отношению к алгоритму:

-  исходные;

-  промежуточные ;

-  итоговые

(результаты)

По значениям:

-  константы;

-  переменные

По типам:

-  целые;

-  вещественные;

-  логические;

-  символьные

По струк-

- простые; - структурированные

Вопросы и задания

1.  Перечислите и охарактеризуйте этапы решения задач на компьютере.

2.  Дайте определение алгоритма.

3.  Что такое «система команд исполнителя алгоритмов» (СКИ)?

4.  Какими возможностями обладает компьютер как исполнитель алгоритмов?

5.  Назовите команды, входящие в СКИ компьютера, из которых составляется любая программа обработки данных.

6.  Перечислите различные варианты классификации данных.

7.  Придумайте пример задачи, решаемой на компьютере, и назовите для нее исходные, промежуточные и итоговые данные.

513

Структура алгоритмов

Базовые алгоритмические структуры

Программирование обработки информации

программированием.

Эдсгер В.

С базовыми алгоритмическими структурами

Дейкстра

вы познакомились, изучая информатику в 9 клас-

(1930-2002)


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

се. Там же для описания структур алгоритмов были использованы два способа: блок-схемы и учебный Алгоритмический язык (АЯ). Еще раз покажем, как изображаются базовые структуры в схемах алгоритмов и как они описываются на АЯ.

Следование это линейная последовательность действий (рис. 3.3).

Рис. 3.3. Структура «следование»

В программе на Паскале серия — это либо один отдельный оператор, либо составной оператор: последовательность операторов, заключенная в операторные скобки. Например, в языке Паскаль операторными скобками являются служебные слова Begin и End.

Ветвление — алгоритмическая альтернатива. Управление передается одному из двух блоков в зависимости от истинности или ложности условия. Затем происходит выход на общее продолжение. Вот как изображается ветвление на блок-схеме и АЯ (рис. 3.4).

если <условие> то «(серия 1> иначе <серия 2> все

Рис. 3.4. Структура «ветвление»

Условие представляет собой утверждение, которое может быть либо истинным, либо ложным. Такое утверждение называется логическим выражением.

Неполная форма ветвления имеет место, когда на ветви «нет» пусто (рис. 3.5).

 

93


если <условие> то <серия> все

Рис. 3.5. Неполное ветвление

Цикл — повторение некоторой группы действий по условию. Различают два типа цикла. Первый — цикл с предусловием: цикл-пока (рис. 3.6).

если <условие>

<серия> все

Рис. 3.6. Структура «цикл-пока»

Пока условие истинно, выполняется серия, образующая тело цикла.

Второй тип циклической структуры — цикл с постусловием: цикл-до (рис. 3.7).

повторить

<серия> до «(условие

Рис. 3.7. Структура «ЦИКЛ-до»

Здесь тело цикла предшествует условию цикла. Тело цикла повторяет свое выполнение, если условие ложно. Повторение прекращается, когда условие становится истинным.

Программирование обработки информации


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

Иногда в литературе структурное программирование называют программированием без СОТО — оператора безусловного перехода. Действительно, при таком подходе нет места безусловному переходу. Неоправданное использование в программе оператора (ЮТО лишает ее структурности, а значит, всех связанных с этим положительных свойств: прозрачности и надежности алгоритма. Хотя во всех процедурных языках программирования этот оператор присутствует, однако, с точки зрения структурного подхода, его употребления следует избегать.

Комбинации базовых структур

Сложный алгоритм состоит из соединенных между собой базовых структур. Соединяться эти структуры могут двумя способами: послеДовательным и вложенным.

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

Структурный подход требует соблюдения стандарта в изображении блок-схем алгоритмов. Чертить их нужно так, как это делалось во всех приведенных примерах. Каждая базовая структура должна иметь один вход и один выход. Нестандартно изображенная блок-схема плохо читается, теряется наглядность алгоритма. Несколько примеров структурных блок-схем алгоритмов приведены на рис. 3.8 (вместо «да», «нет» здесь использованы знаки «+» и «—», У — <условие>, С — <серия>).

Такие блок-схемы легко читаются. Их структура хорошо воспринимается визуально. Структуре каждого алгоритма можно дать название. Приведенные блок-схемы можно охарактеризовать следующим образом (в порядке номеров).

1. Вложенные ветвления. Глубина вложенности равна единице.

Структура алгоритмов

S 13

2.


Цикл с вложенным ветвлением.

З. Вложенные циклы-пока. Глубина вложенности — 1.

4. Ветвление с вложенной последовательностью ветвлений на положительной ветви и с вложенным циклом-пока на отрицательной ветви.

5. Следование ветвления и цикла-до.

6. Вложенные циклы. Внешний  цикл-пока, внутренний цикл-до.

Наглядность структуре описания алгоритма на АЯ придает структуризация внешнего виДа текста. Основной используемый для этого прием — сдвиги строк, которые должны подчиняться следующим правилам:

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

    вложенная конструкция записывается смещенной по строке на несколько позиций вправо относительно внешней для нее конструкции.

 

Программирование обработки информации


Рис. 3.8. Структурные схемы алгоритмов


Для приведенных на рис. АЯ должна быть следующей:

1. если <У1> то если <УЗ> то <С1> все иначе если <У2> то иначе <СЗ>

все

з.

пока <У1> пока <У2>

5.

если <У1> то <С1> иначе <С2> все повторять

до

3.8 блок-схем структура текста на

Структура алгоритмов

5 13

 

97

2. пока <У1> нц если <У2> то <С1> иначе <С2>

4. если <У1> то если <У2> то <С1> иначе <С2> все если <УЗ> то <СЗ> иначе <С4> все иначе пока <У4>

кц все

6.

пока <У1> нц повторять

до кц


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

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


Программирование обработки информации


Система основных понятий

Структуры алгоритмов и программ

Базовые алгоритмические структуры

Следование

Ветвление

 

Линейная последовательность действий

Выбор одной из двух се- рий действий с выходом на общее продолжение

Повторение серии действий по условию. Цикл с предусловием, цикл с постусловием

Комбинации базовых структур: последовательность, вложенность

Структурный алгоритм (программа): построенный из базовых алгоритмических структур, не содержащий команды безусловного перехода (GOT0)

Структурирование текста на Алгоритмическом языке и на языках программирования: использование сдвигов строк для вложенных конструкций

Вопросы и задания

О 1. Перечислите основные базовые алгоритмические структуры и покажите способы их отображения на блок-схемах и в АЖ О 2. Какой алгоритм называется структурным?

З. Нарисуйте блок-схемы и напишите на АЯ два варианта алгоритма решения задачи: выбрать из двух числовых величин наибольшее значение. Первый вариант с полным ветвлением, второй вариант — с неполным ветвлением.

4.  Нарисуйте блок-схемы и напишите на АЯ два варианта алгоритма решения задачи: выбрать из трех числовых величин наименьшее значение. Первый вариант с вложенными ветвлениями, второй вариант — с последовательными ветвлениями.

5.  Для данного натурального числа лт требуется вычислить сумму: 1 + 1/2 + 1/3 + ... + 1/N. Постройте блок-схемы и напишите на АЯ два варианта алгоритма: с циклом-до и с циклом-пока.

6.  Какую структуру будет иметь алгоритм решения следующей задачи? Дано целое положительное число N. Если ЛУ — четное, то вычислить М— 1 - 2 . • N. Если лг нечетное, то вычислить сумму:

Составьте блок-схему алгоритма решения и опишите его на АЖ

S 14

Паскаль — язык структурного программирования

Программирование для ЭВМ — процесс создания программ управления работой компьютера.

Эволюция программирования

Паскаль — язык структурного программирования

S 14


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

 

Адрес команды

Код операции

1-й адрес

2-й адрес

3-й адрес

Шестнадцатеричный код

28

02

со

 

 

Двоичный код

0010 1000

0000 0010

1100 0000

1100 0100

1101 1000

Такая команда называется трехадресной. Код 0216 относится к команде сложения. 1-й и 2-й адреса — это адреса ячеек ОЗУ, в которых хранятся слагаемые, 3-й адрес — адрес ячейки, куда заносится сумма. Сама команда хранится в ячейке ОЗУ с адресом 2816.

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

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

ADD а, Ь, с

Программирование обработки информации


Слово АШ) обозначает команду «сложить», а и Ь — имена переменных-слагаемых, с — переменная, куда помещается результат.

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

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

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

Языки программирования высокого уровня. Следующим этапом развития программирования стало создание языков программирования высокого уровня — ЯПВУ. Примеры ЯПВУ: Паскаль, Бейсик, Фортран, Си, Java и др. Все названные ЯПВУ относятся к так называемой процедурной парадигме программирования. Поэтому их называют процеДурнылш языками программирования. Программы на таких языках представляют собой последовательности команд, описывающих действия (процедуры) компьютера по обработке информации. Существуют другие парадигмы программирования. Относящиеся к ним языки называют Декларативными языками программирования (Пролог, Лисп и др.). Однако мы их рассматривать не будем.

Для каждого языка существует машинно-независимый стандарт- Возможность программирования на данном ЯПВУ зависит от наличия на вашем компьютере транслятора с этого языка. Трансляторы для каждого типа компьютера создают системные программисты.

Паскаль — язык структурного программирования

S 14


Текст программы на ЯПВУ по своей форме ближе к естественным языкам (чаще всего — английскому), к языку математики. Та же команда сложения двух величин на ЯПВУ похожа на привычную форму математического равенства:

с : =a+b (на Паскале); с=а+Ь (на Фортране, Бейсике, Си).

Освоить программирование на языке высокого уровня гораздо проще, чем на ассемблере. Поэтому с появлением ЯПВУ значительно возросло число прикладных программистов, расширилось применение ЭВМ во многих областях.

Большое количество языков программирования появилось в 1960—1970-х годах. В 1965 году в Дартмутском университете был разработан язык Бейсик. По замыслу авторов это простой, легко изучаемый язык, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил с появлением микроЭВМ и персональных компьютеров.

История Паскаля

Язык программирования Паскаль был создан швейцарским профессором Никлаусом Виртом в 1969 году как язык для обучения студентов структурной методике программирования. Язык получил свое название в честь Блеза Паскаля, изобретателя первого вычислительного механического устройства. Позднее фирма Borland International, Inc (США) разработала систему программирования Турбо Паскаль для персональных компьютеров, которая вышла за рамки учебного применения и стала использоваться для научных и производственных целей. В Турбо Паскаль были внесены некоторые дополнения к базовому стандарту Паскаля, описанному Н. Виртом. Со временем язык развивался. Начиная с версии 5.5, в Турбо Паскаль вводятся средства поддержки объектноориентированного программирования (ООП). В дальнейшем это привело к созданию 0bject Pascal языка с возможностями  объектно-ориентированного программирования. В начале 1990-х годов объединение элементов ООП в Паскале с визуальной технологией программирования привело к созданию системы программирования Delphi.

Структура процедурных языков программирования высокого уровня

Программирование обработки информации


Во всяком языке программирования определены способы организации данных и способы организаций действий над данными. Кроме того, существует понятие «элементы языка», включакощее в себя множество символов (алфавит), служебных слов и других изобразительных средств языка программирования. Несмотря на разнообразие процедурных языков, их изучение происходит приблизительно по одной схеме. Это связано с общностью структуры различных процедурных языков программирования высокого уровня, которая схематически отражена на рис. 3.9.

Рис. 3.9. Структура процедурного ЯПВУ

Всякий язык программирования образуют три его основные составляющие: алфавит, синтаксис и семантика. Алфавит это множество символов, допустимых в записи текстов программ. Синтаксис это правописание языковых конструкций (имен, констант, выражений, операторов и пр.). Семантика — это смысловое содержание языковой конструкции.

Соблюдение правил в языке программирования должно быть более строгим, чем в разговорном языке. Человеческая речь содержит значительное количество избыточной информации. Не расслышав какое-то слово, можно понять смысл фразы в целом. Слушающий или читающий человек может додумать, дополнить, исправить ошибки в воспринимаемом тексте. Компьютер же — томат, воспринимающий всё буквально. В текстах программ нет избыточности, компьютер сам не исправит даже очевидной (с точки зрения человека) ошибки. Он может лишь указать на место, которое «не понял», и вывести замечание о предполагаемом характере ошибки. Исправить же ошибку должен программист.

Структура программы на Паскале

Паскаль — язык структурного программирования

5 14


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

Program <имя программы> ; ЬаЬе1 <раздел меток> ;

Const <раздел констант>; Туре <раздел типоо ;

Var <раздел переменных> ;

Procedure (Function) <раздел подпрограмм> ; Begin

<раздел операторов> End.

Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе.

В Турбо Паскале, в отличие от базового стандарта Паскаля, возможно:

 отсутствие заголовка программы;  разделы Const, Туре, Var, Label могут следовать друг за другом в любом порядке и повторяться в разделе описаний сколько угодно раз.

Программирование обработки информации


Система основных понятий

Паскаль— язык структурного программирования

Эволюция программирования

Программирование в машинных кодах (начало 1950-х годов)

Машинно-ориентиро- ванные языки програм- мирования: автокоды, ассемблеры (2-я поло- вина 1950-х годов и позже)

Машинно-независимые языки программирования высокого уровня ЯПВУ (1960-е годы и позже)

Структура процедурного

Элементы языка: алфа- вит, служебные слова и др.

Организация действий над данными: ввод/вы- вод, операции, опера- торы

Организация данных: типы и структуры данных

Паскаль — процедурный язык структурного программирования.

Этапы развития: стандартный Паскаль (Н. Вирт), Турбо Паскаль, 0bject Pascal, Delphi

Структура программы на Паскале

Заголовок программы

Раздел описаний

Раздел операторов

Вопросы и задания

1.  В каком виде составлялись программы для первых компьютеров?

2.  Чем отличались программы на автокодах (ассемблерах) от программ в машинных кодах?

З. Почему ЯПВУ являются машинно-независимыми языками программирования?

4.  Что такое трансляция?

5.  В какой парадигме программирования реализован язык Паскаль?

6.  Что входит в структуру любого процедурного ЯПВУ?

7.  Из каких основных разделов состоит программа на Паскале?


S 15 Элементы языка Паскаль и типы данных

Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы.

Латинские буквы: от А до Z (заглавные) и от а до z (строчные).

Цифры: О, 1, 2, З, 4, 5, 6, 7, 8, 9.

Специальные символы: + —— * / < > [ ] •

Следующие комбинации специальных символов являются едиными символами (их нельзя разделять пробелами):

знак присваивания; меньше или равно; больше или равно;

(* *) ограничители комментариев (наряду с { }); не равно;

) эквивалент [ 1.

Пробелы — символ пробела (код ASCII 32) и все управляющие символы кода ASCII (от О до 31).

Элементы языка Паскаль и типы данных

5 15

 

105

Служебные слова. К спецсимволам относятся и служебные слова, смысл которых определен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка, они являются едиными элементами алфавита. Вот некоторые служебные слова: Program, Var, array, If, Do, Hhile и др.

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

4 любой текст, не содержащий символ ”фигурная скобка ”

(* любой текст, не содержащий символы “ звездочка, круглая скобка”*)

/ / последующий текст до конца строки Буквы русского алфавита употребляются только в комментариях, символьных и текстовых константах.

Концепция типов данных в Паскале

Концепция типов данных является одной из центральных в любом языке программирования. Как вы знаете, с типом величины связаны три ее свойства: форма внутреннего преДставления, множество принимаемых значений и множество Допустимых операций.

Программирование обработки информации

Паскаль характеризуется большим разнообразием типов данных, отраженном на рис. 3.10.

Рис. 3.10. Система типов данных Паскаля

Тип данных называется порядковым, если он состоит из счетного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия «следующий» и «предыдущий».

В стандартном Паскале Вирта отсутствовал строковый тип. Он был внесен в Турбо Паскаль. Кроме того, в Турбо Паскале целые и вещественные — это группы типов. В старших версиях Турбо Паскаля появился процедурный тип и тип «объект».

Каждый тип имеет свой идентификатор. В таблице 3.2 представлена информация о простых типах данных, определенных в Турбо Паскале и последующих диалектах языка. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятичном представлении числа.

106


Таблица 3.2. Типы данных

Имя типа

Длина в байтах

Диапазон (множество) значений

Десятичных цифр в мантиссе

 

Целочисленные типы

 

integer

2

-32768..32767

 

byte

1

0..255

 

word

2

0..65535

 

shortint

1

-128..127

 

10ngint

4

-2147483648..2147483647

 

 

Вещественные типы

 

rea1

6

2,9 • 10-39 -1,7 • 1038

11-12

sing1e

4

1,5  • 1038

7-8

doub1e

8

5 10-324 -1,7 • 10

15-16

extended

10

—4932

3,4 • 10      -1,1 • 104932

19-20

 

Логический тип

 

Ьоо1еап

1

True, False

 

 

Символьный тип

 

char

1

Все символы 8-разрядной кодировки

 

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

Перечислимый тип задается непосредственно перечислением (списком) всех значений, которые может принимать переменная данного типа:

         Туре Опля типа>             «список значений>)

Определенное таким образом имя типа затем используется для описания переменных. Например:

Туре Gaz

Meta1           (Ее, со, на, си, zn) ; var G1, G2, (33: Gaz,•

Met1, Met2: Meta1;

Day: (Sun, Моп, Тие, Wed, Thu, Fri, Sat) ;

Здесь Gaz и Metal имена перечислимых типов, которые ставятся в соответствие переменным (71, G2, G3 и Met1, Met2. Переменной Day назначается перечислимый тип, которому не присвоено имени.

Значения, входящие в перечислимый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечислимом типе занимает в памяти 2 байта, поэтому число значений этого типа не должно превышать 65 535.

Перечислимый тип — упорядоченное множество. Его элементы пронумерованы, начиная от О в порядке следования в описании.

В программе, в которой присутствует данное выше описание переменной Ту, возможен такой фрагмент:

Программирование обработки информации

If Day=Sun Then Write ( ' Ура! Сегодня выходной! ) ;

Ограниченный тип задается как упорядоченное ограниченное подмножество некоторого порядкового типа:

<константа 1>. . <константа 2>

Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе.

При исполнении программы автоматически контролируется принадлежность значений переменной ограниченного типа установленному диапазону. При выходе из диапазона исполнение программы прерывается.

им

          Туре Number s  1. .31;

                   A1f   'A' . . 'Z'

Var Data: Numbers;

Ви Куа : A1f ;

Структурные типы. Особенностью Паскаля является то, что в нем структуры данных рассматриваются как типы — структур-

108

ные типы данных. Одна величина простого типа представляет собой одно значение: целое число, вещественное число, символ и пр. Одна величина структурного типа представляет собой совокупность множества значений; примеры — числовой массив, символьная строка и пр.

Автор Паскаля Вирт придавал большое значение разнообразию типов данных в языке программирования. В своей книге «Алгоритмы и структуры данных» он подчеркивает зависимость алгоритма решения задачи от способа организации данных в программе. Удачно выбранный способ организации данных упрощает алгоритм решения задачи.

Элементы языка Паскаль и типы даННЫХ

5 15


Система основных понятий

 Элементы языка и типы данных в Паскале

Состав программы на Паскале

Элементы языка

Комментарии

Алфавит, служебные слова, идентификаторы

Поясняющие тексты, которые пропускаются компилятором

Типы данных

Стандартные (целочисленные, вещественные, логический, символьный)

Определяемые в программе: перечислимые, ограниченные

Простые типы

Структурные типы

Одна величина — одно значение

Одна величина — множество значений (массивы, строки, записи, множества, файлы)

Вопросы и задания

1. Входят ли в алфавит Паскаля русские буквы? Для чего их можно использовать?

2. Что такое идентификатор? Каковы правила задания идентификаторов?

З. Чем различаются разные типы данных из группы целочисленных типов?

4.  Чем различаются разные типы данных из группы вещественных типов?

5.  В чем разница между простыми и структурными типами?

6.  Что такое перечислимый и ограниченный типы данных?

5 16

Операции, функции, выражения

Арифметические операции

К числовым типам данных относятся группы вещественных и целочисленных типов. К ним применимы арифметические операции и операции отношений.

Программирование обработки информации


Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). Унарная арифметическая операция в Паскале одна. Это операция изменения знака. Ее формат:

—<величина>

Бинарные арифметические операции стандартного Паскаля описаны в табл. 3.3. В ней символ «1» обозначает целые типы, символ «R» — вещественные типы.

Таблица 3.3. Бинарные операции Паскаля

Знак

Выражение

Типы операндов

результата

Операция

 

А+В

 

Сложение

 

А-В

1

Вычитание

 

А*В

 

Умножение

 

мв

 

Вещественное деление

div

А div В

 

 

Целочисленное деление

mod

А mod В

 

 

Остаток от целочисленного деления

Стандартные функции и процедуры

В Паскале существует большое количество стандартных функций и процедур, к которым программист может обращаться в своих программах. Наиболее часто используются математические функции, например: sqrt (х) — квадратный корень, abs (х) абсолютная величина, sin (х) и др. Часто используемые стандартные процедуры: Read ( ) — процедура ввода, Write ( ... ) — процедура вывода данных.

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

Таблица 3.4 содержит описания стандартных математических функций Паскаля.

Операции, функции, выражения

S 16


Для подключения других модулей необходимо в начале программы (после заголовка) записать строку:

Uses <имя модуля>

Для управления символьным выводом на экран используется стандартный модуль CRT. К программе он подключается командой:

Uses CRT

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

Арифметические выражения

Арифметическое выражение задает порядок выполнения действий над числовыми величинами. Арифметические выражения содержат числовые константы и переменные, арифметические операции, функции, круглые скобки. Одна константа или одна переменная — простейшая форма арифметического выражения.

Например, рассмотрим математическое выражение:

0,2с — ln(x — у)

Программирование обработки информации


Таблица 3.4. Стандартные математические функции Паскаля

Обращение

аргумента

результата

 

 

 

число п = 3,1415926536Е+ОО

abs (х)

 

 

Модуль аргумента

arctan (х)

 

 

Арктангенс (в радианах)

cos (х)

 

 

Косинус (в радианах)

ехр (х)

 

 

ех — экспонента

frac (х)

 

 

Дробная часть х

int (х)

 

 

Целая часть х

 

 

 

Натуральный логарифм

random

 

 

Псевдослучайное число в интервале

random (х)

 

 

Псевдослучайное число в интервале

round (х)

 

 

Округление до ближайшего целого

sin (х)

 

 

Синус (в радианах)

sqr (х)

 

 

Квадрат х

sqrt (х)

 

 

Корень квадратный

trunc (х)

 

 

Ближайшее целое, не превышающее х по модулю

На Паскале оно выглядит так:

(2*A+Sqrt (0 .5*sin (Х+У) ) ) / (Х-У) )

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


1. Все символы пишутся в строчку на одном уровне. Проставляются все знаки операций (нельзя пропускать знак *).

2. Не допускаются два следующих подряд знака операций.

(Нельзя: А+—В; можно: А+ (—B)

З. Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:

вычисление функции; унарная операция смены знака (—); * , / , div, mod;

4.  Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.

5.  Часть выражения, заключенная в скобки, вычисляется в первую очередь. (Например, в выражении (А+В) * (C—D) умножение производится после сложения и вычитания.)

Операции, функции, выражения

S 16


Не следует записывать выражения, не имеющие математического смысла, например деление на нуль, логарифм отрицательного числа и т. п.

Пример. Цифрами сверху указан порядок выполнения операций:

           1         7 4 5 3                             12 11 10 8          9

(1+у) * (2*x+sqrt (у) — (Х+У) ) / (у+1/ (sqr (х) —4) )

Данное арифметическое выражение (на Паскале) соответствует следующему математическому выражению:

В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления ХУ рекомендуется поступать следующим образом:

а) если у — целое положительное значение, то его степень вычисляется через умножение; например х3 —» х*х*х; большие степени следует вычислять умножением в цикле;

б) если у — целое отрицательное число, то степень вычисляется так: ху = (1/X)lyl; а при у = О: хо 1.

в) если у — вещественное значение, не равное нулю, то используется следующая математическая формула: Х У = е Паскале получим арифметическое выражение:

ехр (У*1п (х) )

Очевидно, что в этом случае не допускается нулевое или отрицательное значение х. Для целого у такого ограничения нет.

Пример

1

На Паскале это выражение выглядит так:

ехр (1/3*1п (А+1) )

Программирование обработки информации

Выражение имеет целочисленный тип, если в результате его вычисления получается величина целочисленного типа. Выражение имеет вещественный тип, если результатом его вычисления является вещественная величина.

Система основных понятий

Операции, функции, выражения

Арифметические операции применяются к числовым величинам; нет операции возведения в степень

Тип результата операции зависит от типа операндов (табл. 3.3)

Возведение в степень (ХУ): при целом у реализуется через умножение, при вещественном у реализуется так: ехр (y*ln (х) )

Стандартные функции и процедуры описаны в модулях, подключаемых к программе. Модуль S У STEM подключается по умолчанию

Арифметическое выражение: языковая конструкция, определяющая порядок вычисления числовой величины в соответствии с математическим выражением. Типом выражения называется тип результата его вычисления

114

Вопросы и задания

1. Для следующих математических выражений запишите соответствующие арифметические выражения на Паскале:

      а) а + bx + cyz;        б) [(ах — + — Ф, в)

                х + у 02                          4 а +3—р;                            е) 1+2 + Щ / 1+ 2

       г)                         д) 10                                                                     

З + ху

2. Запишите математические выражения, соответствующие следующим выражениям на Паскале:

а) (p+q) / (r+s) —p*q/ (r*s) ;

б) 1E3+beta/ (x—gamma*de1ta) ;

в) a/b* (c+d) — (а—Ь) /b/c+1E—8.

Операции, функции, выражения


З. Для следующих математических выражений запишите соответствующие арифметические выражения на Паскале:

         а) (1 + х)2; б) 467 ; в) cos2x2;       г) log2—•, д) arcsin х; е)

2

р + sin2 л

                                                                   107 + ln4!           cos2 + lctgy|

4.  Вычислите значения выражений:

а) trunc (б. 9)

е) round (6.2)

б) trunc (6 . 2)

ж) 20 mod 6

в) 20 div б

з) 2 mod 5

г) 2 div 5

и) 3*7 div 2 mod 7/3 — trunc (sin (1) )

д) round (6. 9)

5.  Определите типы выражений:

                     в) sqr (4)                   д) sin (О)

      б) 20/4                г) sqrt (16)              е) trunc (—3 . 14)


5 17

Оператор присваивания, ввод и вывод данных

Присваивание — это Действие, в результате которого переменная величина получает определенное значение. В программе на Паскале существуют три способа присваивания значения переменной:

1) оператор присваивания;

2) оператор ввода;

З) передача значения через параметры подпрограммы.

Оператор присваивания имеет следующий формат:

<переменная> : =<выражение>

Программирование обработки информации


Например:

1) x:=2*a+sqrt (Ь) ;

2) Ь: = (х>у) and             ;

Сначала вычисляется выражение, затем полученное значение присваивается переменной. В первом примере приведен арифметический оператор присваивания. Здесь х переменная вещественного типа. Во втором примере — логический оператор присваивания. Здесь Ь — переменная типа Воо1еап.

Типы переменной и выражения должны совпадать. Из этого правила есть одно исключение: переменной вещественного типа можно присваивать значение целочисленного выражения. В таком случае значение целого числа преобразуется к формату с плавающей запятой и присвоится вещественной переменной.

Ввод и вывод данных

Под вводом понимается передача данных с внешнего устройства компьютера в оперативную память. При выводе данные передаются из оперативной памяти на внешнее устройство (рис. 3.11).

ОЗУ

 

Внешние устройства

Вывод (Write)

 

Ввод (Read)

Рис. 3.11. Ввод и вывод

Операция ввода называется чтением и выполняется с помощью оператора Read. Вывод называется записью, и для его выполнения используется оператор Write.

К внешним устройствам относятся устройства ввода и вывода (клавиатура, монитор, принтер и др.) и устройства внешней памяти (магнитные и оптические диски, флеш-память и др.). Данные на внешних устройствах организованы в файлы.

Оператор присваивания, ввод и вывод данных

 


Для внешних запоминающих устройств (ВЗУ) файл — это поименованная область памяти этого устройства. В файлы на ВЗУ можно записывать данные по команде Write и можно читать данные из файлов по команде Read. На одном устройстве ВЗУ может храниться множество файлов одновременно. Правила именования файлов на ВЗУ определяются операционной системой. Имена для файлов, создаваемых пользователем, задает сам пользователь.

Устройства ввода с клавиатуры и вывода на экран монитора являются однофайловыми устройствами. Считается, что с клавиатурой связан один системный файл с именем INPUT. Поэтому ввод с клавиатуры равнозначен чтению из файла INPUT. С монитором связан системный файл, который называется OUTPUT. Вывод на экран — это запись данных в файл OUTPUT .

Ввод с клавиатуры производится путем обращения к стандартной процедуре Read в следующем формате:

Read «список ввода>)

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

Например:

Read (а, Ь, с, д)

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

Пример:

                      Var Т: Rea1; д: Integer;             К: Char ;

Begin

Read(T, З, К) ;

Набираем на клавиатуре:

253.98 100 G [Enterl

Программирование обработки информации


Если в программе имеется несколько подряд идущих операторов Read, то данные для них можно вводить последовательно (на экране отражаются в одной строке) и лишь в конце ввода нужно нажать клавишу Enter. Пример:

Var А, В: Integer;

                           С, D: Rea1;

Begin

                           Read(A, В) ;         Read (С, D) ;

Набираем на клавиатуре и видим на экране:

18758 34 2.62Е-О2 1.54Е+О1 [Enter]

Другой вариант оператора ввода с клавиатуры имеет вид:

ReadLn «список ввода>)

Здесь слово «ReadLn» означает read line «читать строку». Нажатие клавиши Enter в процессе ввода вырабатывает признак «конец строки», и данные при выполнении следующего оператора ввода будут отражаться на экране с начала новой строки. Если в предыдущем примере заменить операторы Read на ReadLn:

ReadLn (А, В) ; ReadLn (С, D) ;


то ввод значений будет происходить из двух строк, отраженных на экране:

18758 34 [Enter]

2. 62Е-О2 1.54Е+О1 [Enter]

Вывод на экран производится по оператору обращения к стандартной процедуре:

Write «список вывода>)

Здесь элементами списка вывода могут быть выражения различных типов (в частности, константы и переменные).

         Например: Write ( Сумма ' ,     

Если, например, А 5 и В = 7, то на экране получим:

Сумма 5+7=12

Оператор присваивания, ввод и вывод данных

 


При выводе на экран нескольких значений в строку, они не отделяются друг от друга пробелами. Программист сам должен позаботиться о таком разделении. В приведенном примере предусмотрен пробел после слова «Сумма».

Второй вариант процедуры вывода на экран:

WriteLn «список вывода>)

Write line — «писать строку». Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn, записанный без параметров, вызывает перевод строки.

В списке вывода могут присутствовать указатели форматов вывода (форматы). Формат определяет представление выводимого значения на экране. Формат отделяется от соответствующего ему элемента двоеточием. Если указатель формата отсутствует, то машина выводит значение по определенному правилу, предусмотренному по умолчанию.

Линейная программа. Следование — простейшая алгоритмическая структура. Программа, реализующая следование, называется линейной программой. В линейной программе могут присутствовать только операторы присваивания, ввода, вывода и обращения к процедурам. Заметим, что операторы Read и Write являются обращениями к стандартным процедурам Паскаля.

Одним из обязательных условий хорошего стиля программирования является организация диалога между компьютером и пользователем. Такое диалоговое взаимодействие называется интерактивным интерфейсом.

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

Program Mu1tiply ;

Var А, В, АВ: integer;

Begin

                        Write ('А=             ReadLn (А) ;

                       Write ( '                 ReadLn (В) ;

Write (А,    в, End.

Программирование обработки информации

Тестирование этой программы отразится на экране следующим образом. А- 13 в— 28

Числа 13 и 28 вводятся пользователем с клавиатуры, всё остальное автоматически выводится по программе.

Пример 2. Дано натуральное трехзначное число. Требуется вычислить сумму его цифр. Например, если дано число 325, то в результате должно получиться: З + 2 + 5 == 10.

Сначала составим программу, а потом ее прокомментируем.


Program SumCifr ;

Var Х, „Бит: integer;

Begin

                       Write ( Введите трехзначное число              ReadLn (Х) ;

Бит :

Sum : =Sum + Х mod 10; div 10;

Sum:=Sum + Х mod

Х:=Х div 10;

Sum : =Sum + Х;

Write ( Сумма цифр       Sum) End.

120

В этой программе использованы две операции целочисленной арифметики: div — целочисленное деление и mod — остаток от целочисленного деления (см. табл. 3.3). Остаток от деления на 10 (mod) выделяет младшую цифру числа, а целочисленное деление на 10 (div) отбрасывает младшую цифру.

Оператор присваивания, ввод и вывод данных

5 17


Чтобы лучше понять работу программы, выполним ее трассировку. В курсе 9 класса вам уже приходилось строить трассировочные таблицы. Для программы SumCifr таблица будет выглядеть следующим образом:

 

Команда

 

Х

S um

1

read1n (Х)

 

 

325

 

2

Sum :

 

 

 

 

З

Sum : =Sum

mod 10

 

 

5

4

div 10

 

 

32

 

5

Бит : =Sum

mod 10

 

 

7

6

div 10

 

 

з

 

7

 

 

 

10

8

Write ( Сумма

цифр =

Бит)

 

10

Выполнение программы на компБютере приводит к такому же результату.

Заметим, что эту задачу можно решить с помощью всего одного оператора присваивания:

Sum:=X mod 10 + Х div 10 mod 10 + Х div 100

Проверьте самостоятельно.


Программирование обработки информации


Система основных понятий

Оператор присваивания: «(переменная> : =<выражение>

Тип переменной и выражения должны совпадать. Исключение: вещественной переменной можно присваивать значение целого выражения

Ввод — передача данных с внешнего устройства в ОЗУ

Ввод с клавиатуры:

Read «список ввода» или ReadLn «список ввод»)

Вывод — передача данных из ОЗУ на внешнее устройство

Вывод на экран:

Write «список вывода>) или WriteLn «список вывода>)

Линейная программа состоит из операторов ввода, вывода, присваивания и обращения к процедурам

Вопросы и задания

1. Назовите последовательность действий при выполнении оператора присваивания.

2. Сформулируйте правило соответствия типов для оператора присваивания. Какое существует исключение из этого правила?

3, Если у — вещественная переменная, а п — целая, то какие из следующих операторов присваивания правильные, а какие — нет?

                       а) у : =п+1                                              div 2

                                б) п : =у—1                                                              div 2

                       г) у: =trunc (у)                     з) n:=sqr (sqrt (п) )

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

5.  Напишите оператор присваивания, в результате выполнения которого целочисленной переменной h присвоится значение цифры, стоящей в разряде сотен в записи положительного целого числа К (например, если 28 796, то 7).

6.  Напишите линейную программу, в результате выполнения которой в целочисленной переменной S получится перевернутое целое четырехзначное число К. Например: если 1357, то S = 7531.

7.  Напишите линейную программу перевода любого целого четырехзначного двоичного числа в десятичную систему счисления. Например, дано число в двоичной системе счисления: 11012. Перевод в десятичную систему выполняется так: 1 • 23 + 1 • 2 2 + О • 2 1 + 1 = 13.

S 18 Логические величины, операции, выражения

Логические величины, операции, выражения

5 18

 

123

С элементами математической логики вы уже встречались в курсе информатики основной школы, изучая способы записи запросов к базе данных и условной функции ЕСЛИ в электронных таблицах, основы алгоритмизации и программирования. Повторим основные понятия логики с целью дальнейшего углубления ваших знаний в использовании ее для программирования.

К числу основных понятий логики относятся: высказывание, логическая величина, логические операции, логические выражения и формулы.

Высказывание (суждение) — это повествовательное предложение, в котором что-либо утверждается или отрицается. По поводу любого высказывания можно сказать, истинно оно или ложно.

Например, высказывание «На улице идет дождь» будет истинным или ложным в зависимости от состояния погоды в данный момент. Истинность высказывания «Значение А больше, чем В», записанного в форме неравенства: А > В, будет зависеть от значений переменных А и В.

Логические величины понятия, выражаемые словами: ИСТИНА, ЛОЖЬ (true, false). Следовательно, истинность высказываний выражается через логические величины.

Логическая константа: ИСТИНА или ЛОЖЬ.

Логическая переменная: символически обозначенная логическая величина. Следовательно, если известно, что А, В, Х, У

и др. — переменные логические величины, то, значит, они могут принимать значения только ИСТИНА или ЛОЖЬ.

Логическое выражение простое или сложное высказывание. Сложное высказывание строится из простых с помощью логических операций (связок).

Логические операции

Конъюнкция (логическое умножение). В русском языке она выражается союзом И. В математической логике используются знаки & или л. Конъюнкция — двухместная операция; записывается в виде: А & В. Значением такого выражения будет ЛОЖЬ, если значение хотя бы одного из операндов ложно.

Дизъюнкция (логическое сложение). В русском языке этой связке соответствует союз ИЛИ. В математической логике она обозначается знаком м. Дизъюнкция двухместная операция; записывается в виде: А v В. Значением такого выражения будет ИСТИНА, если значение хотя бы одного из операндов истинно.

Программирование обработки информации


Отрицание. В русском языке этой связке соответствует частица НЕ (в некоторых высказываниях применяется оборот «неверно, что ... Отрицание — унарная (одноместная) операция; записывается в виде: А или А.

Правила выполнения рассмотренных логических операций отражены в следующей таблице, которая называется таблицей истинности логических операций (здесь И означает «истина», Л «ложь»):

 

 

 

А&В

АМ В

и

и

л

и

и

и

л

л

л

и

л

и

и

л

и

л

л

и

л

л

Логическая формула формула, содержащая лишь логические величины и знаки логических операций. Результатом вычисления логической формулы является ИСТИНА или ЛОЖЬ.


Последовательность выполнения операций в логических формулах определяется старшинством операций. В порядке убывания старшинства логические операции расположены так: отрицание, конъюнкция, ДИЗЪЮНКЦИЯ. Кроме того, на порядок выполнения операций влияют скобки, которые можно использовать в логических формулах. Например:

Пример. Вычислить значение логической формулы:

если логические переменные имеют следующие значения: Х ЛОЖЬ, У — ИСТИНА, 74 ИСТИНА.

Решение. Отметим цифрами сверху порядок выполнения операций в формуле:

1 2 4 з

Используя таблицу истинности, вычислим формулу по шагам:

Логические величины, операции, выражения

5 18

1)  


„ЛОЖЬ = ИСТИНА;

2)   ИСТИНА ИСТИНА = ИСТИНА;

3)   ЛОЖЬ ИСТИНА ЛОЖЬ; 4) ИСТИНА ЛОЖЬ = ИСТИНА. Ответ: ИСТИНА.

Логические функции на области числовых значений

Алгебра чисел пересекается с алгеброй логики в тех случаях, когда приходится проверять принадлежность значений алгебраических выражений некоторому множеству. Например, принадлежность значения числовой переменной Х множеству положительных чисел выражается через высказывание: «Х больше нуля». Символически это записывается так: Х>О. В алгебре такое выражение называют неравенством. В логике — отношением.

Отношение Х > О может быть истинным или ложным. Если Х — положительная величина, то оно истинно, если отрицательная, то ложно. В общем виде отношение имеет следующую структуру:

«(выражение 1> знак отношения> <выражение 2>

Здесь выражения 1 и 2 — некоторые математические выражения, принимающие числовые значения. В частном случае выражение может представлять собой одну константу или одну переменную величину. Знаки отношений могут быть следующими:

равно;

 — не равно;

 — больше или равно;

— меньше или равно;

> — больше;

— меньше.

Например:

х = 5; а + Ь * х — 1; 62 — 4ас О; sin(x) х/2.

Итак, отношение — это простое высказывание, а значит, логическая величина. Оно может быть как постоянной: 5 > О всегда ИСТИНА, З * 6 : 2 — всегда ЛОЖЬ; так и переменной: а < Ь, х + 1 с — d. Если в отношение входят переменные числовые величины, то и значение отношения будет логической переменной.

Программирование обработки информации


Отношение можно рассматривать как логическую функцию от числовых аргументов. Например: F(x) = (х > О) или Р(х, у) — = (х < у). Аргументы определены на бесконечном множестве действительных чисел, а значения функции — на множестве, состоящем из двух логических величин: ИСТИНА, ЛОЖЬ.

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


операции.

1

Пример 1. Записать предикат (логическую функцию) от двух вещественных аргументов Х и У, который будет принимать значение ИСТИНА, если точка на координатной плоскости с координатами Х и У лежит внутри единичной окружности с центром в начале координат (рис. 3.12).

Из геометрических соображений понятно, что для всех точек, лежащих Рис. 3.12 внутри единичной окружности, будет истинным значение следующей логической функции:

иХ, У) = (Х2 + < 1).

Для значений координат точек, лежащих на окружности и вне ее, значение функции F будет ложным.

Пример 2. Записать предикат, который будет принимать значение ИСТИНА, если точка на координатной плоскости с координатами Х и У лежит внутри кольца с центром в начале координат, и радиусами R1 и R2.

Поскольку значения R1 и R2 — переменные величины, искомая логическая функция будет иметь четыре аргумента: Х, У, R1, R2. Возможны две ситуации:

1) R1 2 < Х2 + У2 < R22 и Т < R2: Т — внутренний радиус, R2 — внешний радиус;

2) R2 2 Х2 + У2 R1 2 и R2 < R1: R2 — внутренний радиус, R1 — внешний радиус.

Логические величины, операции, выражения

5 18


Объединив дизъюнкцией оба этих утверждения и записав их по правилам алгебры логики, получим следующую логическую функцию:

F(X, У, Т, R2) = (((Х2 + у2) >R1 2) 8, ((Х2 + у2) с: R2 2) R1 < R2) (((Х2 + у2) >R2 2) 8, ((Х2 + ) < R1 2 ) R2 R1).

Пример З. Записать предикат, который будет принимать значение ИСТИНА, если точка на координатной плоскости с координатами Х и У лежит внутри фигуры, ограниченной жирными ли-


ниями на рис. 3.13.

 

1

 

1

Рис. З 13

Фигура ограничена тремя границами, описываемыми уравнениями:

—Х — левая граница, линейная функция;

— верхняя граница, константа; Х2 — правая граница, парабола.


Рассматриваемая область есть пересечение трех полуплоскостей, описываемых неравенствами:

У>-Х;

У>Х2.

Во внутренних точках все эти три отношения являются одновременно истинными. Поэтому искомый предикат имеет вид:

                        F(X, У) —       -Х) 8,         1)            Х2).

Логические выражения на Паскале

Уже говорилось о том, что в Паскале имеется логический тип данных.

Логические константы: true (истина), fa1se (ложь).

Логические переменные: описываются с типом Воо1еап.

Программирование обработки информации


Операции отношения: осуществляют сравнение двух операндов и определяют, истинно или ложно соответствующее отношение между ними. Знаки операций отношения: = (равно), <> (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно).

Логические операции: пое — отрицание, and логическое умножение (конъюнкция), or — логическое сложение (дизъюнкция), xor — исключающее ИЛИ. Таблица истинности для этих операций (Т — true; F — fa1se):

 

 

пое А

А and В

А or В

А xor В

т

т

 

т

т

 

т

 

 

 

т

т

 

т

т

 

т

т

 

 

т

 

 

 

Логическое выражение может состоять из логических констант и переменных, отношений, логических операций. Логическое выражение принимает значение true или fa1se.


Например, логическая формула & У Х & 74 на Паскале запишется в виде следующего логического выражения:

пое Х and У or Х and z,

где Х, У, 7, — переменные типа Ьоо1еап.

Логические операции располагаются в следующем порядке по убыванию старшинства (приоритета): 1) not, 2) and, З) or, xor. Операции отношения имеют самый низкий приоритет. Поэтому если операндами логической операции являются отношения, то их следует заключать в круглые скобки. Например, математическому неравенству 1 Х S 50 соответствует следующее логическое выражение:

(1<=Х) and (Х<=5О)

Логическая функция odd (х) принимает значение true, если значение целочисленного аргумента х является нечетным, иначе fa1se.

Логические величины, операции, выражения

5 18


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

1. Арифметические операции:

— (минус унарный)

2. Логические операции: пое and or, xor

З. Операции отношения:

Еще раз обратите внимание, что в логическом выражении, соответствующем предикату из примера З:

(У>—Х) and (У<1) and  ,

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

Программирование обработки информации


Система основных понятий

Логические величины, операции, выражения

Базовые понятия логики

Высказывание (суждение)

Логическая величина

Логическое выражение

Основные логические операции

Некоторое утверж-

дение, которое может быть либо истинным, либо ложным

Принимает

одно из двух значений: ИСТИНА, ложь

Простое или сложное высказывание, содержащие логические связки (операции)

-  конъюнкция (логическое умножение)—и;

-  дизъюнкция (логическое сложение) или;

-  инверсия

(отрицание) — НЕ

Логические величины в Паскале: true — ИСТИНА, false — ЛОЖЬ

Логические операции в языке Паскаль

пое — отрицание

апа конъюнкция

о:

дизъюнкция

xor исключающее ИЛИ

Изменяет логическое значение операнда на противоположное

Равно true, если оба операнда true

Равно fa1se, если оба операн- да fa1se

Равно true, если операнды имеют разные значения

Старшинство операций в логическом выражении на Паскале

1. Арифметические операции:

1) — (минус унарный)

2. Логические операции:

1)              пое

2)              and З) or, хо:

З. Операции отношения:

Вопросы и задания

1. Какого типа величина получается при вычислении отношения (нера- О венства) между числами?

2. Что такое предикат? Приведите примеры.

З. Запишите на языке алгебры логики логические функции, которые будут принимать значение ИСТИНА, если справедливы следующие утверждения, и ЛОЖЬ — в противном случае:

а) все числа Х, У, Z равны между собой;

б) из чисел Х, У, Z только два равны между собой;

в) каждое из чисел Х, У, положительно;

г) только одно из чисел Х, У, 7, положительно;

д) значения чисел Х, У, Z упорядочены по возрастанию.

4.  Все формулы, полученные при решении предыдущей задачи, запишите в виде логических выражений на Паскале.

5.  Постройте таблицу истинности для логической формулы:

—X&Yv х

Логические величины, операции, выражения

5 18

 

131

Пояснение: в таблице истинности должны быть вычислены значения формулы для всех вариантов значений логических переменных: Х, У, Z. Следовательно, таблица будет содержать 23 = 8 строк и 4 столбца: значения Х, У, Z и результат. В таблицу можно добавить дополнительные столбцы, содержащие результаты промежуточных операций .

6.  Вычислите значения следующих логических выражений, записанных на Паскале:

а)

К rnod 7 = К div 5             

при к = 15;

б)

odd (trunc (10*Р) )

при Р = 0,182;

в)

пое odd (п)

при п = О;

            г)                            mod Зпри t = true, Р = 10101;

                      д)апа (у>х)                           при х = 2, у = 1;

              е) а or пое Ь                                   при а = false, Ь = true.

Пояснения: odd (х) — логическая функция определения четности аргумента, равна true, если х — нечетное, и равна false, если х — четное; trunc (х) — целочисленная функция от вещественного аргумента, возвращающая ближайшее целое число, не превышающее х по модулю.


Программирование ветвлений

В S 13 был показан способ отображения ветвления (полного и неполного) на блок-схеме и учебном Алгоритмическом языке. Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора If. В 9 классе вы познакомились с этим оператором. Вспомним его формат. Полное ветвление:

If <логическое выражение>

Then оператор 1> E1se оператор 2>

Неполное ветвление:

If <логическое выражение>

Then Оператор>

Программирование обработки информации


То, что в алгоритмах называется условием, в Паскале является логическим выражением, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться <опе— ратор 1> (после Then), если — fa1se, то оператор 2> (после E1se) для полной формы или оператор, сразу следующий после условного, для неполной формы (без E1se). На ветвях может быть как простой оператор, так и составной — серия операторов в операторных скобках Begin, End.

Пример 1. По длинам трех сторон треугольника а, Ь, с требуется вычислить его площадь.

Для решения задачи используется формула Герона

                                                                                                             Ар — а)(р —                         — с),

где р (а + Ь + с)/2 полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника — длина каждой стороны должна быть меньше суммы длин двух других сторон, и длины сторон не могут быть отрицательными величинами.

Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, используя логические операции, мы можем сразу «отфильтровать» все варианты неверных исходных данных.

Program Geron;

Var А, В, С, Р, S           Rea1 ; Begin

WriteLn ( Введите длины сторон треугольника :

        Write( 'a          ReadLn (А) ;

) ; ReadLn (В) ;

) ; ReadLn (С) ;

If (А>О) and (В>О) and (00) and (А+В>С) and (В+С>А) and (А+С>В)

Then Begin

(А+В+С) / 2; sqrt (Р-А) * (Р-В) * (Р-С) ) ;

WriteLn ( ' Площадь— ,

End

Else WriteLn ( Неверные исходные данные ) End.

Пример 2. Требуется перевести пятибалльную оценку в ее наименование: 5 «отлично», 4 «хорошо», З «удовлетворительно», 2 — «неудовлетворительно».

Программирование ветвлений

5 19

 

133

Блок-схема алгоритма приведена на рис. 3.14.

Рис. 3.14. Алгоритм перевода числовой оценки в словесную

Этот алгоритм имеет структуру вложенных ветвлений и может быть запрограммирован с использованием условного оператора If следующим образом:

Program Marks_1 ;

Var N: Integer;

Begin

WriteLn ( Введите оценку:

ReadLn (N) ;

Then WriteLn ( Отлично )

Else If

Then WriteLn ( Хорошо )

E1se If

Then WriteLn ( Удовлетворительно )

Else If

Программирование обработки информации


Then WriteLn ( ' Неудовлетворительно ) Else WriteLn ( Неверная оценка ) End.

Пример З. Решение рассмотренной в предыдущем примере задачи можно запрограммировать с помощью одного оператора выбора, имеющегося в языке Паскаль. Вот как будет выглядеть такая программа:

Program Marks 2;

Var Ы: Integer;

Begin

WriteLn ( ' Введите оценку: ) ;

ReadLn (N) ;

                   Case        Of

5: WriteLn ( Отлично ) ;

4 : WriteLn ( ' Хорошо ) ;

З: WriteLn ( Удовлетворительно ) ;

2: WriteLn ( Неудовлетворительно ) ;

Else WriteLn ( Неверная оценка )

End;


Оператор выбора имеет следующий формат:

Сазе «(селектор> 0f описок констант 1>: «(оператор

<список констант : <оператор N>;

E1se оператор

End

Здесь <селектор> это выражение любого порядкового типа; <константо — постоянная величина того же типа, что и селектор; <оператор> — любой простой или составной оператор.

Выполнение оператора выбора происходит так: вычисляется выражение-селектор; затем в списках констант ищется такое значение, которое совпадает с полученным значением селектора; далее исполняется оператор, помеченный данной константой. Если такой константы не наидено, то происходит переход к выполнению оператора, следующего после слова E1se.

Программирование ветвлений

5 19


Пример 4. В этом примере демонстрируется использование списка констант в операторе выбора. Программа сообщает, сдал студент экзамен или не сдал. Если оценка одна из следующих: З, 4, 5, то экзамен сдан; если 2, то не сдан.

Case N 0f з, 4, 5: WriteLn ( Экзамен сдан ' ) ;

2: WriteLn ( Экзамен не сдан ' ) ;

Else WriteLn ( Нет такой оценки! ) End

Так же как условный оператор, оператор выбора может использоваться в неполной форме, т. е. без ветви Else.

Если применить условный оператор, то эта программа запишется так:

If (N=3) or (N=4) or (N=5)

Then WriteLn ( Экзамен сдан ' )

Else Xf

Then WriteLn ( Экзамен не сдан ' )

E1se WriteLn ( Нет такой ОЦенКИ') ;

В условии ветвления использовано сложное логическое выражение, содержащее операции логического сложения ох (или).

Система основных понятий

Условный оператор

Оператор выбора

If <логическое выражение»

Then «(оператор 1>

E1se оператор 2>

Если «логическое выражение> истинно, то выполняется <оператор 1>, иначе выполняется «(оператор 2>. Оператор 1> и «оператор 2> — простые или составные операторы. В неполном ветвлении отсутствует ветвь E1se

Саве <селектор> 0f список констант 1 „ъ: «(оператор 1>;

     «(список констант          «(оператор ГО ;

Else <оператор>

End

Здесь селектор — выражение порядкового типа; константы имеют тот же тип. Выполняется только одна из ветвей выбора, которая содержит константу, совпадатощую со значением селектора. Ветвь E1se может отсутствовать

Программирование обработки информации


Вопросы и задания

1. Какие операторы используются для программирования ветвящихся алгоритмов?

2. В каких случаях удобно использование оператора выбора?

З. Составьте на Паскале программу упорядочения по возрастанию значений в трех переменных: Х, У, 7..

4. Используя оператор выбора, составьте программу, которая по введенному номеру месяца будет выводить название соответствующего времени года (зима, весна, лето, осень).

20 Пример поэтапной разработки программы решения задачи

Постановка задачи и формализация

Словом «задача» называют проблему, которая требует решения. Решение задачи начинается с ее постановки. На этапе постановки заДачи в терминах предметной области (физики, экономики, биологии и др.) определяются исходные данные и результаты, которые надо получить.

Следующий этап — формализация заДачи. Чаще всего процесс формализации означает перевод задачи на язык математики: формул, уравнений, неравенств, систем уравнений, систем неравенств и т. п.

Подробнее о формализации будет рассказано в разделе, посвященном информационному моделированию (в 11 классе). Некоторые представления об этом вы уже имеете из курса информатики для 7—9 классов.

Пример поэтапной разработки программы

520


Решение полученной математической задачи требует знания математики, умения выполнять анализ математической заДачи. Такой анализ необходим для того, чтобы построить правильный алгоритм решения, обладающий всеми свойствами алгоритма.

Анализ математической задачи

Пусть в результате формализации некоторой задачи было получено квадратное уравнение: ах2 + бх + с = О, где коэффициенты а, Ь, с являются исходными данными. Требуется решить это уравнение, т. е. найти его корни. Проведем анализ этой математической задачи.

Рассмотрим различные варианты значений исходных данных, которые приводят к разным результатам для решающего ее алгоритма. Ограничимся только поиском вещественных корней уравнения. Проанализируем все возможные варианты множества значений коэффициентов а, Ь, с:

Если а — ,

то любое х — решение уравнения

Если а — ,

то уравнение решений не имеет

Если а — ,

то это линейное уравнение, которое имеет одно решение: х = —c/b

Если а * О и d = b2 — 4ас О,

то уравнение имеет два вещественных корня:

Если а * О и (1 < О,

то уравнение не имеет вещественных корней


Построение алгоритма

Программирование обработки информации


Построим блок-схему алгоритма решения квадратного уравнения (рис. 3.15), учитывающего все ситуации, описанные в анализе задачи. Здесь вместо слов «да» и «нет» использованы знаки

Рис. 3.15. Блок-схема алгоритма решения квадратного уравнения

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

алг корни квадратного уравнения вещ а, Ь, с, d, х, х1, х2 нач ввод а, Ь, с если то

если

если то вывод “Любое х — решение иначе вывод ” Нет решений“

все иначе х:= —с/Ь вывод х

все

иначе d:=b2—4ac если d<O то вывод “Нет вещественных корней“ иначе

 

139

Пример поэтапной разработки программы

все все кон

Обратите внимание на смещения строк в тексте алгоритма соблюдается принцип структуризации внешнего вида (S 13). Повторим его: запись всякой вложенной структуры должна быть смещена на несколько позиций вправо относительно записи внешней структуры, а конструкции одного уровня вложенности записываются на одном вертикальном уровне.

Программирование

Алгоритмический язык (АЯ) — это язык описания алгоритмов с русскими служебными словами. После того как алгоритм записан на АЯ, составление программы на Паскале становится несложной задачей. Основное внимание следует уделять строгому соблюдению синтаксических правил языка. Правило смещения строк в тексте программы то же, что было сформулировано в S 13 для АЯ. Соответствующие друг другу служебные слова Begin и End должны располагаться друг под другом.

Program Roots ;

Var а, Ь, с, d, х,

Begin

WriteLn ( Введите коэффициенты квадратного уравнения:

Write ReadLn (а) ;

Write ( 'b=' ) ; ReadLn (Ь) ;

ReadLn (с) ;

Then

Then

                  Then WriteLn ( Любое х          решение ' )

                Else        WriteLn ( Нет решений ' )

Е1ве

Begin

               WriteLn (          , х)

End

Else

Программирование обработки информации


Begin d: =b*b—4*a*c;

Then WriteLn ( Нет вещественных корней )

E1se

Begin х 1 (—b+sqrt (d) ) / 2 / а; х2 : = (—b—sqrt (d) ) / 2 / а; WriteLn ( х1='

                      WriteLn ( х2='      х2)

End End End.

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

Тестирование программы

Тестирование — это этап, на котором экспериментально доказывается правильность алгоритма, заключенного в программе, и работоспособность программы. Тест — это вариант решения задачи с заданными исходными данными, для которых известен результат.

Предварительно должен быть составлен план тестирования. Для ветвящегося алгоритма должны быть протестированы все его ветви. В нашем примере пять ветвей, пять вариантов ответа. Значит, в плане тестирования должно быть не менее пяти вариантов теста.

В таблице 3.5 представлен план тестирования программы Roots и результаты проведенного тестирования.

Пример поэтапной разработки программы

20


Таблица 3.5. План и результаты тестирования

 

Исходные значения

Верные результаты

Результаты тестирования

1

Любое Х — решение

Любое Х — решение

2

Нет решений

Нет решений

З

х=з

 

4

= -1,5

х1=1

5

Нет вещественных корней

Нет вещественных корней

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

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

х 1: (—b+sqrt (d) ) /2*а;           х2 (—b—sqrt (d) ) /2*а;

Результаты всех тестов, кроме 4-го, совпали с ожидаемыми, а в 4-м тесте получилось: х1=4, х2=—6. После этого программист обратит внимание на выражения для вычисления корней и исправит ошибки: либо заменит знак умножения на знак деления, либо за-

Программирование обработки информации


Система основных понятий

Постановка задачи

Определение исходных данных и искомых результатов (в терминах предметной области)

Формализация

Переход к задаче обработки некоторой знаковой системы, например к математической задаче

Анализ математической задачи

Определение всех вариантов множеств значений исходных данных. Определение для каждого варианта способа решения и вида выходных данных (результатов)

Построение алгоритма

Определение структуры алгоритма, последовательности команд. Представление на каком-либо языке описания алгоритмов (блок-схема, учебный Алгоритмический язык)

Составление программы

Запись и отладка программы на языке программирования. Строгое соблюдение правил синтаксиса языка

Тестирование

Экспериментальное доказательство правильности алгоритма и работоспособности программы. Тест — вариант решения задачи с заданными исходными данными, для которых известен результат. План тестирования строится так, чтобы наиболее полно проверить работу программы

Вопросы и задания

1. Сформулируйте основные цели этапов алгоритмического решения задачи.

2. Проанализируйте задачу решения биквадратного уравнения, составьте алгоритм и напишите программу на Паскале.

5 21

Программирование циклов

Рассмотрим приемы программирования циклов на Паскале. В S 13 рассказывалось о том, что существуют две циклические алгоритмические структуры: цикл с предусловием (цикл-пока) и цикл с постусловием (цикл-до). Были показаны способы описания циклических структур в блок-схемах и на Алгоритмическом языке. Форматы соответствующих операторов цикла в Паскале следующие.

Цикл с предусловием (цикл-пока):

Hhile <логическое выражение> Do <оператор>

Цикл с постусловием (цикл-до):

Repeat

<оператор>

Unti1 <логическое выражение»

Различают циклы с заданным числом повторений и итерационные циклы.

На примерах конкретных задач рассмотрим приемы программирования циклов.

 

143

Программирование циклов

S 21


В математике известно, что сумма следующего бесконечного числового ряда:

в пределе стремится к значению константы е 2,71828182... Функция ех называется экспонентой, а логарифм по основанию е называется натуральным логарифмом: lnx.

Требуется составить программу, вычисляющую эту константу по сумме числового ряда. Напомним, что символ «!» читается как «факториал» — функция, определенная следующим образом:

1, при х =О;

•x, при х Я).

Если слагаемые в вычисляемом выражении обозначить так:

1   1          1          1 ао = 1, 01 —            (12 —  аз — 2! 1,2'  3! -1-2-3

то обобщенная формула для ј-го элемента будет следующей: 1 i!


Нетрудно увидеть, что между элементами данной последовательности имеется зависимость:

                                            ао                             02

02  аз — 12 ' з

Такая зависимость называется рекуррентной зависимостью, а соответствующая числовая последовательность — рекуррентной последовательностью. Данная рекуррентная последовательность может быть описана следующей ветвящейся формулой, которая называется рекуррентной формулой:

1, при i = О;

, при О.

Циклы с заданным числом повторений

Пример 1. Дано целое положительное значение N. Требуется вычислить сумму:

              1 1 1  1

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


Программирование обработки информации


втором — цикл с постусловием.

Program Summa_1 ;

Var Е, а: Rea1; N,i: Inteqer;

Beqin

Write (ReadLn (N) ;

Whi1e

Begin

End; writeLn ('Е=', Е)

End.

Program Summa_2 ;

Var Е, а: Rea1; N,i: Integer;

Begin

Write( 'N=' ) ; ReadLn (Н) ;

Repeat

Until i>N;

WriteLn ( ' End.


Обратите внимание на то, как цикл с предусловием преобразуется в цикл с постусловием — условие цикла помещается после тела цикла и заменяется на противоположное:

Not(i > N.

И тот, и другой цикл повторят свое выполнение (N + 1) раз. Переменная i выполняет роль не только знаменателя в дроби 1/i!, но и является счетчиком числа повторений цикла. Такие переменные называются параметрами цикла. И еще: в цикле с постусловием служебные слова Repeat и Until сами выполняют роль операторных скобок. Поэтому писать Begin и End здесь не требуется.

Выполнение этих программ на компьютере для значения N = 7 приводит к следующему результату: Е=2, 7182539.

Программирование циклов


Для программирования циклов с заданным числом повторений при постоянном шаге изменения параметра цикла в Паскале существует цикл с параметром. Вот как выглядит программа решения той же задачи с использованием цикла с параметром:

Program Summa З;

Var Е, а: Rea1; N, i : Integer;

Begin

Write ( ; ReadLn (N) ;

           For  то       Do

Begin a:=a/i;

End;

WriteLn ( ' Е— ' , Е) End.

В программе используется оператор цикла For, для которого существуют два варианта:

1) For <параметр цикла> : =<выражение 1> То «(выражение 2> Do <оператор> 2) For <параметр цикла> : «выражение 1> Do»mto <выражение 2> Do <оператор>

Здесь <параметр цикло — имя простой переменной порядкового типа. Выполнение оператора For в первом варианте (То) происходит по следующей схеме.

1. Вычисляются значения <выражения 1> и <выражения 2>. Это делается только один раз при входе в цикл.

2. Параметру цикла присваивается значение <выражения 1>.

З. Значение параметра цикла сравнивается со значением <выра— жения 2>. Если параметр цикла меньше или равен этому значению, то выполняется тело цикла «оператор>), в противном случае выполнение цикла заканчивается.

4. Значение параметра цикла изменяется на следующее значение в его типе (для целых чисел — увеличивается на единицу); происходит возврат к пункту З.

Программирование обработки информации


Оператор цикла For объединяет в себе действия, которые при  использовании цикла Whi1e выполняют различные операторы: присваивание параметру начального значения, сравнение его с конечным значением, изменение значения параметра на следующее.

Во втором варианте оператора Eor слово Downto буквально можно перевести как «вниз до». В таком случае параметр цикла изменяется по убыванию, т. е. при каждом повторении цикла параметр изменяет свое значение на предыдущее (равносильно

Работая с оператором For, учитывайте следующие правила:

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

Рассмотрим пример программы, в которой в теле цикла будет присутствовать ветвление.

Пример 2. Составим программу проверки знаний учеником таблицы умножения. Компьютер задает ученику 10 вопросов на умножение чисел от 2 до 9. На каждое задание ученик вводит свой ответ, компьютер сообщает, верный ответ или нет.

Программирование циклов

521


На рисунке 3.16 приведена блок-схема такого алгоритма.

Рис. 3.16. Блок-схема алгоритма из примера 2

Обратите внимание на то, как отображается на блок-схеме цикл с параметром.

В этом алгоритме использована функция random (х) , результатом выполнения которой является случайное целое число из диапазона от О до х — 1. Следовательно, выражение random (8) +2 принимает случайные значения от 2 до 9. Функция random называется датчиком случайных чисел.

На Паскале этот алгоритм программируется так:

Program ТаЬIМи1 ;

Begin

Var x, y, i, z : Integer; randomi ze ;


Begin

y:=random (8) +2;

                              WriteLn ( ' Сколько будет , х,               У,       

Read (z) ;

Then WriteLn ( ' Правильно! )

                          Else WriteLn ( ' Неправильно !                  х,

End.

А вот фрагмент интерфейса исполнения этой программы:

                   Сколько будет           ?

21

Неправильно ! 4 * 8=32 сколько будет 6*9?

54

Правильно !

В программе используется стандартная процедура randomize. Ее исполнение производит установку случайного начального состояния датчика случайных чисел. Благодаря этому при повторном выполнении программы будут получаться разные последовательности случайных чисел.

Программирование обработки информации

Система основных понятий

Программирование циклов

Операторы цикла

Цикл-пока

Цикл с параметром

Цикл-до

While «лори— ческое выражение

00 оператор> <оператор> тело цикла. Цикл повторяег выполнение, пока истинно <логическое выражение

Параметр       переменная порядкового типа

1) For <параметр цикла> : =

«(выражение 1>

То <выражение 2>

Do оператор

— по возрастанию параметра

2) For <параметр цикло :=

<выражение

Downto <выражение 2>

Do <оператор>

— по убыванию параметра

Repeat <оператор> Unti1 <логическое выражение оператор>           тело цикла. Повторяется выполнение тела цикла до того, как <логи— ческое выражение> станет истинным

Цикл с заданным числом повторений имеет управляющий параметр, изменяющийся с постоянным шагом в определенном диапазоне значений; реализуется всеми типами операторов цикла

148

Вопросы и задания

1. Постройте трассировочную таблицу выполнения программы .Битта 1 для значения п = З.

2. Составьте программу, по которой компьютер десять раз запросит ввод любых чисел и в результате выведет среднее арифметическое значение введенных чисел (массив не использовать). Сделайте три варианта программы, используя операторы цикла Whi1e, Repeat и For.

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

4.  Составьте программу, по которой на экран будет выведена вся таблица умножения.

5.  Усовершенствуйте программу ТаЬIМи1 (пример 2 данного параграфа) таким образом, чтобы в результате выводилось сообщение о количестве правильных и неправильных ответов.

6.  Усовершенствуйте программу ТаЬIМи1 таким образом, чтобы в результате выводилась оценка, поставленная ученику. Критерии для выставления оценок придумайте сами.

Программирование циклов

7. 


Получите таблицу значений функции sinx и cosx на отрезке [О, 1] с шагом 0,1 в следующем виде:

cos х

                                   о.оооо        о.оооо        1.оооо

                                   0.1000        0.0998        0.9950

                                   1.оооо        0.8415        0.5403

8.  Получите в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

9.  Значение функции ех (экспонента от х) равно сходящейся сумме бесконечного ряда:

е

Получите рекуррентную формулу для слагаемых. Используя операторы цикла While, Repeat и For, составьте три варианта программы вычисления суммы с заданным числом слагаемых.

22

Вложенные и итерационные циклы

Если в теле одного цикла имеется другой цикл, то такая структура алгоритма называется вложенными циклами. Рассмотрим задачу, программа решения которой имеет структуру вложенных циклов.

Программирование обработки информации


Требуется получить на экране компьютера таблицу умножения в форме матрицы Пифагора. Блок-схема алгоритма будет следующей (рис. 3.17).

Рис. 3.17. Блок-схема алгоритма получения таблицы умножения

Здесь цикл по параметру у вложен в цикл по параметру х. Последовательность изменения значений параметров циклов такая:

                                      х— 1; у- 1, 2, З   9

9

х 9


Таким образом, внещний цикл исполнится 9 раз, а внутренний — 9 • 9 = 81 раз. На один шаг повторения внешнего цикла происходит полная прокрутка внутреннего.

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

Программа на Паскале получения матрицы Пифагора:

Program MatrPif ;

Var х, у: 1 . . 9;

Begin

For хто 9

Begin

WriteLn;

Вложенные и итерационные циклы

22


For у :=1 То

Write (х*у:З)

End

End.

В результате выполнения программы на экране получим:


1 2 з 4 5  7 в 9 2 4 6 8 10 12 14 16 18 з 6 9 12 15 18 21 24 27

4                    8 12 16 20 24 28 32 36

5                    10 15 20 25 30 35 40 45

6                    12 18 24 30 36 42  54

7                    14 21 28 35 42  56 63 в 16 24 3256 64 72

9 18 27 36 45 54 63 72 81 В программе присутствуют некоторые элементы, не отраженные в блок-схеме. В описании переменных Х, У использован ограниченный тип: 1 . . 9, поскольку в данной задаче величины принимают целые значения только в этом диапазоне. Оператор WriteLn перед началом вложенного цикла обеспечивает переход к новой строке в таблице каждый раз при смене первого сомножителя. В операторе Write (Х * У : 3) для вывода значения произведения после двоеточия использован указатель формата — З. Это обеспечивает вывод чисел в три позиции на экране, благодаря чему соответствующие столбцы таблицы располагаются строго друг под другом. Первая строка и первый столбец на экране — это сомножители, что соответствует стандартному формату таблицы Пифагора.

Итерационные циклы

Программирование обработки информации


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

Пример 1. Снова рассмотрим задачу вычисления суммы числового ряда:

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

Поскольку с увеличением значения i величина 1/i! уменьшается, в сумму надо включать все слагаемые, предшествующие первому значению, меньшему Е. Вот две программы решения этой задачи, использующие циклы с предусловием и постусловием:


Program Summa 4;

Var Е, а, eps: Rea1; i:Integer;

Begin

Write ( ' Eps=') ; ReadLn (eps) ; а :=1;

Begin

End;

WriteLn ( Е=

Слагаемых: , i)

End.

Program Surnma 5;

Var Е, а, eps: Rea1; i:Integer;

Begin

Write ( 'Eps='); ReadLn (eps) ;

Repeat

Вложенные и итерационные циклы

S 22


Слагаемых: , 1)

End.


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

В качестве результата выводится значение суммы и число вошедших в нее слагаемых. Выполнение этих программ для значения г —10 -8 дает в результате: Е=2, 71828182, Слагаемых: 12. Таким образом, за 12 повторений цикла значение константы е получено с точностью до 8 знаков после запятой. Слово «итерации» означает «приближения». С каждым повторением цикла вычисляемая величина приближалась к предельному значению константы.

Пример 2. В S 17 была рассмотрена задача вычисления суммы цифр трехзначного натурального числа. Программа имела линейную структуру. Поставим задачу в более общем виде: для любого многозначного натурального числа вычислить сумму всех его цифр.

Выделение цифр происходит с помощью однотипных действий: использования операций mod и div. Очевидно, что их можно «зациклить». Однако число повторений цикла будет разным для чисел разной длины. Поэтому эта задача не решается с помощью цикла с заданным числом повторений. В таком случае в программе можно использовать либо оператор цикла While, либо Repeat и нельзя — цикл с параметром For.


Программа с использованием цикла с предусловием:

Program SumCifr; var Х: Longint; Sum: Word; Begin

Write ( Введите целое число :ReadLn (Х) ;

Sum : ;

Программирование обработки информации


Whi1e (Х>0) Do Begin

Sum:=Sum + Х mod

/ / прибавление к сумме

/ / младшей цифры

    div 10

End,•

/ [отбрасывание в Х

/ / младшей цифры

WriteLn ( Сумма цифр

Бит)

End.

Поскольку при каждом повторении цикла от числа Х отбрасывается одна младшая цифра, закончить цикл нужно тогда, когда Х станет равным нулю. Обратите внимание на типы переменных. Надо помнить о разнообразии групп типов в Паскале. Назначение переменной Х типа Longint дает возможность вводить в нее значения, включающие до десяти знаков. Для переменной Sum назначен тип Word, поскольку сумма цифр может быть только положительным числом.

Система основных понятий

Вложенные и итерационные циклы

Вложенный цикл — цикл, входящий в тело другого (внешнего) цикла.

На каждом шаге внешнего цикла происходит полная прокрутка внутреннего цикла.

Чем больше глубина вложенности цикла, тем большее число раз он выполняется.

Итерационный цикл — это цикл, для которого число повторений тела цикла заранее неизвестно. Итерационные циклы программируются с помощью операторов Whi1e и Repeat

Вопросы и задания

1. Найдите все значения натуральных чисел Х, У, Z из интервала от 1 до 10, удовлетворяющих равенству: Х2 + У2 =

2. Вычислите количество точек с целочисленными координатами, попадающих в круг радиуса R (R О) с центром в начале координат.

З. Старинная заДача. Сколько можно купить быков, коров и телят на 100 руб., если в сумме должно быть куплено 100 голов скота, а цена быка — 10 руб., цена коровы — 5 руб., цена теленка — 0,5 руб.?

4.  Чем отличается итерационный цикл от цикла с заданным числом повторений?

5.  Почему для программирования итерационных циклов не используется оператор цикла с параметром?

6.  Запрограммируйте итерационный цикл вычисления функции ех (см. задание 9 из S 21) с точностью е. Сделайте два варианта программы: с циклами Whi1e и Repeat. Выполните вычисления для Е = 10-6 х = 2 и сопоставьте полученный результат со значением стандартной функции ехр (х) .

7.  Составьте программу определения количества четных и нечетных цифр в записи данного натурального числа.

Вспомогательные алгоритмы и подпрограммы

23

8. 


Составьте программу определения наибольшей цифры в записи данного натурального числа.

23

Вспомогательные алгоритмы и подпрограммы

Еще одним важнейшим методологическим приемом структурного программирования является Декомпозиция решаемой заДачи на поДзаДачи — более простые, с точки зрения программирования, части исходной задачи. Алгоритмы решения таких подзадач называются вспомогательными алгоритмами.

В языках программирования вспомогательные алгоритмы называются подпрограммами. В Паскале различаются две разновидности подпрограмм: процедуры и функции. Рассмотрим этот вопрос на примере следующей задачи: даны два натуральных числа а и Ь. Требуется определить наибольший общий делитель трех величин: а + Ь, а2 + b 2 , а • Ь. Запишем это так: НОД(а + Ь, а2 + b2

Идея решения состоит в следующем математическом факте: если х, у, z три натуральных числа, то НОД(х, у, 2) = НОД(НОД(х, у), г). Иначе говоря, нужно найти НОД двух величин, а затем НОД полученного значения и третьего числа (попробуйте это доказать).

Очевидно, что вспомогательным алгоритмом для решения поставленной задачи является алгоритм получения наибольшего общего делителя двух чисел. Эта задача решается с помощью алгоритма Евклида, который подробно обсуждался в 9 классе. Напомним, что идея алгоритма Евклида основана на следующей формуле:

М, при М = N;

НОД(М-ЛТ, N),

НОД(ПГ, - М), при > М.

Программирование обработки информации


Приведем алгоритм решения поставленной задачи на учебном Алгоритмическом языке. Алгоритм состоит из процедуры «Евклид» и основного алгоритма «Задача», в котором присутствуют два обращения к процедуре:

процедура Евклид(цел М, N, К) нач пока

если M>N то иначе N:=N—M все кц

К:=М кон

алг задача цел а, Ь, с нач ввод(а, Ь)

Евклид(а+Ь,  с)

Евклид(с, a*b, с) вывод(с) кон

Здесь М, лт и К являются формальными параметрами процедуры. М и лт — параметры-аргументы, К — параметр-результат.

Процедуры в Паскале. Основное отличие процедур в Паскале от процедур в Алгоритмическом языке (АЯ) состоит в том, что процедуры в Паскале описываются в разделе описания подпрограмм, а в АЯ процедура является внешней по отношению к вызывающей программе. Теперь посмотрим, как решение поставленной задачи программируется на Паскале.

Program NOD1 ;

Var А, В, С: Integer;

Procedure Evk1id (М, N: Integer; Var к: 1nteger) ;

Begin

Whi1e Do

If МЛ

Then E1se

End;

Begin

Вспомогательные алгоритмы и подпрограммы


Write а             ' ) ; ReadLn (А) ;

Write ( ' Ь' ) ; ReadLn (В) ;

Evk1id (А+В, А*А+В*В) , С) ;

Evk1id (С, А*В, С);

WriteLn ( НОД         С) End.

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

 Опая процедуро [ (список формальных параметров) ] ; <блок>

Квадратные скобки указывают на то, что список формальных параметров может отсутствовать, т. е. возможна процедура без параметров. Параметры могут быть параметрами-переменными и параметрами-значениями. Параметры-переменные записываются следующим образом:

Var <список переменных> : <тип> Параметры-значения указываются так:

<список переменных> : <тип>

Чаще всего аргументы представляются как параметры-значения (хотя могут быть и параметрами-переменными). А для передачи результатов используются параметры-переменные. Процедура в качестве результата может передавать в вызывающую программу множество значений (в частном случае — одно), а может и ни одного. Теперь рассмотрим правила обращения к процедуре. Обращение к процедуре производится в форме оператора процедуры:

<имя процедуры> [ (список фактических параметров) ]

Если описана процедура с формальными параметрами, то обращение к ней производится оператором процедуры с фактическими параметрами. Правила соответствия между формальными и фактическими параметрами: соответствие по количеству, соответствие по последовательности и соответствие по типам.

Программирование обработки информации


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

Другой вариант взаимодействия формальных и фактических параметров называется передачей по значению: вычисляется значение фактического параметра (выражения), и это значение присваивается соответствующему формальному параметру.

В рассмотренном нами примере формальные параметры М и лт являются параметрами-значениями. Это аргументы процедуры. При обращении к ней первый раз им соответствуют значения выражений А + В и abs(A — В); второй раз — С и А*В. Параметр К является параметром-переменной. В ней получается результат работы процедуры. В обоих обращениях к процедуре соответствующим фактическим параметром является переменная С. Через эту переменную основная программа получает результат.

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

Program NOD2;

Var А, В, К, М, N: 1nteger;

E1se

End;

Begin

Write ( а= ' ) ; ReadLn (А) ; ; ReadLn (В) ;

Evk1id; М:=К;

Evk1id;

WriteLn ( НОД равен End.

Чтобы разобраться в этом примере, требуется объяснить новое для нас понятие: область действия описания.

Вспомогательные алгоритмы и подпрограммы

S 23


Областью действия описания любого программного объекта (переменной, типа, константы и т. д.) является тот блок, на который это описание распространяется. Если данный блок вложен в другой (подпрограмма), то присутствующие во вложенном блоке описания являются локальными. Они действуют только в пределах внутреннего блока. Описания же, расположенные во внешнем блоке, называются глобальными по отношению к внутреннему блоку. Если глобально описанный объект используется во внутреннем блоке, то на него распространяется внешнее (глобальное) описание.

В программе NOD1 переменные М, N, К являются локальными внутри процедуры; переменные А, В, С — глобальные. Однако внутри процедуры переменные А, В, С не используются. Связь между внешним блоком и процедурой осуществляется через параметры.

В программе NOD2 все переменные являются глобальными. В процедуре Evk1id нет ни одной локальной переменной (нет и параметров). Переменные М и N, используемые в процедуре, получают свои значения через оператор присваивания в основном блоке программы и изменяют значения в подпрограмме. Результат получается в глобальной переменной к, значение которой выводится на экран. Здесь обмен значениями между основной программой и процедурой производится через глобальные переменные.

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

Функции. Теперь выясним, что такое подпрограмма-функция. Обычно функция используется в том случае, когда результатом работы подпрограммы должна быть скалярная (простая) величина. Тип результата называется типом функции. Формат описания функции следующий:

Function <имя функции> [ (<.список формальных параметров>) ] : <тип функции> ;

<блок>

Как и у процедуры, у функции в списке формальных параметров могут присутствовать параметры-переменные и параметры-значения. Всё это — аргументы функции. Параметры вообще могут отсутствовать, если аргументы передаются глобально.

Программирование обработки информации


Программа решения рассмотренной выше задачи с использованием функции будет выглядеть следующим образом:

Program NOD3 ;

Var А, В, Rez: Inteqer ;

Function Evk1id (М, N: Inteqer) : Integer;

Begin

While Do

Then М: E1se

Evk1 id ; =М

End;

Begin

Write ( ' а) ; ReadLn (А) ;

Write ( ' Ь' ) ; ReadLn (В) ;

Rez (Evk1id (А+В, А*А+В*В) , WriteLn ( ' NOD равен Rez)

End.

Из примера видно, что тело функции отличается от тела процедуры только тем, что в функции результат присваивается


Обращение к функции является операндом в выражении. Оно записывается в следующей форме:

Опля функции> «список фактических параметров>)

Правила соответствия между формальными и фактическими параметрами все те же. Сравнивая приведенные выше программы, можно сделать вывод, что программа NOD3 имеет определенные преимущества перед другими. Функция позволяет получить результат путем выполнения одного оператора присваивания. Здесь также иллюстрируется возможность того, что фактическим аргументом при обращении к функции может быть эта же функция.

По правилам стандарта Паскаля, возврат в вызывающую программу из подпрограммы происходит, когда выполнение подпрограммы доходит до ее конца (последний End). Однако в современных версиях Паскаля есть средство, позволяющее выйти из подпрограммы в любом ее месте. Это оператор-процедура Exit . Например, функцию определения большего из двух данных вещественных чисел можно описать так; Eunction Мах (Х, У: Rea1) : Rea1;

Вспомогательные алгоритмы и подпрограммы


Begin

Мах :

            If            Пеп Exit E1se

End;

Модифицированный алгоритм Евклида. Подпрограмму алгоритма Евклида можно составить иначе, если воспользоваться операцией mod (получение остатка от деления), имеющейся в Паскале. Идея алгоритма исходит из справедливости следующих равенств:

М, при лт = О;

нод(м,

НОД(ЛТ, Mmod N), при лт О.

В таком случае функцию Evk1id можно переписать так:

Function Evk1id (М, Ы: Integer) : Integer ;

Var R : Integer; Begin

              Whi1e              Do

Begin R:=M тод Н;

End ;

Программирование обработки информации

Система основных понятий

Подпрограммы

Процедуры

Функции

Результат — любое число величин Описание:

Procedure <имя процедуры> [ (список формальных параметров) ] ;

<блок>

Результат — оДна величина Описание:

Function Отмя функцио

[ «список формальных параметров>) ] : егип функции> ;

<блоо

Обращение — оператор процедуры:

<имя процедуры> [ (список фактических параметров) ]

Обращение — операнд выражения:

Опая функции> «список фактических параметров»

Параметры подпрограмм

Параметры-переменные

Параметры- значения

Описание:

Var описок переменных> : <тип>

Описание:

Список переменных». «гип>

Фактические параметры: переменные

Фактические параметры: выражения

Вопросы и задания

1. Для чего используются подпрограммы?

2. В чем различие между процедурами и функциями?

З. Какие существуют способы передачи данных между подпрограммой и вызывающей ее программой?

4.  Составьте программу вычисления площади кольца по значениям внутреннего и внешнего радиусов, используя подпрограмму вычисления площади круга (два варианта: с процедурой и с функцией).

5.  Составьте программу сложения двух простых дробей. Результат долО жен быть несократимой дробью. Используйте подпрограмму вычисления НОД по алгоритму Евклида. Простая дробь задается двумя целыми числами: числителем и знаменателем.

162

б. По координатам вершин треугольника вычислите его периметр, используя подпрограмму вычисления длины отрезка между двумя точками.

7. Даны три целых числа. Определите, у которого из них больше сумма цифр. Подсчет суммы цифр организуйте через подпрограмму.

24

Массивы

Массивом в Паскале называют переменную величину регулярного типа.

Регулярный тип — это структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин.

Описание массивов. Переменная регулярного типа описывается в разделе описания переменных в следующей форме:

Массивы

S 24


Var <идентификатор>: array [<тип индексе] of «гип компонентов>

В данном случае квадратные скобки — это обязательные символы, которые называются индексными скобками. Чаще всего в качестве типа индекса употребляется ограниченный тип. Например массив вещественных чисел, хранящий 12 значений среднемесячных температур в течение года, опишется так:

Var Т: array[1. .12] of Rea1;

Описание массива определяет, во-первых, размещение массива в памяти, во-вторых, правила его дальнейшего употребления в программе.

Элемент массива идентифицируется в виде переменной с индексами:

<идентификатор массиво «индексы элементе]

Для одномерного массива индекс — это одно значение. Для многомерных массивов индекс — множество значений. В качестве индекса может употребляться любое выражение соответствующего типа. Например, для элементов массива температур возможны обозначения: Т [5] , Т [К] , T [i+j] , т [т div 2].


Последовательные элементы массива располагаются в последовательных ячейках памяти (т [1 , т [2] и т. д.), причем значения индекса не должны выходить за диапазон 1 . . 12.

Тип индекса может быть любым скалярным порядковым типом, кроме Tnteqer. Например, в программе могут присутствовать следующие описания:

Var cod: array [Char] of 1. .100;

Ь: array [Воо1еап] 0f Char;

В такой программе допустимы следующие обозначения элементов массивов:

cod[ ' х ; L[true] ;

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

Туре Index

Программирование обработки информации


Var c1ass_10: array [Index] of Byte;

И если, например, элемент c1ass 10 [А] равен 35, то это означает, что в 10А классе 35 человек. Такое индексирование улучшает наглядность программы.

Часто структурному типу присваивается имя в разделе типов, которое затем используется в разделе описания переменных.

Туре Маз 1   array [1..100] of Integer; array [—10. .10] of Char;

Var Num: Маз 1; Sim: Mas2 ;

До сих пор речь шла об одномерных массивах, в которых типы элементов скалярные.

Многомерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов).

В качестве примера рассмотрим таблицу с информацией о среднемесячных температурах за 10 лет, например с 2001 по 2010 год. Очевидно, для этого удобна прямоугольная (двумерная) таблица, в которой столбцы соответствуют месяцам, а строки — годам.

Год

 

 

 

Месяц

 

1

2

з

4

5

6

7

8

9

10

11

12

2001

-23

-17

 

6,5

14

18,6

25

19

12.3

,

-4,5

-19

2002

-16

 

-3,2

7,1

8,4

13,8

28,5

21

6,5

2

- 13

- 20

2003

-9,8

-14

 

4,6

15,6

21

17,8

20

11,2

8,1

-16

-21

 

 

 

 

 

 

 

 

 

 

 

 

 

2010

-25

-9,7

-3,8

8,5

13,9

17,8

23,5

17,5

10

 

-14

-20

Для обработки такой таблицы в программе следует описать массив:

Var ТаЬ1: array[2001. .2010] of array[1. .12] 0f Real;

Вот примеры обозначения некоторых элементов этого массива:

ТаЬ1[2ОО1] [1] ; ТаЬ1 [2005] [10] ; ТаЬ1[2ОIО] [12] .

Однако чаще употребляется другая, эквивалентная форма обозначения элементов двумерного массива:

ТаЬ1 [2001, 1] ; Тат [2005,10] ; тат [2010, 12] .

Массивы

S 24

 

165

Переменная ТаЬ1 [2001] обозначает всю первую строку таблицы, т. е. весь массив температур за 2001 год. Другим эквивалентным вариантом приведенному выше описанию является следующее:

   Туре Моп th    array [1. .12] of Rea1;

     Year        array [2001. .2010] of Month;

Var ТаЬ1: Year;

Наиболее краткий вариант описания данного массива такой:

Var ТаЬ1: array[2001. .2010, 1. .12] of Rea1;

Продолжая по аналогии, можно определить трехмерный массив как одномерный массив, у которого элементами являются двумерные массивы. Вот пример описания трехмерного массива: Var А: array[1. .10, 1. .20, 1. .30] of Integer;

Это массив, состоящий из 10 • 20 • 30 6000 целых чисел и занимающий в памяти 6000 • 2 — 12 ООО байтов. В Паскале нет ограничения сверху на размерность массива. Однако в каждой конкретной реализации Паскаля ограничивается объем памяти, выделяемый под массивы. В Турбо Паскале это ограничение равно 64 килобайтам.

По аналогии с математикой одномерные числовые массивы часто называют векторами, а двумерные — матрицами.

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

            Const Штах      10 ; Јтах       20;

Var Mas: array [1 . . Ттах, 1 . . Јтах] of Integer;

Программирование обработки информации


Теперь для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант.

Действия над массивом как единым целым. Такие действия допустимы лишь в двух случаях:

 присваивание значений одного массива другому;  применение к массивам операций отношения «равно» , «не равно».

В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов).

Пример 1

Var Р, О: array[1 . .5, 1. .10] of Rea1;

При выполнении операции присваивания

все элементы массива Р станут равными соответствующим элементам массива Q.


Пример 2

Как уже отмечалось, в многомерных массивах переменная с индексом может обозначать целый массив. Тогда если массив ТаЬ1 описан так:

      Туре таз      array [1. .12] of Rea1;

Var ТаЬ1: array[2001. .2010] of таз;

и в нем требуется данные за 2009 год сделать такими же, как за 2001 год (девятой строке присвоить значение первой строки), то это можно сделать одним присваиванием:

       ТаЬ1 [2009]             [2001]

А если нужно поменять местами значения этих строк, то это делается через третью переменную того же типа:

[2009] ; ТаЬ1 [2009]  таЬ1[2ОО1Ј

где Р описана так:

Массивы


Var Р: таз;

Ввод и вывод массивов производятся покомпонентно. Вот примеры ввода с клавиатуры значений одномерного и двумерного массивов:

        For                то 12 Do

ReadLn (Т [1] ) ;

          For т               то пах Do

          For            то Јтах Do

                ReadLn (Mas [1,        ) ;

Здесь каждое следующее значение будет вводиться с новой строки. Для построчного ввода используется оператор Read.

Аналогично в цикле по индексной переменной организуется вывод значений массива на экран. Например:

      For           То 12 Do Write (Т [1]         ;

Напомним, что модификатор формата 8:4 означает вывод числа в формате с фиксированной точкой в 8 позициях, из которых в 4 последних позициях размещается дробная часть.

Следующий фрагмент программы организует построчный вывод матрицы на экран:

            For            то 1тах Do

Begin

               E'or           то Јтах Do

Write (Маз [Т,Ј] : 6) ;

WriteLn

Программирование обработки информации


End,•

После вывода очередной строки матрицы оператор WriteLn без параметров переведет курсор в начало новой строки. Следует заметить, что в последнем примере матрица на экране будет получена в естественной форме прямоугольной таблицы, если Јтах не превышает 12 (подумайте почему).

Система основных понятий

Массив — переменная величина регулярного типа

Регулярный тип — структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин

Описание массива

Идентификация элементов массива

Var <идентификатор>: array [ сип индекса>] 0f егип компонентов>

<тип индексо — любой порядковый тип, кроме integer; тип компонентов любой простой или структурный тип

<идентификатор массиво

«индексы элемента>]

Для одномерного массива индекс — одно значение, для многомерного массива — множество значений

Действия над массивом как единым целым

Присваивание однотипных массивов

Отношения «равно» , «не равно» для однотипных массивов

Ввод/вывод массивов производится покомпонентно

Вопросы и задания

1. Что такое регулярный тип данных? Что такое массив?

2. Какие типы допустимы для индексов массива? З. Как в Паскале трактуется многомерный массив?

4.  Какие действия можно выполнять над массивом как единым целым?

5.  Дан вектор {2i}, i  50. Составьте программу ввода значений и вычисления длины этого вектора по следующей формуле:

6.  Даны значения массива {ај}, i О 10 и переменной х. Составьте программу вычисления алгебраического многочлена 10-й степени по формуле Горнера:

атох+а„х9 + ((...(ашх + ао)х + а8)х + + арх + Ч.

525


Организация ввода и вывода данных

с использованием файлов

До сих пор мы программировали ввод исходных данных с клавиатуры и вывод на экран монитора. Как было сказано в S 17, вводом/выводом называется обмен данными между оперативной памятью и любыми внешними устройствами, в том числе устройствами внешней памяти: магнитными и оптическими дисками, флеш-накопителями.

Информация на внешних носителях хранится в файлах. По форме хранения данных файлы бывают типизированными, нетипизированными и текстовыми. В типизированных и нетипизированных файлах данные различных типов хранятся в том же формате, что и в оперативной памяти. Следовательно, при чтении и записи в такие файлы данные копируются, не изменяя объема и формы своего представления. В текстовых файлах данные хранятся в символьном формате. Поэтому при вводе (чтении) чисел из текстового файла происходит преобразование их представления из символьной формы в форму их внутреннего представления (с фиксированной или плавающей запятой). А при выводе (записи) чисел в текстовый файл они преобразуются из внутренней формы в символьную.

Далее мы будем использовать только текстовые файлы.

Текстовые файлы

Текстовый файл наиболее часто употребляемая разновидность файлов. Устройства ввода с клавиатуры и вывода на экран работают только с текстовыми файлами. Файлы, содержащие  тексты программ на Паскале и других языках программирования, являются текстовыми. Различная документация, информация, передаваемая по каналам электронной связи, всё это текстовые файлы.

Содержимое текстового файла представляет собой символьную последовательность, разделенную на строки. Каждая строка заканчивается специальным признаком EOLN (end of line — конец строки). Весь файл заканчивается признаком EOF (end of file — конец файла). Схематически это выглядит так:

 

 

 

 

EOLN

 

 

 

EOLN

EOF

Программирование обработки информации

Здесь Si обозначает Ьй символ в строке. Каждый символ представлен во внутреннем коде (ASCII) и занимает 1 байт. Признак EOLN состоит из двух однобайтовых управляющих кодов: CR (код ASCII — 13) — возврат к началу строки и LF (код ASCII— 10) — перевод строки. При выводе содержимого текстового файла на экран или на печать признак EOLN обеспечивает визуальное разделение строк: переход к продолжению вывода с новой строки,

Текстовый файл можно создать или преобразовать с помощью текстового редактора. Его можно просмотреть на экране монитора или распечатать на принтере.

Ввод из текстового файла

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

Для организации ввода данных из текстового файла следует: объявить в программе переменную с типом Text (она называется файловой переменной); связать файловую переменную с файлом внешней памяти, содержащим исходные данные, с помощью оператора Assign; открыть файл для чтения с помощью процедуры Reset;

• осуществить чтение из файла с помощью операторов Read или ReadLn ;  закрыть файл с помощью оператора C10se.

Пример 1. В текстовом файле с именем abc.txt хранятся пять чисел, разделенных на две строки:

      2.5     3.1     4.0

      0.7     1.5

В следующей программе организован ввод этих данных в вещественные переменные а, Ь, с, d, е.

Var а, Ь, с, d, е: Rea1;

FD: Text; (Описание файловой переменной) Begin

Assign (FD, abc. txt' ) ; { переменная FD связывается с файлом abc . txt}

Reset (О) ; (файл открывается для чтения с его начала ReadLn (FD, а, Ь, с) ; {чтение первой строки файла)

Организация ввода и вывода данных


ReadLn (FD, d, е) ; {чтение второй строки файла)

C10se (FD) ; (разрывается связь переменной FD с файпом}

Здесь FD — файловая переменная. Assign, Reset, ReadLn,

— операторы обращения к стандартным процедурам, имеющим следующие форматы:

Assign (файловая переменная>, <имя файла>)

Reset (файловая переменная>)

ReadLn (файловая переменная>, список ввода>)

C10se (файловая переменная»

Если файл хранится не в текущем каталоге, то в операторе Assign кроме имени файла надо указывать полный путь к нему. Имя файла можно задавать в строковой константе или переменной.

Для массивов большого размера удобно производить ввод значений из заранее подготовленного текстового файла с исходными данными.


Пример 2. Пусть в текстовом файле с именем matr.txt с помощью текстового редактора записана следующая числовая матрица размером 4 х 4:

5 7 10 з з 2 1 23 7 12 б 10

                                                                     9               2             б            14

В следующей программе производится ввод этой матрицы в двумерный массив М:

Var М: array [1 . . 4, 1 . . 4 ] of Inteqer; j : Byte;

F1 : Text; {файловая переменная begin

Assiqn (F1, 'matr . txt' ) ; Связывание Е 1 с файлом matr . txt}

                    Reset (F1) ;         { открытие файла для чтения}

                    Eor                то 4 Do

Программирование обработки информации


Begin

                        Eor                то 4 Do

Read(F1,  { Последовательное чтение из одной строки)

ReadLn (F1 )           { Переход к следующей строке End;

                    C10se (F1) ;        Закрытие файла

Вывод в текстовый файл

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

Для организации вывода данных в текстовый файл следует;  объявить в программе файловую переменную с типом Text;  связать файловую переменную с файлом внешней памяти с помощью оператора Ass ign;  открыть файл для записи с помощью процедуры Rewri te;  осуществить запись в файл с помощью операторов Write или WriteLn;  закрыть файл с помощью оператора C10se.

Пример З. Требуется записать в текстовый файл таблицу умножения на 2.

Var А: Integer;

ТМ: Text; (Описание файловой переменной Begin

Assign (ТМ, ' Е: \TabMu1. txt ) ; Связывание переменной ТМ с файлом)

Rewrite (ТМ) ; (Открытие файла для записи)

Циклический вывод в файл таблицы умножения }


For то 9 Do WriteLn (ТМ, 2, А, C10se (ТМ) (Закрытие файла) End.

Процедуры открытия файла для записи и запись в файл имеют следующий формат:

Rewrite (файловая переменная>)

Write (файловая переменная>, <список вывода>)

WriteLn (файловая переменная>, <список вывода»

Если файла с именем, указанным в операторе Assign, на диске не было, то программа его создаст. Если такой файл уже был, то его прежнее содержание будет утеряно и в него запишутся новые данные. В конце выполнения оператора WriteLn выставляется признак EOLN. Оператор Write этого не делает. Закрытие файла приводит к выставлению признака EOF.

В результате выполнения программы в корневом каталоге диска Е появится файл с именем TabMul.txt. Открыв его в тексто-

Программирование обработки информации


Система основных понятий

Текстовый файл хранит любую информацию в символьном формате, разделен на строки кодами EOLN , заканчивается кодом EOF

Ввод — передача данных с внешнего устройства в оперативную память

Ввод из файла:

Read   «(список ввода>) или

ReadLn (<ФП>, «(список ввода>)

<ФП> — файловая переменная, для текстового файла объявляемая с типом Text

Вывод — передача данных из оперативной памяти на внешнее устройство

Вывод в файл:

Write (<ФП>, Описок ввода>) или

WriteLn (<ФП>, Описок ввода»

<ФП> — файловая переменная, для текстового файла объявляемая с типом Text

Операторы (стандартные процедуры) работы с файлами

Assign — назначение связи между файловой переменной и файлом на внешнем устройстве;

Reset         — открытие файла для чтения;

Rewri ее — открытие файла для записи;

C10se       — закрытие файла (разрыв связи с файловой переменной)

Вопросы и задания

1.  Сформулируйте правила организации ввода данных из текстового файла.

2.  Сформулируйте правила организации вывода данных в текстовый файл.

З. Напишите программу, по которой из текстового файла с именем kvur.txt будут прочитаны три числа а, Ь, с — коэффициенты квадратного уравнения, затем будут вычислены корни этого уравнения и выведены на экран и в текстовый файл korni.txt.


4.  Введите из текстового файла целочисленную матрицу размером 6х 8. Переверните матрицу, поменяв 1-ю строку с 6-й строкой, 2-ю строку с 5-й, 3-ю строку с 4-й и запишите полученную матрицу в другой файл.

5.  Введите с клавиатуры одномерный числовой массив из 9 элементов. Сверните его в матрицу размером З х З, разместив первую тройку элементов в 1-й строке матрицы, 2-ю тройку — во второй строке, 3-ю тройку — в третьей строке. Полученную матрицу выведите на экран и в текстовый файл.

6.  Введите с клавиатуры построчно в двумерный массив числовую матрицу размером 4 х 4. Разверните ее по столбцам в одномерный массив. Запишите массив в текстовый файл.

S 26 Типовые задачи обработки массивов

Заполнение массива

Типовые задачи обработки массивов

S 26

 

175

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

Пример 1. Заполнить массив равномерно распределенными целыми случайными числами в диапазоне от О до 100.

Var Х: array [1. .20] 0f integer; i: integer;

Begin

Randomi ze ;

For то 20 Do Х [1] (100) ; For i:=1 То 20 Do write (Х Д] : 4) End.

Со стандартной функцией Random (х) вы уже знакомы. Напомним, что она возвращает псевдослучайное целое число в диапазоне от О до х — 1.

Если требуется изменить диапазон случайных чисел, то это всегда можно сделать путем сдвига. Например, если нужно получить числа в диапазоне от —50 до 50, то в программе пишется оператор присваивания:

х д ] (100) -50;

Для получения вещественных случайных чисел используется функция Random без аргумента. Она возвращает случайные дробные значения в диапазоне [0,1). С помощью сдвига и множителя эти значения можно привести к любому диапазону. Например, следующее выражение будет вычислять случайное вещественное число в диапазоне значений от —5 до 5:

Пример 2. Заполнить верхнетреугольную матрицу указанного вида и вывести ее на экран.

             Матрица:         Программа решения задачи:

1 2  Var М:  of Inteqer; о 2i, ј : Integer; О оBegin

                         О оFor                        то 4 во

For ј : —1 То 4 Do

                                         Then M[i,)]      Else МД, ) ] .

Рот i:=1 то 4 по

Begin

                                                   For ј         то 4 Do

Программирование обработки информации


                                                      Write               : З) ;

WriteLn End End.

Пояснение: для элементов M[i, Л матрицы М, расположенных в верхнем треугольнике (включая диагональ), выполняется следующее соотношение между индексами: ј i.

Пример З. Выбор максимального элемента. В одномерном массиве Х из примера 1 требуется определить наибольшее значение среди значений элементов и его порядковый номер (индекс).

Идея алгоритма решения этой задачи следующая: чтобы в переменной Хтах получить максимальное значение массива Х, сначала в нее заносится первое значение массива Щ 1]. Затем значение Хтах поочередно сравнивается с остальными элементами массива, и каждое значение, большее Хтах, присваивается этой переменной. Для получения номера максимального элемента массива в целочисленной переменной imax следует записывать в нее номер элемента массива Х одновременно с занесением значения в Хтах. На Алгоритмическом языке это запишется так:

Хтах:=Х[1]; imax:=1 для I:=2 до 20 нц если X[I]>Xmax то

все кц

Заметим, что если в массиве Х несколько значений, равных максимальному, то в imax будет получен первый номер из этих элементов. Чтобы получить номер последнего элемента, равного максимальному, нужно в ветвлении если заменить знак отношения > на >=. Для нахождение минимального элемента массива достаточно заменить знак отношения «больше» на «меньше».

Оформим в виде процедуры на Паскале подпрограмму поиска максимального элемента в одномерном массиве. Заполним одномерный массив случайными числами (как в примере 1). С помощью процедуры найдем в нем максимальное значение и индекс его первого вхождения в массив.

Типовые задачи обработки массивов

S 26

 

177

      Const п       20;

    Туре mas    array [ 1 . . п] of Integer;

Var Х: mas; i, Хтах, imax: 1nteger ; { Начало описания процедуры

Procedure MaxArray (Var A:mas; Var МахА, К: 1nteqer) ;

Var Ј : Integer;

Begin МахА: [1] ; К: =1;

         For            то п Do

                      If                   >МахА Then

Begin МахА : [ ј ] ; К:=ј End

End; (Конец описания процедуры}

Begin

Randomi ze ;

For    то п Do Х [ i] :=Random (100) ;   { заполнение массива}

MaxArray (Х, Хтах, imax) ;  { Обращение к процедуре } Write ( ' Хтах='        Хтах ,  imax=' , imax) { Вывод результатов }

End .

Процедура MaxArray имеет три параметра: исходный массив А, МахА — переменную для найденного максимального значения, К — переменную для индекса максимального значения. При


обращении к процедуре им соответствуют фактические параметры: Х, Хтах, imax. Размер массива определяется глобальной константой п, значение которой используется как в основной программе, так и в процедуре.

Пример 4. Сортировка массива. В одномерном массиве Х из  элементов требуется произвести перестановку значений так, чтобы они расположились по возрастанию, т. е. Х 1 S Х2 S ... SXN

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

Идея алгоритма: производится последовательное упорядочивание смежных пар элементов массива: Х 1 и Х2 , Х2 и Хз, ... , XN_1 и Ху. В итоге максимальное значение переместится в Ху. Затем ту же процедуру повторяют до XN_1 и т. д., вплоть до цепочки из двух элементов Х 1 и Х2. Такой алгоритм будет иметь структуру двух вложенных циклов, причем внутренний цикл переменной (сокращающейся) длины.

для I:=1 до N—1

 

Программирование обработки информации


нц для Ј:=1 до N—I нц если то

все кц кц

Для сортировки массива по убыванию значений достаточно заменить знак отношения «больше» на «меньше».

Запрограммируем на Паскале процедуру сортировки массива по возрастанию методом пузырька.

Cons п=20;

Туре : vector array [1 . . п] of Rea1; { описание процедуры сортировки Procedure SortArray (Var Х: vektor) ;

               Var              : 1nteger; А: Rea1;

Begin

For 1:-1 То п-1

                         For Ј              то n-i Do

If Then

Begin А:=Х Х[ј) :=Х [ј+1] ; Х[ј+1) :=А End End; [Конец описания процедуры}

Пример 5. В S 24 было рассмотрено описание двумерного массива, содержащего среднемесячные температуры за 10 лет, с 2001 по 2010 год. Определить, в каком году за этот период было самое теплое лето, т. е. в каком году была наибольшая средняя температура летних месяцев.

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

Program Ехатр1е 2 ;

    Туре Month     array [1. .12) of Rea1;

             Year       array [2001. .2010] of Month;

Var ТаЬ1: Year; array [2001 . . 2010] of Rea1;

1, б, К: Integer;

Begin {Ввод данных с клавиатуры)


Типовые задачи обработки массивов

S 26


           For т              то 2010 Do

                 For                 то 12

Begin

Write (3:2,

ReadLn (ТаЬ1 [Т,

End,•

 

Вычисление вектора средних

For 1:-2001 то 2010 Бо

Begin

летних

температур

End;

 

{ Определение года с самым

теплым летом}

то 2010 Do

Then

WriteLn ( Самое теплое лето было в К м году ' ) End.

Система основных понятий

Задачи обработки массива

Типовые задачи:

- заполнение массива вводом данных, вычислением значений, случайными числами;

- поиск в массиве: заданного значения, максимального или минимального значения;

- сортировка массива

Датчик случайных, равномерно распределенных чисел

Целые числа — случайные числа в диапазоне [О, х—1]:

функция Random (х) , где х — целое число

Вещественные числа — случайные числа в диапазоне (О, 11:

функция Random (без аргумента)

Программирование обработки информации


Вопросы и задания

1. Какими способами можно заполнить массив значениями?

2. Как можно вычислять целые случайные числа в диапазоне от —50 до О?

З. Как можно вычислять вещественные случайные числа в диапазоне от 2,5 до 10?

4.  Даны два вектора{хД, {у} 10, упорядоченные по возрастаО ник.). Соедините их в один вектор {Zi}, i = 1, . , 20 так, чтобы сохранилась упорядоченность.

5.  Дан массив, состоящий из 100 целых чисел. Выведите все числа, которые встречаются в этом массиве:

а) несколько раз;

б) только по одному разу.

6.  В целочисленной матрице размером 10 х 10 найдите максимальное значение и индексы всех элементов, равных ему.

7.  Матрицу размером 5 х 10 заполните случайными двоичными цифрами (О и 1). Определите номер строки с наибольшим количеством нулей.

8.  В двоичной матрице размером 10 х 10 (см. задание 7) найдите совпадающие строки.

S 27

Символьный тип данных

Величина типа «символ» может принимать значения любых символов компьютерного алфавита, Символьная величина занимает 1 байт памяти, в котором хранится код этого символа, соответствующий используемой кодовой таблице. Заметим, что в Delphi наряду с однобайтовой кодировкой символов используется и двухбайтовая.

Символьная константа записывается между апострофами.

Например: ' R ' ,

Символьной тип называется Char. Пример описания символьных переменных:

Var с 1, с2: Char;

Символьный тип относится к порядковым типам данных. Из этого следует:

 символы — упорядоченное множество;  у каждого символа в этом множестве есть свой порядковый

Символьный тип данных

S 27

 

181

номер;  между символами работает соотношение «следующий предыдущий ».

Порядковый номер символа — это его десятичный код, который лежит в диапазоне от О до 255. Например, в кодовой таблице ASCII десятичный код латинской буквы ' А • равен 65, а цифры

53. О стандартах кодирования символов рассказывалось

Функция 0rd (х)

0rd (х) — функция от аргумента порядкового типа, которая возвращает порядковый номер значения х в этом типе данных. Если х символьная величина, то результатом функции будет десятичный код х в кодовой таблице. Например:

 53

Функция Chr (х)

Chr (х) — функция от целочисленного аргумента, результатом которой является символ с кодом, равным х. Например:

Chr  Chr

Поскольку коды символов лежат в диапазоне от О до 255, желательно тип х определять либо как byte, либо как интервальный тип О. . 255.

Пример 1. Составить программу на Паскале, по которой на экран будет выводиться таблица кодировки в диапазоне кодов от 32 до 255. Напомним, что символы с кодами, меньшими 32, являются управляющими (не экранными).

Program ТаЬ1 code ;

Var kod: Byte; (Целые числа от О до 255 Begin

For kod   То 255 Do (Перебор кодов символов Begin

If (kod mod 10=0) Then WriteLn;          Перевод строки через 10 шагов)

                 Write (chr (kod) : З, kod:4) ;                 Вывод символа

и его кода

Программирование обработки информации


End

Значения выводятся парами: символ—код. В одной строке располагается 10 таких пар. Вся таблица разместится в 24 строках на экране.

Принцип последовательного кодирования алфавитов

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

При выполнении операций отношений, применительно к символьным величинам, учитываются коды этих величин. Чем больше значение кода, тем символ считается больше. Истинными являются следующие отношения: ' А ' < ' В ' ,  ' а А ' . Значение символьной переменной С является прописной (заглавной) латинской буквой, если истинно логическое выражение:

апа


Значение символьной переменной С является цифрой, если истинно логическое выражение:

(0= ' 0 ' ) апа

В латинском алфавите 26 букв. Поэтому разница между кодами букв 'Z' и 'А', а также 'z' и 'а' равна 25.

Пример 2. С помощью датчика случайных чисел заполнить массив Sim [0 . . 10) строчными английскими буквами. Затем массив отсортировать в алфавитном порядке.

Uses CRT;

       Var Sim: array         10] of Char;

С: Char; i, К: Integer;

Begin

C1rScr;

Randomize; {Заполнение массива случайными буквами)

WriteLn ( ' Исходный массив: ) ; For -i : = О то 10 Do

Begin

Sim [i] :=Chr (Random (26) +0rd ( ' а ;

Символьный тип данных

S 27


Write (Sirn[i] )

End;

WriteLn;

Сортировка методом пузырька }

           E'or                 То 9 D0

            For            то 9-1 Do

If Sim[k]  Then

Begin

 ; Sim[k+1] End;

WriteLn ( ' Отсортированный массив: ) ; For то 10 Do

При тестировании программы было получено:

 Исходный массив :  gnkbeqqms in  Отсортированный массив : beqq kmnnqs

Программирование обработки информации


Система основных понятий

Величины символьного типа (Char): константы и переменные, принимающие значения символов компьютерного алфавита

1 символ занимает 1 байт памяти (в 8-битовых кодировках)

0rd (х) — функция от аргумента порядкового типа, которая возвращает порядковый номер значения х в этом типе данных. Если х — символьная величина, то функция возвращает код символа

Chr (х) — функция от целочисленного аргумента, результатом которой является символ с кодом, равным х

В любой кодовой таблице выполняется принцип последовательного кодирования латинского (английского) алфавита и алфавита десятичной системы счисления

О Вопросы и задания

1.  Как в программе на Паскале обозначаются символьные константы и переменные?

2.  С помощью какой стандартной функции определяется код символа?

3.  С помощью какой стандартной функции можно определить символ по его коду?

     4. Что такое принцип последовательного кодирования алфавитов? Приведите примеры алгоритмов, где он может быть использован.

             5. Определите результаты вычисления выражений (типы и значения):

1) Chr (0rd(

З) 0rd ( ' А —0rd а ' ) =Ord ( ' Т ) —0rd (

4)  ord( ' 9' ) -ord( ' 0' )

5)  Chr (0rd(           ) +0rd( ' R ' ) —0rd(

6. Выполните на компьютере программы из примеров 1 и 2 данного параграфа. Протестируйте их работу.

S 28

Строки символов

Рассмотрим еще один структурный тип данных — строковый тип. Строковый тип данных был введен в Турбо Паскале. Он позволяет программировать обработку слов, предложений, текстов.

Строка — это последовательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов в СТРке называется ее длиной. Длина строки может находиться в диапазоне от О до 255. Строковые величины могут быть константами и переменными.

Строковая константа записывается как последовательность символов, заключенная в апострофы. Например:

Язык программирования ПАСКАЛЬ

          ТВМ РС         computer

' 33-45-12 '

Строки символов

28


Строковая переменная описывается в разделе описания переменных следующим образом:

Var ощентификатор>: String [<максллальная длина строки>]

Например:

Var Name: String [20]

Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255. Например:

Var s10vo: String

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

Символы внутри строки индексируются (нумеруются), начиная с единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки, Например:

s10vo [К+1] .

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

Тип String и стандартный тип Char совместимы: строки и символы могут употребляться в одних и тех же выражениях.

Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операция сцепления и операции отношения.

Программирование обработки информации


Операция сцепления (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные. Например:

' ЭВМ'+' IBM'+' РС '

В результате получится строка:

' ЭВМ ШВМ РС '

Длина результирующей строки не должна превышать 255.

Операции отношения: , <, >, е, >=, < производят сравнение двух строк, в результате чего получается логическая величина (true или fa1se). Операции отношения имеют более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки.

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


Пример

        Выражение:                   Результат:

            cosm1 ' cosm2               True

             ' pasca1 ' > ' PASCAL '               Т rue

                   Ключ о Ключ                        True

        'MS DOS              DOS'        True

Функции и процедуры

Функция сору ( S , Poz, N) выделяет из строки S подстроку длиной лт символов, начиная с позиции Рог. лт и Рог — целочисленные выражения.

Строки символов

28


Пример

Значение S:

Выражение:

 

Результат:

' ABCDEFG '

Сору ( S , 2,

3)

' ABCDEFG '

Сору ( S , 4,

4)

' DEFG '

Функция Concat (S1, $2, . . . , SN) выполняет сцепление (конкатенацию) строк SN в одну строку.

Пример

       Выражение:                                 Результат:

' ААХХУ '

Функция Length (S) определяет текущую длину строки S. Результат — значение целочисленного типа.

Пример

Значение S:

Выражение:

Результат:

ttest—5'

Length ( S )

6

' (А+В)   

Length ( S )

7

Функция Pos ($1, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 не обнаружена подстрока S1, то результат равен О.

Пример

Значение S2:

Выражение:

Результат:

' abcdef '

Pos            ,

з

abcdcdef

Pos cd'

з

abcdef

Pos ( 'k'  52)

0

Процедура De1ete ( S , Poz, N) удаляет лт символов из строки S, начиная с позиции Рог.

Пример

Исходное значение:

Оператор:

Конечное значение:

abcdefg

De1ete ( S , 3,2)

abefq

             abcdefg                    De1ete (S,2, 6)

В результате выполнения процедуры уменьшается текущая длина строки в переменной S.

Процедура Insert ($1 , S2, Poz) выполняет вставку строки S1  в строку S2, начиная с позиции Рог.

Программирование обработки информации


Пример

               Начальное S2:        Оператор:                            Конечное S2:

' ЭВМ РС'Т ЭВМ 1ВМ-РС'

' Рис. 2 '' Рис. N2'

Примеры программ обработки строк

Пример 1. Составить программу, формирующую символьную строку, состоящую из звездочек (N — целое число, 1 S лт S 255).

Program Stars ;

Var А: String;

N, 1 : Byte;

Begin

Write ( Введите число звездочек ' ) ; ReadLn (N) ;

               то     Do

WriteLn (А) End.

Здесь строковой переменной А вначале присваивается значение пустой строки, обозначаемой двумя апострофами ( ' '). Затем к ней присоединяются звездочки.

Пример 2. В символьной строке подсчитать количество цифр, предшествующих первому символу

Program с;

Var S : String;

К, 1 : Byte;

Begin

WriteLn ( Введите строку! ) ;

ReadLn ( S ) ;

Whi1e

Строки символов

28


Begin If

Then К: 4+1;

End;

WriteLn ( Количество цифр до символа ” ” равно ' , К) End.

В этой программе переменная К играет роль счетчика цифр, а переменная — роль параметра цикла. Цикл закончит выполнение при первом же выходе на символ '! ' или если в строке такого символа нет, то при выходе на конец строки. Символ S[I] является цифрой, если истинно отношение: 'О' S S[I] S ' 9'.

Система основных понятий

Строка — последовательность символов

Описание строковой переменной:

Var <идентификатор>: String [<длина строки>] Максимальная длина строки — 255

Обозначение символа в строке: <идентификатор строки>

Операции над строками: сцепление (+), отношение <, >, <=, >=, >)

Стандартные функции:

Сору (З, Poz, N) — выделение подстроки;

Concat ($1, S2             SN ) — сцепление (конкатенация) строк;

Length ( S ) — определение текущей длины строки;

Pos (S1, $2) — определение первого вхождения подстроки в строку

Стандартные процедуры:

De1ete (Б, Poz, N) — удаление подстроки;

Insert (S1, S2, Poz) — вставка подстроки


Вопросы и задания

1. Как в программе обозначается строковая константа, как определяется строковая переменная?

2. Какой может быть максимальная длина строки?

З. Составьте программу получения из слова «дисковод» слова «воск», используя операцию сцепления и функцию Сору.

4.      Составьте программу получения слова «правило» из слова «операция», используя процедуры De1ete, Insert.

5.      В данном слове замените первый и последний символы на символ

6.      В данном слове произведите обмен первого и последнего символов.

7.      К данному слову присоедините столько символов Т, сколько в нем имеется букв (например, из строки ' УРА • надо получить ' УРА!!!').

8.      В данной строке вставьте пробел после каждого символа.

9.      Переверните введенную строку (например, из ' ДИСК ' должно получиться 'КСИД').

10.  В данной строке удалите все пробелы.

Программирование обработки информации

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

S 29 Комбинированный тип данных

Все структурные типы данных, с которыми вы уже познакомились (массивы, строки), представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурный тип, состоящий из фиксированного числа компонентов (полей) разных типов.

Комбинированный тип объявляется в программе в разделе типов:

                   Туре <имя>           record

                       Опля поля             <тип> ;

                       <имя поля              <тип>

End

Поля могут иметь любые типы, в том числе и комбинированный тип.

190

Например, данные о результатах экзаменов, полученных учеником по трем предметам, могут быть представлены одной величиной комбинированного типа:

       Туре resul ts      record

               Fami1y : string [15] ;    { Фамилия ученика }

Rus ;

2 . . 5,

{ Оценка по русскому

языку

A1g:

2 . . 5,

{ Оценка по алгебре }

 

Phiz :

{ Оценка по физике

 

End;

После этого в разделе переменных следует описание:

Var ехат: resu1ts ;

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

<имя переменной> . Опля поло

Комбинированный тип данных

529


Например: ехат. fami1y, ехат. rus

В программе может использоваться массив, элементами которого являются записи.

Пример 1. На экзаменационном листе содержатся сведения о результатах экзаменов, сданных 30 учениками класса. Ввести эти данные в компьютер и получить список всех отличников.

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

Var 1ist: array[1 . .30] of resu1ts;

После ввода в этот массив исходных данных следует фрагмент программы:

          Eor i            то ЗО Do

If (1ist [1] .rus=5) and (1ist [1] .a1g=5) and (list [i] .phiz=5)

Then WriteLn (1ist [i) .family) ;

Программа отбирает записи, в которых все поля с оценками равны 5, и выводит соответствующие поля фамилий.

А теперь обсудим проблему: как наиболее удобным способом организовать ввод данных в этой программе? Вводить с клавиатуры неудобно из-за большого объема данных. При каждом повторном запуске программы нужно начинать ввод сначала. А при отладке это наверняка придется делать многократно. Гораздо удобнее подготовить файл с исходными данными с помощью текстового редактора. После этого без проблем можно повторять ввод многократно. Так и поступим. Подготовим текстовый файл следующего вида:

Таблица успеваемости 1 ОА класса

Фамилия Антонов

Русский язык

Алгебра

Физика

Андреева

4

5

5

Боброва

5

з

4

 

5

5

5

Программирование обработки информации

Таблица содержит данные с фамилиями и оценками 30 учеников класса. Обратите внимание на то, что фамилии записываются в отдельных строках. Необходимость этого связана с реализацией алгоритма (см. далее): при вводе символьной строки прочитывается полностью очередная строка текстового файла до признака EOLN. При этом фамилии должны содержать не более 15 символов, а первые оценки (по русскому языку) — располагаться не раньше 16-й позиции в своей строке.

Сохраним этот файл в корневом каталоге логического диска Е под именем 10 a.txt. Составим программу с вводом таблицы успеваемости и выводом списка отличников. Фамилии отличников выведем на экран и сохраним в файле с именем Best.txt .

Program Ехатеп;

       Туре resu1ts     record

Fam: string [15] ;

Rus: 2 . .5;

A1g: 2 . .5;

Phi z : 2 . . 5

End;

192


Var 1ist: array [1 30] of resu1ts; {Массив записей) 1: Integer; F1, F2: text;

Begin

     Assign (F1, ' Е:                        а. txt' ) ; Связывание Г1 с файлом 10 а. txt}

Assign (F2, ' Е; \Best. txt') ; (Связывание F2 с файлом Best. txt}

      Reset (F1) ;                                           { Открытие файла F1 для чтения

   Rewrite (Е 2) ;                            { Открытие файла F2 для записи)

      ReadLn (F1) ; ReadLn (F1) ;            Пропуск 2 строк в файле F1

Цикл ввода из файла F1

     Eor                то 30 Do

ReadLn (F1, 1ist [i] .Fam, Д] . Rus, list Д] .A1g,

1ist [i) .Phiz) ;

(Цикл отбора отличников и вывода их фамилий)

     Eor                то 30 Do

If (1ist [1] .rus=5) and (1ist [1] .a1g=5) and (1ist [1] .phiz=5)

Then

Begin

             WriteLn (1ist [1) .farn) ;           { Вывод фамилии на экран }

WriteLn (F2, 1ist [1] . fam) {Запись фамилии в файл F2}

End,•


C10se (F1) ; C10se (F2)    { Закрытие файлов End.

Пример 2. Решая рассмотренную задачу с оценками, можно обойтись без массива записей. Кроме того, можно не ставить ограничения на число учеников в классе. Их число выяснится в процессе чтения файла с таблицей успеваемости. Составим программу, которая кроме вывода списка фамилий отличников подсчитает их количество и процент отличников по отношению к полному составу класса.

Program Ехатеп_2 ;

Туре results    record


Fam: strinq [15] ;

Rus: 2. .5;

A1q: 2. .5;

Phiz: 2. .5

End;

Var 1ist: resu1ts;

1, К: 1nteger;

F1, F2: text;

{ Одна переменная комбинированного типа

Begin

Assiqn (Е 1 ,

Assign (Е 2,

Reset (F1) ;

' Е a.txt' ) ; ' Е: \Best txt' ) ;

Rewrite (F2) ;


ReadLn (Е 1) ; ReadLn (Е 1) ;

{ Инициализация счетчиков

(Цикл до конца чтения файла }

While пое EOF (F1) Do

Begin

ReadLn (Е 1, list. Fam, 1ist . Rus, 1ist .A1g, 1ist. Phiz) ; Подсчет числа учеников

If (1ist.rus=5) and (list.alg=5) and (1ist.phiz=5)

Then

Begin

WriteLn (1ist . fam) ;

WriteLn (Е 2, 1ist . fam) ;

{ Подсчет числа отличников

End

End;

WriteLn ( ' Из 1, учеников в классе отличников, что составляет

Программирование обработки информации

C10se (F1) ; C10se (F2)       Закрытие файлов End.

В этой программе переменная I используется как счетчик числа учеников, а переменная К — как счетчик числа отличников.

Стандартная логическая функция ЕОЕ' (end of file) примет значение True, когда процесс чтения из файла дойдет до его конца.

В результате выполнения программы кроме списка отличников на экран выведется строка:

Из 30 учеников в классе 10 отличников, что составляет 33, 3%

Система основных понятий

Комбинированный тип данных

Комбинированный тип данных — структурный тип, объединяющий разнотипные компоненты (поля) данных

Тип поля: любой простой или структурированный тип (кроме файлового)

Запись — величина комбинированного типа

Идентификация поля записи — составное имя:

<имя записи> . <имя поля>

1 94

Вопросы и задания

1. Чем комбинированный тип данных отличается от регулярного типа данных (массива)?

2. Что такое запись?

З. Опишите комбинированный тип для записей, содержащих следующие данные учеников: фамилию, имя, год рождения, рост (в сантиметрах), вес (в килограммах).

4.  Опишите содержимое текстового файла, из которого будут вводиться данные, соответствующие описанию из предыдущего задания, для нескольких учеников класса (не менее пяти).

Комбинированный тип данных

 

S 29

 

195

5.  Напишите программу, по которой будут введены данные из файла, описанного в предыдущем задании, и выполнена следующая обработка:

определение среднего роста и среднего веса всех учеников;  вывод на экран и в файл rost.txt списка (фамилии, имена, возраст) учеников, рост которых выше среднего роста;  вывод на экран и в файл ves.txt списка учеников, вес которых ниэке среднего веса.

6.  Решите предыдущую задачу, не используя в программе массива записей. ПоДсказка: оператор Reset можно использовать в программе многократно для повторного чтения файла, начиная с его первой записи.


ЭОР к главе З на сайте ФЦИОР (http://fcior.edu.ru)

*      Алгоритмы сортировки

*      Вложенные циклы (на примере языка Pascal).

*      Использование цикла While-do (на примере языка Pascal).

(Практическая работа).

*      Конструирование логических выражений

*      Начальные сведения о программах на языке Pascal

*      Объявление переменных в программе (На примере языка Pascal). Использование. Присваивание. Практическая работа  Объявление переменных в программе. Перечислимые и интервальные типы (На примере языка Pascal). Практическая работа

*      Операторы ветвления if и case (на примере языка Pascal).

Практическая работа

*      Основные структуры данных

Программирование обработки информации

www

*     


Основные типы данных: Integer, Real, Boolean, Character и String. Работа с переменными и константами (на примере языка Pascal) (И)

*      Основные элементы языка программирования (на примере языка Pascal). Циклы. Работа с циклами. Использование циклов в программе. Вложенные циклы

*      Основы работы со строками в языке Pascal. Практическая работа

*      Основы составления программы, осуществляющей вывод данных на консоль в языке Pascal  Простейшие операции языка Pascal

*      Работа с массивами. Одномерные массивы. Алгоритмы работы с массивами. Обработка массива в цикле. Подсчет суммы элементов, максимум и минимум, поиск и сортировка элементов в массиве (на примере языка Pascal). (И)

*      Реализация основных алгоритмических конструкций.Создание шаблона программы на языке Pascal

*      Функции работы со строками в языке Pascal. Практическая работа

*      Этапы разработки программы, ее структура. Создание шаблона программы на языке Pascal

1

Практикум

Практические работы к главе 1 «Информация»

Работа 1 .1 . Шифрование данных

Цель работы: знакомство с простейшими приемами шифрования и дешифрования текстовой информации.

Задание 1

Шифр Цезаря. Этот шифр реализует следующее преобразование текста: каждая буква исходного текста заменяется следующей после нее буквой в алфавите, который считается написанным по кругу.

Используя шифр Цезаря, зашифровать следующие фразы:

а) Делу время — потехе час

б) С Новым годом

 

197


в) Первое сентября

Задание 2

Используя шифр Цезаря, декодировать следующие фразы:

а) Лмбттоьк шбт

б) Вёмпё тпмочё рфтуьой

Задание З

Шифр Виженера. Это шифр Цезаря с переменной величиной сдвига. Величину сдвига задают ключевым словом. Например, ключевое слово ВАЗА означает следующую последовательность сдвигов букв исходного текста: З 1 9 1 З 1 9 1 и т. д. Используя в качестве ключевого слово ЗИМА, закодировать слова: АЛГОРИТМИЗАЦИЯ, КОМПЬЮТЕР, ИНТЕРНЕТ.

Задание 4

Слово ЭКПЮЩЕБ получено с помощью шифра Виженера с ключевым словом БАНК. Восстановить исходное слово.

1

Задания со «звездочкой» имеют повышенную сложность.

Задание 5*

С помощью табличного процессора Microsoft Excel автоматизировать процесс кодирования слов с использованием ключевого слова bank (предполагается, что слова будут состоять только из строчных латинских букв и их длина не будет превышать 10 символов). Для решения задачи использовать текстовые функции СИМВОЛ и КОДСИМВОЛ. Каждая буква должна храниться в отдельной ячейке. Величина сдвига должна определяться автоматически (код буквы ключевого слова минус код буквы «а» плюс единица). Попробовать с помощью вашей таблицы зашифровать слова: algebra, geometry, english.

Задание 6

Используя в качестве ключа расположение букв на клавиатуре вашего компьютера, декодировать сообщение:

D ktce hjlbkfcm kjxrf? D ktce jyf hjckf?

Практикум


Задание 7

Используя в качестве ключа расположение букв на клавиатуре вашего компьютера, закодировать сообщение:

Москва — столица России

Задание 8

Шифр перестановки. Кодирование осуществляется перестановкой букв в слове по одному и тому же правилу. Восстановить слова и определить правило перестановки:

НИМАРЕЛ, ЛЕТОФЕН, НИЛКЙЕА, НОМОТИР, РАКДНАША.

Задание 9

Используя приведенный в задании 8 шифр перестановки, закодировать следующие слова:

ГОРИЗОНТ, ТЕЛЕВИЗОР, МАГНИТОФОН.

Задание 10

Определить правило шифрования и расшифровать слова:

КЭРНОЦЛИТКЭЛУОНПИЕЖДАИФЯ

УКРОГРЕОШЛАЕКВИСЧТЕВМО

Задание 11

Используя приведенный ниже ключ, расшифровать сообщения.

ключ: РА ДЕ КИ МО ну ЛЯ Сообщения:

а) АКБМУНИЯДКУМВРЛ ИКСЯМТР 6) ТДЯДФМУУЫЙ АРЗГМВМА

Задание 12

С помощью ключа из задания 11 закодировать пословицы:

а) Рыбак рыбака видит издалека

б) Сделал дело — гуляй смело

Задание 13*

Придумать свой ключ шифрования и закодировать с помощью него сообщение:

Практические работы к главе 1

 

199

Бит — это минимальная единица измерения информации

Работа 1 .2. Измерение информации

Цель работы: практическое закрепление знаний о способах измерения информации при использовании содержательного и объемного подходов.

Задание 1

Определить (с помощью утилиты «Установка и удаление программ»), сколько приложений установлено на вашем компьютере, и вычислить, какое количество информации содержит сообщение о том, что было запущено одно из них.

Задание 2

Врач-стоматолог принимает пациентов с 8 утра до 2 часов дня. На каждого пациента отводится по 30 минут. Какое количество информации содержит сообщение о том, что Петя записался на прием в 11.30?

Задание З

Известно, что сообщение учителя о том, что к доске пойдет Саша Орлов, содержит 5 битов информации. Сколько учеников в классе?

Задание 4

В корзине лежат 4 груши и 12 яблок. Какое количество информации содержит сообщение о том, что из корзины достали грушу?

Задание 5

В школьную команду по волейболу было отобрано некоторое количество учеников из 64 претендентов. Сколько учеников было отобрано, если сообщение о том, кто был выбран, содержит 72 бита информации?

Задание 6

Практикум


Из папки DOCUM было удалено 13 файлов, и сообщение об этом содержит 91 бит информации. Сколько файлов осталось в папке?

Задание 7

В детской магнитной азбуке 32 буквы. Какое количество информации содержит сообщение о том, что из них было собрано слово «муравей»?

Задание 8

Какое количество информации получит второй игрок при игре в крестики-нолики на поле размером 8 х 8 клеток после первого хода первого игрока, играющего крестиками?

Задание 9

Необходимо отгадать слово, состоящее из 5 букв и записанное с помощью алфавита из 32 букв. Можно задавать вопросы, ответом на которые будет «Да» или «Нет». С помощью какого числа вопросов можно отгадать слово при оптимальной стратегии игры?

Задание 10

Открыть в редакторе Microsoft Word произвольный текстовый файл (без графических элементов), определить количество символов в этом файле, включая пробелы (команда Сервис Статистика), и вычислить количество информации в этом файле.

Задание 11

Алфавит некоторого языка состоит из 64 символов. За сколько секунд можно передать текст из 2000 символов, если скорость передачи — 50 байтов в секунду?

Задание 12

В некотором алфавите записан текст из ЗОО символов, количество информации в тексте — 150 байтов. Сколько символов в алфавите?

Задание 13


Приведенное ниже сообщение содержит все буквы алфавита. Какое количество информации оно содержит?

Задание 14

Имеется файл с текстом из 20 ООО символов. При наборе текста использовался компьютерный алфавит. Текст необходимо скопировать на диск, на котором имеется свободная область памяти 20 Кбайт. Поместится ли текст на диск?

Задание 15

В течение 10 секунд было передано сообщение, количество информации в котором равно 5000 байтов. Каков размер алфавита, если скорость передачи — 800 символов в секунду?

Задание 16

Два сообщения содержат одинаковое количество символов. Количество информации в первом тексте в 2,5 раза больше, чем во втором. Сколько символов содержат алфавиты, если известно, что число символов в каждом алфавите не превышает 32 и на каждый символ приходится целое число битов?

Задание 17

Сколько битов информации содержит любое трехзначное восьмеричное число?

Задание 18

Создать с помощью табличного процессора Microsoft Excel таблицу для автоматического перевода чисел из битов в байты, килобайты, мегабайты и гигабайты. Перевести во все предложенные единицы измерения 1000 битов, 8192 бита, 20 500 битов, 16 394 бита, 100 200 битов.

Задание 19*

Практикум


Найти неизвестные х и у, если верны соотношения 16У Мбайт = 8х бит и 2х Кбайт = 2У Мбайт.

Задание 20*

Создать с помощью табличного процессора Excel таблицу следующего вида:

Из какой единицы измерения переводить?

Количество информации

Биты

Байты

Килобайты

Мегабайты

Гигабайты

 

 

 

 

 

 

 

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

Протестировать работоспособность созданной таблицы и доказать правильность ее работы.

Работа 1 «З. Представление чисел

Цель работы: закрепление знаний о системах счисления и о представлении чисел в памяти компьютера, полученных при изучении курса информатики основной школы.

Задание 1

Выписать алфавиты 2-ичной, 5-ричной, 8-ричной, 16-ричной систем счисления.

Задание 2

Записать первые 20 чисел натурального числового ряда в 2-ичной, 5-ричной, 8-ричной, 16-ричной системах счисления.

Задание З

В какой системе счисления справедливо равенство:

Практические работы к главе 1

 

203

 

а)         10; б) 2 • З — 11; В) З • З — 13?

Задание 4

Записать в развернутом виде числа.

а)           = 125,34; = 125,34; б) Аб = 125,34; А16 125,34.

Пояснение. Развернутой формой записи числа называется запись вида:

Aq = ± + an_2qn-2 + +

Здесь А число, q — основание системы счисления, ai цифры данной системы счисления, п — количество разрядов целой части числа, т — количество разрядов дробной части числа. Например:

26,38710 = 2 • 10 1 +6 • 100 + 3 • 10-1 +8 • 10-2 +7 • 10-3 ;

101,112 —— 1 • 2 2 О • 2 1 + 1 • 20 + 1 •                             + 1 • 2—2 .

В последнем примере использована десятичная развернутая форма записи двоичного числа.

Задание 5

Перевести числа в десятичную систему счисления. 6) Аб = 341; в) = 341;

                                      д)       — Е41А,12.

Задание б

Перевести целые числа из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы:

а) 856; б) 664; в) 5012; г) 6435; д) 78.

Задание 7

Перевести десятичные дроби в двоичную и восьмеричную системы счисления, оставив пять знаков в дробной части нового числа.

а) 21,5; б) 432,54; в) 678,333.

Задание 8

 

Практикум


Составить таблицы сложения и умножения в двоичной системе счисления и выполнить вычисления:

        а) 1110 + 101;      б) 10101 - 11;         в) 101 11;        г) 1110 : 10.

Задание 9

Представить числа в двоичном виде в восьмибитовом представлении в формате целого без знака.

                     б) 17;     в) 64;        г) 255.

Задание 10

Представить числа в двоичном виде в восьмибитовом представлении в формате целого со знаком.

        а) 56;         6) -56; в) 127;        г) -127.

Задание 11*

Представить вещественные числа в четырехбайтовом представлении в формате с плавающей запятой.

        а) 0,5;        б) 25,12;       в) -25,12;      г) —3456,1.


Работа 1.4. Представление текстов.

Сжатие текстов

Цель работы: практическое закрепление знаний о представлении в компьютере текстовых данных.

Практические работы к главе 1


Задание 1

Определить, какие символы кодировочной таблицы ASCII (DOS) соответствуют всем прописным буквам русского алфавита в кодировочной таблице ANSI (Windows). Для выполнения задания создать текст с русским алфавитом в текстовом редакторе «Блокнот», а затем открыть его в режиме просмотра (клавиша F3) в любом файловом менеджере (Windows Commander, Far, Total Commander, Norton Commander) и преобразовать в другую кодировку. После выполнения задания заполнить таблицу.

Буква в ANSI

Буква в ASCII

Буква в ANSI

Буква в ASCII

Буква в ANSI

Буква в ASCII

 

 

 

 

х

 

 

 

л

 

ц

 

в

 

м

 

 

 

 

 

н

 

ш

 

д

 

о

 

щ

 

 

 

п

 

ъ

 

 

 

 

 

ы

 

ж

 

с

 

ь

 

з

 

т

 

 

 

и

 

 

 

ю

 

й

 

ф

 

я

 

Задание 2

Закодировать текст с помощью кодировочной таблицы ASCII.

Нарру Birthday to уои!

Записать двоичное и шестнадцатеричное представления кода (для записи шестнадцатеричного кода использовать средство для просмотра файлов любого файлового менеджера).

Задание 3

Декодировать текст, записанный в международной кодировочной таблице ASCII (дано десятичное представление).

71 101 108 108 111 44 32 109 121 32 102 114 105 101 110 100 33

Задание 4

Пользуясь таблицей кодировки ASCII, расшифровать текст, представленный в виде двоичных кодов символов.

Практикум


01010000 01100101 01110010 01101101 00100000 01010101

01101110 01101001 01110110 01100101 01110010 01110011

Задание 5

Пользуясь кодовой страницей Windows-1251 таблицы кодировки ASCII, получить шестнадцатеричный код слова ИНФОРМАТИЗАЦИЯ.

Задание б

Во сколько раз увеличится объем памяти, необходимый для хранения текста, если его преобразовать из кодировки k018-R в кодировку Unicode?

Задание 7

С помощью табличного процессора Excel построить кодировочную таблицу ASCII, в которой символы будут автоматически отображаться на экране в соответствии с их заданным десятичным номером (использовать соответствующую текстовую функцию).

Справочная информация

Практические работы к главе 1


Алгоритм Хаффмана. Сжатием информации в памяти компьютера называют такое ее преобразование, которое ведет к сокращению объема занимаемой памяти при сохранении закодированного содержания. Рассмотрим один из способов сжатия текстовой информации алгоритм Хаффмана. С помощью этого алгоритма строится двоичное дерево, которое позволяет однозначно декодировать двоичный код, состоящий из символьных кодов различной длины. Двоичным называется дерево, из каждой вершины которого выходят две ветви. На рисунке приведен пример такого дерева, построенного для алфавита английского языка с учетом частоты встречаемости его букв.

Закодируем с помощью данного дерева слово «hello»:

При размещении этого кода в памяти побитово он примет вид:

Таким образом, текст, занимающий в кодировке ASCII 5 байтов, в кодировке Хаффмана займет только З байта.

Задание 8

Используя метод сжатия Хаффмана, закодировать следующие слова:

а) administrator

б) revolution

в) есопоту

г) department

Задание 9

Используя дерево Хаффмана, декодировать следующие слова:

а) 01110011 11001001 10010110 10010111 100000

б) 00010110 01010110 10011001 01101101 01000100 000

Работа 1 .5. Представление изображения и звука

Практикум


Цель работы: практическое закрепление знаний о представлении в компьютере графических данных и звука.

Справочная информация

В некоторых заданиях используется модельный (учебный) вариант монитора с размером растра 10 х 10 пикселей.

При векторном подходе изображение рассматривается как совокупность простых элементов: прямых линий, дуг, окружностей, эллипсов, прямоугольников, закрасок и пр., которые называются графическими примитивами. Графическая информация  данные, однозначно определяющие все графические примитивы, составляющие рисунок.

Положение и форма графических примитивов задаются в системе графических коорДинат, связанных с экраном. Обычно начало координат расположено в верхнем левом углу экрана. Сетка пикселей совпадает с координатной сеткой. Горизонтальная ось Х направлена слева направо; вертикальная ось У — сверху вниз.

Отрезок прямой линии однозначно определяется указанием координат его концов; окружность — координатами центра и радиусом; многоугольник — координатами его углов, закрашенная область — граничной линией и цветом закраски и пр.

Учебная система векторных команд представлена в таблице.

Установить Х, У

Установить текущую позицию (Х, У)

линия к Х1, У1

Нарисовать линию от текущей позиции в позицию (Х 1, У 1), позиция (Х 1, У1) становится текущей

линия Х1, У1, „И, Y2

Нарисовать линию с координатами начала Х 1, У1 и координатами конца Х2, У2. Текущая позиция не устанавливается

Окружность Х, У, R

Нарисовать окружность; Х, У — координаты центра, R — длина радиуса в пикселях

эллипс Х1, П, Х2, У2

Нарисовать эллипс, ограниченный прямоугольником; (Х 1, У 1) — координаты левого верхнего, а (Х2, У2) — правого нижнего угла этого прямоугольника

Прямоугольник Х1, П, Х2, Y2

Нарисовать прямоугольник; (Х 1, У1) — координаты левого верхнего угла, а (Х2, У2) — правого нижнего угла этого прямоугольника

Цвет_рисования ЦВЕТ

Установить текущий цвет рисования

Цвет_закраски ЦВЕТ

Установить текущий цвет закраски

Закрасить Х, У,

ЦВЕТ ГРАНИЦЫ

Закрасить произвольную замкнутую фигуру; Х, У — координаты любой точки внутри замкнутой фигуры, ЦВЕТ ГРАНИЦЫ — цвет граничной линии

Практические работы к главе 1


Например, требуется написать последовательность получения

Изображение буквы «К» на рисунке описывается тремя векторными командами: линия(4, 2, 4, 8) Линия(5, 5, 8, 2)

Линия(5, 5, 8, 8)

Задание 1

Практикум


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

Задание 2

Определить, какой объем памяти требуется для хранения 1 бита изображения на вашем компьютере (для этого нужно через Свойства экрана определить битовую глубину цвета).

Задание З

Битовая глубина цвета равна 24. Сколько различных оттенков серого цвета может быть отображено на экране (серый цвет получается, если уровни яркости всех трех базовых цветов одинаковы)?


Задание 4

Дан двоичный код 8-цветного изображения. Размер монитора — 10 х 10 пикселей. Что изображено на рисунке (зарисовать)?

001 111 111 111 010 010 111 111 111 001

111 111 111 011 011 011 011 111 111 111

111 111 011 111 111 111 111 011 111 111

111 011 111 111 111 111 111 111 011 111

110 011 111 111 110 110 111 111 011 110

110  011 111 111 110 110 111 111 011 110

111  011 111 111 111 111 111 111 011 111

111 111 011 111 111 111 111 011 111 111

111 111 111 011 011 011 011 111 111 111

001 111 111 111 010 010 111 111 111 001

Задание 5


Описать с помощью векторных команд следующие рисунки (цвет заливки произвольный).

Задание 6

Получить растровое и векторное представления всех цифр от О до 9.

Задание 7

По приведенному ниже набору векторных команд определить, что изображено на рисунке (зарисовать).

Цвет рисования Голубой

Прямоугольник 12, 2, 18, 8

Прямоугольник 10, 1, 20, 21

Прямоугольник 20, 6, 50, 21

Цвет рисования Желтый

Цвет закраски Зеленый

Окружность 20, 24, З Окружность 40, 24, 3

Закрасить 20, 24, Желтый Закрасить 40, 24, Желтый

Цвет закраски Голубой

Закрасить 30, 10, Голубой


Закрасить 15, 15, Голубой

Цвет закраски Розовый

Закрасить 16, 6, Голубой

Задание 8

Определить, какой объем имеет 1 страница видеопамяти на вашем компьютере (узнать для этого, какое у компьютера разрешение и битовая глубина цвета). Ответ записать в мегабайтах.

Задание 9

Нарисовать в редакторе Paint изображение солнца, сохранить его в формате ВМР, а затем с помощью Photoshop преобразовать его в форматы JPEG (с наивысшим качеством), JPEG (с наименьшим качеством), GIF, TIFF. Сравнить эффективность сжатия каждого формата, заполнив таблицу.

Формат

Размер файла

Коэффициент сжатия

(по сравнению с ВМР)

JPEG (высшее качество)

 

 

JPEG (низкое качество)

 

 

GIF

 

 

 

 

 

Задание 10

Битовая глубина цвета равна 32. Видеопамять делится на две страницы. Разрешающая способность монитора 800 х 600. Вычислить объем видеопамяти.

Задание 11

На компьютере установлена видеокарта объемом 2 мегабайта. Какое максимально возможное количество цветов теоретически допустимо в палитре при работе с монитором, имеющим разрешение 1280 х 1024?

Задание 12

Какой объем видеопамяти в килобайтах нужен для хранения изображения размером 600 х 350 пикселей, использующего 8-цветную палитру?

Задание 13

Практические работы к главе 1


Зеленый цвет на компьютере с объемом страницы видеопамяти 125 Кбайт кодируется кодом 0010. Какова может быть разрешающая способность монитора?

Задание 14

Монитор работает с 16-цветной палитрой в режиме 640 х 400 пикселей. Для кодирования изображения требуется 1250 Кбайт. Сколько страниц видеопамяти оно занимает?

Задание 15

Сколько цветов можно максимально использовать для хранения изображения размером 350 х 200 пикселей, если объем страницы видеопамяти — 65 Кбайт?

Задание 16

Определить объем памяти для хранения цифрового аудиофайла, время звучания которого 5 минут при частоте дискретизации 44,1 КГц и глубине кодирования 16 битов.

Задание 17

 Записать с помощью стандартного приложения «Звукозапись» звук длительностью 1 минута с частотой дискретизации 22,050 КГц и глубиной кодирования 8 битов (моно), а затем тот же самый звук с частотой дискретизации 44,1 КГц и глубиной кодирования 16 битов (моно). Сравнить объемы полученных файлов.

Задание 18

Практикум


Одна минута записи цифрового аудиофайла занимает на диске 1,3 Мбайт, разрядность звуковой платы — 8. С какой частотой дискретизации записан звук?

Задание 19

Две минуты записи цифрового аудиофайла занимают на диске 5,1 Мбайт. Частота дискретизации — 22 050 Гц. Какова разрядность аудиоадаптера?

Задание 20

Объем свободной памяти на диске — 0,01 Гбайт, разрядность звуковой платы — 16. Какова будет длительность звучания цифрового аудиофайла, если его записать с частотой дискретизации 44100 Гц?

Практические работы к главе 2 «Информационные процессы»
Работа 2.1 . Управление алгоритмическим исполнителем

Цель работы: закрепление навыков программного управления учебными исполнителями алгоритмов, полученных при изучении курса информатики в 7—9 классах.

Используемое программное обеспечение: среда какого-либо учебного исполнителя алгоритмов графического типа, назначение которого — рисование на экране компьютера, К числу таких исполнителей относятся: Черепашка Лого, Чертежник, Кенгуренок и др.

Практические работы к главе 2


Задание 1

Написать подпрограмму (процедуру) STEP и с ее помощью составить программу рисования лесенки по диагонали через всё поле рисунка.

Задание 2

Написать программы для рисования следующих рисунков на всю ширину поля, используя вспомогательные алгоритмы (подпрограммы).

а

Описать подпрограмму для рисования следующей фигуры.

Задание 4

Используя подпрограмму из предыдущего задания, составить программу для рисования «забора» через всё поле рисунка.

Задание 5


Оформить решение задания 4 в виде подпрограммы и с ее помощью составить программу рисования следующей фигуры.

Работа 2.2. Автоматическая обработка данных

Цель работы: знакомство с основами теории алгоритмов на примере решения задач на программное управление алгоритмической машиной Поста.

Используемое программное обеспечение: имитатор машины Поста, который можно найти в Интернете по адресу http:// priklinfa.narod.ru/anti800.htm


Практические работы к главе 2

 

Команда

Действие

 

Сдвиг каретки на шаг влево и переход к выполнению команды с номером т

 

Сдвиг каретки на шаг вправо и переход к выполнению команды с номером т

 

Установа метки в текущую пустую клетку

 

Стирание метки в текущей клетке

 

Остановка выполнения программы

Переход по содержимому текущей клетки: если текущая клетка пустая, то следующей будет выполняться команда с номером т; если в текущей клетке стоит метка, то выполнится команда с номером К


Система команд машины Поста: (везде буква п обозначает номер текущей команды):

Задание 1

Составить программу перевода информационной ленты машины Поста из начального состояния (н.с.) в конечное (юс.):

н.с.

к.с.

Задание 2

1. Выполнить на машине Поста программу:

1 v 2

5v 6 3 ? 2, 4    6 !

2. Какую задачу решает исполнитель по этой программе?

З. Что произойдет, если начальное состояние информационной ленты будет иметь следующий вид?

 н.с.

В следующих задачах считается, что п расположенных подряд меток обозначают число п (непозиционная система счисления с основанием 1 ).

Задание З

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

Задание 4

Практикум

Написать для машины Поста программу вычитания двух чисел, разделенных одной пустой клеткой. Уменьшаемое не меньше вычитаемого. Начальное положение каретки — под пустой клеткой, отделяющей уменьшаемое от вычитаемого.

Указание. Стирать метки по одной у каждого числа, пока у вычитаемого не кончатся все метки.

Задание 5

Используя программу вычитания, проверить, что получится, если:

а) уменьшаемое равно вычитаемому;

б) уменьшаемое меньше вычитаемого.

Задание б

Написать для машины Поста программу деления числа, записанного метками, на 2. Исходное число должно делиться на 2 без остатка.

Указание. Стереть каждую вторую метку; уплотнить оставшиеся метки.

218

Задание 7

Используя программу деления числа на 2:

а) проверить, что получится для числа 2;

б) модифицировать программу с учетом числа 2.

Указание. Справа от пустой клетки поставить метку, а слева стереть две метки. Так поступать до тех пор, пока слева остаются метки .

Задание 8

На информационной ленте машины Поста на расстоянии в п клеток друг от друга расположены две помеченные метками клетки. Начальное положение каретки под левой из помеченных клеток. Какую работу выполнит Машина Поста по программе?

                4 ? 3, 1

Задание 9

Практические работы к главе 2

 

 

219

Написать для машины Поста программу умножения на 2 числа, записанного метками на ленте.

Указание. Через одну пустую клетку поставить две метки, а в исходном числе стереть одну. Так поступать, пока в исходном числе остаются метки.

Задание 10*

Написать для машины Поста программу, проверяющую, делится ли записанное метками число на 5.

Задание 11 *

На информационной ленте машины Поста помечена 2n — 1 клетка. Составить программу отыскания средней помеченной клетки и стирания метки в ней.

Задание 12*

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


Работа 2.3. Проектное задание.

Выбор конфигурации компьютера

Цель работы: знакомство с основными техническими характеристиками устройств персонального компьютера; знакомство с номенклатурой и символикой; знакомство с принципами комплектации при покупке ПК; получение навыков в оценке стоимости комплекта устройств ПК.

Справочная информация


При сборке компьютера из отдельных комплектующих необходимо учитывать два основных момента. Первый из них касается круга задач, для решения которых будет использоваться компьютер. Условно компьютеры можно разделить на несколько групп в зависимости от их функционального предназначения; офисные, учебные, игровые, домашние, мультимедийные и т. д. Предназначение компьютера определяет тот набор устройств, из которых он должен состоять, а также их основные характеристики. Например, для офисного компьютера необходимо наличие принтера, а игровому не обойтись без мощного процессора, большого объема ОП, качественной видеокарты с достаточным объемом видеопамяти и хорошего монитора.

Второй момент касается совместимости отдельных устройств с материнской платой. Прежде всего, это относится к совместимости по интерфейсу подключения.

Интерфейс — это стандарт присоединения компонентов к системе. В качестве интерфейсов служат разъемы на материнской плате.

Существует несколько различных процессорных интерфейсов, для каждого из которых выпускаются свои модели материнских плат. Для процессоров фирмы Intel, например, в 2012 году использовались интерфейсы Socket 775, Socket 1155, Socket 1156, Socket 1366, а для процессоров фирмы AMD — Socket ЕМ 1, Socket АМ2, Socket АМЗ. Поэтому при выборе материнской платы всегда в первую очередь следует обращать внимание на ее процессорный интерфейс.

Для видеокарт в настоящее время используется два интерфейса подключения: AGP 8х (устаревший) и PCI-Express х 16 (обычно Оперативная память обычно имеет тип DDR (устаревший), DDR-II или DDR-III и соответствующие интерфейсы подключения к материнской плате. Иногда на одной материнской плате могут одновременно присутствовать два типа разъемов.

Современные жесткие диски подключаются к интерфейсам SerialATA-II или SerialATA-III (обозначаются SATA-II и SATA-III). Существуют также переносные жесткие диски, подключаемые к интерфейсу USB.

При комплектации компьютера необходимо учитывать, что некоторые компоненты могут быть встроены непосредственно в материнскую плату (видеокарты, звуковые карты, сетевые карты) и приобретение дополнительных аналогичных устройств может быть оправдано только в том случае, если они имеют лучшие характеристики, чем интегрированные. Обычно для обозначения встроенной звуковой карты используется название кодека АС'97, а для встроенной сетевой карты — обозначение LAN, после которого указывается пропускная способность в мегабитах в секунду. Встроенные видеокарты могут обозначаться либо их названием, либо просто сокращением «в/к».

 

221


Пример 1

Мат.плата soc-775 ASRock G31M-S rev2.O

SATA MicroATX 2DDR-ll

Материнская плата с Socket 775. Производитель — ASRock. Есть встроенная видеокарта и сетевая карта (SVGA и LAN). Имеется интерфейс подключения PCI-Express (для внешней видеокарты). Имеются интерфейс подключения жестких дисков SerialATA. Имеется два разъема для оперативной памяти типа DDR-II с максимальной пропускной способностью 6400 Мбайт/с.

Пример 2

Процессор soc-AM3 АМО ATHLON ll    240 (2.80 ггцпмМооомгц) ОЕМ(АОХ24ОО)

Двухъядерный (Х2) процессор фирмы AMD Athlon-II с сокетом АМ-З. Тактовая частота — 2,8 ггц, реальная тактовая частота — 2200 мгц.

Пример З

В/к РС|-Е 512Mb DDR RadeonHD4650 Palit (RTL) 128bit, DVI, HDMl

Видеокарта с интерфейсом PCI-Express х 16. Тип видеопамяти — DDR, объем видеопамяти — 512 Мбайт.

Задание 1

В компьютерном салоне имеется следующий набор устройств:  процессор Socket-1155 Intel Celeron, 2.5 ГГц — 1980 руб.;  процессор Socket-1155 Intel Core i3-2100, 3.1 ГГц 4390 руб.;

      процессор Socket-1155 Intel Core 6-3450, 3.1 ГГц 6740 руб.;

      процессор Socket-AM3 AMD ATHLON П ХЗ, 3.1 ГГц 2510 руб.; процессор Socket-AM3 AMD Phenom П Х4, 3.5 ГГц 5510 руб.;


Практикум

материнская плата Socket-1155 ASRock DDR3 тАТХ AC'97+LAN+ VGA — 1850 руб.; материнская плата Socket-1155 ASUSTek 2xPCI-E+GbLAN SATA 2DDR-III — 2760 руб.; материнская плата Socket-1155 GigaByte 2xPCI-E+GbLAN SATA — 4180 руб.; материнская плата Socket-775 ASUSTek PCI-E+SVGA+ GbLAN SATA 4DDR-III — 1770 руб.; материнская плата Socket-AM3 ASUSTek PCI-E+GbLAN SATA 4DDR-III — 3300 руб.; корпус компьютера с блоком питания мощностью 350 В 1310 руб.; корпус компьютера с блоком питания мощностью 400 В 2480 руб.; модули оперативной памяти объемом 1 Гбайт — 640 руб.; модули оперативной памяти объемом 2 Гбайта— 850 руб.; модули оперативной памяти объемом 4 Гбайта— 1330 руб.; модули оперативной памяти объемом 8 Гбайт— 2010 руб.; жесткий диск объемом 500 Гбайт — 3100 руб.; жесткий диск объемом 1 Тбайт — 3570 руб.; жесткий диск объемом 2 Тбайта — 4800 руб.; видеокарта с объемом видеопамяти 512 Мбайт — 1270 руб.; видеокарта с объемом видеопамяти 1 Гбайт — 2700 руб.; видеокарта с объемом видеопамяти 2 Гбайта — 5880 руб.; звуковая карта — 960 руб.; звуковая карта (профессиональная) — 5770 руб.;

      звуковые колонки 5 В — 730 руб.;  звуковые колонки 5.1 (5 колонок+сабвуфер)— 2920 руб.;  сетевая карта 10/100/1000 Мбит/с 570 руб.;  привод CD-RW — 830 руб.;

      привод CD-RW/DVD-RW — 970 руб.;  принтер струйный (цветной) — 2150 руб.;  фотопринтер струйный — 2500 руб.;  принтер лазерный — 4630 руб.;

      сканер — 2510 руб.;  модем — 940 руб.;  монитор LCD, диагональ 19 дюймов — 3600 руб.;  монитор LCD, диагональ 20 дюймов — 5870 руб.;  монитор LCD, диагональ 20 дюймов — 8540 руб.;  мышь оптическая — 200 руб.;  клавиатура — 180 руб.;  клавиатура мультимедийная — 1250 руб.


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

Вариант 1. Офисный компьютер, предназначенный в основном для работы с текстовыми документами и выхода в Интернет через локальную сеть организации. Сумма — 22 ООО руб.

Вариант 2. Домашний компьютер, предназначенный в основном для компьютерных игр, просмотра видеофильмов и выхода в Интернет через телефонную линию связи. Сумма — 30 ООО руб.

Вариант З. Мультимедийный компьютер, предназначенный для выполнения видеомонтажа и создания рекламных видеороликов. Сумма — 35 ООО руб. (обязательно два жестких диска).

Вариант 4. Учебный компьютер, предназначенный для обучения школьников информатике с выходом в локальную сеть учебного заведения. Сумма — 20 ООО руб.

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

Задание 2

Скачать из Интернета прайс-лист любой компьютерной фирмы (например, http://www.decada.perm.ru) и на его основе подобрать комплектующие для компьютера, предназначенного для решения определенного круга задач (см. варианты ниже). При выборе компонент компьютера необходимо уложиться в заданную сумму. Для подбора различных вариантов решения указанной задачи использовать табличный процессор (электронные таблицы). Все компоненты должны стыковаться с материнской платой по интерфейсу подключения и пропускной способности.

Вариант 1. Домашний компьютер. Компьютером будет пользоваться в основном ребенок 11 лет. Предполагается, что он будет использовать его для компьютерных игр и для учебы. Сумма, которой располагают родители, — 25 тыс. руб.

Вариант 2. Офисный компьютер. Компьютер будет использоваться в основном для подготовки и печати документов и выхода в Интернет. Он должен также входить в состав локальной сети фирмы. Сумма, которой располагает фирма, — 20 тыс. руб.


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

Примечание. Для видеомонтажа необходимо наличие на материнской плате интерфейса IEEE1394 для подключения видеокамеры, а также два жестких диска.

Вариант 4. Учебный компьютер. Компьютер будет использоваться в учебном процессе и должен входить в локальную сеть школы. Сумма, которой располагает школа, — 20 тыс. руб.

Вариант 5. Домашний компьютер. Заказчик будет использовать компьютер для выхода в Интернет, просмотра видеофильмов, компьютерных игр, а также создания любительских фонограмм. Сумма, которой располагает заказчик, — 35 тыс. руб.

Вариант 6. Компьютер, предназначенный для работы Webмастера. Заказчик будет использовать компьютер для выхода в Интернет и создания сайтов. При создании сайтов будет необходимо сканировать рисунки и фотографии. Сумма, которой располагает заказчик, — 25 тыс. руб.

Вариант 7. Учебный компьютер. Компьютер будет использоваться для обучения начальному пользовательскому курсу (Windows, Microsoft 0ffice), включая печать документов, а также работе с пакетами CorelDraw, Photoshop и 3Dmax. Сумма, которой располагает учебный центр, — 25 тыс. руб.

Вариант 8. Компьютер, который будет использоваться профессиональным программистом (Delphi, базы данных и т. д.). Программист будет также использовать сетевой принтер (который уже есть в офисе, поэтому в комплект его включать не нужно). Сумма, которой располагает фирма, — 22 тыс. руб.

Вариант 9. Компьютер, который будет использоваться на телестудии для создания рекламных роликов. Сумма, которой располагает телестудия, — 35 тыс. руб.

Примечание. Для видеомонтажа необходимо наличие на материнской плате интерфейса IEEE1394 для подключения видеокамеры, а также два жестких диска.

Вариант 10. Домашний компьютер. Компьютер должен быть предназначен в основном для просмотра видеофильмов с выводом на экран телевизора, компьютерных игр, прослушивания музыки. Сумма, которой располагает заказчик, — 27 тыс. руб.

 

225

Практические работы к главе 2

 

Работа 2.4. Проектное задание. Настройка BlOS

Цель работы: знакомство с процедурой первоначальной загрузки компьютера; получение представления о назначении BIOS; знакомство с основными приемами настройки BIOS, со средствами тестирования компьютера.

Справочная информация

Назначение BIOS. Прежде операционной системы в компьютере запускается встроенная в чип материнской платы программа BIOS (Basic Input/Output System, основная система ввода-вывода). Назначение этого небольшого (256 Кб) программного кода поиск, тестирование и установка некоторых параметров устройств компьютера. Правильный подбор параметров может ускорить загрузку компьютера. BIOS представляет собой программу, записанную в микросхему ПЗУ по той или иной технологии ROM и, следовательно, не требующую питания для того, чтобы храниться там даже после выключения компьютера. Параметры настройки BIOS хранятся в энергозависимой CMOS RAM, которая питается от батарейки на материнской плате.


После включения питания напряжение подается на центральный процессор и другие микросхемы материнской платы. «Проснувшись», СРU запускает из микросхемы программу BIOS и начинается процедура POST (Power Оп Self 1'est, инициализация при первом включении). Ее задача — просканировать и настроить все «железо». Прежде всего формируется логическая архитектура компьютера. Подается питание на все чипсеты, в их регистрах устанавливаются нужные значения. Затем определяется объем ОЗУ (этот процесс можно наблюдать на экране), включается клавиатура, распознаются основные порты компьютера. На следующем этапе определяются блочные устройства — жесткие диски и приводы CD/DVD. На заключительной стадии происходит отображение итоговой информации. После окончания работы POST BIOS ищет загрузочную запись. Эта запись, в зависимости от настройки, находится на одном из жестких дисков, CD/DVD-ROM или устройстве USB. После того как загрузочная запись найдена, она загружается в память и управление передается ей.

Практикум


Настройка BIOS. Для изменения настроек BIOS используется программа Setup, для входа в которую обычно используются клавиши Del или F2 (это зависит от производителя и версии BIOS). В настоящее время среди разработчиков BIOS для персональных компьютеров наиболее известны три фирмы: American Мчаtrends Inc. (АМО, Intel и Phoenix Technologies (торговые марки Award BIOS, Phoenix Award BIOS). Именно их продукция встречается на подавляющем большинстве материнских плат. Однако даже для двух последовательных моделей материнских плат одного и того же производителя меню BIOS могут в той или иной степени различаться, так как единого стандарта на его интерфейс не существует.

Рассмотрим некоторые настройки BIOS:

     раздел Main или Standard CMOS Setup. Здесь можно задать дату и время, а также параметры жестких дисков;

     в разделе Advanced BIOS Features (BIOS Features Setup или просто Advanced) приведены различные общие настройки, позволяющие включить или отключить определенные опции загрузки компьютера;

     раздел Integrated Peripherals отвечает за интерфейсы, интегрированные устройства и дополнительные системные функции;

     раздел Power Management Setup позволяет настроить все опции энергопотребления и питания;  раздел Hardware Monitor позволяет узнать значения системных датчиков: температуру процессора или скорость вращения вентиляторов (об/мин);  пункт Load Setup Defaults восстанавливает настройки BIOS по умолчанию и устраняет все изменения, которые вы могли внести. Данный пункт будет полезен, если ваши действия привели к каким-либо проблемам в системе.

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

 

227


Advanced BIOS Features. В этом разделе находятся различные опции, так или иначе относящиеся к специфичным настройкам BIOS, CPU, кэша и подобного. Здесь можно встретить следующие параметры (в скобках указаны различные варианты названий):

     CPU Internal Frequency. Конструкция некоторых материнских плат позволяет указать здесь частоту процессора. Однако будьте осторожны «разгон» процессора может привести к его повреждению;

     Boot Up NumLoch Status. Автоматическое включение цифровой клавиатуры, полезно для индивидуальной настройки;  Quick Power Оп Self Test (Quick Mode). Ускоряет загрузку, пропуская некоторые тесты, в том числе тройную проверку ОЗУ;

     Virus Warning, Boot Virus Detection. Защита от загрузочных вирусов. При установке защиты будет запрещен доступ к загрузочной записи жесткого диска. Этот параметр следует отключать при инсталляции ОС;

     Boot Sequence. Последовательность просмотра дисков для поиска загрузочного сектора. Этот режим может быть представлен и другим способом в виде списка из четырех устройств. Обычно первым загрузочным устройством удобно ставить диск С. Кроме жестких дисков современные системы могут загружаться с CD-ROM.

В некоторых версиях BIOS последние 4 пункта могут находиться в разделе Boot.

Integrated Peripherals. Как правило, в материнскую плату встроен ряд контроллеров периферийных устройств: контроллер ТЕ, контроллер последовательных и параллельных портов, клавиатуры и пр. Иногда возникает необходимость отключения некоторых неиспользуемых устройств (в том числе интегрированных). В этом разделе обычно можно встретить следующие пункты:

     0nboard IDE-1 Controller — первый контроллер ТЕ-дисков;  0nboard IDE-2 Controller — второй контроллер ТЕ-дисков;

Практикум

    


USB keyboard support. Как известно, шина USB поддерживается средствами ОС. Таким образом, до загрузки Windows клавиатура работать не должна. Режим USB keyboard support позволяет BIOS самостоятельно, на этапе загрузки, обрабатывать события, поступающие от клавиатуры;

     0nboard Serial Рон 1/2. Этот параметр позволяет отключить порты СОМ1 и СОМ2;

     0nboard Parallel Рон — отключение порта LPT (принтера).

Тестирование компьютера. В состав операционной системы Windows входит целый ряд служебных программ и утилит, позволяющих определить конфигурацию компьютера, установить версии ОС и BIOS, а также выполнить тестирование отдельных устройств.

К их числу относятся:

     утилита Система (Настройка Панель управления);

     утилита Сведения о системе (Программы —» Стандартные Служебные);

     утилита Администрирование (Настройка —» Панель управления).


Задание 1

1.                    Определить тип и версию BIOS на вашем рабочем компьютере.

2.                    Установить порядок загрузки компьютера: CD-ROM, С.

З. Установить параметр ускоренной загрузки компьютера (отмена тройного тестирования памяти).

4.   Установить автоматическое включение цифровой клавиатуры при загрузке компьютера.

5.   Запретить доступ к загрузочной части жесткого диска (установить защиту от Воо&вирусов).

6.   Отключить порты СОМ и ГАРТ.

Задание 2

1.   Изучить возможности служебных программ и утилит компьютера.

Практические работы к главе 2

2.  


Пользуясь изученными утилитами, определить следующие характеристики компьютера:

Характеристика

Значение

Название видеокарты и объем видеопамяти

 

Количество жестких дисков, их объемы

 

Название звуковой карты

 

Название сетевой карты

 

Размер файла подкачки

 

Версия ОС

 

Версия mos

 

З. Понаблюдать за степенью загрузки процессора в различных состояниях и заполнить таблицу:

Действие

Процент загрузки процессора в момент выполнения действия

Закрыты все приложения

 

Запуск приложения MS Word

 

Запуск приложения Paint

 

Переключение в Word

 

Процесс набора произвольного текста

 

Переключение в Paint

 

Процесс рисования произвольного объекта

 

Закрытие обоих приложений

 

4. Проверить необходимость дефрагментации жесткого диска и, при необходимости, выполнить его дефрагментирование.

Практикум


Задание 3*

1.   Скачать из Интернета последнюю версию программы CPU-Z (для ее поиска воспользоваться любым поисковым сервером).

2.   Запустить программу CPU-Z, с ее помощью определить характеристики процессора на вашем рабочем компьютере и заполнить таблицу:

Характеристика

Значение

Название процессора

 

Ядро (core)

 

Тип разъема (socket)

 

Тактовая частота

 

Технологические нормы (в микронах)

 

Напряжение питания ядра

 

Практические работы к главе З «Программирование обработки информации»
Работа З. 1 . Программирование линейных алгоритмов

Задание

Для каждой вычислительной задачи составить программу, содержащую операторы ввода, вывода, присваивания.

Уровень 1

1.   Вычислить длину окружности и площадь круга одного и того же заданного радиуса R

2.   Вычислить расстояние между двумя точками с данными координатами на плоскости (хр У1) и (Ч, у».

Практические работы к главе З


З. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.

4.   Три сопротивления Т, R2, R3 соединены параллельно. Найти сопротивление всей цепи.

5.   Найти сумму членов арифметической прогрессии, если известны ее первый член, разность и число членов прогрессии.

б. Вычислить корни квадратного уравнения ах2 + bx + с — О с заданными коэффициентами а, Ь и с (предполагается, что а * О и что дискриминант уравнения неотрицателен).

7.    Найти площадь равнобедренной трапеции с основаниями а и Ь и углом при большем основании а.

Уровень 2

8.    Заданы координаты трех вершин треугольника (хр У1), (ха, у», (хз, уз). Найти его периметр и площадь.

9.    Найти произведение всех цифр заданного четырехзначного числа.

10.                       Вычислить площадь и периметр правильного ЛТ-угольника, описанного около окружности радиуса R (рассмотреть лг — целого типа, R — вещественного типа).


11.                       Дано натуральное число Т — длительность прошедшего времени в секундах. Вывести данное значение длительности в часах (НН), минутах (ММ) и секундах (SS) в следующей форме: НН ч мм мин ss с.

12.                       Дано действительное число R вида nnn.ddd (три цифровых разряда в целой и дробной частях). Поменять местами дробную и целую части числа и вывести полученное значение числа.

13.                       Составить программу перевода радианной меры угла в градусы, минуты и секунды.

14.                       С начала суток часовая стрелка повернулась на у градусов (О S у 360, у — вещественное число). Определить число полных часов и полных минут, прошедших с начала суток. Сформулировать и решить обратную задачу.

Уровень З

Практикум

15.                       Дан произвольный треугольник АВС, для которого определен следующий набор характерных параметров: а, Ь, с — стороны треугольника; а, Р, у — углы (в градусах); h — высота, опущенная на сторону с; S — площадь; Р — периметр треугольника. По трем заданным параметрам вычислить все остальные. Различные сочетания параметров определяют варианты заданий.

Замечание: входные (исходные) и выходные значения углов представить в градусной мере.


10) а, Ь, Р;

13) S, с, а;

232

в

11) а, h, а;                12) а, ь, у;

14) Ь, а, р;                  15) h, а, 7.


Работа 3.2. Программирование логических выражений

Задание

Для каждой задачи составить программу, выводящую значение TRUE, если указанное высказывание является истинным, и FALSE — в противном случае (использовать условный оператор нельзя).

Уровень 1

1.  Треугольник со сторонами а, Ь, с является равносторонним.

2.  Целое число лт является четным двузначным числом.

З. Треугольник со сторонами а, Ь, с является равнобедренным.

4.   Среди чисел а, Ь, с есть хотя бы одна пара взаимно противоположных чисел.

Практические работы к главе З

5.  


Данные числа х, у являются координатами точки, лежащей в первой координатной четверти.

6.   Данные числа с и d являются соответственно квадратом и кубом числа а.

7, Заданное натуральное число лт является двузначным и кратно К.

Уровень 2

8.   (хр У1) и (х2, У2) — координаты левой верхней и правой нижней вершин прямоугольника. Точка А(х, у) принадлежит данному прямоугольнику.

9.   Данное четырехзначное число читается одинаково слева направо и справа налево.

10.                     В заданном натуральном трехзначном числе лт имеется четная цифра.

11.                     Сумма каких-либо двух цифр заданного трехзначного натурального числа лг равна третьей цифре.

12.                     Сумма цифр заданного четырехзначного числа лт превосходит произведение цифр этого же числа на 1.

13.                     Сумма двух последних цифр заданного трехзначного числа лт меньше заданного К, а первая цифра больше 5.

Уровень З

14.                     Целая и дробная части заданного вещественного числа одинаковы.

15.                     Заданы координаты трех точек плоскости. Эти точки не лежат на одной прямой.

16.                     Первые две цифры в дробной части заданного вещественного числа совпадают с записью целой части этого числа.

17.                     Точка с координатами (х, у) принадлежит части плоскости, лежащей между прямыми у т, у = п (т < п).

18.                     Среди первых трех цифр из дробной части положительного вещественного числа есть нуль.

19.                     Шахматный король за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8).

20.                     Шахматный ферзь за один ход может переместиться с одного заданного поля на другое (каждое поле задано двумя координатами — целыми числами от 1 до 8).

 

Практикум


Работа 3.3. Программирование ветвящихся алгоритмов

Задание 1

Для каждой задачи составить программу с ветвящейся структурой, используя условный оператор IF.

Уровень 1

1.   Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то прямоугольный ли он.

2.   На плоскости ХОУ задана своими координатами точка А. Указать, где она расположена: на какой оси или в какой координатной четверти.

З. Грузовой автомобиль выехал из одного города в другой со скоростью 01 км/ч. Через t ч в этом же направлении выехал легковой автомобиль со скоростью км/ч. Составить программу, определяющую, догонит ли легковой автомобиль грузовой через t1 ч после своего выезда.

4.   Написать программу нахождения суммы большего и меньшего из З чисел.


5.   Написать программу, распознающую по длинам сторон среди всех треугольников прямоугольные. Если таковых нет, то вычислить величину угла С.

6.   Найти max{min(a, Ь), min(c,

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

Уровень 2

8.   Заданы размеры А, В прямоугольного отверстия и размеры х, у, кирпича. Определить, пройдет ли кирпич через отверстие.

9.   Два прямоугольника, расположенные в первом квадранте, со сторонами, параллельными осям координат, заданы координатами своих левого верхнего и правого нижнего углов. Для первого прямоугольника это точки (хр У1) и О), для второго — (хз, уз), (ха, О). Составить программу, определяющую, пересекаются ли данные прямоугольники, и вычисляющую площадь общей части, если они пересекаются.

Практические работы к главе З

 

235

10.                      В небоскребе этажей и всего один подъезд; на каждом этаже по З квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры М. На какой этаж должен доставить лифт пассажира?

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

12.                      Известно, что из четырех чисел ар 02, аз и а4 одно отлично от трех других, равных между собой; присвоить номер этого числа переменной п.

13.                      Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т. е. к результату большему, чем 32 767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.

Уровень З

14.                      Заданы координаты (на плоскости) вершин четырехугольника. Определить, является ли он: а) ромбом; б) параллелограммом; в) прямоугольником; г) квадратом.

15.                      Для двух треугольных пирамид, заданных ребрами, определить, площадь полной поверхности которой из них больше и на сколько.

16.                      Дана точка А(х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (хр щ), (х2, у», (хз, уз).

17.                      Написать программу, определяющую, будут ли прямые АIХ + Вту + (11 == О и А2х + В,ду + С2 О перпендикулярны. Если нет, то найти угол между ними.

18.                      Заданы координаты вершин прямоугольника: (хр щ), (х,д, у», (хз, уз), (ха, у4). Определить площадь части прямоугольника, расположенной в I координатной четверти.

Практикум

19.                     


Найти координаты точек пересечения прямой у = кх + Ь и окружности радиуса R с центром в начале координат. В каких координатных четвертях находятся точки пересечения? Если точек пересечения нет или прямая касается окружности, выдать соответствующее сообщение.

20.                      Дана точка А(х, у). Определить, принадлежит ли она прямоугольнику с вершинами в точках (хр Л), (х2, у,д), (хз, уз), (ха, У4)•

Задание 2

Задачи на определение принадлежности точки области

Для каждой задачи составить программу, содержащую ветвления и определяющую, принадлежит ли точка с координатами (Х, У) заштрихованной области.

Практические работы к главе З


TIPaKTVIKYM


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

!

 

 

 

 

 

 

 

 

 

I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

丨丨

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

丨丨

 

 

 

 

 

 

 

 

I

丨丨

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Практические работы к главе З

 

239

 


Задание З

Задачи на использование оператора выбора


Для каждой задачи составить программу с ветвящейся структурой, используя оператор выбора SELECT CASE.

Уровень 1

1.   Для каждой введенной цифры (0—9) вывести соответствующее ей название на английском языке (О zero, 1 опе, 2 — two )

2.   Составить программу, которая по данному числу (1—12) выводит название соответствующего ему месяца на английском языке.

З. Написать программу, которая по вводимому числу от 1 до 11 (номеру класса) выдает соответствующее сообщение «Привет, К-классник». Например, если К 1, «Привет, первоклассник»; при К 4: «Привет, четвероклассник».

4.   Составить программу, позволяющую получить словесное описание школьных отметок (1 — плохо, 2 — неудовлетворительно, З — удовлетворительно, 4 — хорошо, 5 — отлично).

5.   Написать программу, которая бы по введенному номеру единицы измерения (1 — дециметр, 2 километр, З — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдавала соответствующее значение длины отрезка в метрах.

б. Написать программу, которая бы по введенному номеру единицы измерения (1 килограмм, 2 миллиграмм, грамм, 4 — тонна, 5 — центнер) и массе М выдавала соответствующее значение массы в килограммах.

7.    Даны два действительных положительных числа х и у. Арифметические действия над числами пронумерованы (1 — сложение, 2 — вычитание, З — умножение, 4 — деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами.

Практические работы к главе З

8.   


Написать программу, которая по номеру дня недели (целому числу от 1 до 7) выдает в качестве результата расписание уроков в вашем классе в этот день.

Уровень 2

9.    Составить программу, которая по заданному году и номеру месяца определяет количество дней в этом месяце.

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

11.                       Пусть элементами прямоугольного равнобедренного треугольника являются: 1) катет а; 2) гипотенуза Ь; З) высота, опущенная из вершины прямого угла на гипотенузу h; 4) площадь S. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

12.                       В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю. (Справка: 1996 г. — год Крысы — начало очередного цикла.)

13.                       Для целого числа К от 1 до 99 напечатать фразу «Мне К лет», учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.

14.                       Написать программу, которая по введенному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то: 1 января — Новый год, 7 января — Рождество).

 

Практикум

15.                      


Дано натуральное число N. Если оно делится на 4, вывести на экран ответ лт = 4k (где К — соответствующее частное); если остаток от деления на 4 равен 1, лт — 4k + 1; если остаток от деления на 4 равен 2, лт = 4k + 2; если остаток от деления на 4 равен З, Лт 4k + З. Например, 12 = 4 • З, 22 = 4 • 5+ 2.

16.                       Пусть элементами равностороннего треугольника являются: 1) сторона а; 2) площадь S; З) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

Работа 3.4. Программирование циклических алгоритмов

Задание 1

Циклы с заданным числом повторений

Вычислить значение суммы или произведения числовой последовательности.

Уровень 1

1. Дано натуральное число N. Вычислить:

2. Дано натуральное число N. Вычислить:

                 1 1 1    1

                    3 5 7 2N+1

3.  Дано натуральное число N. Вычислить:

4.  Дано натуральное число N. Вычислить: 1 1          1 sin1 sin1 + sin2       sin1 + sin2 + ... + sin

5.  Дано натуральное число N. Вычислить произведение первых лт сомножителей:

                          3 5 7 2N+1

Практические работы к главе З

 

6.     


Дано натуральное п. Вычислить:

7.      Вычислить:

(1 + sinO,1)(1 + sinO,2) • (1 + sin10).

Уровень 2

8.      Дано натуральное число N. Вычислить:

cos1 cos1 +COS2 cos1 +cos 2 + ... + cos sin1 sin1 + sin2 sin1 + sin2+... + sinN

9.      Дано действительное число х. Вычислить:

3! 5! 7! 9! 11! 13! •

10. Даны натуральное п, действительное х. Вычислить:


12. Дано натуральное п. Вычислить:

13. Дано натуральное число п. Вычислить:

                               1       1

                                              1-—                           , где п>2.

                                              22          32

14. Вычислить по схеме Горнера:

=

15. Числа Фибоначчи (Л) определяются формулами

                                         п =fn-1 +        при п = 2, 3, ...

Для данного значения р определить fp.

Практикум

16.


Даны натуральные числа п и К. Вычислить:

Задание 2

Итерационные циклы

Найти наименьший номер последовательности, заданной рекуррентной формулой, для которого выполняется условие lan — an_ll   Е, где Е — малая величина. Вывести на экран этот номер и все элементы ар где i = 1, 2       П.

Уровень 2

2

2ап_1

         1                                ап_1 + ап-2              1 , аг2

Задание З

Циклы при обработке целых чисел

Решить поставленные задачи с помощью циклических алгоритмов (простых и вложенных), используя операции целочисленной арифметики.

Уровень 2

1.  Натуральные числа а, Ь, с называются числами Пифагора, если выполняется условие а2 + 62 с2 . Напечатать все числа Пифагора, меньшие N.

2.  Найти наибольшую и наименьшую цифры в записи данного натурального числа.

З. Дано натуральное число N. Найти и вывести все числа в интервале от 1 до лт — 1, у которых сумма всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет».

Практические работы к главе З


Пример: лт 44. Числа: 17, 26, 35.

4.   Дано натуральное число дт . Найти и вывести все числа в интервале от 1 до лт — 1, у которых произведение всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет».

Пример: лт 44. Числа: 18, 24.

5.   Дано натуральное число лт (N > 9). Определить количество нулей, идущих подряд в младших разрядах данного числа.

Пример: лт — 1020000. Количество нулей равно четырем.

6.   Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.

7.   Дано натуральное число М Получить новое число М, которое образуется из числа лт путем замены последней цифры на наименьшую цифру в записи числа N. Пример: 128452, М 128451.

8.   Дано натуральное число дт. Получить новое число М, которое образуется из числа лт путем замены последней цифры на наибольшую цифру в записи числа N. Пример: Лт — 128452, М 128458.

Уровень З

9.   Даны два натуральных числа т и п. Проверить, есть ли в записи числа т цифры, одинаковые с цифрами в записи числа п.

10.                      Дано натуральное число лт (N > 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах.

Пример: лт = 10025000. Количество нулей равно двум.

11.                      Натуральное число М называется совершенным, если оно равно сумме всех своих делителей, включая 1, но исключая себя. Напечатать все совершенные числа, меньшие заданного числа N.

12.                      Дано целое п > 2. Напечатать все простые числа из диапазона [2, п].

13.                      Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наименьшее значение.

Практикум


Пример: лт = 4548. Количество цифр с наименьшим значением равно двум (две цифры 4).

14.                      Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наибольшее значение.

Пример: лт = 1808. Количество цифр с наибольшим значением равно двум (две цифры 8).

15.                      Палиндром — это сочетания символов, которые читаются одинаково слева направо и справа налево. Например, числа 4884, 121 являются палиндромами. Составить программу, которая определяет, является ли заданное натуральное число палиндромом.

16.                      Дано натуральное число п. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.

17.                      Дано натуральное число п. Переставить его цифры так, чтобы образовалось наименьшее число, записанное теми же цифрами.


Работа 3.5. Программирование с использованием подпрограмм

Задание 1

Для решения всех задач сделать два варианта программы: с реализацией указанной подпрограммы в виде функции и в виде процедуры.

Уровень 1

1.   Составить программу нахождения наибольшего общего делителя (НОД) и наименьшего общего кратного (НОК) двух нату-

ральных чисел НОК(А, В) = Использовать подпрограмНОД(А, В) му алгоритма Евклида для определения НОД.

2.   Вычислить площадь правильного шестиугольника со стороной а, используя подпрограмму вычисления площади треугольника.

З. Даны две дроби — и — (А, В, С, D — натуральные числа).

Практические работы к главе З

 


Составить программу деления дроби на дробь. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

4.                    Даны две дроби — и — (А, В, С, D — натуральные числа).

Составить программу умножения дроби на дробь. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

5.                    Даны две дроби — и — (А, В, С, D — натуральные числа).

Составить программу вычитания из первой дроби второй. Ответ должен быть несократимой дробью. Использовать подпрограмму алгоритма Евклида для определения НОД.

6.                    Написать программу вычисления суммы 1 -е— + — + ... + — для заданного числа п. Результат представить в виде несократимой

дроби (р, (1 — натуральные). Использовать подпрограммы алго-

(1 ритма Евклида для определения НОД и сложения двух простых дробей.

7.                    Даны числа Х, У, Z, Т — длины сторон четырехугольника. Вычислить его площадь, если угол между сторонами длиной Х и У — прямой. Использовать две подпрограммы для вычисления площадей: прямоугольного треугольника и прямоугольника.

Задание 2

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

Уровень 2

1.   Дано простое число. Найти следующее за ним простое число.

2.   Для заданного натурального числа п найти наименьший нечетный натуральный делитель К (К 1).

3.   Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке (например, дано число 156, нужно получить 651).

Практикум

4.  


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

5.   Имеется часть катушки с автобусными билетами. Номер билета шестизначный. Составить программу, определяющую количество счастливых билетов на катушке, если меньший номер билета — N, больший — М (билет является счастливым, если сумма первых трех его цифр равна сумме последних трех).

6.   Из заданного числа вычли сумму его цифр. Из результата вновь вычли сумму его цифр и т. д. Через сколько таких действиЙ получится нуль?

7.   На отрезке [100, N] (2 10 < лт 231) найти количество чисел, составленных из цифр а, Ь, с.

8.   Найти все натуральные п-значные числа, цифры в которых образуют строго возрастающую последовательность (например, 1234, 5789).

Уровень З

9.   Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, 41 и 43). Напечатать все пары «близнецов» из отрезка [п, 2n], где п — заданное натуральное число, большее 2.

10.                     Дано четное число п > 2. Проверить для него гипотезу Гольдбаха: каждое четное п представляется в виде суммы двух простых чисел.

11.                     Составить программу разложения данного натурального числа на простые множители. Например, 200 = 23 • 52

12.                     Дано натуральное число п. Найти все меньшие п числа Мерсенна. (Простое число называется числом Мерсенна, если оно может быть представлено в виде 2Р—1, где р — тоже простое число. Например, 31 = 2 5 — 1 — число Мерсенна.)

13.                     Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей (кроме его самого) другого (например, числа 220 и 284). Найти все пары «дружественных» чисел, которые не больше данного числа дт.

14.                     Натуральное число, в записи которого п цифр, называется числом Армстронга, если сумма его цифр, возведенная в степень п, равна самому числу. Найти все числа Армстронга от 1 до К.

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

Практические работы к главе З

16.                    


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

17 Дано натуральное число п > 1. Определить длину периода десятичной записи дроби 1 / п.

Работа 3.6. Программирование обработки одномерных массивов

Задание

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

Уровень 1

1.   Дана последовательность действительных чисел (11 , 02 , ап. Выяснить, будет ли она возрастающей.

2.   Дан массив из лт действительных чисел. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.


З. Даны действительные числа ар Ч, , а п. Поменять местами первый наибольший элемент с последним наименьшим элементом.

4.   В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных местах.

5.   Задана последовательность {Xi} из лт вещественных чисел. Вычислить последовательность {Si} по формуле:

(щ -му

где М — среднее арифметическое значение последовательности Х.

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

7.   Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные элементы.

Практикум

8.  


Дан массив X[N] целых чисел. Не используя других массивов, переставить его элементы в обратном порядке.

Уровень 2

9.   Задана последовательность из вещественных чисел. Вычислить сумму чисел, порядковые номера которых являются простыми числами.

10.                      Последовательность (11 , (12 , , ап состоит из нулей и единиц. Поместить в начало этой последовательности все нули, а затем все единицы.

11.                      Даны действительные числа а а , а?п. Найти:

тах@1 + а2п а +ап+1).

12.                      Дана последовательность действительных чисел а1 S

S ап Вставить действительное число Ь в нее так, чтобы последовательность осталась неубывающей.

13.                      Дана последовательность целых чисел (11 , (12, . , а п. Указать пары чисел ар а., таких что ai + а. т, где т — заданное целое число.

14.                      Даны координаты п (п S 30) точек на плоскости: („№1 , У1),

(Хп, Уп). Найти номера пары точек, расстояние между которыми наибольшее (считать, что такая пара единственная).

15.                      Дан массив, состоящий из п натуральных чисел. Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру К.

16.                      Дан массив целых чисел. Найти в этом массиве минимальный элемент т и максимальный элемент М. Получить в порядке возрастания все целые числа из интервала (т; М), которые не входят в данный массив.

17.                      Даны две последовательности ар Ч , . , ап И 61, 62' (т < п). В каждой из них значения элементов различны. Верно ли, что все элементы второй последовательности входят в первую последовательность?

18.                      Вывести значения и номера наибольшего, наименьшего и наименее удаленного от среднего арифметического значения элементов данной последовательности вещественных чисел.

Уровень 3

19.                      Сформировать массив простых чисел, не больших заданного натурального числа N.

Практические работы к главе З

 

251

20.                      Сформировать массив простых множителей заданного числа. 21. В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования. Дополнительный массив заводить не разрешается.

22. В одномерном массиве с четным количеством элементов (2N) находятся координаты лт точек плоскости. Они располагаются в следующем порядке: хр У1, х,д, у,2, хз, уз, и т. д. Определить:

а) минимальный радиус окружности с центром в начале координат, которая содержит все точки;

б) внутренний и внешний радиусы кольца с центром в начале координат, которое содержит все точки;

в) номера точек, которые могут являться вершинами квадрата;

г) номера точек, которые могут являться вершинами равнобедренного треугольника;

д) номера самых удаленных и наименее удаленных друг от друга точек;

е) три точки, которые являются вершинами треугольника, для которого разность точек вне его и внутри является минимальной.

23.                       Дана последовательность целых чисел. Найти количество различных чисел в этой последовательности.

24.                       На плоскости п точек заданы своими координатами, и также дана окружность радиуса R с центром в начале координат. Указать множество всех треугольников с вершинами в заданных точках, пересекающихся с окружностью; множество всех треугольников, содержащихся внутри окружности.

25.                       Разделить массив на две части, поместив в первую элементы, большие среднего арифметического элементов массива, а во вторую — меньшие (части не сортировать).

26.                       Даны две последовательности а.2 b1 S 62 S ... S bm. Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей.

Примечание. Дополнительный массив не использовать.

Практикум

27.                      


Сортировка вставками. Дана последовательность чисел ар а.» а . Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть ар а,г, — упорядоченная по неубыванию последовательность, т. е. а1 S S Берется следующее число ан 1 и вставляется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до п не будут перебраны.

Примечание. Место помещения очередного элемента в отсортированную часть найти с помощью двоичного поиска. Двоичный поиск оформить в виде отдельной функции.

28.                       Алгоритм сортировки фон Неймана. Упорядочить массив 01 , 02 , , ап по неубыванию с помощью алгоритма сортировки слияниями:

1)  каждая пара соседних элементов сливается в одну группу из двух элементов (последняя группа может состоять из одного элемента);

2)  каждая пара соседних двухэлементных групп сливается в одну четырехэлементную группу и т. д.

При каждом слиянии новая укрупненная группа упорядочивается.

29. Шейкер-сортировка. Алгоритм «пузырьковой» сортировки легко улучшить. Разумно запомнить, производился ли на данном проходе какой-либо обмен. Если нет, то алгоритм можно закончить. Еще одно улучшение заключается в том, что периодически меняется направление сортировки, которое борется с некоторой асимметрией «пузырькового» метода. Написать программу, реализующую данный улучшенный алгоритм.


Работа 3.7. Программирование обработки двумерных массивов

Задание

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

Уровень 1

1.   Вычислить сумму и число положительных элементов матрицы A[N, М, находящихся над главной диагональю.

2.   Дана целая квадратная матрица П-го порядка. Определить, является ли она магическим квадратом, т. е. такой матрицей, в которой суммы элементов во всех строках и столбцах одинаковы.

З. Определить, является ли заданная целая квадратная матрица п-го порядка симметричной (относительно главной диагонали).

Практические работы к главе З

4.   


Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали в этой же строке.

5.    Упорядочить по возрастанию элементы каждой строки матрицы размером п х т.

6.    Задана квадратная матрица. Получить транспонированную матрицу (перевернутую относительно главной диагонали).

7.    Квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать по строкам.

8.    Задана матрица порядка п и число К. Разделить элементы К-й строки на диагональный элемент, расположенный в этой строке.

9.    Для целочисленной квадратной матрицы найти число элементов, кратных К, и наибольший из этих элементов.

10.                       Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.

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

12.                       Дана действительная матрица размером п х т. Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.

13.                       Определить наименьший элемент каждой четной строки матрицы А[М, М.

Уровень 2

14.                       Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером т.

15.                       Определить номера строк матрицы R[M, М, хотя бы один элемент которых равен с, и элементы этих строк умножить на d.

16.                       Дана матрица B[N, М]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их с первым и последним элементами строки соответственно.

17.                       Элемент матрицы назовем сеДловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером п х т напечатать индексы всех ее седловых точек.

Практикум

18.                      


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

19.                       Дана квадратная матрица A[N, Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную матрицу в общепринятом виде.

20.                       Дана действительная матрица размером п х т, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.

21.                       Дана действительная квадратная матрица порядка лт (N нечетное), все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей.

22.                       Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, просуммировав элементы одномерного массива. Преобразовать исходную матрицу по правилу: четные строки разделить на полученное значение, нечетные оставить без изменения.

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

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

25.                       Расположить столбцы матрицы D[M, N] в порядке возрастания элементов К-й строки (1 S S М).

Уровень 3

26.                       Среди столбцов заданной целочисленной матрицы, содерэкащих только такие элементы, которые по модулю не больше 10, найти столбец с минимальным произведением элементов.

27.                       Для заданной квадратной матрицы найти такие К, что К-я строка матрицы совпадает с К-м столбцом.

28.                      


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

29.                       Составить программу, которая заполняет квадратную матрицу порядка п натуральными числами 1, 2, З п2, записывая их в нее «по спирали».

Например, для п — 5 получаем следующую матрицу:

1

2

з

4 5

16

17

18

19 6

15

24

25

   7

14

23

22

21 8

14

12

11

10 9

30.                       Среди тех строк целочисленной матрицы, которые содержат только нечетные элементы, найти строку с максимальной суммой модулей элементов.

31.                       Подсчитать количество строк заданной целочисленной матрицы лг х N, являющихся перестановкой чисел 1, 2, (т. е. содержащих каждое из чисел 1, 2, ..., лт ровно один раз).


Работа 3.8. Программирование обработки строк символов

Задание

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

Уровень 1

1.  Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.

2.  Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы «Ь».

З. В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.

Практикум

4.  


Дана строка. Преобразовать ее, заменив звездочками все двоеточия (:), встречающиеся среди первых п/2 символов, и заменив точками все восклицательные знаки, встречающиеся среди символов, стоящих после 71/2 символов. Здесь п — длина строки.

5.   В строке удалить символ двоеточие (:) и подсчитать количество удаленных символов.

6.   Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобки. Вывести на экран все символы, расположенные внутри этих скобок.

7.   Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слов.

8.   Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран все слова, содержащие три буквы. Если таких слов нет, то вывести сообщение об этом.

9.   Дана строка. Преобразовать ее, удалив каждый символ * и повторив дважды подряд каждый символ, отличный от

10.                      Дана строка текста. Подсчитать количество букв «К» в последнем слове.

11.                      Определить, сколько раз в тексте встречается заданное слово.

Уровень 2

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

13.                      Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран.

14.                      Дана строка. Подсчитать самую длинную последовательность подряд идущих букв «а».

15.                      Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд.

16.                      Дана строка. Указать те слова, которые содержат хотя бы одну букву «К».

17.                      Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

18.                      Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т. е. является ли оно палиндромом).

19.                      В записке слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение.

Практические работы к главе З

20.                     


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

21.                      Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке и правильно ли они расставлены, т. е. для каждой открывающей скобки есть соответствующая закрывающая скобка.

Уровень З

22.                      Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте.

23.                      Расстояние межДу Двумя словами равной длины это количество позиций, в которых эти слова различаются. В заданном предложении найти пару слов заданной длины с максимальным расстоянием.

24.                      Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы.

Замечание. Текст может быть как на русском, так и на анг-

25.                      Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он:

 стоит в начале строки;  стоит в конце строки;  следует за пробелом.

26.                      Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.

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

28.                      а) Дана строка-предложение. Зашифровать ее, поместив

вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах.

(Например, строка “Программа“ превратится в ”ргамамроП” . )

Практикум


б) Запрограммировать решение обратной задачи (расшифровки).

Работа 3.9. Программирование обработки записей

Задание

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

Уровень 1

1.  Из данного списка спортсменов получить данные о тех из них, кто занимается плаванием. Указать возраст, сколько лет они занимаются спортом.

2.  Из ассортимента конфет, выпускаемых кондитерской фабрикой, выбрать те, стоимость которых от 100 до 200 руб. за 1 кг. Указать срок их годности и номера магазинов, в которых они имеются в продаже.


З. Получить список учеников музыкальной школы, которые учатся играть на скрипке. Указать также, сколько лет они занимаются музыкой и принимали ли участие в каких-либо конкурсах.

4.   Получить фамилии детей данного детского сада, которые родились в указанном месяце; вывести также их возраст и группу.

5.   Получить список тех учителей школы, которые преподают математику и информатику, указать стаж их работы и недельную нагрузку.

6.   Получить анкетные данные учеников, участвовавших в олимпиаде по информатике и заработавших не менее 30 баллов.

7.   Даны результаты переписи населения. Получить фамилии, имена и подсчитать общее число жителей, родившихся после 1990 года.

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

9.  


Сведения о сотрудниках включают: фамилию, имя, отчество, дату рождения, полученное образование, домашний адрес, профессию. Получить ФИО (фамилию, имя, отчество) всех сотрудников с высшим образованием. Выдать сведения о сотрудниках, имеющих данную профессию и родившихся не раньше указанной даты.

10.                      При поступлении в университет лица, получившие оценку «неудовлетворительно» на первом экзамене, ко второму экзамену не допускаются. Считая фамилии абитуриентов и их оценки после первого экзамена исходными данными, составить список абитуриентов, допущенных ко второму экзамену.

Уровень 2

11.                      Имеются сведения о датах рождения сотрудников учреждения.

а) Определить самого молодого сотрудника.

б) Определить самого старшего сотрудника.

в) Получить список всех сотрудников, родившихся весной.

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

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

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

15.                      Имеются сведения об учениках класса. Определить средний вес мальчиков и средний рост девочек. Кто из учеников класса самый высокий?

16.                      Составить программу назначения стипендии студентам по результатам сессии, используя следующие правила:

1) если все оценки 5, назначается повышенная стипендия; 2) если оценки 4 и 5, назначается обычная стипендия; З) если есть оценка З, стипендия не назначается.

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

Практикум

17.                     


В таблице хранятся следующие данные об учениках: фамилия, имя, отчество, рост, вес. Вычислить средний рост учеников, найти самого высокого и самого низкого учеников. Сколько учеников могут заниматься в баскетбольной секции, если рост баскетболиста должен быть больше 170 см?

18.                      В столовой предлагаются лт комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо?

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

20.                      „'V учеников проходили тестирование по М темам какого-либо предмета. Сколько очков набрал каждый ученик по всем темам? Вычислить средний балл, полученный учениками, и разницу между лучшим результатом и средним баллом.

21.                      Сведения о результатах сессии содержат следующую информацию: название предмета, номер группы, номер зачетной книжки, фамилия, имя, отчество студента, его оценки по итогам экзаменов. Получить отдельные списки: отличников, хорошистов, троечников и двоечников.

22.                      На аптечном складе хранятся лекарства. Сведения о лекарствах содержатся в специальной ведомости: наименование лекарственного препарата; количество; цена; срок хранения (в месяцах). Выяснить, сколько стоит самый дорогой и самый дешевый препарат; сколько препаратов хранится на складе; какие препараты имеют срок хранения более З месяцев; сколько стоят все препараты, хранящиеся на складе.

23.                      Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше п месяцев, то она уценивается в 2 раза, а если срок хранения превысил т (т < п) месяцев, но не достиг п, то — в 1,5 раза. Получить ведомость уценки товаров, которая должна содержать следующую информацию: наименование товара, количество товара, цена товара до уценки, срок хранения товара, цена товара после уценки, общая стоимость товара до уценки, общая стоимость товара после уценки. Выяснить максимальный и минимальный сроки хранения товаров на складе; максимальную и минимальную цену товаров до уценки и после уценки.

24.                     


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

а) Найти пассажира, багаж которого имеет средний вес одной вещи, отличающийся не более чем на т кг от общего среднего веса одной вещи (для всех пассажиров).

б) Найти число пассажиров, имеющих более двух вещей, и число пассажиров, количество вещей которых превосходит среднее число вещей на одного пассажира.

в) Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее т кг. Если такой пассажир есть, то вывести его фамилию и вес багажа.

25.                      Имеются сведения о книгах, содержащихся в библиотеке. Сведения о каждой из книг — это фамилия автора, название и год издания.

а) Получить название книг данного автора, изданных с 1960 г.

б) Определить, имеется ли книга, содержащая в своем название слово «информатика». Вывести сведения обо всех таких книгах.


в) Вывести сведения о книгах, которые имеют несколько изданий (автор и названия повторяются, а годы издания разные).

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

а) Получить названия игрушек, цена которых не превышает 500 руб. и которые подходят детям 5 лет.

б) Определить стоимость самого дорогого конструктора.

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

г) Получить названия игрушек, которые подходят детям как четырех лет, так и десяти лет.

д) Получить сведения о том, можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку трех лет.

е) Получить название самой дешевой игрушки.

ж) Получить название самой дорогой игрушки для детей до четырех лет.

Практикум


з) Получить названия игрушек для детей четырех-пяти лет.

и) Получить название самой дешевой игрушки, подходящей детям двух-трех лет.

к) Определить стоимость самой дорогой куклы.

л) Определить стоимости всех кукол для детей шести лет.

м) Для детей какого возраста предназначается конструктор?

н) Для детей какого возраста предназначены кубики? Указать их среднюю стоимость.

27. Имеются сведения о программах телепередач на неделю: день недели, время, канал, вид и название телепередачи.

а) Получить названия телепередач, которые идут в указанный день в указанный промежуток времени.

б) Получить названия телепередач, которые идут в указанный день на указанном канале.

в) Получить информацию об указанном фильме. Если он отсутствует в телепрограмме, то вывести на экран сообщение «Такой передачи на данной неделе нет».

г) На каком канале и в какое время будет транслироваться развлекательная передача «Поле чудес» ?

д) Выяснить, есть ли передача, транслирующаяся больше одного раза в одно и то же время. Если есть, то какая?

е) Получить названия телепередач, транслирующихся в указанное время на разных каналах.

ж) Получить название самой продолжительной передачи, которая идет в понедельник.

з) Получить информацию на каждый день недели о передаче, которая завершает эфир.

28. Имеются сведения о людях, которые ищут работу. Указываются специальность, опыт работы, образование, пол, возраст.

а) Подобрать кандидатов на должность врача с опытом работы не менее пяти лет.

б) Найти работников с высшим экономическим образованием не старше 35 лет.

в) Найти работников, имеющих опыт работы в сфере торговли.

г) Получить полную информацию обо всех женщинах, возраст которых от 20 до 40 лет.

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

е) Выяснить, кого в базе данных больше с высшим образованием — женщин или мужчин.

Ответы к заданиям практических работ


ж) Найти п самых молодых работников.

Ответы к заданиям практических работ

Работа 1.1. Шифрование данных

Задание 4. Цезарь.

Задание 10. Правило шифрования: перед каждой буквой слова дописывается еще одна буква. Исходное слово:

а) энциклопедия;

б) королевство.

Задание 11. Согласно ключу, буква «р» заменяется на «а»

— на «р»), «д» — на «е» и т. д. Буквы, не указанные в ключе, не изменяются.

а) рибонуклеиновая кислота;

б) телефонный разговор.

Работа 1.2. Измерение информации

Номер задания

2

з

4

5

Ответ

З бита

32 ученика

2 бита

12 учеников

Номер задания

6

7

8

9

Ответ

115 файлов

35 битов

6 битов

25 вопросов

Номер задания

11

12

13

14

Ответ

30 секунд

16 символов

84 бита

Да, поместится

Номер задания

15

16

17

 

Ответ

32 символа

4 и 32 символа

9 битов

х— 17, у — 7

Работа 1.3. Представление чисел

Задание З. а) в четверичной; б) в пятеричной; в) в шестеричной.

Задание 5. а) 225; в) 833; д) 58394,07031.

Задание 6. а)11О1О11ООО2, 15308, 35816;

г) 11001001000112, 144438, 192316.

Ответы к заданиям практических работ


Задание 7. а) 10101,12, 25 48 ;

в) 1010100110,0101012, 1246,252388.

Задание 11*. а) 01000000 10000000 00000000 00000000;

г) 01001100 11011000 00000001 10011001.

Работа 1.5. Представление изображения и звука

Задание 10. 3,66 Мб.

Задание 11. 2 12 цветов.

Задание 12. 77 Кб.

Задание 13. 256 ООО пикселей (например, 640 х 400).

Задание 14. 10 страниц.

Задание 15. 128 цветов.

Задание 16. Примерно 25 Мб.

Задание 18. 22,720 кгц.

Задание 19. 16 битов.

Задание 20. Примерно 2 минуты.