Тею. Шеина
ЕИ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
![]() |
Глава 2. Информационные процессы .53
S 7. Хранение информации . |
|
S 8. Передача информации |
|
S 9. Обработка информации и
алгоритмы |
|
S 10. Автоматическая
обработка информации . |
|
S 11. Информационные
процессы в компьютере . |
|
Глава З. Программирование обработки информации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 |
|
. 142 |
|
. 150 |
S 23.Вспомогательные
алгоритмы и подпрограммы . |
. 155 |
24.Массивы |
. 163 |
S 19.
S 25.Организация ввода и вывода данных
с использованием файлов. 169
S 26.Типовые задачи обработки массивов .. 175
![]() |
S 28.Строки символов185
S 29.Комбинированный тип данных . . . . . . . .190
Практикум197
Практические работы к главе 1
«Информация»197 Практические работы к главе 2
«Информационные процессы »
. 215 Практические работы к главе З
«Программирование обработки информации »
231
Ответы к заданиям практических работ
. .263
Что изучается в курсе информатики для 10—11 классов
![]() |
|||
![]() |
Термин «информатика» может употребляться в двух смыслах:
информатика
как научная область, предметом изучения которой являются информация и
информационные процессы; в которой осуществляется изобретение и создание новых
средств работы с информацией;
информатика
как практическая область деятельности людей, связанная с применением
компьютеров для работы с информацией.
Как современная техника немыслима без открытий теоретической физики, так и развитие информатики и информационных технологий невозможно без теории информации, теории алгоритмов и целого ряда других теорий в области кибернетики, лингвистики, семиотики, системологии и прочих наук.
В соответствии с современным пониманием, в информатике можно выделить четыре части:
1) теоретическая информатика;
2) средства информатизации;
З) информационные технологии; 4) социальная информатика.
Теоретическая информатика — это научная область, предмет изучения которой — информация и информационные процессы. Как любая фундаментальная наука, теоретическая информатика раскрывает законы и принципы в своей предметной области.
|
Введение |
![]() |
В последние годы в информатике сформировалось новое
направление, которое называют социальной информатикой. Его появление связано с
тем, что широкое внедрение в жизнь компьютерных технологий и современных
средств информационных коммуникаций (Интернета, сотовой связи) оказывает всё
более сильное влияние на общество в целом и на
каждого отдельного человека. Общественное развитие движется к своей новой
ступени — к информационному обществу.
Предметная область современной информатики очень велика и разнообразна. Как известно, нельзя объять необъятное. И наш курс затронет лишь часть тем и задач информатики. Вопросы,
которые мы с вами будем изучать, относятся к четырем важнейшим понятиям информатики:
1) информационные процессы;
2) информационные системы; З) информационные модели;
4) информационные технологии.
Правила техники безопасности и гигиены при работе на персональном компьютере
В наши дни персональный компьютер — неотъемлемая часть обеспечения работы, учебы и досуга. Проводя за ним долгие часы, мы не склонны задумываться, что перед нами не только бесценный помощник, но и потенциальный источник повышенной опасности. Этой опасности можно избежать, если соблюдать несложные правила.
Введение |
|
![]() |
• вскрывать корпус компьютера, не отключенного от электрической сети;
•
использовать некачественные или изношенные провода, электрические
розетки, удлинители и иные вспомогательные электрические аксессуары; располагать
электрические провода таким образом, что на них можно наступить при ходьбе или
случайно задеть телом при работе за компьютером.
Следует также знать, что на отдельных элементах компьютера (например, мониторах некоторых типов, источниках бесперебойного питания) высокое напряжение может сохраняться и некоторое время после отключения компьютера от сети.
Компьютер является и потенциальным источником пожарной опасности. Положенные на системный блок или источник питания листы бумаги, особенно если они закрывают вентиляционные отверстия, могут воспламениться (или привести к выходу из строя компьютера за счет перегрева). В вентиляционных отверстиях узлов компьютера неизбежно скапливается пыль, и это тоже не способствует его качественной работе. Эту пыль надо хотя бы раз в год удалять с помощью пылесоса (особенно из системного блока, не вскрывая его).
Давайте не будем путать: из того, что вы умеете программировать, инсталлировать и удалять программы, создавать презентации, общаться в Интернете и т. д., вовсе не следует, что вы являетесь квалифицированным специалистом по сборке-разборке компьютера. От правильной самооценки в этих вопросах зависит ваше здоровье (и даже жизнь).
|
Введение |
![]() |
Обсудим некоторые проблемы в этой сфере детальнее.
Электромагнитные излучения, сопровождающие работу системного блока, монитора и других узлов компьютера, традиционно рассматриваются как первостепенные источники опасности для человека. Несмотря на то что современные персональные компьютеры в этом отношении гораздо менее опасны, чем их прародители, эта угроза сохраняется. Современные жидкокристаллические мониторы практически не дают опасного излучения, в отличие от боковых и задних стенок системного блока, источников бесперебойного питания, и поэтому не следует ставить их вплотную к пользователю. В компьютерном классе, где стоит несколько компьютеров, системный блок соседнего компьютера не должен задней стенкой упираться в человека — на этот счет существуют строгие правила, как расставлять компьютеры.
Вредное влияние на зрение, оказываемое монитором, можно
уменьшить как за счет высокого качества монитора, так и путем периодического
выполнения несложных упражнений для глаз. Монитор должен удовлетворять
международным стандартам безопасности, что фиксируется в сопроводительной
документации. На него не должны падать блики от
источников света; расстояние от экрана монитора до глаз пользователя должно
составлять от 50 до 70 см. Не надо стремиться отодвинуть монитор как можно
дальше, опасаясь вредных излучений, потому что для глаза важен также угол
обзора наиболее характерных объектов. Оптимально размещение монитора на
расстоянии примерно полутора размеров диагонали экрана. Важным параметром
является частота кадров — она должна быть не менее 85 Гц. Периодически,
почувствовав утомление зрения, необходимо сделать перерыв, отвести взгляд от
экрана и сфокусировать его на удаленных предметах. Вредное влияние на зрение
оказывает и недостаточная освещенность как помещения в целом, так и рабочего
места в частности.
|
э. |
![]() |
И наконец, нельзя не сказать о вредном влиянии на психику, наблюдаемом у некоторых пользователей персональных компьютеров, число которых, к сожалению, возрастает. Компьютерная зависимость, проявляющаяся в том, что люди (прежде всего молодые) теряют интерес ко всему, кроме компьютерных игр и/или общения в Интернете, по классификации Всемирной организации здравоохранения отнесена к опасным психическим расстройствам. Эти люди постепенно теряют связь с действительностью и начинают жить в воображаемом мире. «Техника безопасности» здесь состоит в самоконтроле и контроле со стороны окружающих, помогающих вовремя оторваться от виртуального мира и вернуться в мир реальный.
Закончим этот обзор на оптимистичной ноте. Компьютеры и информационные технологии стали одним из величайших приобретений человечества за всё время развития науки и техники. Увы, практически любое техническое приобретение имеет и негативные стороны, но при соблюдении определенных правил можно минимизировать вредные последствия, и они несопоставимы с теми возможностями, которые компьютерная техника дала человечеству.
В работе с книгой вам помогут навигационные значки:
важное утверждение или определение.
— вопросы и задания к параграфу.
— задания для подготовки к итоговой аттестации.
— практические работы на компьютере.
|
Введение |
![]() |
http://fcior.edu.ru/catalog/meta/4/mc/disciplineYo 2000/ mi/4.06/p/page.html, где ресурсы размещены в алфавитном порядке, согласно названиям учебных тем.
Проектное или исследовательское задание.
В ходе выполнения проекта (исследования)
определите вид, в котором будут представлены его результаты. Можно выбрать один
(или несколько) из следующих вариантов:
подготовить набор полезных ссылок с
использованием мтеЬ-ресурсов;
подготовить небольшое
выступление с использованием презентации (5—7 мин);
оформить доклад и
поместить его на сайт школьной конференции;
подтвердить полученные
результаты расчетами или графиками (диаграммами);
подготовить
видеоролик;
разместить материалы проекта
(исследования) в коллекции обучающих модулей по предмету на сайте школы.
Глава 1
Информация
Наверное, самый сложный вопрос в информатике — это «Что такое информация?». На него нет однозначного ответа. Смысл этого понятия зависит от контекста (содержания разговора, текста), в котором оно употребляется.
В курсе информатики основной школы информация
рассматривалась в разных контекстах. С позиции человека, информация это
содержание сообщений, это самые разнообразные сведения, которые человек
получает из окружающего мира через свои органы чувств. Из совокупности
получаемой человеком информации формируются его знания об окружающем мире и о
себе самом.
![]() |
«информация» отождествляется с понятием «данные».
В Толковом словаре В.
И. Даля нет слова «информация». Термин «информация» начал широко употребляться
с середины ХХ века. В наибольшей степени понятие информации обязано своим
распространением двум научным направлениям: теории связи и кибернетике. Автор
теории связи Клод Шеннон, анализируя технические системы связи: телеграф,
телефон, радио, рассматривал их как системы переДачи информации. В таких
системах информация передается в виде последовательностей сигналов:
электрических или электромагнитных. Развитие теории связи послужило созданию
теории информации, решающей проблему измерения информации.
Основатель кибернетики Норберт Винер анализировал разнообразные процессы управления в живых организмах и в технических системах. Процессы управления рассматриваются в кибернетике как информационные процессы. Информация в системах управления циркулирует в виДе сигналов, передаваемых по информационным каналам.
|
Информация |
![]() |
В другой
биологической науке
генетике используется понятие
наследственной информации, заложенной в структуре молекул ДНК, присутствующих в
ядрах клеток живых организмов (растений, животных). Генетика доказала, что эта
структура является своеобразным кодом, определяющим функционирование всего
организма: его рост, развитие, патологии и пр. Через молекулы ДНК происходит
передача наследственной информации от поколения к поколению.
Понятие информации относится к числу фунДаментальных, т. е. является основополагающим для науки и не объясняется через другие понятия. В этом смысле информация встает в один ряд с такими фундаментальными научными понятиями, как вещество, энергия, пространство, время. Осмыслением информации как фундаментального понятия занимается наука философия.
Согласно одной из
философских концепций, информация является свойством всего сущего, всех
материальных объектов мира. Такая концепция информации называется атрибутивной
(информация атрибут всех материальных объектов). Информация в мире возникла
вместе со Вселенной. С такой предельно широкой точки зрения, информация
проявляется в воздействии одних объектов на другие, в изменениях, к которым
такие воздействия приводят.
Другую философскую концепцию информации называют функциональной. Согласно функциональному подходу, информа-
Понятие информации |
|
|
13 |
венцем жизни, так как связана с функционированием сложных 47• самоорганизующихся систем, к которым относятся живые организмы и человеческое общество. Можно еще сказать так: информация — это атрибут, свойственный только живой природе. Это один из существенных признаков, отделяющих в природе живое от неживого.
Третья философская
концепция информации — антропоцентрическая, согласно которой информация
существует лишь в человеческом сознании, в человеческом восприятии.
Информационная деятельность присуща только человеку, происходит в социальных
системах. Создавая информационную технику, человек создает инструменты для
своей информационной деятельности.
Делая выбор между различными точками зрения, надо помнить, что всякая научная теория лишь модель бесконечно сложного мира, поэтому она не может отражать его точно и в полной мере.
|
Информация |
![]() |
Система основных понятий
|
||
Философия |
Атрибутивная концепция: информация — всеобщее свойство (атрибут) материи |
|
Функциональная концепция: информация и информационные процессы присущи только живой природе, являются ее функцией |
||
Антропоцентрическая концепция: информация и информационные процессы присущи только человеку |
||
Теория информации |
Результат развития теории связи (К. Шеннон) |
Информация содержание, заложенное в знаковые (сигнальные) последовательности |
Кибернетика |
Исследует информаци- онные процессы в системах управления (Н. Винер) |
Информация — содержание сигналов, передаваемых по каналам связи в системах управления |
Нейрофизиология |
Изучает информационные процессы в механизмах нервной деятельности животного и человека |
Информация содержание сигналов электрохимической природы, передающихся по нервным волокнам организма |
Генетика |
Изучает механизмы наследственности, пользуется понятием «наследственная информация » |
Информация — содержание генетического кода — структуры молекул ДНК, входящих в состав клетки живого организма |
Вопросы и задания
1. Какие существуют основные философские концепции информации?
2. Какая, с вашей точки зрения, концепция является наиболее верной?
З. Благодаря развитию каких наук понятие информации стало широко употребляемым?
4. В каких биологических науках активно используется понятие информации?
5. Что такое наследственная информация?
6. К какой философской концепции, на ваш взгляд, ближе употребление понятия информации в генетике?
7. Если под информацией понимать только то, что распространяется через книги, рукописи, произведения искусства, средства массовой информации, то к какой философской концепции ее можно будет отнести?
8. Согласны ли вы, что понятие информации имеет контекстный смысл? Если да, то покажите это на примерах.
Представление информации, языки, кодирование |
|
![]() |
Из курса основной школы вам известно:
• Историческое развитие человека, формирование человеческого общества связано с развитием речи, с появлением и распространением языков. Язык это знаковая система для представления и передачи информации.
• Люди сохраняют свои знания в записях на различных носителях. Благодаря этому знания передаются не только в пространстве, но и во времени — от поколения к поколению,
• Языки бывают естественные, например русский, китайский, английский, и формальные, например математическая символика, нотная грамота, языки программирования.
Письменность и кодирование информации
Под словом «кодирование» понимают процесс представления информации, удобный для ее хранения и/или передачи. Следовательно, запись текста на естественном языке можно рассматривать как способ кодирования речи с помощью графических элементов (букв, иероглифов). Записанный текст является кодом, заключающим в себе содержание речи, т. е. информацию.
Процесс чтения текста — это обратный по отношению к письму процесс, при котором письменный текст преобразуется в устную речь. Чтение можно назвать декодированием письменного текста. Схематически эти два процесса изображены на рис. 1.1.
|
|
Рис. 1.1. Схема передачи информации с помощью письменности
Схема на рис. 1.1 типична для всех процессов, связанных с передачей информации.
|
Информация |
Цели и способы кодирования
Теперь обратим внимание на то, что может существовать много способов кодирования одного и того же текста на одном и том же языке. Например, русский текст мы привыкли записывать с помощью русского алфавита. Но то же самое можно сделать, используя латинский алфавит. Иногда так приходится поступать, отправляя SMS по мобильному телефону, на котором нет русских букв, или электронное письмо на русском языке за границу, если у адресата нет русифицированного программного обеспечения. Например, фразу «Здравствуй, дорогой Саша!» приходится писать так: «Zdravstvui, dorogoi Sasha!».
Существует множество способов кодирования. Например, стенография — быстрый способ записи устной речи. Стенография появилась во времена, когда не существовало техники звукозаписи. Ею владели лишь немногие специально обученные люди — стенографисты. Они успевали записывать текст синхронно с речью выступающего человека. В стенограмме один значок обозначает целое слово или сочетание букв. Расшифровать (декодировать) стенограмму мог только сам стенографист.
Посмотрите на текст стенограммы на рис. 1.2. Там написано
следующее: «Говорить умеют все люди на свете. Даже у самых примитивных племен
есть речь. Язык — это нечто всеобщее и самое человеческое, что есть на свете».
Можно придумать и другие спо- Рис. 1.2. Стенограмма собы кодирования.
Приведенные примеры иллюстрируют следующее важное правило: для кодирования одной и той же информации могут быть использованы разные способы; их выбор зависит от ряда обстоятельств: цели кодирования, условий, имеющихся средств. Если надо записать текст в темпе речи, делаем это с помощью стенографии; если надо передать текст за границу, пользуемся латинским алфавитом; если надо представить текст в виде, понятном для грамотного русского человека, записываем его по правилам грамматики русского языка.
Представление информации, языки, кодирование |
|
![]() |
Заметим, что эти две записи, эквивалентные по смыслу, используют разные языки: первая естественный русский язык, вторая — формальный язык математики, не имеющий национальной принадлежности. Переход от представления на естественном языке к представлению на формальном языке можно также рассматривать как кодирование. Человеку удобно использовать для кодирования чисел десятичную систему счисления, а компьютеру — двоичную систему.
Широко используемыми в информатике формальными языками являются языки программирования.
В некоторых случаях возникает потребность засекречивания текста сообщения или документа, для того чтобы его не смогли
прочитать те, кому не положено. Это называется защитой от несанкционированного Доступа. В таком случае секретный текст шифруется. В давние времена шифрование называлось тайнописью. Шифрование представляет собой процесс превращения открытого текста в зашифрованный, а дешифрование — процесс обратного преобразования, при котором восстанавливается исходный текст. Шифрование это тоже кодирование, но с засекреченным методом, известным только источнику и адресату. Методами шифрования занимается наука криптография.
История технических способов кодирования информации
|
Информация |
![]() |
Сэмюэль Финли |
по линиям телеграфной связи. |
|
Такой способ кодирования получил на- |
(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 до
|
Информация |
![]() |
о В двоичном коде каждая двоичная цифра несет одну единицу информации, которая называется 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 битов.
Информационный объем текста в памяти компьютера измеряется в байтах. Он равен количеству символов в записи текста.
|
Информация |
![]() |
|||
![]() |
Помимо бита и байта, для измерения информации используются и более крупные единицы:
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 тождественен количеству
информации в сообщении о появлении любого символа в тексте. При этом лт неопределенность
знания о том, какой именно символ алфавита должен стоять в данной позиции
текста. Данный факт демонстрирует связь между алфавитным и содержательным
подходами к измерению информации.
Формула Хартли
Измерение информации. Содержательный подход |
|
![]() |
будет дробным числом, лежащим между 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 (бита).
Формула для измерения количества инфор-
|
Информация |
![]() |
формула Хартли:
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: Данные (и программы) в памяти компьютера хранятся в двоичном виде, т. е. в виде цепочек единиц и нулей.
Современный компьютер может хранить и обрабатывать данные, представляющие информацию четырех видов: числовую, текстовую, графическую, звуковую. Двоичный код, изображенный на рис. 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. Представление о множестве целых чисел в математике и в информатике
Вещественные числа в компьютере
Понятие вещественного (действительного) числа в математику ввел Исаак Ньютон в 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 .
Такой формат записи числа называется форматом с плавающей запятой, в отличие от всех предыдущих примеров, где рассматривалось представление чисел в формате с фиксированной запятой.
Число, стоящее перед буквой «е», называется мантиссой, а стоящее после порядком. «Умный» калькулятор перешел к представлению чисел в формате с плавающей запятой после того, как под формат с фиксированной запятой не стало хватать места на табло.
В компьютере то же самое: числа могут представляться как в формате с фиксированной запятой (обычно это целые числа), так и в формате с плавающей запятой.
Но и для формата с плавающей запятой тоже есть максимальное число. В нашем «подопытном» калькуляторе это число:
Представление чисел в компьютере |
|
![]() |
В компьютере всё организовано аналогично, но предельные значения еще больше. Это зависит от разрядности ячейки памяти, выделяемой под число, и от того, сколько разрядов выделяется под порядок и под мантиссу.
Рассмотрим пример: пусть под всё число в компьютере выделяется 8 байтов — 64 бита, из них под порядок — 2 байта, под мантиссу — 6 байтов. Тогда диапазон вещественных чисел, в переводе в десятичную систему счисления, оказывается следующим:
324 308
- 1,7-10).
Завершая тему, посмотрим на рис. 1.9. Смысл, заложенный в нем, такой: непрерывное, бесконечное и не ограниченное множество вещественных чисел, которое рассматривает математика, при его представлении в компьютере обращается в дискретное, конечное и ограниченное множество.
|
Информация |
![]() |
Система основных понятий
|
|||
Целые числа |
Вещественные числа |
||
В математике: - десятичное представление; - множество: дискретно, бесконечно, не ограничено |
В компьютере (информатике): - двоичное представление; - множество: дискретно, конечно, ограничено |
В математике: - десятичное представление; - множество: непрерывно, бесконечно, не ограничено |
В компьютере (информатике): - двоичное представление; - множество: дискретно, конечно, ограничено |
Представление целых чисел в компьютере |
Представление вещественных чисел в компьютере |
||
Со знаком (положительные и отрицательные |
Без знака (положительные) |
МХ2Р М — двоичная мантисса, Р — двоичный целый порядок |
|
Диапазон: 2N-l , 2N-1-1] |
Диапазон: [0, 2Nl |
Диапазон ограничен максимальными значениями МиР |
|
Формат с фиксированной запятой |
Формат с плавающей запятой |
Вопросы и задания
1. Почему множество целых чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?
2. Определите диапазон целых чисел, хранящихся в 1 байте памяти в двух вариантах: со знаком и без знака.
З. Получите внутреннее представление числа 157 в 8-разрядной ячейке памяти в формате со знаком.
4. Получите внутреннее представление числа —157 в 8-разрядной ячейке памяти в формате со знаком.
5. Почему множество действительных (вещественных) чисел, представимых в памяти компьютера, дискретно, конечно и ограничено?
6. На какие две части делится число в формате с плавающей запятой?
Представление текста, изображения и звука |
|
![]() |
В этом параграфе обсудим способы компьютерного кодирования текстовой, графической и звуковой информации. С текстовой и графической информацией конструкторы «научили» работать ЭВМ, начиная с третьего поколения (1970-е годы). А работу со звуком «освоили» лишь машины четвертого поколения, современные персональные компьютеры. С этого момента началось распространение технологии мультимедиа.
Что принципиально нового появлялось в устройстве компьютеров с освоением ими новых видов информации? Главным образом, это периферийные устройства для ввода и вывода текстов, графики, видео, звука. Процессор же и оперативная память по своим функциям изменились мало. Существенно возросло их быстродействие, объем памяти. Но как это было на первых поколениях ЭВМ, так и осталось на современных ПК — основным навыком процессора в обработке данных является умение выполнять вычисления с двоичными числами. Обработка текста, графики и звука представляет собой тоже обработку числовых данных. Если сказать еще точнее, то это обработка целых чисел. По этой причине компьютерные технологии называют цифровыми технологиями.
О том, как текст, графика и звук сводятся к целым числам, будет рассказано дальше. Предварительно отметим, что здесь мы снова встретимся с главной формулой информатики:
Смысл входящих в нее величин здесь следующий: i — разрядность ячейки памяти (в битах), лт — количество различных целых положительных чисел, которые можно записать в эту ячейку.
Текстовая информация
Принципиально важно, что текстовая информация уже дискретна — состоит из отдельных знаков. Поэтому возникает лишь технический вопрос — как разместить ее в памяти компьютера.
|
Информация |
![]() |
Рис. 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 баиту. Между базовыми цветами они могут быть распределены так:
к |
к |
з |
з |
|
|
|
|
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. Чем удобен формат МРЗ?
• Аппаратное и программное обеспечение для представления звука
|
Информация |
www |
•
![]() |
• Единицы измерения информации
• Представление текста в различных кодировках
• Числа в памяти ЭВМ. Средства обработки числовой информации
Числа с фиксированной и плавающей запятой
•
Число и его компьютерный код
Из курса основной школы вам известно:
Человек хранит информацию в собственной памяти, а также в виде записей на различных внешних (по отношению к человеку) носителях: на камне, папирусе, бумаге, магнитных и оптических носителях и пр. Благодаря таким записям, информация передается не только в пространстве (от человека к человеку), но и во времени из поколения в поколение.
Рассмотрим способы хранения информации более подробно.
![]() |
Носитель — это материальная среда, используемая для записи и хранения информации.
Практически носителем информации может быть любой материальный объект. Информацию можно сохранять на камне, дереве, стекле, ткани, песке, теле человека и т. д. Здесь мы не станем обсуждать различные исторические и экзотические варианты носителей. Ограничимся современными средствами хранения информации, имеющими массовое применение.
Использование бумажных носителей информации
Носителем, имеющим наиболее массовое употребление, до сих пор остается бумага. Изобретенная во П веке н. э. в Китае бумага служит людям уже 19 столетий.
Для сопоставления объемов информации на разных носителях будем пользоваться единицей байтом, считая, что один знак текста «весит» 1 байт. Нетрудно подсчитать информационный объем книги, содержащей ЗОО страниц с размером текста на странице примерно 2000 символов. Текст такой книги имеет объем примерно 600 ООО байтов, или 586 Кб. Средняя школьная библиотека, фонд которой составляют 5000 томов, имеет информационный объем приблизительно 2861 Мб = 2,8 Гб.
|
Информационные процессы |
![]() |
На первых компьютерах
бумажные носители использовались для цифрового представления вводимых данных.
Это были перфокарты: картонные карточки с отверстиями, хранящие двоичный код
вводимой информации. На некоторых типах ЭВМ для тех же целей применялась перфорированная
бумажная лента.
Использование магнитных носителей информации
В XIX веке была изобретена магнитная запись. Первоначально она использовалась только для сохранения звука. Самым первым носителем магнитной записи была стальная проволока диаметром до 1 мм. В начале ХХ столетия для этих целей использовалась также стальная катаная лента. Тогда же (в 1906 г.) был выдан и первый патент на магнитный диск. Качественные характеристики всех этих носителей были весьма низкими. Достаточно сказать, что для производства 14-часовой магнитной записи устных докладов на Международном конгрессе в Копенгагене в 1908 г. потребовалось 2500 км, или около 100 кг проволоки.
В 20-х годах ХХ века появляется магнитная лента сначала на бумажной, а позднее — на синтетической (лавсановой) основе, на поверхность которой наносится тонкий слой ферромагнитного порошка. Во второй половине ХХ века на магнитную ленту научились записывать изображение, появляются видеокамеры, видеомагнитофоны.
Хранение информации |
|
![]() |
С начала 1960-х годов в употребление входят компьютерные магнитные диски: алюминиевые или пластмассовые диски, покрытые тонким магнитным порошковым слоем толщиной в несколько микрон. Информация на диске располагается по круговым концентрическим дорожкам, на которые она записывается и считывается в процессе вращения диска с помощью магнитных головок.
На первых ПК использовались гибкие магнитные диски (флоппи-диски) — сменные носители информации с небольшим объемом памяти — до 2 Мб. Начиная с 1980-х годов, в ПК начали использоваться встроенные в системный блок накопители на
жестких магнитных дисках, или НЖМД (англ. НТ) — Hard Disk Drive). Их еще называют винчестерскими дисками.
Винчестерский диск представляет собой пакет магнитных дисков, надетых на общую ось, которая при работе компьютера находится в постоянном вращении. С каждой магнитной поверхностью пакета дисков контактирует своя магнитная головка.
Информационная емкость современных винчестерских дисков измеряется в терабайтах.
Оптические диски и флеш-память
|
: |
Информационные процессы |
![]() |
Во второй половине 1990-х годов появились цифровые универсальные видеодиски DVD (Digital Versatile Disk) с большой емкостью, измеряемой в гигабайтах (до 17 Гб). Увеличение их емкости по сравнению с CD связано с использованием лазерного луча меньшего диаметра, а также двухслойной и двусторонней записи. Вспомните пример со школьной библиотекой. Весь ее книжный фонд можно разместить на одном DVD.
В настоящее время оптические диски (СГ) и DVD) являются
наиболее надежными материальными носителями информации, записанной цифровым
способом. Эти типы носителей бывают как однократно записываемыми — пригодными
только для чтения, так и перезаписываемыми пригодными для чтения и записи.
В последнее время появилось множество мобильных цифровых
устройств; цифровые фото- и видеокамеры, МРЗ-плееры, карманные компьютеры,
мобильные телефоны, устройства для чтения электронных книг, и др. Все
эти устройства нуждаются в переносных носителях информации. Но поскольку все
мобильные устройства довольно миниатюрные, к носителям информации для них
предъявляются особые требования. Они долэкны быть компактными, обладать низким
энергопотреблением при работе, быть энергонезависимыми при хранении, иметь
большую емкость, высокие скорости записи и чтения, долгий срок службы. Всем
этим требованиям удовлетворяют флеш-карты памяти. Информационный объем
флеш-карты может составлять несколько гигабайтов.
Хранение информации |
|
|
|
В качестве внешнего носителя для компьютера широкое
распространение получили так называемые флеш-брелоки (их называют в просторечии
«флешки»), выпуск которых начался в 2001 году. Большой объем информации,
компактность, высокая скорость чтения/записи, удобство в использовании основные
достоинства этих устройств. Флеш-брелок подключается к USB-rropTY компьютера и
позволяет скачивать данные со скоростью около 10 Мб в секунду.
В последние годы активно ведутся работы по созданию еще более компактных носителей информации с использованием нанотехнологий, работающих на уровне атомов и молекул вещества. В результате один компакт-диск, изготовленный по нанотехнологии, сможет заменить тысячи оптических дисков. По предположениям экспертов, приблизительно через 20 лет плотность хранения информации возрастет до такой степени, что на носителе объемом примерно с кубический сантиметр можно будет записать каждую секунду человеческой жизни.
|
Информационные процессы |
Система основных понятий
|
|||||||
Носители информации |
|||||||
Нецифровые |
Цифровые (компьютерные) |
||||||
Исторические: камень, дерево, папирус, пергамент , шелк и др. Современные: бумага |
Магнитные |
Оптические |
Флеш-носители |
||||
Ленты |
Диски |
Карты |
СЛ) |
DVD |
Флеш- карты |
Флешбрелоки |
|
Факторы качества носителей |
|||||||
Вместимость — плотность хранения дан- ных, объем данных |
Надежность хранения — максимальное время сохранности данных, зависимость от условий хранения |
||||||
Наибольшей вместимостью и надежностью на сегодня обладают оптические носители СГ) и DVD |
|||||||
Перспективные виды носителей: носители на базе нанотехнологий |
|||||||
Вопросы и задания
1. Какая, с вашей точки зрения, сохраняемая информация имеет наибольшее значение для всего человечества, для отдельного человека?
2. Назовите известные вам крупные хранилища информации.
3. Можно ли человека назвать носителем информации?
4. Где и когда появилась бумага?
5. Когда была изобретена магнитная запись? Какими магнитными носителями вы пользуетесь или пользовались?
6. Какое техническое изобретение позволило создать оптические носители информации? Назовите типы оптических носителей.
7. Назовите сравнительные преимущества и недостатки магнитных и оптических носителей.
8. Что означает свойство носителя «только для чтения»?
9. Какими устройствами, в которых используются флеш-карты, вы пользуетесь? Какой у них информационный объем?
10.Какие перспективы, с точки зрения хранения информации, открывают нанотехнологии?
58
Из курса основной школы вам известно:
Распространение
информации происходит в процессе ее передачи.
Процесс
передачи информации протекает от источника к приемнику по информационным
каналам связи.
В этом параграфе более подробно будут рассмотрены технические системы передачи информации.
Передача информации |
|
![]() |
Модель передачи информации К. Шеннона
Все перечисленные способы информационной связи основаны на передаче на расстояние физического (электрического или электромагнитного) сигнала и подчиняются некоторым общим законам. Исследованием этих законов занимается теория связи, возникшая в 1920-х годах. Математический аппарат теории связи — математическую теорию связи разработал американский ученый Клод Шеннон.
Клодом Шенноном была предложена модель процесса передачи информации по техническим каналам связи, представленная схемой на рис. 2.1.
Работу такой схемы можно пояснить на знакомом всем процессе разговора по телефону. Источником информации является говорящий человек. Кодирующим устройством — микрофон телефонной трубки, с помощью которого звуковые волны (речь) преобразуются в электрические сигналы. Каналом связи служит телефонная сеть (провода, коммутаторы телефонных узлов, через которые проходит сигнал). Декодирующим устройством является телефонная трубка (наушник) слушающего человека — приемни-
Рис. 2.1. Модель передачи информации по техническим каналам связи
ка информации. Здесь пришедший электрический сигнал превращается в звук.
В S 2 уже говорилось о кодировании на примере передачи информации через письменный документ. Кодирование там было определено как процесс представления информации в виде, удобном для ее хранения и/или передачи.
Применительно к процессу передачи информации по технической системе связи под кодированием понимается любое преобразование информации, иДущей от источника, в форму, пригоДную для ее переДачи по каналу связи.
|
Информационные процессы |
![]() |
Пропускная способность канала и скорость передачи информации
Разработчикам технических систем передачи информации приходится решать две взаимосвязанные задачи: как обеспечить наибольшую скорость передачи информации и как уменьшить потери информации при передаче. К. Шеннон был первым ученым, взявшимся за решение этих задач и создавшим новую для того времени науку — теорию информации.
Шеннон определил способ измерения количества информации, передаваемой по каналам связи. Им было введено понятие пропускной способности канала как максимально возможной скорости переДачи информации. Эта скорость измеряется в битах в секунду (а также килобитах в секунду, мегабитах в секунду).
Пропускная способность канала связи зависит от его технической реализации. Например, в компьютерных сетях используются следующие средства связи:
• телефонные линии;
• электрическая кабельная связь;
•
оптоволоконная
кабельная связь; радиосвязь.
Пропускная способность телефонных линий — десятки и сотни Кбит/с; пропускная способность оптоволоконных линий и линий радиосвязи измеряется десятками и сотнями Мбит/с.
Передача информации |
|
![]() |
Однако существует другая проблема, которая на рис. 2.1
отмечена словом «шум».
Шум, защита от шума
Термином «шум» называют разного рода помехи, искажающие передаваемый сигнал и приводящие к потере информации. Такие помехи, прежде всего, возникают по техническим причинам, таким как плохое качество линий связи, незащищенность друг от друга различных потоков информации, передаваемых по одним и тем же каналам. Существуют и другие источники помех, имеющие физическое происхождение.
Иногда, например, беседуя по телефону, мы слышим шум, треск, мешающие понять собеседника, или на наш разговор накладывается разговор других людей.
Наличие шума приводит к потере передаваемой информации. В таких случаях необходима защита от шума. Для этого в первую очередь применяются технические способы защиты каналов связи от воздействия шумов. Такие способы бывают самыми разными, иногда простыми, иногда очень сложными. Например: использование экранированного кабеля вместо «голого» провода; применение разного рода фильтров, отделяющих полезный сигнал от шума и пр.
Шеннон разработал специальную теорию кодирования, дающую методы борьбы с шумом. Одна из важных идей этой теории состоит в том, что передаваемый по линии связи код должен быть избыточным. За счет этого потеря какой-то части информации при передаче может быть компенсирована. Например, если при разговоре по телефону вас плохо слышно, то, повторяя каждое слово дважды, вы имеете больше шансов на то, что собеседник поймет вас правильно.
В системах передачи информации используется так называемое помехоустойчивое кодирование, вносящее определенную избыточность.
|
Информационные процессы |
![]() |
Большой вклад в научную теорию связи внес известный советский ученый Владимир Александрович Котельников. В 1940— 1950-х
годах им получены
фундаментальные научные результаты по проблеме помехоустойчивости систем
передачи информации.
В современных системах цифровой связи для борьбы с потерей информации при передаче часто применяется следующий прием. Всё сообщение разбивается на порции — блоки. Для каждого блока вычисляется контрольная сумма (сумма двоичных цифр), кото-
Владимир |
рая передается вместе с данным блоком. |
Александрович |
В месте приема заново вычисляется конт- |
Котельников |
рольная сумма принятого блока и, если она |
(1908-2005), Россия |
не совпадает с первоначальной суммой, пере- |
дача данного блока повторяется. Так проис-
ходит до тех пор, пока исходная и конечная контрольные суммы не совпадут.
Передача информации |
|
![]() |
Передача информации в технических системах связи |
|||
Модель К. Шеннона |
|||
Процедура кодирования |
Процесс передачи по каналу связи |
Процедура декодирования |
|
Пропускная способность канала |
Воздействие шумов на канал связи |
||
Защита информации от потерь при воздействии шума |
|||
Кодирование с оптимальноизбыточным кодом |
Частичная потеря избыточной информации при передаче |
Полное восстановление исходного сообщения |
|
Вопросы и задания
1. Для чего нужна процедура кодирования передаваемой информации?
2. Что такое декодирование? Каким должен быть его результат?
З. Каким техническим средством связи
вы чаще всего пользуетесь? Замечали ли вы при этом факты потери информации?
4. Назовите устройства кодирования и декодирования при использовании радиосвязи.
5. Что такое шум по отношению к системам передачи данных?
б. Какие существуют способы борьбы с шумом?
7. Пропускная способность канала связи 100 Мбит/с. Уровень шума пренебрежимо мал (например, оптоволоконная линия). Определите, за какое время по каналу будет передан текст, информационный объем которого составляет 100 Кб.
8. Пропускная способность канала связи 10
Мбит/с. Канал подвержен воздействию шума, поэтому избыточность кода передачи составляет 20 0/0.
Определите, за сколько времени по каналу будет передан текст, информационный
объем которого составляет 100 Кб.
Из курса основной школы вам известно:
Обработка информации, наряду с хранением и передачей, относится к основным видам информационных процессов.
Варианты обработки информации
|
Информационные процессы |
![]() |
Можно привести множество примеров, иллюстрирующих схему на рис. 2.2.
Первый пример: ученик
(исполнитель), решая задачу по математике, производит обработку информации.
Исходные данные содержатся в условии задачи. Математические правила, описанные
в учебнике, определяют последовательность вычислений. Результат это полученный
ответ.
Второй пример: перевод текста с одного языка на другой —
это пример обработки информации, при которой не меняется ее содержание, но
изменяется форма представления другой язык. Перевод осуществляет переводчик по
определенным правилам, в определенной последовательности.
Третий пример: работник библиотеки
составляет картотеку книжного фонда. На каждую книгу заполняется карточка, на
которой указываются все параметры книги: автор, название, год издания, объем и
пр. Из карточек формируется каталог библиотеки, где эти карточки располагаются
в строгом порядке. Например, в алфавитном каталоге карточки располагаются в
алфавитном порядке фамилий авторов.
Обработка информации и алгоритмы |
|
![]() |
Приведенные примеры иллюстрируют четыре различных вида обработки информации:
1) получение новой информации, новых сведений;
2) изменение формы представления информации; 3) систематизация, структурирование данных; 4) поиск информации.
Все эти виды обработки может выполнять как человек, так и компьютер. В чем состоит принципиальное различие между процессами обработки, выполняемыми человеком и машиной?
Если исполнителем обработки информации является человек, то правила обработки, по которым он действует, не всегда формальны и однозначны. Человек часто действует творчески, неформально. Даже однотипные математические задачи он может решать раз-
ными способами. Работа журналиста, ученого, переводчика и других специалистов — это творческая работа с информацией, которая выполняется ими не по формальным правилам.
Об алгоритмах
Для обозначения формализованных правил, определяющих последовательность шагов обработки информации, в информатике используется понятие алгоритма.
|
Информационные процессы |
![]() |
С понятием алгоритма в математике ассоциируется известный
способ вычисления наибольшего общего делителя (НОД) двух натуральных чисел,
который называют алгоритмом Евклида. В словесной форме его можно описать так:
1. Если числа не равны, то большее из них заменить на разность большего и меньшего из чисел.
2. Если два числа равны, то за НОД принять любое из них, иначе перейти к выполнению пункта 1.
Первоклассник, который не знает, что такое НОД, но умеет сравнивать целые числа и выполнять вычитание, сможет исполнить алгоритм. Действовать при этом он будет формально.
Такой формализованный алгоритм легко запрограммировать для современного компьютера. Мечта создать машину — автоматическое устройство, которое сможет без вмешательства человека производить расчеты, появилась очень давно. Для ее реализации требовались не только технические возможности, но и глубокое понимание сущности алгоритмов обработки информации и разработка формализованного способа представления таких алгоритмов.
Алгоритмические машины и свойства алгоритмов
В 30-х годах ХХ века возникает новая наука — теория алгоритмов. Вопрос, на который ищет ответ эта наука: для всякой ли задачи обработки информации может быть построен алгоритм решения? Но чтобы ответить на этот вопрос, надо сначала договориться об исполнителе, на которого должен быть ориентирован алгоритм.
Английский ученый Алан Тьюринг предложил модель такого
исполнителя, получившую название «машина Тьюринга». По замыслу Тьюринга, его
«машина» является универсальным исполнителем обработки любых символьных
последовательностей в любом алфавите. Практически одновременно с Тьюрингом
(1936—1937 гг.) другую модель алгоритмической машины описал Эмиль Пост. Машина
Поста работает с двоичным алфавитом и не-
сколько проще в своем «устройстве». Можно |
Алан Тьюринг |
сказать, что машина Поста является частным |
(1912-1954), |
случаем машины Тьюринга. Однако именно |
Англия |
Обработка информации и алгоритмы |
|
|
67 |
работа с двоичным алфавитом представляет наибольший интерес, поскольку, как вы знаете, современный компьютер тоже работает с двоичным алфавитом. Подробнее с машиной Поста вы познакомитесь в следующем параграфе.
На основании моделей Тьюринга, Поста и некоторых других ученые пришли к выводу о существовании алгоритмически неразрешимых задач.
Язык программирования алгоритмических машин представляет собой описание конечного числа простых команд, которые могут быть реализованы в автоматическом устройстве.
Совокупность всех команД языка исполнителя называется системой команД исполнителя алгоритмов — СКИ.
Алгоритм управления работой алгоритмической машины представляет собой конечную послеДовательность команд, посредством выполнения которой машина решает задачу обработки информации.
Алгоритм управления такой машиной должен обладать следующими свойствами;
• дискретностью (каждый шаг алгоритма выполняется отдельно от других);
• понятностью (в алгоритме используются только команды из ски);
• точностью (каждая команда определяет однозначное действие исполнителя);
• конечностью (за конечное число шагов алгоритма получается искомый результат).
|
Информационные процессы |
![]() |
Система основных понятий
|
|||
Виды обработки информации |
|||
Получение новой информации (новых данных) |
Изменение формы представления информации |
Структурирование данных |
Поиск данных |
Исполнитель обработки |
|||
Человек |
Автомат (машина) |
||
Алгоритм обработки — формализованные правила, определяющие последовательность шагов обработки информации |
|||
Алгоритмическая машина автоматический исполнитель обработки знаковых последовательностей |
|||
Модели алгоритмических машин в теории алгоритмов |
|||
Машина Тьюринга |
Машина Поста |
||
Свойства алгоритма |
|||
Дискретность: каждый шаг алгоритма выполняется отдельно от других |
Понятность: в алгоритме используются только команды из СКИ |
Точность: каждая команда определяет однозначное действие исполнителя |
Конечность: за конечное число шагов алгоритма получается искомый результат |
Вопросы и задания
1. Приведите примеры процессов обработки информации, которые чаще всего вам приходится выполнять во время учебы. Для каждого примера определите исходные данные, результаты и правила обработки. К каким видам обработки относятся ваши примеры?
2. Если вы решаете задачу по математике или физике и при этом используете калькулятор, то какова ваша функция в этом процессе и какова функция калькулятора?
3. Используя алгоритм Евклида, найдите НОД для чисел 114 и 66. Сколько шагов алгоритма при этом вам пришлось выполнить?
4. Какие проблемы решает теория алгоритмов?
5. Почему калькулятор нельзя назвать
алгоритмической машиной, а компьютер можно?
6. Придумайте минимально необходимую систему команд для кассового аппарата, который подсчитывает стоимость покупок и сумму сдачи покупателю. Опишите алгоритм управления работой такого авто-
мата.
Автоматическая обработка информации |
510 |
|
69 |
В качестве примера автомата, выполняющего обработку
информации, рассмотрим машину Э. Поста. Алгоритм, по которому работает машина
Поста, будем называть программой.
Договоримся о терминологии: под словом «программа» мы всегда будем понимать алгоритм, записанный по строгим правилам языка команд исполнителя — на языке программирования для данного исполнителя.
Опишем архитектуру машины Поста
(рис, 2.3). Имеется бесконечная информаци- |
Эмиль Пост |
онная лента, разделенная на позиции |
(1897-1954), |
клетки. В каждой клетке может либо стоять |
США |
метка (некоторый знак), либо отсутствовать (пусто).
Рис. 2.3. Модель машины Поста
Вдоль ленты движется каретка — считывающее устройство. На рисунке 2.3 она обозначена стрелкой. Каретка может передвигаться шагами: один шаг — смещение на одну клетку вправо или влево. Клетку, под которой установлена каретка, будем называть текущей.
Каретка является еще и процессором машины.
С ее помощью машина может:
распознать, пустая клетка или помеченная знаком;
стереть знак в текущей клетке;
записать знак в пустую текущую
клетку.
|
Информационные процессы |
![]() |
Назначение машины Поста — производить преобразования на информационной ленте. Исходное состояние ленты можно рассматривать как исходные данные задачи, конечное состояние ленты — как результат решения задачи. Кроме того, в исходные данные входит информация о начальном положении каретки.
Теперь рассмотрим систему команд машины Поста (табл. 2.1). Запись всякой команды начинается с ее порядкового номера в программе — п. Затем следует код операции и после него — номер следующей выполняемой команды программы — т.
Рассмотрим пример программы решения задачи на машине Поста. Исходное состояние показано на рис. 2.3. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. Программа приведена в табл. 2.2.
Таблица 2.1. Система команд машины Поста
Команда |
Действие |
|
Сдвиг каретки на шаг влево и переход к выполнению команды с номером т |
|
Сдвиг каретки на шаг вправо и переход к выполнению команды с номером т |
|
Запись метки в текущую пустую клетку и переход к выполнению команды с номером т |
п т |
Стирание метки в текущей клетке и переход к выполнению команды с номером т |
|
Остановка выполнения программы |
|
Переход в зависимости от содержимого текущей клетки: если текущая клетка пустая, то следующей будет выполняться команда с номером т, если непустая команда с номером К |
Автоматическая обработка информации |
5 10 |
![]() |
Команда |
Действие |
1 |
Стирание метки; переход к следующей команде |
2 |
Сдвиг вправо на один шаг |
3 ? 2 4 |
Если клетка пустая, то переход к команде 2, иначе к команде 4 |
4 |
Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) |
5 v 6 |
Запись метки в пустую клетку |
|
Остановка машины |
В процессе выполнения приведенной программы многократно повторяется выполнение команд с номерами 2 и З. Такая ситуация называется циклом. Напомним, что цикл относится к числу основных алгоритмических структур вместе со следованием и ветвлением.
А теперь научим машину Поста играть в интеллектуальную игру, которая называется «Игра Баше»: Опишем правила игры.
Играют двое. Перед ними 21 (или 16, или 11 и т. д.) фишка. Игроки берут фишки по очереди. За один ход можно взять от 1 до 4 фишек. Проигрывает тот, кто забирает последнюю фишку.
Имеется выигрышная тактика для игрока, берущего фишки вторым. Она заключается в том, чтобы брать такое количество фишек, которое дополняет число фишек, взятых соперником на предыдущем ходе, до пяти.
|
Информационные процессы |
![]() |
Еще раз напомним принцип выигрышной тактики: стирать столько меток, чтобы в сумме с метками, стертыми противником за предыдущий ход, их было пять.
Программа управления машиной Поста в игре Баше против человека приведена в табл. 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. На информационной ленте машины Поста расположен массив из меток. Каретка находится под крайней
левой меткой. Какое состояние установится на ленте после выполнения следующей
программы?
4 ? 5,2
7 !
2. На информационной ленте на некотором расстоянии справа от каретки, стоящей под пустой клеткой, находится непрерывный массив меток. Требуется присоединить к правому концу массива одну метку.
З. На ленте расположен массив из 2n — 1 меток. Составить программу отыскания средней метки и стирания ее.
|
Информационные процессы |
![]() |
Из курса основной школы вам известно:
Компьютер
(ЭВМ) — автоматическое, программно-управляемое устройство для работы с
информацией.
В
состав компьютера входят устройства памяти (хранение данных и программ),
процессор (обработка информации), устройства ввода/вывода (прием/передача
информации).
В
1946 году Джоном фон Нейманом были сформулированы основные принципы устройства
ЭВМ, которые называют фон-неймановской архитектурой.
Современный
компьютер представляет собой единство аппаратуры (hardware) и программного
обеспечения (software).
Серийное производство электронных вычислительных машин (ЭВМ) начинается в разных странах в 1950-х годах. Историю развития ЭВМ принято делить на поколения. Переход от одного поколения к другому связан со сменой элементной базы, на которой создавались машины, с изменением архитектуры ЭВМ, с развити-
ем основных технических характеристик (скорости вычислений, объема памяти и др.), с изменением областей применения и способов эксплуатации машин.
Под архитектурой ЭВМ понимаются наиболее общие принципы построения компьютера, реализующие программное управление его работой и взаимодействие основных функциональных узлов.
В основе архитектуры ЭВМ разных поколений лежат принципы Джона фон Неймана. Однако в процессе развития происходят некоторые отклонения от фон-неймановской архитектуры.
Однопроцессорная архитектура ЭВМ
Информационные процессы в компьютере |
|
|
![]() |
Рис. 2.4. Структура однопроцессорной ЭВМ. Сплошные стрелки — передача данных, пунктирные стрелки — управляющее воздействие
Согласно принципам фон Неймана, исполняемая программа хранится во внутренней памяти — в оперативном запоминающем устройстве (ОЗУ). Там же находятся данные, с которыми работает программа. Каждая команда программы и каждая величина (элемент данных) занимают определенные ячейки памяти, как пока-
|
Внутренняя память |
|
Номер ячейки |
Содержимое ячейки |
|
Программа |
1 |
|
2 |
|
|
|
|
|
|
|
|
|
Команда УГОР |
|
Данные |
|
Величина 1 |
|
Величина 2 |
|
|
|
|
|
|
Рис. 2.5. Размещение в ОЗУ программы и данных
Процессор начинает выполнение программы с первой команды и заканчивает на команде остановки, назовем ее STOP. При выполнении очередной команды процессор извлекает из памяти обрабатываемые величины и заносит их в специальные ячейки внутренней памяти процессора — регистры. Затем выполняется команда, например складываются два числа, после чего полученный результат записывается в определенную ячейку памяти. Процессор переходит к выполнению следующей команды. Исполнение программы закончится, когда процессор обратится к команде STOP.
|
Информационные процессы |
![]() |
Использование периферийных процессоров
Информационные процессы в компьютере |
|
![]() |
Рис. 2.6. Структура ЭВМ с одним центральным процессором и периферийными процессорами управления внешними устройствами (треугольники)
На всех моделях ЭВМ третьего поколения, которые создавались на базе интегральных схем (1970—80-е годы), использовалась архитектура с одним центральным процессором и периферийными процессорами внешних устройств. Такая многопроцессорная архитектура позволяла реализовать мультипрограммный режим работы: пока одна программа занята вводом/выводом данных, которым управляет периферийный процессор, другая программа занимает центральный процессор, выполняя вычисления. Благодаря совершенствованию элементной базы и других аппаратных средств на некоторых моделях ЭВМ третьего поколения достигалось быстродействие до 10 млн оп./с.
Для разделения ресурсов ЭВМ между несколькими выполняемыми программами потребовалось создание специального программного обеспечения: операционной системы (ОС). К разделяемым ресурсам, прежде всего, относятся время работы центрального процессора и оперативная память. Задача ОС состоит в том, чтобы разные программы, выполняемые одновременно на ЭВМ, «не мешали» друг другу и чтобы КПД центрального процессора был максимальным, иначе говоря, чтобы ЦП не «простаивал». ОС берет на себя также заботу об очередности использования несколькими программами общих внешних устройств: внешней памяти, устройств ввода/вывода.
Архитектура персонального компьютера
|
Информационные процессы |
Персональный компьютер (ПК) — самый распространенный в наше
время тип компьютера. Появление ПК связано с созданием микропроцессоров,
которое началось в 1970-х годах. До недавнего времени в устройстве ПК
существовал один центральный процессор и множество периферийных процессоров,
управляющих внешними устройствами, которые называются контроллерами.
Архитектура такого ПК изображена на рис. 2.7.
Рис. 2.7. Архитектура персонального компьютера (сплошные стрелки — направление потоков информации, пунктирные — направление управляющих сигналов, К — контроллер)
Для связи между отдельными функциональными узлами ПК используется общая информационная магистраль, которая называется системной шиной.
Системная шина
состоит из трех частей: шина данных (для передачи данных);
• шина адреса (для передачи адресов
устройств, которым передаются данные); шина управления (для передачи управляющих
сигналов, синхронизирующих работу разных устройств).
Важное достоинство такой архитектуры возможность подключения к компьютеру новых устройств или замена старых устройств на более современные. Это называется принципом открытой архитектуры. Для каждого типа и модели устройства используется свой контроллер, а в составе операционной системы имеется управляющая программа, которая называется драйвером устройства.
Открытая архитектура персонального компьютера — это архитектура, предусматривающая модульное построение компьютера с возможностью добавления и замены отдельных устройств.
Информационные процессы в компьютере |
|
![]() |
Архитектура ненеймановских вычислительных систем
Несмотря на стремительно нарастающую производительность ЭВМ, которая каждые 4—5 лет по важнейшим показателям практически удваивается, всегда есть классы задач, для которых никакой производительности не хватает. Укажем некоторые из них.
1. Математические расчеты, лежащие в основе реализации математических моделей многих процессов. Гигантские вычислительные ресурсы, которые можно реализовать очень быстро (как иногда говорят, в масштабе реального времени), необходимы для более надежного и долгосрочного прогноза погоды, для решения аэрокосмических задач, в том числе и оборонных, для решения многих инженерных задач и т. д.
2. Поиск информации в гигантских базах данных, в информационном пространстве Интернета.
3. Моделирование интеллекта — при всех фантастических показателях, объем оперативной памяти современных компьютеров составляет лишь малую долю объема памяти человека.
Быстродействие компьютера с одним центральным процессором имеет физическое ограничение: повышение тактовой частоты процессора ведет к повышению тепловыделения, которое не может быть неограниченным. Перспективный путь повышения производительности компьютера лежит на пути отказа от единственности главных устройств компьютера: либо процессора, либо оперативной памяти, либо шины, либо всего этого вместе. Это путь еще большего отступления от архитектуры фон Неймана.
Чтобы стало понятнее, зачем компьютеру несколько процессоров, обсудим алгоритм решения простейшей математической задачи. Есть массив из 100 чисел: ат, а,2, ... , % 00. Требуется найти их сумму.
|
Информационные процессы |
![]() |
Рис. 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.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 |
Архитектура
компьютера
Архитектура машин
пятого поколения
Внутренняя память
компьютера. Внешняя память компьютера. Типы накопителей информации
Магистраль.
Передача данных внутри компьютера
От абака до ноутбука. Поколения
компьютерной техники
Понятие
алгоритма
Принцип открытой
архитектуры
Принципы
и системы передачи информации
Принципы
и системы передачи информации. Вычисление объема информации при передаче.
Практическая работа
Глава З
Основы алгоритмизации и программирования вы изучали в курсе информатики основной школы.
Вы уже знакомы со следующими понятиями:
алгоритм, исполнитель алгоритма, система
команд исполнителя, свойства алгоритма;
структуры алгоритмов:
линейная ветвящаяся, циклическая;
вспомогательный алгоритм;
программа,
языки программирования.
Вы имеете опыт программирования на языке Паскаль.
![]() |
Алгоритмы и величины
Этапы решения задачи на компьютере
Работа по решению любой задачи с использованием компьютера делится на следующие этапы:
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 представлены эти свойства основных
типов данных.
Типы констант определяются по контексту (т. е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных.
Есть еще один вариант классификации данных: классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина одно значение. Для структурированных: одна величина множество значений. К структурированным величинам относятся массивы, строки, множества и др.
Компьютер — исполнитель алгоритмов. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя, в рамках его системы команд. О каком же исполнителе идет
|
Программирование обработки информации |
![]() |
|
Значения |
Операции |
Внутреннее едставление |
Целый |
Целые положительные и отрицательные числа в некотором диапазоне. Примеры: 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. Придумайте пример задачи, решаемой на компьютере, и назовите для нее исходные, промежуточные и итоговые данные.
Структура алгоритмов
Базовые алгоритмические структуры
|
Программирование обработки информации |
программированием. |
Эдсгер В. |
С базовыми алгоритмическими структурами |
Дейкстра |
вы познакомились, изучая информатику в 9 клас- |
(1930-2002) |
![]() |
се. Там же для описания структур алгоритмов были использованы два способа: блок-схемы и учебный Алгоритмический язык (АЯ). Еще раз покажем, как изображаются базовые структуры в схемах алгоритмов и как они описываются на АЯ.
Следование это линейная последовательность действий (рис. 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. Вложенные
циклы. Внешний цикл-пока, внутренний цикл-до.
Наглядность структуре описания алгоритма на АЯ придает структуризация внешнего виДа текста. Основной используемый для этого прием — сдвиги строк, которые должны подчиняться следующим правилам:
•
конструкции одного уровня вложенности записываются на одном
вертикальном уровне (начинаются с одной позиции в строке);
• вложенная конструкция записывается смещенной по строке на несколько позиций вправо относительно внешней для нее конструкции.
|
Программирование обработки информации |
![]() |
Для приведенных на рис. АЯ должна быть следующей:
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 и др. Все названные
ЯПВУ относятся к так называемой процедурной парадигме программирования. Поэтому
их называют процеДурнылш языками программирования. Программы на таких языках
представляют собой последовательности команд, описывающих действия
(процедуры) компьютера по обработке информации. Существуют другие парадигмы
программирования. Относящиеся к ним языки называют Декларативными языками
программирования (Пролог, Лисп и др.). Однако мы их рассматривать не будем.
Для каждого языка существует машинно-независимый стандарт- Возможность программирования на данном ЯПВУ зависит от наличия на вашем компьютере транслятора с этого языка. Трансляторы для каждого типа компьютера создают системные программисты.
Паскаль — язык структурного программирования |
|
![]() |
с : =a+b (на Паскале); с=а+Ь (на Фортране, Бейсике, Си).
Освоить программирование на языке высокого уровня гораздо проще, чем на ассемблере. Поэтому с появлением ЯПВУ значительно возросло число прикладных программистов, расширилось применение ЭВМ во многих областях.
Большое количество языков программирования появилось в 1960—1970-х годах. В 1965 году в Дартмутском университете был разработан язык Бейсик. По замыслу авторов это простой, легко изучаемый язык, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил с появлением микроЭВМ и персональных компьютеров.
История Паскаля
Язык программирования Паскаль был создан швейцарским
профессором Никлаусом Виртом в 1969 году как язык для обучения студентов
структурной методике программирования. Язык получил свое название в честь Блеза
Паскаля, изобретателя первого вычислительного механического устройства. Позднее
фирма Borland International, Inc (США) разработала систему программирования
Турбо Паскаль для персональных компьютеров, которая вышла за рамки учебного
применения и стала использоваться для научных и производственных целей. В Турбо
Паскаль были внесены некоторые дополнения к базовому стандарту Паскаля,
описанному Н. Виртом. Со временем язык развивался. Начиная с версии 5.5,
в Турбо Паскаль вводятся средства поддержки объектноориентированного
программирования (ООП). В дальнейшем это привело к созданию 0bject Pascal языка
с возможностями
объектно-ориентированного
программирования. В начале 1990-х годов объединение элементов ООП в Паскале с
визуальной технологией программирования привело к созданию системы
программирования Delphi.
Структура процедурных языков программирования высокого уровня
|
Программирование обработки информации |
![]() |
Рис. 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. Из каких основных разделов состоит программа на Паскале?
Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы.
Латинские буквы: от А до 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 представлена информация о простых типах данных, определенных в Турбо Паскале и последующих диалектах языка. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятичном представлении числа.
![]() |
Имя типа |
Длина в байтах |
Диапазон (множество) значений |
Десятичных цифр в мантиссе |
|
Целочисленные типы |
|
|
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 |
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;
Var Data: Numbers;
Ви Куа : A1f ;
Структурные типы. Особенностью Паскаля является то, что в нем структуры данных рассматриваются как типы — структур-
ные типы данных. Одна величина простого типа представляет собой одно значение: целое число, вещественное число, символ и пр. Одна величина структурного типа представляет собой совокупность множества значений; примеры — числовой массив, символьная строка и пр.
Автор Паскаля Вирт придавал большое значение разнообразию типов данных в языке программирования. В своей книге «Алгоритмы и структуры данных» он подчеркивает зависимость алгоритма решения задачи от способа организации данных в программе. Удачно выбранный способ организации данных упрощает алгоритм решения задачи.
Элементы языка Паскаль и типы даННЫХ |
5 15 |
![]() |
|
|
Состав программы на Паскале |
|
Элементы языка |
Комментарии |
Алфавит, служебные слова, идентификаторы |
Поясняющие тексты, которые пропускаются компилятором |
Типы данных |
|
Стандартные (целочисленные, вещественные, логический, символьный) |
Определяемые в программе: перечислимые, ограниченные |
Простые типы |
Структурные типы |
Одна величина — одно значение |
Одна величина — множество значений (массивы, строки, записи, множества, файлы) |
Вопросы и задания
1. Входят ли в алфавит Паскаля русские буквы? Для чего их можно использовать?
2. Что такое идентификатор? Каковы правила задания идентификаторов?
З. Чем различаются разные типы данных из группы целочисленных типов?
4. Чем различаются разные типы данных из группы вещественных типов?
5. В чем разница между простыми и структурными типами?
6. Что такое перечислимый и ограниченный типы данных?
Арифметические операции
К числовым типам данных относятся группы вещественных и целочисленных типов. К ним применимы арифметические операции и операции отношений.
|
Программирование обработки информации |
![]() |
—<величина>
Бинарные арифметические операции стандартного Паскаля описаны в табл. 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,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 подключается по умолчанию |
Арифметическое выражение: языковая конструкция, определяющая порядок вычисления числовой величины в соответствии с математическим выражением. Типом выражения называется тип результата его вычисления |
Вопросы и задания
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)
Присваивание — это Действие, в результате которого переменная величина получает определенное значение. В программе на Паскале существуют три способа присваивания значения переменной:
1) оператор присваивания;
2) оператор ввода;
З) передача значения через параметры подпрограммы.
Оператор присваивания имеет следующий формат:
<переменная> : =<выражение>
|
Программирование обработки информации |
![]() |
1) x:=2*a+sqrt (Ь) ;
2) Ь: = (х>у) and ;
Сначала вычисляется выражение, затем полученное значение присваивается переменной. В первом примере приведен арифметический оператор присваивания. Здесь х переменная вещественного типа. Во втором примере — логический оператор присваивания. Здесь Ь — переменная типа Воо1еап.
Типы переменной и выражения должны совпадать. Из этого правила есть одно исключение: переменной вещественного типа можно присваивать значение целочисленного выражения. В таком случае значение целого числа преобразуется к формату с плавающей запятой и присвоится вещественной переменной.
Ввод и вывод данных
Под вводом понимается передача данных с внешнего устройства компьютера в оперативную память. При выводе данные передаются из оперативной памяти на внешнее устройство (рис. 3.11).
ОЗУ |
|
Внешние устройства |
Вывод (Write) |
||
|
||
Ввод (Read) |
Рис. 3.11. Ввод и вывод
Операция ввода называется чтением и выполняется с помощью оператора Read. Вывод называется записью, и для его выполнения используется оператор Write.
К внешним устройствам относятся устройства ввода и вывода (клавиатура, монитор, принтер и др.) и устройства внешней памяти (магнитные и оптические диски, флеш-память и др.). Данные на внешних устройствах организованы в файлы.
Оператор присваивания, ввод и вывод данных |
|
![]() |
Устройства ввода с клавиатуры и вывода на экран монитора являются однофайловыми устройствами. Считается, что с клавиатурой связан один системный файл с именем INPUT. Поэтому ввод с клавиатуры равнозначен чтению из файла INPUT. С монитором связан системный файл, который называется OUTPUT. Вывод на экран — это запись данных в файл OUTPUT .
Ввод с клавиатуры производится путем обращения к стандартной процедуре Read в следующем формате:
Read «список ввода>)
Чтение происходит из системного файла TNPUT, всегда доступного для любой программы. Элементами списка ввода могут быть переменные символьного типа, числовых типов и строковые переменные.
Например:
Read (а, Ь, с, д)
При выполнении этого оператора происходит прерывание исполнения программы, после чего пользователь должен набрать на клавиатуре значения переменных а, Ь, с, d, отделяя их друг от друга пробелами. При этом вводимые значения высвечиваются на экране. В конце нажимается клавиша Enter. Значения следует вводить в строгом соответствии с синтаксисом Паскаля.
Пример:
Var Т: Rea1; д: Integer; К: Char ;
Begin
Read(T, З, К) ;
Набираем на клавиатуре:
253.98 100 G [Enterl
|
Программирование обработки информации |
![]() |
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
Sum : =Sum + Х;
Write ( Сумма цифр Sum) End.
В этой программе использованы две операции целочисленной арифметики: div — целочисленное деление и mod — остаток от целочисленного деления (см. табл. 3.3). Остаток от деления на 10 (mod) выделяет младшую цифру числа, а целочисленное деление на 10 (div) отбрасывает младшую цифру.
Оператор присваивания, ввод и вывод данных |
5 17 |
![]() |
|
Команда |
|
Х |
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.
Логические величины, операции, выражения |
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. Если
в отношение входят переменные числовые величины, то и значение отношения будет
логической переменной.
|
Программирование обработки информации |
![]() |
Логические функции от числовых аргументов еще называют О термином предикат. В алгоритмах предикаты играют роль условий, по которым строятся ветвления и циклы. Предикаты могут быть как простыми логическими функциями, не содержащими логических операций, так и сложными, содержащими логические
операции.
|
|
|
|
|
|
Пример 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 <логическое выражение>
Неполное ветвление:
If <логическое выражение>
Then Оператор>
|
Программирование обработки информации |
![]() |
Пример 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 ( Отлично )
Then WriteLn ( Хорошо )
E1se If
Then WriteLn ( Удовлетворительно )
|
Программирование обработки информации |
![]() |
Пример З. Решение рассмотренной в предыдущем примере задачи можно запрограммировать с помощью одного оператора выбора, имеющегося в языке Паскаль. Вот как будет выглядеть такая программа:
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 |
![]() |
Case N 0f з, 4, 5: WriteLn ( Экзамен сдан ' ) ;
2: WriteLn ( Экзамен не сдан ' ) ;
Else WriteLn ( Нет такой оценки! ) End
Так же как условный оператор, оператор выбора может
использоваться в неполной форме, т. е. без ветви Else.
Если применить условный оператор, то эта программа запишется так:
If (N=3) or (N=4) or (N=5)
Then WriteLn ( Экзамен сдан ' )
Then WriteLn ( Экзамен не сдан ' )
E1se WriteLn ( Нет такой ОЦенКИ') ;
В условии ветвления использовано сложное логическое выражение, содержащее операции логического сложения ох (или).
Система основных понятий
|
|
Условный оператор |
Оператор выбора |
If <логическое выражение» Then «(оператор 1> E1se оператор 2> Если «логическое выражение> истинно, то выполняется <оператор 1>, иначе выполняется «(оператор 2>. Оператор 1> и «оператор 2> — простые или составные операторы. В неполном ветвлении отсутствует ветвь E1se |
Саве <селектор> 0f список констант 1 „ъ: «(оператор 1>; «(список констант «(оператор ГО ; Else <оператор> End Здесь селектор — выражение порядкового типа; константы имеют тот же тип. Выполняется только одна из ветвей выбора, которая содержит константу, совпадатощую со значением селектора. Ветвь E1se может отсутствовать |
|
Программирование обработки информации |
![]() |
1. Какие операторы используются для программирования ветвящихся алгоритмов?
2. В каких случаях удобно использование оператора выбора?
З. Составьте на Паскале программу
упорядочения по возрастанию значений в трех переменных: Х, У, 7..
4. Используя оператор выбора, составьте программу, которая по введенному номеру месяца будет выводить название соответствующего времени года (зима, весна, лето, осень).
Постановка задачи и формализация
Словом «задача» называют проблему, которая требует решения. Решение задачи начинается с ее постановки. На этапе постановки заДачи в терминах предметной области (физики, экономики, биологии и др.) определяются исходные данные и результаты, которые надо получить.
Следующий этап — формализация заДачи. Чаще всего процесс формализации означает перевод задачи на язык математики: формул, уравнений, неравенств, систем уравнений, систем неравенств и т. п.
Подробнее о формализации будет рассказано в разделе, посвященном информационному моделированию (в 11 классе). Некоторые представления об этом вы уже имеете из курса информатики для 7—9 классов.
Пример поэтапной разработки программы |
520 |
![]() |
Анализ математической задачи
Пусть в результате формализации некоторой задачи было получено квадратное уравнение: ах2 + бх + с = О, где коэффициенты а, Ь, с являются исходными данными. Требуется решить это уравнение, т. е. найти его корни. Проведем анализ этой математической задачи.
Рассмотрим различные варианты значений исходных данных, которые приводят к разным результатам для решающего ее алгоритма. Ограничимся только поиском вещественных корней уравнения. Проанализируем все возможные варианты множества значений коэффициентов а, Ь, с:
Если а — |
то любое х — решение уравнения |
Если а — |
то уравнение решений не имеет |
Если а — , |
то это линейное уравнение, которое имеет одно решение: х = —c/b |
Если а * О и d = b2 — 4ас О, |
то уравнение имеет два вещественных корня: |
Если а * О и (1 < О, |
то уравнение не имеет вещественных корней |
Построение алгоритма
|
Программирование обработки информации |
![]() |
Рис. 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 (а) ;
ReadLn (с) ;
Then
Then
Then WriteLn ( Любое х решение ' )
Else WriteLn ( Нет решений ' )
Е1ве
Begin
WriteLn ( , х)
End
Else
|
Программирование обработки информации |
![]() |
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 |
![]() |
|
Исходные значения |
Верные результаты |
Результаты тестирования |
1 |
|
Любое Х — решение |
Любое Х — решение |
2 |
|
Нет решений |
Нет решений |
З |
|
х=з |
|
4 |
|
|
х1=1 |
5 |
|
Нет вещественных корней |
Нет вещественных корней |
Теперь, анализируя результаты тестирования, делаем вывод: правильность алгоритма и работоспособность программы доказаны.
Если какой-то из вариантов теста не дает ожидаемого результата, то в программе есть ошибки. Например, пусть программист ошибочно записал следующие операторы присваивания для вычисления корней:
х 1: (—b+sqrt (d) ) /2*а; х2 (—b—sqrt (d) ) /2*а;
Результаты всех тестов, кроме 4-го, совпали с ожидаемыми, а в 4-м тесте получилось: х1=4, х2=—6. После этого программист обратит внимание на выражения для вычисления корней и исправит ошибки: либо заменит знак умножения на знак деления, либо за-
|
Программирование обработки информации |
![]() |
|
|
Постановка задачи |
Определение исходных данных и искомых результатов (в терминах предметной области) |
Формализация |
Переход к задаче обработки некоторой знаковой системы, например к математической задаче |
Анализ математической задачи |
Определение всех вариантов множеств значений исходных данных. Определение для каждого варианта способа решения и вида выходных данных (результатов) |
Построение алгоритма |
Определение структуры алгоритма, последовательности команд. Представление на каком-либо языке описания алгоритмов (блок-схема, учебный Алгоритмический язык) |
Составление программы |
Запись и отладка программы на языке программирования. Строгое соблюдение правил синтаксиса языка |
Тестирование |
Экспериментальное доказательство правильности алгоритма и работоспособности программы. Тест — вариант решения задачи с заданными исходными данными, для которых известен результат. План тестирования строится так, чтобы наиболее полно проверить работу программы |
Вопросы и задания
1. Сформулируйте основные цели этапов алгоритмического решения задачи.
2. Проанализируйте задачу решения биквадратного уравнения, составьте алгоритм и напишите программу на Паскале.
Рассмотрим приемы программирования циклов на Паскале. В 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. Требуется вычислить сумму:
Ниже приводятся два варианта программы решения этой задачи. В первом варианте используется цикл с предусловием, во
|
Программирование обработки информации |
![]() |
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
End;
WriteLn ( ' Е— ' , Е) End.
В программе используется оператор цикла For, для которого существуют два варианта:
1) For <параметр цикла> : =<выражение 1> То «(выражение 2> Do <оператор> 2) For <параметр цикла> : «выражение 1> Do»mto <выражение 2> Do <оператор>
Здесь <параметр цикло — имя простой переменной порядкового типа. Выполнение оператора For в первом варианте (То) происходит по следующей схеме.
1. Вычисляются значения <выражения 1> и <выражения 2>. Это делается только один раз при входе в цикл.
2. Параметру цикла присваивается значение <выражения 1>.
З. Значение параметра цикла сравнивается со значением <выра— жения 2>. Если параметр цикла меньше или равен этому значению, то выполняется тело цикла «оператор>), в противном случае выполнение цикла заканчивается.
4. Значение параметра цикла изменяется на следующее значение в его типе (для целых чисел — увеличивается на единицу); происходит возврат к пункту З.
|
Программирование обработки информации |
![]() |
Во втором варианте оператора Eor слово Downto буквально можно перевести как «вниз до». В таком случае параметр цикла изменяется по убыванию, т. е. при каждом повторении цикла параметр изменяет свое значение на предыдущее (равносильно
Работая с оператором For, учитывайте следующие правила:
параметр цикла не может иметь
вещественного типа;
в теле цикла нельзя изменять
переменную-параметр цикла;
при выходе из цикла значение
переменной-параметра является неопределенным.
Рассмотрим пример программы, в которой в теле цикла будет присутствовать ветвление.
Пример 2. Составим программу проверки знаний учеником таблицы умножения. Компьютер задает ученику 10 вопросов на умножение чисел от 2 до 9. На каждое задание ученик вводит свой ответ, компьютер сообщает, верный ответ или нет.
Программирование циклов |
521 |
![]() |
Рис. 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 <логическое выражение оператор> тело цикла. Повторяется выполнение тела цикла до того, как <логи— ческое выражение> станет истинным |
Цикл с заданным числом повторений имеет управляющий параметр, изменяющийся с постоянным шагом в определенном диапазоне значений; реализуется всеми типами операторов цикла |
Вопросы и задания
1. Постройте трассировочную таблицу выполнения программы .Битта 1 для значения п = З.
2. Составьте программу, по которой компьютер десять раз запросит ввод любых чисел и в результате выведет среднее арифметическое значение введенных чисел (массив не использовать). Сделайте три варианта программы, используя операторы цикла Whi1e, Repeat и For.
З. Составьте программу, по которой компьютер десять раз запросит ввод целых чисел и в результате сообщит, сколько среди введенных чисел четных и сколько нечетных.
4. Составьте программу, по которой на
экран будет выведена вся таблица умножения.
5. Усовершенствуйте программу ТаЬIМи1 (пример 2 данного параграфа) таким образом, чтобы в результате выводилось сообщение о количестве правильных и неправильных ответов.
6. Усовершенствуйте программу ТаЬIМи1 таким образом, чтобы в результате выводилась оценка, поставленная ученику. Критерии для выставления оценок придумайте сами.
Программирование циклов |
|
7.
![]() |
cos х
о.оооо о.оооо 1.оооо
0.1000 0.0998 0.9950
1.оооо 0.8415 0.5403
8. Получите в возрастающем порядке все
трехзначные числа, в десятичной записи которых нет одинаковых цифр.
9. Значение функции ех (экспонента от х) равно сходящейся сумме бесконечного ряда:
е
Получите рекуррентную формулу для слагаемых. Используя операторы цикла While, Repeat и For, составьте три варианта программы вычисления суммы с заданным числом слагаемых.
Если в теле одного цикла имеется другой цикл, то такая структура алгоритма называется вложенными циклами. Рассмотрим задачу, программа решения которой имеет структуру вложенных циклов.
|
Программирование обработки информации |
![]() |
Рис. 3.17. Блок-схема алгоритма получения таблицы умножения
Здесь цикл по параметру у вложен в цикл по параметру х. Последовательность изменения значений параметров циклов такая:
х— 1; у- 1, 2, З 9
9
х 9
Таким образом, внещний цикл исполнится 9 раз, а внутренний — 9 • 9 = 81 раз. На один шаг повторения внешнего цикла происходит полная прокрутка внутреннего.
При программировании вложенных циклов используется понятие глубины вложенности. В данном примере глубина вложенности внутреннего цикла равна единице. Если бы внутри вложенного цикла был еще один вложенный цикл (например, для вычисления всех вариантов перемножения трех сомножителей), то его глубина вложенности равнялась бы двум.
Программа на Паскале получения матрицы Пифагора:
Program MatrPif ;
Var х, у: 1 . . 9;
Begin
For хто 9
Begin
WriteLn;
Вложенные и итерационные циклы |
22 |
![]() |
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 32
56
64 72
9 18 27 36 45 54 63 72 81 В программе присутствуют некоторые элементы, не отраженные в блок-схеме. В описании переменных Х, У использован ограниченный тип: 1 . . 9, поскольку в данной задаче величины принимают целые значения только в этом диапазоне. Оператор WriteLn перед началом вложенного цикла обеспечивает переход к новой строке в таблице каждый раз при смене первого сомножителя. В операторе Write (Х * У : 3) для вывода значения произведения после двоеточия использован указатель формата — З. Это обеспечивает вывод чисел в три позиции на экране, благодаря чему соответствующие столбцы таблицы располагаются строго друг под другом. Первая строка и первый столбец на экране — это сомножители, что соответствует стандартному формату таблицы Пифагора.
Итерационные циклы
|
Программирование обработки информации |
![]() |
Пример 1. Снова рассмотрим задачу вычисления суммы числового ряда:
Но теперь условие будет таким: в сумму нужно включить только слагаемые, значение которых больше некоторой малой величины г. При этом полученная сумма будет отличаться от предельного значения (константы е) на величину, не большую Е.
Поскольку с увеличением значения i величина 1/i! уменьшается, в сумму надо включать все слагаемые, предшествующие первому значению, меньшему Е. Вот две программы решения этой задачи, использующие циклы с предусловием и постусловием:
Program Summa 4;
Begin
Write ( ' Eps=') ; ReadLn (eps) ; а :=1;
Begin
End;
WriteLn ( Е=
Слагаемых: , i)
End.
Program Surnma 5;
Begin
Write ( 'Eps='); ReadLn (eps) ;
Repeat
Вложенные и итерационные циклы |
S 22 |
![]() |
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 : ;
|
Программирование обработки информации |
![]() |
Sum:=Sum + Х mod |
/ / прибавление к сумме / / младшей цифры |
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.
![]() |
Еще одним важнейшим методологическим приемом структурного программирования является Декомпозиция решаемой заДачи на поДзаДачи — более простые, с точки зрения программирования, части исходной задачи. Алгоритмы решения таких подзадач называются вспомогательными алгоритмами.
В языках программирования вспомогательные алгоритмы называются подпрограммами. В Паскале различаются две разновидности подпрограмм: процедуры и функции. Рассмотрим этот вопрос на примере следующей задачи: даны два натуральных числа а и Ь. Требуется определить наибольший общий делитель трех величин: а + Ь, а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 (В) ;
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 (А) ;
Rez (Evk1id (А+В, А*А+В*В) ,
WriteLn ( ' NOD равен Rez)
End.
Из примера видно, что тело функции отличается от тела процедуры только тем, что в функции результат присваивается
Обращение к функции является операндом в выражении. Оно записывается в следующей форме:
Опля функции> «список фактических параметров>)
Правила соответствия между формальными и фактическими параметрами все те же. Сравнивая приведенные выше программы, можно сделать вывод, что программа NOD3 имеет определенные преимущества перед другими. Функция позволяет получить результат путем выполнения одного оператора присваивания. Здесь также иллюстрируется возможность того, что фактическим аргументом при обращении к функции может быть эта же функция.
По правилам стандарта Паскаля, возврат в вызывающую программу из подпрограммы происходит, когда выполнение подпрограммы доходит до ее конца (последний End). Однако в современных версиях Паскаля есть средство, позволяющее выйти из подпрограммы в любом ее месте. Это оператор-процедура Exit . Например, функцию определения большего из двух данных вещественных чисел можно описать так; Eunction Мах (Х, У: Rea1) : Rea1;
Вспомогательные алгоритмы и подпрограммы |
|
![]() |
Мах :
End;
Модифицированный алгоритм Евклида. Подпрограмму алгоритма Евклида можно составить иначе, если воспользоваться операцией mod (получение остатка от деления), имеющейся в Паскале. Идея алгоритма исходит из справедливости следующих равенств:
М, при лт = О;
нод(м,
НОД(ЛТ, Mmod N), при лт О.
В таком случае функцию Evk1id можно переписать так:
Var R : Integer; Begin
Whi1e Do
Begin R:=M тод Н;
End ;
|
Программирование обработки информации |
Система основных понятий
Подпрограммы |
|
Процедуры |
Функции |
Результат — любое число величин Описание: Procedure <имя процедуры> [ (список формальных параметров) ] ; <блок> |
Результат — оДна величина Описание: Function Отмя функцио [ «список формальных параметров>) ] : егип функции> ; <блоо |
Обращение — оператор процедуры: <имя процедуры> [ (список фактических параметров) ] |
Обращение — операнд выражения: Опая функции> «список фактических параметров» |
Параметры подпрограмм |
|
Параметры-переменные |
Параметры- значения |
Описание: Var описок переменных> : <тип> |
Описание: Список переменных». «гип> |
Фактические параметры: переменные |
Фактические параметры: выражения |
Вопросы и задания
1. Для чего используются подпрограммы?
2. В чем различие между процедурами и функциями?
З. Какие существуют способы передачи данных между подпрограммой и вызывающей ее программой?
4. Составьте программу вычисления площади кольца по значениям внутреннего и внешнего радиусов, используя подпрограмму вычисления площади круга (два варианта: с процедурой и с функцией).
5. Составьте программу сложения двух простых дробей. Результат долО жен быть несократимой дробью. Используйте подпрограмму вычисления НОД по алгоритму Евклида. Простая дробь задается двумя целыми числами: числителем и знаменателем.
б. По координатам вершин треугольника вычислите его периметр, используя подпрограмму вычисления длины отрезка между двумя точками.
7. Даны три целых числа. Определите, у которого из них больше сумма цифр. Подсчет суммы цифр организуйте через подпрограмму.
Массивом в Паскале называют переменную величину регулярного типа.
Регулярный тип — это структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин.
Описание массивов. Переменная регулярного типа описывается в разделе описания переменных в следующей форме:
Массивы |
S 24 |
![]() |
В данном случае квадратные скобки — это обязательные символы, которые называются индексными скобками. Чаще всего в качестве типа индекса употребляется ограниченный тип. Например массив вещественных чисел, хранящий 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;
В такой программе допустимы следующие обозначения элементов массивов:
В некоторых случаях бывает удобно в качестве индекса использовать перечислимый тип. Например, данные о количестве учеников в четырех десятых классах одной школы могут храниться в следующем массиве:
Туре Index
|
Программирование обработки информации |
![]() |
И если, например, элемент 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 А: 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;
|
Программирование обработки информации |
![]() |
Действия над массивом как единым целым. Такие действия допустимы лишь в двух случаях:
присваивание значений одного массива
другому;
применение к массивам операций отношения
«равно» , «не равно».
В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов).
Пример 1
При выполнении операции присваивания
все элементы массива Р станут равными соответствующим элементам массива 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Ј
где Р описана так:
Массивы |
|
![]() |
Ввод и вывод массивов производятся покомпонентно. Вот примеры ввода с клавиатуры значений одномерного и двумерного массивов:
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
|
Программирование обработки информации |
![]() |
После вывода очередной строки матрицы оператор WriteLn без параметров переведет курсор в начало новой строки. Следует заметить, что в последнем примере матрица на экране будет получена в естественной форме прямоугольной таблицы, если Јтах не превышает 12 (подумайте почему).
Система основных понятий
|
|
Массив — переменная величина регулярного типа |
|
Регулярный тип — структурный тип данных, представляющих собой совокупность пронумерованных однотипных величин |
|
Описание массива |
Идентификация элементов массива |
Var <идентификатор>: array [ сип индекса>] 0f егип компонентов> <тип индексо — любой порядковый тип, кроме integer; тип компонентов любой простой или структурный тип |
<идентификатор массиво «индексы элемента>] Для одномерного массива индекс — одно значение, для многомерного массива — множество значений |
Действия над массивом как единым целым |
|
Присваивание однотипных массивов |
Отношения «равно» , «не равно» для однотипных массивов |
Ввод/вывод массивов производится покомпонентно |
Вопросы и задания
1. Что такое регулярный тип данных? Что такое массив?
2. Какие типы допустимы для индексов массива? З. Как в Паскале трактуется многомерный массив?
4. Какие действия можно выполнять над массивом как единым целым?
5. Дан вектор {2i}, i 50. Составьте программу ввода
значений и вычисления длины этого вектора по следующей формуле:
6. Даны значения массива {ај}, i О 10 и переменной х. Составьте программу вычисления алгебраического многочлена 10-й степени по формуле Горнера:
атох1О +а„х9 + ((...(ашх + ао)х + а8)х + + арх + Ч.
![]() |
До сих пор мы программировали ввод исходных данных с клавиатуры и вывод на экран монитора. Как было сказано в 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, а, Ь, с) ; {чтение первой строки файла)
Организация ввода и вывода данных |
|
![]() |
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
В следующей программе производится ввод этой матрицы в двумерный массив М:
F1 : Text; {файловая переменная begin
Assiqn (F1, 'matr . txt' ) ; Связывание
Е 1
с файлом matr . txt}
Reset (F1) ; { открытие файла для чтения}
Eor то 4 Do
|
Программирование обработки информации |
![]() |
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 (ТМ) ; (Открытие файла для записи)
Циклический вывод в файл таблицы умножения
}
![]() |
Процедуры открытия файла для записи и запись в файл имеют следующий формат:
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 |
|
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
|
Программирование обработки информации |
![]() |
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. Такой алгоритм будет иметь структуру двух вложенных циклов, причем внутренний цикл переменной (сокращающейся) длины.
|
Программирование обработки информации |
![]() |
все кц кц
Для сортировки массива по убыванию значений достаточно заменить знак отношения «больше» на «меньше».
Запрограммируем на Паскале процедуру сортировки массива по возрастанию методом пузырька.
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 ;
Year array [2001. .2010] of Month;
Var ТаЬ1: Year; array [2001 . . 2010] of Rea1;
1, б, К: Integer;
Begin {Ввод данных с клавиатуры)
Типовые задачи обработки массивов |
S 26 |
![]() |
For то
12
Begin
Write (3:2,
ReadLn (ТаЬ1 [Т,
End,•
|
|
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) ; Вывод символа
и его кода
|
Программирование обработки информации |
![]() |
Значения выводятся парами: символ—код. В одной строке располагается 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 |
![]() |
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 , |
з |
|
Pos cd' |
з |
|
Pos ( 'k' 52) |
0 |
Процедура De1ete ( S , Poz, N) удаляет лт символов из строки S, начиная с позиции Рог.
Пример
Исходное значение: |
Оператор: |
Конечное значение: |
|
De1ete ( S , 3,2) |
|
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 |
![]() |
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. Строка представляет собой запись
целого числа. Составьте программу ее перевода в соответствующую величину целого
типа.
Все структурные типы данных, с которыми вы уже познакомились (массивы, строки), представляют собой совокупности однотипных величин. Комбинированный тип данных — это структурный тип, состоящий из фиксированного числа компонентов (полей) разных типов.
Комбинированный тип объявляется в программе в разделе типов:
Опля поля <тип> ;
<имя поля <тип>
End
Поля могут иметь любые типы, в том числе и комбинированный тип.
Например, данные о результатах экзаменов, полученных учеником по трем предметам, могут быть представлены одной величиной комбинированного типа:
Туре resul ts record
Fami1y : string [15] ; { Фамилия ученика }
Rus ; |
2 . . 5, |
{ Оценка по русскому |
языку |
A1g: |
2 . . 5, |
{ Оценка по алгебре } |
|
Phiz : |
|
{ Оценка по физике |
|
End;
После этого в разделе переменных следует описание:
Var ехат: resu1ts ;
Величина комбинированного типа называется записью. Элементы записи идентифицируются составными именами следующей структуры:
<имя переменной> . Опля поло
Комбинированный тип данных |
529 |
![]() |
В программе может использоваться массив, элементами которого являются записи.
Пример 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)
Программа отбирает записи, в которых все поля с оценками равны 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,
(Цикл отбора отличников и вывода их фамилий)
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,•
![]() |
Пример 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) ;
Rewrite (F2) ;
ReadLn (Е 1) ; ReadLn (Е 1) ;
{ Инициализация счетчиков
(Цикл до конца чтения файла }
While пое EOF (F1) Do
Begin
ReadLn (Е 1, list. Fam, 1ist . Rus, 1ist
.A1g, 1ist. Phiz) ; Подсчет числа учеников
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. Чем комбинированный тип данных отличается от регулярного типа данных (массива)?
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 |
![]() |
Основные
элементы языка программирования (на примере языка Pascal). Циклы. Работа с
циклами. Использование циклов в программе. Вложенные циклы
Основы
работы со строками в языке Pascal. Практическая работа
Основы
составления программы, осуществляющей вывод данных на консоль в языке Pascal
Простейшие
операции языка Pascal
Работа
с массивами. Одномерные массивы. Алгоритмы работы с массивами. Обработка
массива в цикле. Подсчет суммы элементов, максимум и минимум, поиск и
сортировка элементов в массиве (на примере языка Pascal). (И)
Реализация
основных алгоритмических конструкций.Создание шаблона программы на языке Pascal
Функции работы со
строками в языке Pascal. Практическая работа
Этапы
разработки программы, ее структура. Создание шаблона программы на языке Pascal
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?
|
Практикум |
![]() |
Используя в качестве ключа расположение букв на клавиатуре вашего компьютера, закодировать сообщение:
Москва — столица России
Задание 8
Шифр перестановки. Кодирование осуществляется перестановкой букв в слове по одному и тому же правилу. Восстановить слова и определить правило перестановки:
НИМАРЕЛ, ЛЕТОФЕН, НИЛКЙЕА, НОМОТИР, РАКДНАША.
Задание 9
Используя приведенный в задании 8 шифр перестановки, закодировать следующие слова:
ГОРИЗОНТ, ТЕЛЕВИЗОР, МАГНИТОФОН.
Задание 10
Определить правило шифрования и расшифровать слова:
КЭРНОЦЛИТКЭЛУОНПИЕЖДАИФЯ
УКРОГРЕОШЛАЕКВИСЧТЕВМО
Задание 11
Используя приведенный ниже ключ, расшифровать сообщения.
ключ: РА ДЕ КИ МО ну ЛЯ Сообщения:
а) АКБМУНИЯДКУМВРЛ ИКСЯМТР 6) ТДЯДФМУУЫЙ АРЗГМВМА
Задание 12
С помощью ключа из задания 11 закодировать пословицы:
а) Рыбак рыбака видит издалека
б) Сделал дело — гуляй смело
Задание 13*
Придумать свой ключ шифрования и закодировать с помощью него сообщение:
Практические работы к главе 1 |
|
|
199 |
Бит — это минимальная единица измерения информации
Цель работы: практическое закрепление знаний о способах измерения информации при использовании содержательного и объемного подходов.
Задание 1
Определить (с помощью утилиты «Установка и удаление программ»), сколько приложений установлено на вашем компьютере, и вычислить, какое количество информации содержит сообщение о том, что было запущено одно из них.
Задание 2
Врач-стоматолог принимает пациентов с 8 утра до 2 часов дня. На каждого пациента отводится по 30 минут. Какое количество информации содержит сообщение о том, что Петя записался на прием в 11.30?
Задание З
Известно, что сообщение учителя о том, что к доске пойдет Саша Орлов, содержит 5 битов информации. Сколько учеников в классе?
Задание 4
В корзине лежат 4 груши и 12 яблок. Какое количество информации содержит сообщение о том, что из корзины достали грушу?
Задание 5
В школьную команду по волейболу было отобрано некоторое количество учеников из 64 претендентов. Сколько учеников было отобрано, если сообщение о том, кто был выбран, содержит 72 бита информации?
Задание 6
|
Практикум |
![]() |
Задание 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*
|
Практикум |
![]() |
Задание 20*
Создать с помощью табличного процессора Excel таблицу следующего вида:
Из какой единицы измерения переводить? |
Количество информации |
Биты |
Байты |
Килобайты |
Мегабайты |
Гигабайты |
|
|
|
|
|
|
|
В первом столбце единица измерения должна выбираться из списка (список создается с помощью команды Данные Проверка). Далее, в зависимости от выбранной единицы измерения, заданное количество информации должно переводиться во все указанные единицы измерения (использовать условную функцию).
Протестировать работоспособность созданной таблицы и доказать правильность ее работы.
Цель работы: закрепление знаний о системах счисления и о представлении чисел в памяти компьютера, полученных при изучении курса информатики основной школы.
Задание 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 |
|
![]() |
Определить, какие символы кодировочной таблицы 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, расшифровать текст, представленный в виде двоичных кодов символов.
|
Практикум |
![]() |
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
|
Практикум |
![]() |
Справочная информация
В некоторых заданиях используется модельный (учебный) вариант монитора с размером растра 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
|
Практикум |
![]() |
Задание 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, Голубой
![]() |
Цвет закраски Розовый
Закрасить 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 |
|
![]() |
Задание 14
Монитор работает с 16-цветной палитрой в режиме 640 х 400 пикселей. Для кодирования изображения требуется 1250 Кбайт. Сколько страниц видеопамяти оно занимает?
Задание 15
Сколько цветов можно максимально использовать для хранения изображения размером 350 х 200 пикселей, если объем страницы видеопамяти — 65 Кбайт?
Задание 16
Определить объем памяти для хранения цифрового аудиофайла, время звучания которого 5 минут при частоте дискретизации 44,1 КГц и глубине кодирования 16 битов.
Задание 17
Записать с помощью стандартного
приложения «Звукозапись» звук длительностью 1 минута с частотой дискретизации
22,050 КГц и глубиной кодирования 8 битов (моно), а затем тот же самый звук с
частотой дискретизации 44,1 КГц и глубиной кодирования 16 битов (моно).
Сравнить объемы полученных файлов.
Задание 18
|
Практикум |
![]() |
Задание 19
Две минуты записи цифрового аудиофайла занимают на диске 5,1 Мбайт. Частота дискретизации — 22 050 Гц. Какова разрядность аудиоадаптера?
Задание 20
Объем свободной памяти на диске — 0,01 Гбайт, разрядность звуковой платы — 16. Какова будет длительность звучания цифрового аудиофайла, если его записать с частотой дискретизации 44100 Гц?
Цель работы: закрепление навыков программного управления учебными исполнителями алгоритмов, полученных при изучении курса информатики в 7—9 классах.
Используемое программное обеспечение: среда какого-либо учебного исполнителя алгоритмов графического типа, назначение которого — рисование на экране компьютера, К числу таких исполнителей относятся: Черепашка Лого, Чертежник, Кенгуренок и др.
Практические работы к главе 2 |
|
![]() |
Написать подпрограмму (процедуру) STEP и с ее помощью составить программу рисования лесенки по диагонали через всё поле рисунка.
Задание 2
Написать программы для рисования следующих рисунков на всю ширину поля, используя вспомогательные алгоритмы (подпрограммы).
а
Описать подпрограмму для рисования следующей фигуры.
Задание 4
Используя подпрограмму из предыдущего задания, составить
программу для рисования «забора» через всё поле рисунка.
Задание 5
![]() |
Работа 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
На информационной ленте машины Поста на расстоянии в п клеток друг от друга расположены две помеченные метками клетки. Начальное положение каретки под левой из помеченных клеток. Какую работу выполнит Машина Поста по программе?
Задание 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 |
![]() |
Мат.плата 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 тыс. руб.
![]() |
Примечание. Для видеомонтажа необходимо наличие на материнской плате интерфейса 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:
• раздел Main или Standard CMOS Setup. Здесь можно задать дату и время, а также параметры жестких дисков;
• в разделе Advanced BIOS Features (BIOS Features Setup или просто Advanced) приведены различные общие настройки, позволяющие включить или отключить определенные опции загрузки компьютера;
• раздел Integrated Peripherals отвечает за интерфейсы, интегрированные устройства и дополнительные системные функции;
•
раздел Power Management Setup позволяет настроить все опции
энергопотребления и питания; раздел Hardware Monitor позволяет узнать
значения системных датчиков: температуру процессора или скорость вращения
вентиляторов (об/мин);
пункт Load Setup Defaults
восстанавливает настройки BIOS по умолчанию и устраняет все изменения, которые
вы могли внести. Данный пункт будет полезен, если ваши действия привели к
каким-либо проблемам в системе.
Main. Здесь можно установить время и дату, а также параметры ваших жестких дисков и других установленных накопителей. Каждый раз при загрузке ПК, скорее всего, автоматически определяет накопители, установленные в системе. У большинства компьютеров на это уходит секунда или две, но если вы вручную внесете нужные параметры, то несколько ускорите время загрузки.
|
227 |
![]() |
• 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 — второй
контроллер ТЕ-дисков;
|
Практикум |
•
![]() |
• 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. Проверить необходимость дефрагментации жесткого диска и, при необходимости, выполнить его дефрагментирование.
|
Практикум |
![]() |
1. Скачать из Интернета последнюю версию программы CPU-Z (для ее поиска воспользоваться любым поисковым сервером).
2. Запустить
программу CPU-Z, с ее помощью определить характеристики процессора на вашем
рабочем компьютере и заполнить таблицу:
Характеристика |
Значение |
Название процессора |
|
Ядро (core) |
|
Тип разъема (socket) |
|
Тактовая частота |
|
Технологические нормы (в микронах) |
|
Напряжение питания ядра |
|
Задание
Для каждой вычислительной задачи составить программу, содержащую операторы ввода, вывода, присваивания.
Уровень 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.
Задание
Для каждой задачи составить программу, выводящую значение 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).
|
Практикум |
![]() |
Задание 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.
![]() |
20. Дана точка А(х, у). Определить, принадлежит ли она прямоугольнику с вершинами в точках (хр Л), (х2, у,д), (хз, уз), (ха, У4)•
Задание 2
Задачи на определение принадлежности точки области
Для каждой задачи составить программу, содержащую ветвления и определяющую, принадлежит ли точка с координатами (Х, У) заштрихованной области.
Практические работы к главе З |
|
![]() |
|
TIPaKTVIKYM |
![]() |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Практические работы к главе З |
|
|
239 |
Задание З
Задачи на использование оператора выбора
![]() |
Уровень 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.
![]() |
Уровень 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.
![]() |
16. Пусть элементами равностороннего треугольника являются: 1) сторона а; 2) площадь S; З) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
Задание 1
Циклы с заданным числом повторений
Вычислить значение суммы или произведения числовой последовательности.
Уровень 1
1. Дано натуральное число N. Вычислить:
2. Дано натуральное число N. Вычислить:
3 5 7 2N+1
3. Дано натуральное число N. Вычислить:
4. Дано натуральное число N. Вычислить: 1 1 1 sin1 sin1 + sin2 sin1 + sin2 + ... + sin
5. Дано натуральное число N. Вычислить произведение первых лт сомножителей:
Практические работы к главе З |
|
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, у которых сумма всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет».
Практические работы к главе З |
|
![]() |
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. Определить количество цифр в цифровой записи данного числа, которые имеют наименьшее значение.
|
Практикум |
![]() |
14. Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наибольшее значение.
Пример: лт = 1808. Количество цифр с наибольшим значением равно двум (две цифры 8).
15. Палиндром — это сочетания символов, которые читаются одинаково слева направо и справа налево. Например, числа 4884, 121 являются палиндромами. Составить программу, которая определяет, является ли заданное натуральное число палиндромом.
16. Дано натуральное число п. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.
17. Дано натуральное число п. Переставить его цифры так, чтобы образовалось наименьшее число, записанное теми же цифрами.
Задание 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 / п.
Задание
Составить программу решения поставленной задачи по обработке одномерного массива (вектора). По возможности, использовать подпрограммы.
Уровень 1
1. Дана
последовательность действительных чисел (11 , 02 , ап. Выяснить, будет
ли она возрастающей.
2. Дан массив из лт действительных чисел. Подсчитать, сколько в нем отрицательных, положительных и нулевых элементов.
З. Даны действительные числа ар Ч, , а п. Поменять местами первый наибольший элемент с последним наименьшим элементом.
4. В заданном одномерном массиве поменять местами соседние элементы, стоящие на четных местах, с элементами, стоящими на нечетных местах.
5. Задана последовательность {Xi} из лт вещественных чисел. Вычислить последовательность {Si} по формуле:
где М — среднее арифметическое значение последовательности Х.
6. Задана последовательность из лт целых чисел. Вычислить сумму тех элементов массива, порядковые номера которых совпадают со значением этого элемента.
7. Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные элементы.
|
Практикум |
8.
![]() |
Уровень 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.
![]() |
Примечание. Место помещения очередного элемента в отсортированную часть найти с помощью двоичного поиска. Двоичный поиск оформить в виде отдельной функции.
28. Алгоритм сортировки фон Неймана. Упорядочить массив 01 , 02 , , ап по неубыванию с помощью алгоритма сортировки слияниями:
1) каждая пара соседних элементов сливается в одну группу из двух элементов (последняя группа может состоять из одного элемента);
2) каждая пара соседних двухэлементных групп сливается в одну четырехэлементную группу и т. д.
При каждом слиянии новая укрупненная группа упорядочивается.
29. Шейкер-сортировка. Алгоритм «пузырьковой» сортировки легко улучшить. Разумно запомнить, производился ли на данном проходе какой-либо обмен. Если нет, то алгоритм можно закончить. Еще одно улучшение заключается в том, что периодически меняется направление сортировки, которое борется с некоторой асимметрией «пузырькового» метода. Написать программу, реализующую данный улучшенный алгоритм.
Задание
Составить программу решения поставленной задачи по обработке двумерного массива (матрицы). По возможности, использовать подпрограммы.
Уровень 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 |
|
14 |
23 |
22 |
21 8 |
14 |
12 |
11 |
10 9 |
30. Среди тех строк целочисленной матрицы, которые содержат только нечетные элементы, найти строку с максимальной суммой модулей элементов.
31.
Подсчитать количество строк заданной целочисленной матрицы лг х
N, являющихся перестановкой чисел 1, 2, (т. е. содержащих
каждое из чисел 1, 2, ..., лт ровно один раз).
Задание
Составить на Паскале программу решения поставленной задачи по обработке символьных строк. По возможности, использовать подпрограммы. В последующих задачах подразумевается, что слова в тексте (в строке) отделяются друг от друга пробелами.
Уровень 1
1. Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.
2. Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы «Ь».
З. В строке заменить все двоеточия (:) точкой с запятой (;).
Подсчитать количество замен.
|
Практикум |
4.
![]() |
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. а) Дана строка-предложение. Зашифровать ее, поместив
вначале все символы, расположенные на
четных местах, а затем, в обратном порядке, все символы,
расположенные на нечетных местах.
(Например, строка “Программа“ превратится в ”ргамамроП” . )
|
Практикум |
![]() |
Задание
Исходя из условия задачи, определить структуру комбинированного типа данных и типы полей. Исходные данные разместить в текстовом файле. В программе не использовать массивов записей. Результаты выводить на экран и в текстовый файл.
Уровень 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.
![]() |
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.
|
Ответы к заданиям практических работ |
![]() |
в) 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 минуты.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.