Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
PYTHON
Н А > > > П1 , Т | |®
STARTING OUT WITH
Py t h o n *
FIFTH E D I T I O N
STARTING OUT WITH
Pyth o n *
FIFTH E D I T I O N
Tony Gaddis
Haywood C o m m un ity College
Pearson
Тони Гэддис. Начинаем программировать на Python
ТОНИ ГЭДДИС
НАЧИНАЕМ ПРОГРАММИРОВАТЬ
Санкт-Петербург
«БХВ-Петербург»
2022
УДК 004.438 Python
ББК 32.973.26-018.1
Г эддис Т.
Г98 Начинаем программировать на Python. — 5-е изд.: Пер. с англ. — СПб.: БХВ-Петербург,
2022. — 880 с.: ил.
ISBN 978-5-9775-6803-6
Изложены принципы программирования, с помощью которых читатель приобретет навыки алго
ритмического решения задач на языке Python, даже не имея опыта программирования. Дано краткое
введение в компьютеры и программирование. Рассмотрен ввод, обработка и вывод данных, управляю
щие структуры и булева логика, структуры с повторением, функции, файлы и исключения, списки и
кортежи, строковые данные, словари и множества, классы и ООП, наследование, рекурсия, программи
рование интерфейса, функциональное программирование и др.
Для облегчения понимания сути алгоритмов широко использованы блок-схемы, псевдокод и другие
инструменты. Приведено большое количество сжатых и практичных примеров программ. В каждой
главе предложены тематические задачи с пошаговым анализом их решения.
В пятом издании добавлена глава о программировании баз данных.
Для начинающих программистов,
старших школьников и студентов первых курсов
УДК 004.438 Python
ББК 32.973.26-018.1
Authorized translation from the English language edition, entitled Starting Out wth Python. 5th Edition, by Tony Gaddis, published by Pearson
Education, INC, publishing as Prentice Hall. Copyright © 2021 by Pearson Education, Inc.
All rights reserved. No part o f this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including
photocopying, recording or by any information storage retrieval system, without permission from Pearson Education. Inc Russian language edition
published by LLC “BHV”. Copyright © 2022.
Авторизованный перевод англоязычного издания под названием Starting Out with Python, 5th Edition, by Tony Gaddis, опубликованного
Pearson Education, Inc. и подготовленного к изданию Prentice Hall. ©2021 Pearson Education, Inc.
Все права защищены. Никакая часть настоящей книги не может быть воспроизведена нли передана в какой бы то нн было форме
и какими бы то нн было средствами, будь то электронные или механические, включая фотокопирование н запись на магнитный носитель,
если на то нет разрешения Pearson Education, Inc Перевод на русский язык «БХВ», © 2022.
О гл а в л е н и е .................................................................................................................................................XI
Г л ав а 5. Ф у н к ц и и .................................................................................................................................. 226
5.1 Введение в функции..........................................................................................................................226
5.2 Определение и вызов функции без возврата значения................................................................. 229
5.3 Проектирование программы с использованием функций............................................................ 234
5.4 Локальные переменные................................................................................................................... 241
5.5 Передача аргументов в функцию.................................................................................................... 243
5.6 Глобальные переменные и глобальные константы....................................................................... 252
5.7 Введение в функции с возвратом значения: генерирование случайных чисел.......................... 256
5.8 Написание функций с возвратом значения.................................................................................... 267
5.9 Математический модуль math..........................................................................................................281
5.10 Хранение функций в модулях......................................................................................................... 284
5.11 Черепашья графика: модуляризация кода при помощи функций................................................ 290
Вопросы для повторения.............................................................................................................................296
Упражнения по программированию.......................................................................................................... 302
Г л ав а 6. Ф ай л ы и и скл ю ч ен и я.........................................................................................................308
6.1 Введение в файловый ввод и вывод............................................................................................... 308
6.2 Применение циклов для обработки файлов................................................................................... 325
6.3 Обработка записей........................................................................................................................... 332
6.4 Исключения.......................................................................................................................................345
Вопросы для повторения.............................................................................................................................358
Упражнения по программированию.......................................................................................................... 362
Короткий ответ..................................................................................................................................221
Алгоритмический тренажер..................... .......................................................................................221
Упражнения по программированию...........................................................................................................222
Функция len........................................................................................................................................370
Использование цикла for для обхода списка по индексу.............................................................. 370
Списки как мутируемые последовательности............................................................................... 371
Конкатенирование списков............................................................................................................. 372
7.3 Нарезка списка...................................................................................................................................374
7.4 Поиск значений в списках при помощи инструкции in................................................................ 377
7.5 Методы обработки списков и полезные встроенные функции.................................................... 379
Метод appendQ..................................................................................................................................379
Метод index( ) .....................................................................................................................................381
Метод insertf).....................................................................................................................................382
Метод sortQ........................................................................................................................................383
Метод remove()..................................................................................................................................383
Метод reverseQ..................................................................................................................................384
Инструкция del..................................................................................................................................385
Функции min и m ax...........................................................................................................................385
7.6 Копирование списков........................................................................................................................386
7.7 Обработка списков............................................................................................................................388
*В центре внимания* Использование элементов списка в математическом выражении..... 388
Суммирование значений в списке.................................................................................................. 389
Усреднение значений в списке.........................................................................................................390
Передача списка в функцию в качестве аргумента........................................................................391
Возвращение списка из функции.....................................................................................................392
*В центре внимания* Обработка списка..................................................................................393
Случайный выбор элементов списка...............................................................................................396
Работа со списками и файлами........................................................................................................397
7.8 Включение в список..........................................................................................................................401
Использование условий i f с операцией включения в список....................................................... 403
7.9 Двумерные списки............................................................................................................................404
7.10 Кортежи..............................................................................................................................................408
В чем смысл?.....................................................................................................................................409
Преобразование между списками и кортежами.............................................................................410
7.11 Построение графиков с данными списков при помощи пакета matplotlib.................................. 410
Импорт модуля pyplot.......................................................................................................................411
Построение линейного графика.......................................................................................................412
Добавление заголовка, меток осей и сетки.....................................................................................413
Индивидуализация настроек осейх и у ...........................................................................................414
Вывод маркеров в точках данных....................................................................................................418
Построение гистограммы.................................................................................................................420
Индивидуальная настройка ширины столбика.........................................................................421
Изменение цвета столбиков........................................................................................................422
Добавление заголовка, меток осей и индивидуальная настройка подписей
меток делений..............................................................................................................................423
Построение круговой диаграммы....................................................................................................424
Вывод меток долей и заголовка диаграммы.............................................................................425
Изменение цвета долей...............................................................................................................427
Вопросы для повторения.............................................................................................................................427
Множественный выбор.....................................................................................................................427
Истина или ложь................................................................................................................................430
Короткий ответ..................................................................................................................................430
Алгоритмический тренажер............................................................................................................ 431
Упражнения по программированию...........................................................................................................432
XVIII Оглавление
Г л а в а 9. С ловари и м н о ж ества.........................................................................................................472
9.1 Словари..............................................................................................................................................472
Создание словаря.............................................................................................................................. 473
Получение значения из словаря...................................................................................................... 473
Применение операторов in и not in для проверки на наличие значения в словаре.................... 474
Добавление элементов в существующий словарь......................................................................... 475
Удаление элементов......................................................................................................................... 476
Получение количества элементов в словаре...................................................................................477
Смешивание типов данных в словаре............................................................................................ 477
Создание пустого словаря............................................................................................................... 479
Применение цикла for для последовательного обхода словаря................................................... 479
Несколько словарных методов........................................................................................................ 480
Метод clearQ............................................................................................................................... 480
Метод get().................................................................................................................................. 481
Метод itemsf)............................................................................................................................... 481
Метод keysQ................................................................................................................................. 482
Метод рор()................................................................................................................................. 483
Метод popitemO........................................................................................................................... 484
Метод values()............................................................................................................................. 485
*В центре внимания* Применение словаря для имитации карточной колоды................... 485
*В центре внимания* Хранение имен и дней рождения в словаре....................................... 488
Включение в словарь....................................................................................................................... 495
Использование условий i f с операциями включения в словарь................................................... 497
Оглавление XIX
9.2 Множества...................................................................................................:.....................................498
Создание множества.........................................................................................................................499
Получение количества элементов в множестве..............................................................................500
Добавление и удаление элементов...................................................................................................500
Применение цикла for для последовательного обхода множества.............................................. 502
Применение операторов in и not in для проверки на принадлежность значения множеству.... 503
Объединение множеств....................................................................................................................503
Пересечение множеств......................................................................................................................504
Разность множеств............................................................................................................................505
Симметричная разность множеств..................................................................................................505
Подмножества и надмножества.......................................................................................................506
*В центре внимания* Операции над множествами.................................................................507
Включение в множество...................................................................................................................509
9.3 Сериализация объектов.....................................................................................................................512
Вопросы для повторения.............................................................................................................................518
Множественный выбор.....................................................................................................................518
Истина или ложь................................................................................................................................520
Короткий ответ..................................................................................................................................521
Алгоритмический тренажер.............................................................................................................522
Упражнения по программированию...........................................................................................................524
• turtle.textinput.
♦ Случайный выбор элементов списка. Функция random.choiceO введена в главе 7 как
способ случайного выбора элементов списка.
♦ Новые темы, связанные с функциями. В главу 5 было добавлено несколько новых тем,
в том числе:
• введено ключевое слово pass;
• расширенное обсуждение значения None и причин, по которым функция может воз
вращать None;
• в новом издании принята стандартная практика условного выполнения главной функ
ции main.
Глава 5. Функции
В данной главе обучаемый сначала учится программировать и вызывать функции без воз
врата значения — так называемые функции void, или пустые. Показаны преимущества ис
пользования функций в плане модуляризации программ, и обсуждается нисходящий подход
к их разработке. Затем обучаемый учится передавать аргументы в функции. Рассматривают
ся общие библиотечные функции, в частности функции генерации случайных чисел. На
учившись вызывать библиотечные функции и использовать возвращаемые ими значения,
обучаемый приобретает навыки написания и вызова собственных функций и применения
модулей для упорядочения функций. В качестве дополнительного материала обсуждаются
темы модуляризации программного кода с инструкциями черепашьей графики на основе
функций.
Дополнительные материалы
Онлайновые учебные ресурсы
Специально для этой книги издателем предоставлено большое количество учебных ресур
сов. В частности, можно найти следующие материалы:
♦ исходный код для каждого приводимого в книге примера программы
(https://media.pearsoncmg.com/ph/esm/ecsjgaddis_sowpython_5/cw/);
♦ доступ к сопроводительным видеоматериалам
(https://media.pearsoncmg.eom/ph/esm/ecsjgaddis_sowpython_5/cw/#videonotes).
Электронный архив
По ссылке https://zip.bhv.ru/9785977568036.zip можно скачать электронный архив с рас
смотренными проектами и исходными кодами примеров, ответами на вопросы для повторе
ния, решениями задач по программированию, а также дополнительную главу 15 "Принципы
функционального программирования". Эта ссылка доступна также со страницы книги на
сайте w w w .bhv.ru.
Об авторе
Тони Гэддис — ведущий автор серии книг "Начинаем программировать..." (Starting Out With).
У него почти двадцатилетний опыт преподавания курсов информатики в колледже округа
Хейвуд, шт. Северная Каролина. Его преподавательские заслуги общепризнаны: ему при
своено звание "Преподаватель года" колледжем Северной Каролины, он удостаивался пре
мии "Педагогическое мастерство", вручаемой Национальным институтом кадрового и орга
низационного развития. В серии "Начинаем программировать..." издаются книги, посвящен
ные языкам программирования C++, Java™, Microsoft® Visual Basic®, Microsoft® С#®,
Python®, Alice, среде визуальной разработки Android-приложений App Inventor, а также про
граммированию логики и дизайна. Все они были опубликованы в издательстве Pearson. До
полнительную информацию можно найти на сайте w w w .pearsonhighered.com /gaddisbooks.
Введение в компьютеры
и программирование
1.1 Введение
Давайте подумаем, каким образом люди используют компьютеры. В учебных заведениях
компьютеры нужны для составления докладов и написания сочинений, поиска статей, пере
сылки электронных писем и участия в онлайновых учебных занятиях. На работе люди ис
пользуют компьютеры, чтобы анализировать данные, составлять презентации, проводить
деловые транзакции, общаться с клиентами и коллегами, управлять машинами на заводах
и др. Дома компьютеры используются для оплаты счетов, покупки в онлайновых магазинах,
общения с друзьями и семьей и, конечно же, для развлечений. Не забывайте также, что сото
вые телефоны, планшеты, смартфоны, автомобильные системы навигации и множество дру
гих устройств— это тоже компьютеры. В повседневной жизни разнообразие применений
компьютеров почти безгранично.
Компьютеры умеют выполнять такой широкий круг задач, потому что они программируемы.
Из этого следует, что компьютеры приспособлены выполнять не одну задачу, а любую
задачу, которую их программы предписывают им выполнить. Программа — это набор
инструкций, которые компьютер исполняет с целью решения задачи. Например, на рис. 1.1
представлены снимки экранов с двумя популярными программами— Microsoft Word
и PowerPoint.
Программы принято называть программным обеспечением (ПО). Программное обеспечение
имеет для компьютера решающее значение, потому что оно управляет всем, что делает ком
пьютер. Все ПО, которое мы используем, чтобы сделать наши компьютеры полезными, соз
дается лю дьм и— программистами, или разработчиками программного обеспечения. Про
граммист, или разработчик программного обеспечения, — это человек с профессиональной
подготовкой и квалификацией, необходимыми для проектирования, создания и тестирова
ния компьютерных программ. Наверняка вы знаете, что результаты работы программистов
используются в бизнесе, медицине, правительственных учреждениях, правоохранительных
органах, сельском хозяйстве, научных кругах, развлекательных заведениях и многих других
сферах человеческой деятельности.
С помощью этой книги вы познакомитесь с фундаментальными понятиями и принципами
программирования на языке Python. Он идеально подходит для новичков, потому что легок
в освоении и программы пишутся на нем очень быстро. К тому же Python — это мощный
язык, который популярен среди профессиональных разработчиков программного обеспече
ния. Не раз сообщалось, что Python используется в Google, NASA, YouTube, на Нью-
Йоркской фондовой бирже, различными компаниями, специализирующимися на разработке
игр, и многими другими организациями.
Прежде чем приступить к исследованию принципов программирования, необходимо понять
несколько основных идей относительно компьютеров и принципов их работы. Эта глава за-
10 Гпава 1. Введение в компьютеры и программирование
ложит прочный фундамент знаний, на который можно будет постоянно опираться по ходу
изучения информатики. Сначала мы обсудим физические компоненты, из которых компью
теры обычно состоят. Затем рассмотрим способы хранения компьютерами данных и выпол
нения ими программ. И наконец, будет предложено краткое введение в программное обес
печение, которое используют для написания программ на Python.
Е Я Ветаа* pyaai Макп Ссыл> Р_ ем Реце« j ftp f ' (О А**р«*я Д 06шк*/Остуг. I ДдоеЛ [\ Д ОбщиЙ^оступ
Cabbn fu *>
Ж К м -•
8ст«**ть
91 Стили Втааетъ Слвзды Рисоыим Р*дпаирси»ни*
-А- А" А 5» * _ - & «
Еуферовнема- г. A&JKU
Аппаратное обеспечение
Т е р к и н аппаратное обегмечениг о т к о си т с я к о всем ф и зи ческ и м у строй ствам и л и
ком п он ентам , и з к о торы х состои т ком п ью тер. К ом п ью тер и н л я е т и н е еди н ы м устр о й ство м .
■ систем ой у строй ств, к о то ры е рабо таю т в ы вм^гте. К ак и р азн ы е и н струм енты в
сим ф о н ич еско м ор кестре, каж дое устр о й ство в ко м п ью тер е игр ает с во ю собственную роль-
Если вы котя* л и б о п окупали ко м п ью тер , то, в ер о я тн о , видели, ч т о р
со дер ж и т п еречень к ом п он ентов, так и х как м икр о п ро ц ессо р ы ,
ви деод иси ле*. в и д а ж а р т и и т_д. Разо б р а тьс я и тоы. ч то и м ен н о э т и р азн ы е ком поненты
ц е л и л м о ж е т ок азаться п о в ал ь н а сло ж н о , ОКЛЖ т си ь к о в ы уж е НС знаете о компью терах
д о ста то чн о м ного, л и б о п о край н ей м ер е у вас сет ь т о в ар и щ , к о т о р ы й о ни х зн а ет К ак
п о к аз ан о » и р и су н к е 1 2 , т и п и ч н а я к о м п ью тер н ая систем а c o c n w r и з следую щ их главных
компонентов:
• Центральный нр<м*сссор (ЦП)
• О сн о в н ая н а м я т ь
__
РИС. 1.1. Программы для обработки текстов (слева) и презентации (справа)
I M 'i
Аппаратное обеспечение
Термин "аппаратное обеспечение" (hardware) относится ко всем физическим устройствам
или компонентам, из которых состоит компьютер. Компьютер представляет собой не еди
ное устройство, а систему устройств, которые работают во взаимодействии друг с другом.
Как и разнообразные инструменты в симфоническом оркестре, каждое устройство в компь
ютере играет собственную роль.
Если вы когда-либо покупали компьютер, то, вероятно, видели, что рекламная литература
содержит перечень компонентов, таких как микропроцессоры, память, дисководы, видео
дисплеи, видеокарты и т. д. Довольно сложно разобраться в том, что именно делают эти раз
нообразные компоненты, если только вы уже не знаете о компьютерах достаточно много
Гпава 1. Введение в компьютеры и программирование 11
либо у вас нет товарища, который о них что-то знает. Как показано на рис. 1.2, типичная
компьютерная система состоит из следующих главных компонентов:
♦ центрального процессора (ЦП);
♦ основной памяти;
♦ вторичных устройств хранения данных;
♦ устройств ввода;
♦ устройств вывода.
Давайте поподробнее рассмотрим каждый из этих компонентов.
Веб-камера
Мониторы
Джойстик
Устройства
вывода
9
*1 Принтер
Цифровой
U
фотоаппарат
Вторичные устройства
Графический планшет Колонки
у хранения данных
Жесткий диск
Флеш-накопитель
Центральный процессор
Когда компьютер занят задачами, которые программа поручает ему выполнить, мы говорим,
что компьютер выполняет, или исполняет, программу. Центральный процессор (ЦП) явля
ется той частью компьютера, которая фактически исполняет программы. Это самый важный
компонент в компьютере, потому что без него компьютер не сможет выполнять программы.
В самых ранних компьютерах ЦП представлял собой огромные устройства, состоящие из
электрических и механических компонентов, таких как вакуумные лампы и переключатели.
12 Гпава 1. Введение в компьютеры и программирование
1 Первый советский компьютер, МЭСМ, был создан несколько позже под руководством С. А. Лебедева. Соответ
ствующие работы начались только с осени 1948 г. и в конце 1951 г. МЭСМ прошел испытания и был принят
в эксплуатацию Комиссией АН СССР во главе с академиком Келдышем. — Прим. пер.
Гпава 1. Введение в компьютеры и программирование 13
Основная память
Основную память можно представить, как рабочую область компьютера. Это то место, где
компьютер хранит программу, пока та выполняется, и данные, с которыми программа рабо
тает. Например, предположим, вы используете программу обработки текста, чтобы написать
работу для одного из своих учебных занятий. Пока вы это делаете, программа обработки
текста и ваше сочинение хранятся в основной памяти.
Основную память принято называть оперативным запоминающим устройством (ОЗУ), или
запоминающим устройством с произвольным доступом (ЗУПД), или просто оперативной
памятью. Называется она так, потому что ЦП способен получать немедленный доступ
к данным, хранящимся в любой произвольной единице хранения в ОЗУ. Как правило, ОЗУ
является энергозависимым типом памяти, которая используется только для временного хра
нения, пока программа работает. Когда компьютер выключают, содержимое ОЗУ стирается.
В вашем компьютере ОЗУ размещено в кристаллах интегральной микросхемы, подобных
тем, которые показаны на рис. 1.5.
Устройства ввода
Вводом называются любые данные, которые компьютер собирает от людей и от различных
устройств. Компонент, который собирает данные и отправляет их в компьютер, называется
устройством ввода. Типичными устройствами ввода являются клавиатура, мышь, сенсор
ный экран, сканер, микрофон и цифровая фотокамера. Дисководы и оптические диски мож
но тоже рассматривать как устройства ввода, потому что из них извлекаются программы и
данные, которые затем загружаются в оперативную память компьютера.
Устройства вывода
Выводом являются любые данные, которые компьютер производит для людей или для раз
личных устройств. Это может быть торговый отчет, список имен или графическое изобра
жение. Данные отправляются в устройство вывода, которое их форматирует и предъявляет.
Типичными устройствами вывода являются видеодисплеи и принтеры. Дисководы можно
тоже рассматривать как устройства вывода, потому что компьютерная система отправляет
на них данные с целью их сохранения.
Программное обеспечение
Для функционирования компьютера требуется программное обеспечение. Все, что компью
тер делает с момента нажатия на кнопку включения питания и до момента выключения ком
пьютерной системы, находится под контролем программного обеспечения. Имеются две
общие категории программного обеспечения: системное программное обеспечение и при
кладное программное обеспечение. Большинство компьютерных программ четко вписыва
ется в одну из этих двух категорий. Давайте рассмотрим на каждую из них подробнее.
вающих, или сервисных, программ являются вирусные сканеры, программы сжатия файлов
и программы резервного копирования данных.
Инструменты разработки программного обеспечения — это программы, которые програм
мисты используют для создания, изменения и тестирования программного обеспечения.
Ассемблеры, компиляторы и интерпретаторы являются примерами программ, которые по
падают в эту категорию.
Контрольная точка
1.1. Что такое программа?
1.2. Что такое аппаратное обеспечение?
1.3. Перечислите пять главных компонентов компьютерной системы.
1.4. Какая часть компьютера исполняет программы фактически?
1.5. Какая часть компьютера служит рабочей областью для хранения программы и ее дан
ных, пока программа работает?
1.6. Какая часть компьютера содержит данные в течение долгого времени, даже когда
к компьютеру не подведено электропитание?
1.7. Какая часть компьютера собирает данные от людей и от различных устройств?
1.8. Какая часть компьютера форматирует и предоставляет данные людям и подключен
ным к нему устройствам?
1.9. Какой фундаментальный набор программ управляет внутренними операциями аппа
ратного обеспечения компьютера?
1.10. Как называется программа, которая выполняет специализированную задачу, в частно
сти, такие программы, как вирусный сканер, программа сжатия файлов или программа
резервного копирования данных?
1.11. К какой категории программного обеспечения принадлежат программы обработки тек
ста, программы по работе электронными таблицами, почтовые программы, веб-брау-
зеры и компьютерные игры?
большое число. Для того чтобы делать что-то более содержательное, компьютер должен
иметь очень много байтов. Большинство компьютеров сегодня имеет миллионы или даже
миллиарды байтов оперативной памяти.
Каждый байт разделен на восемь меньших единиц хранения, которые называются битами,
или разрядами. Термин "бит" происходит от англ. binary digit и переводится как двоичная
цифра. Программисты обычно рассматривают биты, как крошечные переключатели, кото
рые могут находиться в одном из двух положений: включено или выключено. Однако на са
мом деле биты не являются "переключателями", по крайней мере не в стандартном смысле.
В большинстве компьютерных систем биты — это крошечные электрические компоненты,
которые могут содержать либо положительный, либо отрицательный заряд. Программисты
рассматривают положительный заряд, как переключатель в положении "Включено", и отри
цательный заряд, как переключатель в положении "Выключено". На рис. 1.6 показано, как
программист может рассматривать байт памяти: как коллекцию переключателей, каждый из
которых установлен в положение "Вкл" либо "Выкл".
Когда порция данных сохраняется в байте, компьютер размещает восемь битов в двухпози
ционной комбинации "включено-выключено", которая представляет данные. Например,
на рис. 1.7, слева показано, как в байте будет размещено число 77, а справа — латинская
буква А. Далее мы объясним, каким образом эти комбинации определяются.
РИС. 1.7. Комбинации двоичных разрядов для числа 77 {слева) и латинской буквы А (справа)
Хранение чисел
Бит используется для представления чисел в весьма ограниченной форме. В зависимости от
того, "включен" он или "выключен", бит может представлять одно из двух разных значений.
В компьютерных системах выключенный бит представляет число 0, а включенный — чис
ло 1. Это идеально соответствует двоичной системе исчисления, в которой все числовые
Гпава 1. Введение в компьютеры и программирование 17
значения записываются как последовательности нулей и единиц. Вот пример числа, которое
записано в двоичной системе исчисления:
10011101
Для того чтобы определить значение двоичного числа, нужно просто сложить позиционные
значения всех единиц. Например, в двоичном числе 10011101 позиционные значения единиц
равняются 1, 4, 8, 16 и 128 (рис. 1.10). Сумма всех этих позиционных значений равняется
157. Значит, двоичное число 10011101 равняется 157 в десятичной системе исчисления.
О0 1 10 1
1
i) t) i) i)
4
8
O Q G O 0 ( J ( 1 >(J
16 S) q) о)
Значения
позиций
128
1 + 4 + 8+16+128 = 157 128 + 16 + 8 + 4 + 1 =157
РИС. 1.10. Определение значения 10011101 РИС. 1.11. Комбинация двоичных разрядов для числа 157
На рис. 1.11 показано, как можно изобразить хранение числа 157 в байте оперативной памя
ти. Каждая 1 представлена битом в положении "Вкл", а каждый 0 — битом в положении
"Выкл".
Когда всем битам в байте назначены нули (т. е. они выключены), значение байта равняется 0.
Когда всем битам в байте назначены единицы (т. е. они включены), байт содержит самое
большое значение, которое в нем может быть размещено. Оно равняется 1 + 2 + 4 + 8 + 16 +
+ 32 + 64 + 128 = 255. Этот предел является следствием того, что в байте всего восемь бит.
А если нужно сохранить число, которое больше 255? Ответ прост: использовать еще один
байт. Например, мы расположили два байта вместе. В итоге получаем 16 бит. Позиционные
значения этих 16 бит будут 2°, 21, 22, 23 и т .д . до 215. Максимальное значение, которое
18 Гпава 1. Введение в компьютеры и программирование
11 11.- 1
!>' 1> !) !) 1> !) 3 ' ) ) !)
lib-
*т *
I ) 1 1х ' fe C S iiJ I1 Ь
Значения
позиций -132768[ fl6 3 § S192J ’ «961 !jM § ] Ro24l 512_ 256J J28J [Ж 1 J T Ж ] I ¥. \ [_ £ .! Cl ] 1
32 768 + 16 384 + 8192 + 4096 + 2048 + 1024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 65 535
РИС. 1.12. Для большого числа использованы два байта
можно разместить в двух байтах, равно 65 535 (рис. 1.12). Если же нужно сохранить еще
большее число, для этого потребуется больше байтов.
s СОВЕТ
Если вы чувствуете, что этот материал дается с трудом, расслабьтесь! Программируя, вам не
придется заниматься преобразованием чисел в двоичную форму. Знание о том, как этот процесс
происходит в компьютере, поможет вам в ходе обучения, и в долгосрочной перспективе это зна
ние сделает из вас хорошего программиста.
Хранение символов
Любая порция данных в оперативной памяти компьютера должна храниться как двоичное
число. Это относится и к символам, таким как буквы и знаки препинания. Когда символ
сохраняется в памяти, он сначала преобразуется в цифровой код. И затем этот цифровой код
сохраняется в памяти как двоичное число.
За прошедшие годы для представления символов в памяти компьютера были разработаны
различные схемы кодирования. Исторически самой важной из этих схем кодирования явля
ется схема кодирования ASC II (American Standard Code for Information Interchange — амери
канский стандартный код обмена информацией). ASCII представляет собой набор из
128 цифровых кодов, которые обозначают английские буквы, различные знаки препинания и
другие символы. Например, код ASCII для прописной английской буквы А (латинской) рав
няется 65. Когда на компьютерной клавиатуре вы набираете букву А в верхнем регистре,
в памяти сохраняется число 65 (как двоичное число, разумеется). Это показано на рис. 1.13.
А — 65 v V чЗ* V Д 7 Ч ) \ У 1. V y J J
°) 3 Ъ i) D Ъ
ПРИМЕЧАНИЕ
Аббревиатура ASCII произносится "аски".
На случай, если вам любопытно, код ASCII для английской В в верхнем регистре равняется
66, для С в верхнем регистре — 67 и т. д. В приложении 3 приведены все коды ASCII и сим
волы, которые ими представлены.
Гпава 1. Введение в компьютеры и программирование 19
Набор символов ASCII был разработан в начале 1960-х годов и в конечном счете принят
почти всеми производителями компьютеров. Однако схема кодирования ASCII имеет огра
ничения, потому что она определяет коды только для 128 символов. Для того чтобы это
исправить, в начале 1990-х годов был разработан набор символов Юникода (Unicode). Это
широкая схема кодирования, совместимая с ASCII, которая может также представлять сим
волы многих языков мира. Сегодня Ю никод быстро становится стандартным набором
символов, используемым в компьютерной индустрии.
1 Числа с плавающей точкой (или запятой) — это общепринятый способ представления чисел, имеющих деся
тичный разделитель. В англоязычных странах в качестве десятичного разделителя используется точка (.),
в большинстве остальных — запятая (,). — Прим. пер.
20 Гпава 1. Введение в компьютеры и программирование
Контрольная точка
1.12. Какого объема памяти достаточно для хранения буквы алфавита или небольшого числа?
1.13. Как называется крошечный "переключатель", который может быть установлен в поло
жение "включено" или "выключено"?
1.14. В какой системе исчисления все числовые значения записываются как последователь
ности нулей и единиц?
1.15. Какова задача схемы кодирования ASCII?
1.16. Какая схема кодирования является достаточно широкой, чтобы включать символы
многих языков мира?
1.17. Что означают термины "цифровые данные" и "цифровое устройство"?
Ранее мы установили, что ЦП — самый важный компонент в компьютере, потому что это
та его часть, которая выполняет программы. Иногда ЦП называют "мозгом" компьютера и
даже используют эпитет "умный" (smart). Хотя эти метафоры встречаются очень
часто, следует понимать, что ЦП не является мозгом и его нельзя назвать умным. ЦП — это
электронное устройство, которое предназначено для выполнения конкретных вещей.
В частности, ЦП служит для выполнения таких операций, как:
♦ чтение порции данных из оперативной памяти;
♦ сложение двух чисел;
♦ вычитание одного числа из другого;
♦ умножение двух чисел;
♦ деление одного числа на другое число;
1Здесь речь идет о частоте дискретизации сигнала, т. е. количестве замеров величины сигнала, осуществляемых
в одну секунду. Дискретизация сигнала также называется частотой выборки или частотой семплирования. —
Прим. пер.
Гпава 1. Введение в компьютеры и программирование 21
Для нас это всего лишь вереница нулей и единиц. Для ЦП она является инструкцией с ука
занием выполнить какую-то операцию1 и записывается в виде нулей и единиц, потому что
ЦП понимают только те инструкции, которые написаны на машинном языке, а инструкции
машинного языка всегда имеют двоичную структуру.
Инструкция на машинном языке существует для каждой операции, которую ЦП способен
выполнить. Весь перечень инструкций, которые ЦП может исполнять, называется набором
инструкций ЦП.
ПРИМЕЧАНИЕ
Сегодня имеется несколько микропроцессорных компаний, которые изготавливают центральные
процессоры. Самые известные — Intel, AMD и Motorola. Если вы внимательно посмотрите на свой
компьютер, то сможете найти наклейку с логотипом его микропроцессора.
1Приведенный пример является фактической командой для микропроцессора Intel. Она поручает микропроцес
сору переместить значение в ЦП.
22 Гпава 1. Введение в компьютеры и программирование
мышью по значку программы. Это приводит к тому, что программа копируется с диска
в основную память. Затем ЦП компьютера исполняет копию программы, которая находится
в основной памяти (рис. 1.15).
Дисковод ЦП
Выбрать в программе
следующую инструкцию
© Декодировать инструкцию,
чтобы определить,
какую операцию выполнить
и так далее.. ЦП
Исполнить инструкцию
(осуществить операцию)
(ОЗУ)
ПРИМЕЧАНИЕ
Существует много разных версий языка ассемблера. Ранее было упомянуто, что каждый бренд
ЦП имеет собственную систему инструкций машинного языка. Как правило, каждый бренд ЦП
также имеет свой язык ассемблера.
РИС. 1.17. Ассемблер переводит программу на языке ассемблера в программу на машинном языке
Высокоуровневые языки
Хотя язык ассемблера делает ненужным написание двоичных инструкций на машинном
языке, он имеет свои сложности. Язык ассемблера прежде всего является непосредственной
заменой машинного языка и подобно машинному языку он обязывает вас к тому, чтобы вы
хорошо разбирались в ЦП. Язык ассемблера также требует, чтобы вы писали большое коли
чество инструкций даже для самой простой программы. Поскольку язык ассемблера по
1Самый первый язык ассемблера, по всей видимости, был разработан в 1940-х годах в Кембриджском универси
тете с целью его применения на историческом компьютере под названием EDSAC.
24 Гпава 1. Введение в компьютеры и программирование
Язык Описание
Ada Был создан в 1970-х годах прежде всего для приложений, использовавшихся Министерством
обороны США. Язык назван в честь графини Ады Лавлейс, влиятельной исторической фигуры
в области вычислительных систем
BASIC Универсальная система символического кодирования для начинающих (Beginners All-purpose
Symbolic Instruction Code) является языком общего назначения, который был первоначально
разработан в начале 1960-х годов, как достаточно простой в изучении начинающими
программистами. Сегодня существует множество разных версий языка BASIC
FORTRAN Транслятор формул (FORmula TRANslator) был первым высокоуровневым языком
программирования. Он был разработан в 1950-х годах для выполнения сложных
математических вычислений
COBOL Универсальный язык для коммерческих задач (Common Business-Oriented Language) был
создан в 1950-х гг. для бизнес-приложений
Pascal Создан в 1970 г. и первоначально был предназначен для обучения программированию. Этот
язык был назван в честь математика, физика и философа Блеза Паскаля
С и C++ С и C++ (произносится как "си плюс плюс") являются мощными языками общего назначения,
разработанными в компании Bell Laboratories. Язык С был создан в 1972 г., язык C++ был
выпущен в 1983 г.
c# C# произносится "си шарп". Этот язык был создан компанией Microsoft примерно в 2000 г.
для разработки приложений на основе платформы Microsoft .NET
Гпава 1. Введение в компьютеры и программирование 25
Язык Описание
Java Был создан компанией Sun Microsystems в начале 1990-х годов. Он используется для разра
ботки программ, которые работают на одиночном компьютере либо через Интернет
с веб-сервера
JavaScript Был создан в 1990-х годах и используется на веб-страницах. Несмотря на его название
JavaScript с Java никак не связан
Python Используемый в этой книге язык Python является языком общего назначения, который был
создан в начале 1990-х годов. Он стал популярным в коммерческих и научных приложениях
Ruby Ruby является языком общего назначения, который был создан в 1990-х годах. Он становится
все более популярным языком для создания программ, которые работают на веб-серверах
Visual Basic Широко известный как VB, является языком программирования Microsoft и средой разработки
программного обеспечения, позволяет программистам быстро создавать Windows-
ориентированные приложения. VB был создан в начале 1990-х годов
В языке Python имеется большое количество других операторов, о многих из них вы узнаете
по ходу чтения книги.
Помимо ключевых слов и операторов, каждый язык также имеет свой синтаксис, т. е. набор
правил, которые необходимо строго соблюдать при написании программы. Синтаксические
правила предписывают то, как в программе должны использоваться ключевые слова, опера
торы и различные знаки препинания. При изучении языка программирования знание синтак
сических правил этого конкретного языка является обязательным.
26 Гпава 1. Введение в компьютеры и программирование
Компиляторы и интерпретаторы
Поскольку ЦП понимает инструкции только на машинном языке, программы, написанные
на высокоуровневом языке, должны быть переведены, или транслированы, на машинный
язык. В зависимости от языка, на котором была написана программа, программист для вы
полнения трансляции использует компилятор либо интерпретатор.
Компилятор — это программа, которая транслирует программу на высокоуровневом языке
в отдельную программу на машинном языке. Программа на машинном языке затем может
быть выполнена в любое время, когда потребуется (рис. 1.18). Обратите внимание, что ком
пиляция и исполнение — это два разных процесса.
Программа Программа
на высокоуровневом языке на машинном языке
' Л 10100001
Компилятор используется print ("Привет, земляне'”)