SlideShare a Scribd company logo
1 of 192
Download to read offline
Москва
2015
Федеральный государственный образовательный стандарт
Образовательная система «Школа 2100»
А.В. Горячев, С.Л. Островский, А.В. Паволоцкий,
Т.Л. Чернышёва, Д.В. Широков
ИНФОРМАТИКА
9 класс • Часть 29 класс • Часть 2
УДК 373.167.1:004+004(075.3)
ББК 32.81я721
Г67
Федеральный государственный образовательный стандарт
Образовательная система «Школа 2100»
Совет координаторов предметных линий Образовательной системы «Школа 2100» –
лауреат премии Правительства РФ в области образования
за теоретическую разработку основ образовательной системы нового поколения
и её практическую реализацию в учебниках
На учебник получены положительные заключения
по результатам научной экспертизы (заключение РАН от 14.10.2011 № 10106-5215/449),
педагогической экспертизы (заключение РАН от 24.01.2014 № 000384)
и общественной экспертизы (заключение НП «Лига образования» от 30.01.2014 № 177)
Руководитель издательской программы –
чл.-корр. РАО, доктор пед. наук, проф. Р.Н. Бунеев
Авторский коллектив:
А.В. Гиглавый – научный редактор, А.В. Горячев – автор концепции курса, научный
руководитель, С.Л. Островский (часть 1: модуль «Хранение и обработка больших объ-
ёмов данных»), А.В. Паволоцкий (часть 2: модуль «Алгоритмизация и программирова-
ние»), А.А. Семёнов (часть 1: модуль «Моделирование»), Т.Л. Чернышёва (часть 2: модуль
«Знакомство с математической логикой»), Д.В. Широков (часть 1: модуль «Создание
электронных изданий»; часть 2: модуль «Web-конструирование. Основы мастерства»)
ISBN 978-5-85939-997-0
ISBN 978-5-85939-942-0 (ч. 2)
© Горячев А.В., Островский С.Л., Паволоцкий А.В.,
Чернышёва Т.Л., Широков Д.В., 2012
© ООО «Баласс», 2012
Горячев, А.В.
Информатика. 9 кл. : учеб. для организаций, осуществляющих обра-
зовательную деятельность. В 2 ч. Ч. 2 /А.В. Горячев, С.Л. Островский,
А.В. Паволоцкий, Т.Л. Чернышёва, Д.В. Широков. – М. : Баласс, 2015. – 192 с. :
ил. (Образовательная система «Школа 2100»).
ISBN 978-5-85939-997-0
ISBN 978-5-85939-942-0 (ч. 2)
Учебник «Информатика» для 9 класса соответствует Федеральному государ-
ственному образовательному стандарту основного общего образования. Явля-
ется продолжением непрерывного курса информатики и составной частью ком-
плекта учебников развивающей Образовательной системы «Школа 2100».
Содержание учебника представлено в виде отдельных учебных модулей, из
которых учитель может выбрать нужные в соответствии с требованиями основ-
ной образовательной программы школы. Учебный материал предлагается на
необходимом и повышенном уровнях.
Может использоваться как учебное пособие.
Г67
УДК 373.167.1:004+004(075.3)
ББК 32.81я721
Данный учебник в целом и никакая его часть не могут быть
скопированы без разрешения владельца авторских прав
3
3
Дорогие читатели!
Вы открыли книгу 2 учебника информатики, которая позволит вам получить умения,
лежащие в основе профессий, связанных с разработкой или активным использова-
нием компьютерной техники и компьютерных программ. Вы любите играть в компью-
терные игры? А вы задумывались над тем, что многочисленные миры из ваших игр
никогда не существовали в действительности, а появились на свет благодаря силе
воображения и профессиональному мастерству создателей этих игр. Вы представ-
ляете, как это заманчиво – создавать собственные миры? Профессии, связанные
с созданием компьютерных программ не только пользуются хорошим устойчивым
спросом, но и очень увлекательны. Зачастую программисты работают, даже не заме-
чая, как летит время.
Надеемся, вы помните, что в книге 2 нашего учебника мы разместили учебные
модули, с помощью которых вы сможете изучить теоретические основы информатики,
сквозную линию модулей с 7-го по 9-й класс, нацеленную на обучение программи-
рованию, а также модули профессиональной ориентации, с помощью которых можно
научиться основам профессий, опирающихся на применение компьютеров.
В книге 2 вы встретитесь со всеми тремя этими видами модулей. С помощью
модуля «Web-конструирование. Основы мастерства» вы сможете познакомиться с
некоторыми секретами создателей сайтов. В модуле «Алгоритмизация и программи-
рование» вы сможете продолжить обучение программированию на языке Паскаль.
Модуль «Знакомство с математической логикой» относится к теоретическим моду-
лям, с его помощью можно научиться составлять логические формулы и решать с их
помощью задачи.
4
Как работать с учебником
Просмотрите «Содержание», перелистайте учебник. Вы заметите, что
он разделён на модули. Вы будете изучать модули в том порядке, который
предложит учитель.
Практически в каждом модуле мы предусмотрели пять основных пара-
графов. Изучив эти параграфы, вы напишете проверочную работу, по ито-
гам которой узнаете, как вы освоили новый материал: ниже необходимого
уровня, на необходимом или повышенном уровне. Далее вы будете рабо-
тать самостоятельно, выполняя по указанию учителя задания того уровня,
которого вы пока не достигли. Если проверочная работа покажет, что вы
освоили и повышенный уровень, то вы будете выполнять задания самого
высокого – максимального уровня. Учитель в любой момент может пред-
ложить вам перейти на выполнение заданий более высокого уровня. По
окончании выполнения заданий учебника учитель проведёт итоговую про-
верочную работу.
Далее в модуле расположены дополнительные параграфы, задания к
ним и проверочные работы. Основные параграфы выделены в учебнике
зелёной полосой вверху страницы, дополнительные – розовой полосой.
Дополнительный материал, который вы не изучите на уроках, вы сможе-
те использовать на факультативах и кружках.
На уроках информатики вы сможете освоить умения, которые помогут
вам более эффективно использовать компьютеры и компьютерные сети
для решения возникающих в вашей жизни задач. Кроме того, учитель
может решить, что вам надо освоить умения, которые помогут вам зани-
маться разработкой новых компьютерных программ или заложат основы
профессиональной деятельности, тесно связанной с применением ком-
пьютерной техники.
Кроме того, наш учебник, как и все учебники Образовательной системы
«Школа 2100», поможет вам в развитии универсальных учебных действий.
В учебнике вам могут встретиться задания, обозначенные кружками и
фоном разного цвета – это условные знаки. Каждый цвет соответствует
определённой группе умений:
 –организовывать свои действия: ставить цель, планировать работу,
действовать по плану, оценивать результат;
 –работать с информацией: самостоятельно находить, осмысливать и
использовать её;
5
5
 –общаться и взаимодействовать с другими людьми, владеть устной и
письменной речью, понимать других, договариваться, сотрудничать;
 –развивать качества своей личности, оценивать свои и чужие слова
и поступки;
так обозначены задания, где нужно применить разные группы
умений, мы называем их жизненными задачами и проектами.
Для успешного изучения информатики и овладения универсальными учеб-
ными действиями на уроках используется проблемно-диалогическая обра-
зовательная технология. Поэтому структура параграфа, где вводится новый
материал, имеет в учебнике следующий вид.
ПОСТАНОВКА ПРОБЛЕМЫ УРОКА
Это подведение к теме (вопросу, цели) урока: вы обсуждаете проблему
в предложенном материале и формулируете главный вопрос урока (всем
классом, в группе или в паре). Сравните свой вариант вопроса с авторским.
Авторские вопросы к параграфам расположены в «Содержании» под назва-
ниями параграфов и выделены курсивом.
НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ
Так обозначены вопросы и задания по изученному материалу, который вам
необходим для открытия нового знания.
РЕШЕНИЕ ПРОБЛЕМЫ
Вы в группе, в паре или совместно с учителем, ведя диалог, осуществляете
поиск решения проблемы. Для решения проблемы вы работаете с текстом.
ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ
На этом этапе вы формулируете вывод и проверяете свои предположения,
сравнивая их с авторским решением проблемы – научными формулировка-
ми правил или определений.
ПРИМЕНЕНИЕ ЗНАНИЙ
Так обозначены задания на применение новых знаний.
Задания, помеченные «звёздочкой», имеют повышенную сложность.
6
ОПЕРАЦИИ
Раздел «Операции» позволит вам научиться выполнять действия с ком-
пьютерными программами, необходимые для решения учебных задач.
В конце модуля вы найдёте раздел «Решаем жизненные задачи и работа-
ем над проектами». Задачи и проекты могут выполняться как на уроках, так и
на факультативах и кружках.
Там же находится очень важный раздел «О профессиях». Прочитайте его
и подумайте, какие профессии вам больше по душе.
Что такое жизненные задачи?
Это проблемы, с которыми вы можете столкнуться в жизни и для решения
которых вам понадобятся разные знания и умения. Они оформлены следу-
ющим образом:
Название задачи
Ваша роль. Человек, в роли которого вы должны себя представить, решая
проблему.
Описание. Условия, в которых возникла проблема.
Задание. То, что нужно сделать и получить в итоге.
Что такое проект?
Это любое самостоятельное дело, которое предполагает:
1) оригинальный замысел (цель);
2) выполнение работы за определённый отрезок времени;
3) конкретный результат, представленный в итоге.
Что можно считать результатом проекта?
 Предметы, сделанные своими руками: макеты, модели или вещи для
практического использования.
 Мероприятия: спектакли, фотовыставки, викторины, конференции,
праздники и тому подобное – при условии, что они подготовлены самими
учениками.
 Информационные продукты: газеты, книжки, плакаты, карты, стихотво-
рения, рассказы, доклады, отчёты об исследованиях и т. д.
 Решение конкретных проблем: изменение, улучшение конкретной ситуа-
ции, например уборка мусора на школьном дворе.
7
7
Правила проектной деятельности
1. Каждый может начать собственный проект.
2. Каждый может объединиться с другими в ходе работы над проектом.
3. Каждый может выйти из проекта при условии, что он не подводит
других.
4. Каждый может не участвовать ни в одном проекте.
Как оценить свои учебные достижения?
Для этого надо освоить алгоритм самооценки:
1. Какова была цель задания (что нужно было получить в результате)?
2. Вы выполнили задание (получен ли результат)?
3. Вы выполнили задание верно или с ошибкой?
4. Вы выполнили задание самостоятельно или с чьей-то помощью?
5. Вспомните, как вы ставите отметки. Определите свою отметку.
8 Модуль 1. Алгоритмизация и программирование
9
Этот модуль поможет вам:
• узнать, что такое двоичные данные и как компьютер с ними ра-
ботает;
• разобраться в новых типах данных;
• улучшить свои навыки в практическом программировании.
Для этого вам надо научиться:
• разбираться в логических конструкциях языка Паскаль;
• работать с массивами;
• пользоваться подпрограммами;
• работать в интегрированной среде разработки программ;
• искать ошибки в программах – отлаживать их.
Модуль 1. Алгоритмизация и программирование
10 Модуль 1. Алгоритмизация и программирование
Введение
Дорогие друзья!
В этом году мы с вами продолжим изучать программирование. В 7-м и 8-м
классах мы научились многому:
• познакомились с понятием «алгоритм» и со способами его записи;
• узнали о структуре программы на языке программирования;
• изучили различные типы данных языка Паскаль;
• работали в интегрированной среде разработки и отлаживали программы;
• разобрали различные алгоритмы.
Однако впереди у нас с вами ещё много важного и интересного. Поэтому
давайте скорее перевернём эту страницу и перейдём к новому материалу.
Удачи вам!
11§ 1. Системы счисления
§ 1. Системы счисления
ПОСТАНОВКА ПРОБЛЕМЫ УРОКА
Учитель подошёл к доске и нарисовал на ней: 123.
– Что я нарисовал? – спросил учитель.
– Вы написали число 123, – сказала Маша.
– Нет, – запротестовал Вася, – вы нарисовали три цифры: 1, 2 и 3.
– Хорошо, – сказал учитель, – а теперь посмотрите на это, – и напи-
сал: CXXIII.
– Ну, это просто, – обрадовался Петя, – это тоже число 123, только
его так римляне записывали!
– Правильно, – сказал учитель, – я могу записывать числа различ-
ными способами.
 Как вы думаете, есть ли ошибки в высказываниях ребят или каждый из
них прав? Сформулируйте основной вопрос урока. Сравните свою формули-
ровку с авторской (с. 191 учебника).
РЕШЕНИЕ ПРОБЛЕМЫ
ЧИСЛА И ЦИФРЫ
Как вы думаете, что такое число? Как ни
странен этот вопрос, но он является основопо-
лагающим не только в математике и информа-
тике, но и в философии. Легендарный Пифагор
считал, что «всё в мире есть число». Конечно,
это аллегория, однако и в ней есть доля истины.
С помощью чисел человек описывает такую ха-
рактеристику окружающего мира, как количество.
С древних времён людям приходилось что-то
мерить в количественном отношении, и такой
мерой стало число. Со временем это понятие развивалось, обогащалось и
превратилось в итоге в важнейшее математическое понятие.
Итак, число – это количественная мера.
Что же такое цифра?
Цифры – это символы: значки, рисунки, с помощью которых люди стали
записывать числа. С течением времени образовались устойчивые наборы
таких символов, каждый набор образует цифровой алфавит. Например, мы
используем арабские цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; а древние римляне
использовали свои римские цифры: I, V, X, L, C, D, M. Мы можем сами при-
думать свой набор, например такой: , , , , , , , , .
Количество символов в алфавите называется размерностью алфавита.
12 Модуль 1. Алгоритмизация и программирование
В привычном нам цифровом алфавите 10 цифр, следовательно, его размер-
ность равна 10.
 Какова размерность алфавита римских цифр?
Итак, у нас есть цифры, с помощью которых мы хотим записать число. Мо-
жем ли мы это сделать? Необходимы правила, следуя которым мы запишем
число, которое будет понятно другим людям.
Такие правила называются системой счисления.
СИСТЕМЫ СЧИСЛЕНИЯ
Система счисления – это способ записи чисел с помощью алфавита
цифр.
Как вы видели, одно и то же число можно записать по-разному. Напри-
мер, число 15, записанное в привычной нам десятичной системе счисления,
в римской системе счисления будет выглядеть как XV.
Все системы счисления делятся на две большие группы: позиционные и
непозиционные. Давайте их рассмотрим.
ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ
Система счисления называется позиционной, если количественное зна-
чение каждой цифры (говорят также: вес, привносимый цифрой в число) за-
висит от её местоположения в записи числа.
Примером позиционной системы счисления является десятичная систе-
ма счисления, которую люди используют повсеместно уже много веков.
Своим названием десятичная система обязана размерности использу-
емого алфавита. А количество цифр – 10 связано с тем, что когда-то для
счёта человек использовал только пальцы на руках.
Размерность алфавита системы счисления (например, число 10 в деся-
тичной системе счисления) называют также основанием системы счисле-
ния.
Поясним, что такое вес цифры в числе.
Рассмотрим число 1213. Отдельную позицию в записи числа называют
разрядом. Каждый разряд имеет свой номер. Примем следующий принцип
нумерации разрядов:
1) будем нумеровать разряды справа налево;
2) будем нумеровать разряды с нуля (в принципе, можно нумеровать и с
единицы).
В нашем примере нумерация разрядов будет такой:
3 2 1 0
1 2 1 3
13§ 1. Системы счисления
В записи этого числа цифра 1 присутствует два раза: первый раз в первом
разряде, а второй раз – в третьем. Первый раз цифра 1 привносит в число
1 десяток (101
), а во второй – 1 тысячу (103
). Цифра 2 привносит в число 2
сотни (2 •102
), а число 3 – 3 единицы (3•100
).
Таким образом, вес цифры – это количество, которое цифра привносит в
число.
Тогда получается, что наше число выражает следующее количество:
Число = 1 •103
+ 2 •102
+ 1 •101
+ 3 •100
.
Такая запись называется развёрнутой формой записи числа.
Она несколько громоздка, поэтому на практике пользуются сокращённой
записью чисел. Наше число в сокращённом виде будет выглядеть так:
Число = 123410
.
Нижний индекс, расположенный после записи числа, обозначает основа-
ние системы счисления, в которой записано число. Когда мы говорим о де-
сятичной системе счисления, то обычно этот индекс не записывается.
В качестве тренировки переведём запись числа 1532110
из сокращённой
формы в развёрнутую.
1) Расставим номера разрядов над этим числом:
4 3 2 1 0
1 5 3 2 1
2) Запишем развёрнутую форму числа:
1532110
= 1 •104
+ 5 •103
+ 3 •102
+ 2 •101
+ 1 •100
.
Конечно, из позиционных систем счисления де-
сятичная система далеко не единственная. Ска-
жем больше: позиционных систем счисления су-
ществует бесконечно много. Некоторыми из них
вы пользуетесь постоянно, зачастую сами того
не замечая. Например, широко распространена
двенадцатеричная система счисления. Она ис-
пользуется как для счёта времени (12 часов), так
и в английской системе мер и весов (1 английский
пенс = 12 шиллингов, 1 дюйм = 1/12 фута, 1 дю-
жина = 12 единиц).
В вычислительной технике применяется двоичная система счисления.
О ней мы будем говорить в дальнейшем более подробно.
14 Модуль 1. Алгоритмизация и программирование
НЕПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ
В отличие от позиционных систем счисления, в не-
позиционных системах цифра всегда весит одина-
ково, независимо от места её расположения в числе.
Самой простой непозиционной системой является
единичная система счисления. Вы все с ней знако-
мились, когда учились в начальной школе считать на
счётных палочках. Каждая палочка (или чёрточка) при-
вносит в число всегда одну единицу, независимо от
того, где мы её расположим. Например, число 5 мы можем записать как | | | | | ,
а число 10 в виде | | | | | | | | | | .
Недостаток этой системы счисления виден сразу. Запись больших чисел в
ней будет очень громоздкой.
Следующая весьма популярная система, которая используется с давних
времён до наших дней, – это римская система счисления.
Алфавит этой системы показан на рис. 1.1.
Цифра Значение
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
Рис. 1.1
Римлянам вполне хватало этих 7 цифр для того, чтобы удовлетворить все
свои потребности в счёте. В римской системе счисления число 12 будет за-
писано как XII, а число 80 – как LXXX.
Но вы справедливо можете заключить, что число 12 можно записать как
VVII или вообще как IIIIIIIIIIII. Как такое может быть?
Самый главный недостаток любой непозиционной системы заключается в
том, что любое число может быть в ней представлено множеством способов.
Чтобы этого избежать, нужно ввести дополнительные правила.
Римляне так и поступали. Чтобы записать число 12, они находили ближай-
шее к нему слева (то есть не большее его) число, которое можно было за-
писать одной цифрой алфавита. В нашем случае это будет число 10. Они за-
писывали его: X. Затем римляне вычитали из числа 12 число 10 и проводили
15§ 1. Системы счисления
аналогичную операцию с остатком. И так до тех пор, пока не получался ноль
(хотя у римлян обозначения для числа ноль не было).
Ещё римляне придумали правило сокращения записи, которое заключа-
лось в том, что если меньшую цифру расположить перед большей, то она бу-
дет вычитаться из большей, а не складываться с ней. Это позволило записы-
вать, например, число 9 не как VIIII, а как IX, а число 99 – не как LXXXXVIIII, а
как IC.
 Как вы думаете, сколько подобных ситуаций существует?
Теперь давайте попробуем перевести число 149 из десятичной системы
счисления в римскую.
Найдём ближайшее слева к числу 149 число, которое можно записать
одной римской цифрой. Этим числом является 100. Значит, первая цифра
нашего римского числа – C.
Вычтем из 149 число 100, получим 49. Теперь переведём в римскую систе-
му число 49. Принцип тот же. Найдём ближайшее слева число, которое можно
записать одной римской цифрой. Это 10. Значит, вторая цифра будет X.
Вычтем 10, получим 39. Следующая цифра – X, останется 29, опять цифра
Х, в остатке 19, опять Х, в остатке 9.
Но для 9 мы уже получили раньше римскую запись – IX.
Итак, ответ: 149 = СXXXXIX.
Но в нашем алгоритме есть место, где можно было применить правило со-
кращения записи. Где же оно? В числе 49. Его можно представить как 50 – 1
и записать как IL. Поэтому другая, короткая запись нашего числа будет вы-
глядеть так: CIL.
Перевод из римской системы счисления в десятичную совсем прост. Не-
обходимо воспользоваться таблицей соответствия римских цифр десятич-
ным числам, не забыть о правиле сокращения записи и просуммировать все
числа.
Переведём число MCMXCIX из римской системы счисления в десятичную.
Читаем число слева направо. Первая цифра M. Следующая за ней – С:
меньше, чем М. Значит, первое слагаемое – это 1000.
Следующая цифра – С. Но за ней следует М. Применяя правило сокраще-
ния, получаем новое слагаемое: 1000 – 100 = 900. М мы уже использовали,
поэтому дальше его не рассматриваем.
Настала очередь X – это 10, но за ней идёт С. Опять работает правило со-
кращения, и мы получим 100 – 10 = 90.
Читаем символ I: это единица. За ней идёт Х. Получаем 9.
Складываем полученные значения: 1000 + 900 + 90 + 9 = 1999.
И, конечно, отметим, что 1999 можно было записать как MIM для большей
краткости.
16 Модуль 1. Алгоритмизация и программирование
ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ
Число – это количественная мера, необходимая человеку для счёта и
других измерений. Цифра – это символ, с помощью которого записыва-
ются числа.
Система счисления – это способ записи чисел с помощью алфавита
цифр.
Системы счисления бывают позиционными и непозиционными. В систе-
мах первого типа каждая цифра имеет вес в зависимости от её место-
расположения в числе, а в системах второго типа такого условия нет.
К позиционным системам относятся десятичная, двоичная, двенадцате-
ричная и многие другие.
Самые известные непозиционные системы счисления – единичная и
римская.
ПРИМЕНЕНИЕ ЗНАНИЙ
1. Объясните, чем отличаются понятия числа и цифры.
2. Что такое система счисления? На какие группы делятся системы счис-
ления?
3. Какова размерность алфавита в двенадцатеричной системе счисле-
ния?
4. Запишите в развёрнутой форме числа 234, 512, 135762.
5. Какой вес привносит цифра 8 в числа: 128, 182, 821?
6. Переведите из римской системы счисления в десятичную числа: IXCLX,
IXIC, CLXVI.
7. Переведите из десятичной системы счисления в римскую числа: 512,
144, 44, 1328. Попробуйте найти несколько форм записи этих чисел.
17§ 2. Двоичная система счисления, или Как хранятся данные в компьютере
§ 2. Двоичная система счисления, или Как хранятся
данные в компьютере
ПОСТАНОВКА ПРОБЛЕМЫ УРОКА
Вася читал книгу по истории вычислительной техники. В ней говори-
лось, что компьютер представляет собой сложную систему из множе-
ства приборов сродни электрической лампочке. Каждый прибор может
или быть включённым, или быть выключенным. А самое странное
заключалось в том, что с помощью таких приборов компьютер может
хранить числа и другую информацию!
 Что удивило Васю? Сформулируйте основной вопрос урока. Сравните
свою формулировку с авторской (с. 191 учебника).
НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ
Вспомните, что вы узнали о системах счисления. (§ 1)
РЕШЕНИЕ ПРОБЛЕМЫ
ВСЕГО ЛИШЬ ДВА СОСТОЯНИЯ
Электронная вычислительная техника конструируется на устройствах,
которые имеют только лишь два устойчивых состояния: включено/выключе-
но (истина/ложь). Такими устройствами сначала были электронные лампы,
затем – пришедшие им на смену транзисторы, а после – интегральные
схемы. Для хранения данных с помощью подобных устройств лучше всего
подойдёт такая система счисления, алфавит которой содержит тоже только
два символа. Тогда каждому символу будет соответствовать своё состояние.
И такая система счисления есть – она называется двоичной.
Один разряд в двоичной системе имеет собственное название – бит. Сло-
во «бит» происходит от английского сокращения bit (binary digit) и означа-
ет «двоичная цифра». С помощью двоичных цифр (в цифровом виде) в ком-
пьютере представляются любые данные: числовые, текстовые, графические,
звуковые.
Посмотрите, как выглядят двоичные числа:
110001101012
, 110012
, –11012
.
Мы видим, что для записи двоичных чисел применяются только цифры 0 и
1. Первое из записанных выше двоичных чисел соответствует десятичному
1589. Нельзя не обратить внимание на то, что в двоичной системе запись
числа становится гораздо длиннее, чем в десятичной (4 разряда против 11).
В чём же тогда преимущество двоичной системы? В простоте проведения
операций.
18 Модуль 1. Алгоритмизация и программирование
СЛОЖЕНИЕ И УМНОЖЕНИЕ В ДВОИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ
Для того чтобы уметь складывать и умножать числа, необходимо задать
правила выполнения этих операций. Вы, безусловно, учили таблицы сложе-
ния и умножения в десятичной системе. Они даже размещены на обратных
сторонах школьных тетрадей. Освежите в памяти эти таблицы. Теперь мы
предлагаем вам посмотреть по очереди на таблицы сложения и умножения
в двоичной системе счисления (рис. 1.2).
+ 0 1 * 0 0
0 0 1 0 0 0
1 1 10 1 0 1
Рис. 1.2
Поскольку в алфавите двоичной системы счисления всего две цифры, та-
блицы имеют по три строки и три столбца (одна строка и один столбец – это
заголовки), а количество вариантов каждой операции равно четырём. Сло-
жение и умножение – это бинарные операции.
Таблицы сложения и умножения в десятичной системе счисления имеют
по 11 строк и столбцов. Проверьте это.
Рассмотрим четыре варианта операции сложения:
1) 0 + 0 = 0
2) 0 + 1 = 1
3) 1 + 0 = 1
4) 1 + 1 = 1
Поясним четвёртый вариант. Складывая 1 и 1, мы должны перенести еди-
ницу в следующий разряд, поскольку цифры 2 в двоичной системе счисления
нет. Аналогичная ситуация возникает, когда мы складываем, например, 9 и
1 в десятичной системе. Мы превышаем максимальное значение разряда
единиц и вынуждены добавить единицу в разряд десятков. Поэтому 9 + 1 =
= 10, то есть 0 в разряде единиц и 1 в разряде десятков.
Сложим в двоичной системе числа 101 и 111. Будем складывать «в стол-
бик» (по аналогии с тем, как мы это делаем в десятичной системе), в соот-
ветствии с таблицей сложения в двоичной системе:
+
1 0 1
1 1 1
1 1 0 0
1. Сложим 1 и 1 (значения в крайних правых разрядах). По таблице сложе-
ния результат этой операции – 10. Поэтому запишем в нулевой разряд
результата цифру 0, а единицу перенесём в следующий разряд.
19§ 2. Двоичная система счисления, или Как хранятся данные в компьютере
2. Теперь сложим 0 и 1, получим 1. Но нельзя забывать про перенос (1).
Добавим и его, получим снова 10, 0 запишем в первый разряд резуль-
тата, а 1 перенесём далее.
3. Складываем 1 и 1, получаем 10, добавляем 1 из переноса. Получаем 11.
Единицу пишем во второй разряд результата и переносим 1 в старший
разряд.
4. Последняя единица просто пишется в третий разряд результата.
Итак, 1012
+ 1112
= 11002
.
 Сколько битов занимает полученный результат?
Варианты операции умножения:
1) 0 • 0 = 0
2) 0 • 1 = 0
3) 1 • 0 = 0
4) 1 • 1 = 1
Давайте умножим «столбиком» те же числа, что мы складывали ранее:
*
1 1 1
1 0 1
+
1 1 1
1 1 1
1 0 0 0 1 1
Посмотрите, насколько умножение в двоичной системе проще, чем в де-
сятичной. Мы просматриваем число 101 справа налево. Первая цифра – 1,
поэтому просто переписываем первый сомножитель: 111. Затем мы встре-
чаем 0. Ничего не записываем. Идём дальше, снова 1 – переписываем со-
множитель 111, со сдвигом влево на два разряда (поскольку ноль пропущен).
После этого складываем поразрядно получившиеся числа.
Мы видим, что умножение на 1 первого сомножителя означает просто его
копирование с соответствующим сдвигом по разрядам, без вычислений, а
умножение на 0 вообще пропускается.
Результат: 1112
• 1012
= 1000112
.
ТАБЛИЦА СООТВЕТСТВИЯ ДВОИЧНЫХ И ДЕСЯТИЧНЫХ ЧИСЕЛ
Вы научились складывать двоичные числа. Настало время составить та-
блицу соответствия двоичных и десятичных чисел. Начнём с нуля и будем
прибавлять на каждом шаге по единице в одной и другой системе счисления,
а результаты записывать в таблицу.
В итоге таблица примет следующий вид (рис. 1.3).
20 Модуль 1. Алгоритмизация и программирование
Десятичная с. с. Двоичная с. c.
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
Рис. 1.3
Мы специально рассмотрели числа от 0 до 15, чтобы показать, как запол-
няются четыре разряда двоичного числа. С помощью этой таблицы можно
быстро переводить числа из диапазона [0..15] из двоичной системы счисле-
ния в десятичную и обратно.
ПЕРЕВОД ЧИСЕЛ ИЗ ДВОИЧНОЙ СИСТЕМЫ СЧИСЛЕНИЯ
В ДЕСЯТИЧНУЮ
А что же делать, если необходимо перевести в десятичную систему число,
большее 11112
? Конечно, можно продолжать заполнение таблицы. Но это
же неудобно! Нужно найти более разумный и быстрый способ перевода. И
такой способ есть!
Давайте вспомним, что такое развёрнутая форма записи числа и приме-
ним её к двоичной системе счисления.
Правило перевода:
1. Пронумеровать разряды числа справа налево, начиная с нуля.
2. Представить число в виде суммы произведений цифр числа на веса со-
ответствующих разрядов – получить развёрнутую форму записи двоич-
ного числа. (Надо только помнить, что в двоичной системе счисления вес
разряда определяется степенью числа 2 – основания системы счисле-
ния, по аналогии с тем, что в десятичной системе это степень числа 10.)
21§ 2. Двоичная система счисления, или Как хранятся данные в компьютере
3. Вычислить значение полученного выражения в десятичной системе
счисления. Результат – число, записанное в десятичной системе счис-
ления.
Переведём из двоичной системы счисления в десятичную число 1000112
.
(Напомним, что мы его получили в результате умножения чисел 1112
и
1012
.)
Итак, расставим номера разрядов над цифрами числа:
5 4 3 2 1 0
1 0 0 0 1 1
Запишем развёрнутую форму числа и вычислим его значение в десятич-
ной системе:
1000112
= 1•25
+ 0•24
+ 0•23
+ 0•22
+ 1•21
+ 1•20
= 32 + 2 + 1 = 3510
.
Проверим правильность нашего перевода следующим образом. Число
1000112
мы получили в результате умножения чисел 1112
и 1012
. Переве-
дём их в десятичную систему счисления по нашей таблице соответствия. По-
лучим 7 и 5. 7•5 = 35. Значит, наш перевод правильный.
ПЕРЕВОД ЧИСЕЛ ИЗ ДЕСЯТИЧНОЙ СИСТЕМЫ СЧИСЛЕНИЯ
В ДВОИЧНУЮ
Естественно, существует и обратный перевод чисел: из десятичной системы
счисления в двоичную. Он немного сложнее, поэтому будьте внимательнее.
Правило перевода:
1. Разделить число на 2 нацело.
2. Частное снова разделить на два.
3. Продолжать деление (пункт 2) до тех пор, пока не получится частное,
равное 0.
4. Записать остатки от деления в обратном порядке. Это и будет ответ.
Переведём в двоичную систему счисления число 13:
1 3 2
1 2 6 2
1 6 3 2
0 2 1 2
1 0 0
1
Результат: 11012
22 Модуль 1. Алгоритмизация и программирование
Проверим его, переведя 11012
в десятичную систему:
3 2 1 0
1 1 0 1
11012
= 1•23
+ 1•22
+ 0•21
+ 1•20
= 8 + 4 + 1 = 1310
.
ЕДИНИЦЫ ИЗМЕРЕНИЯ ИНФОРМАЦИИ
Бит (двоичный разряд) – одно из основополагающих понятий в информа-
тике, поскольку в этих единицах измеряют информацию. Но мы уже неодно-
кратно видели, что в двоичной системе счисления запись числа занимает
очень много места. Для измерений это неудобно. Поэтому на практике поль-
зуются производными от бита величинами.
8 битов образуют 1 байт. В байтах измеряется размер, который перемен-
ная занимает в памяти. Например, переменная типа integer занимает в
памяти компьютера 4 байта, то есть 32 бита.
1024 байта образуют 1 килобайт. Обратите
внимание, что приставка «кило» в килобайте и в
привычных нам единицах измерения, например
веса и длины (килограмм, километр и пр.), обо-
значает разные коэффициенты. Их нельзя пу-
тать. Килограмм – это 103
= 1000 граммов, а
килобайт – это 210
= 1024 байта.
1024 килобайта составляют 1 мегабайт.
Сколько байтов в мегабайте?
1 мегабайт = 1024 килобайта = 1024•1024 = 220
байтов.
СКОЛЬКО ЧИСЕЛ МОЖНО ХРАНИТЬ В ОДНОМ БАЙТЕ?
В завершение давайте зададимся вопросом: какой диапазон целых чисел
можно записать в 1 байт? 1 байт – это 8 битов. Представим его таблицей из
8 ячеек. Минимальное целое число, которое можно записать в 8 ячеек, – это
000000002
, а максимальное – это 111111112
:
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Переведём максимальное число в десятичную систему:
7 6 5 4 3 2 1 0
1 1 1 1 1 1 1 1
111111112
= 1•27
+ 1•26
+ 1•25
+ 1•24
+ 1•23
+ 1•22
+ 1•21
+ 1•20
=
= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 25510
= 28
– 1.
Значит, максимальное целое число, которое мы можем записать в 1 байт, –
это 255. Следовательно, диапазон хранимых чисел выглядит так: [0..255].
Размер этого диапазона – 256 (28
) чисел.
23§ 2. Двоичная система счисления, или Как хранятся данные в компьютере
Заметьте, что мы рассматривали только положительные числа. Если зна-
чение старшего (седьмого) разряда будет отвечать за знак числа (0 – по-
ложительное число, 1 — отрицательное), то диапазон чисел, которые можно
записать в 1 байт, будет выглядеть иначе: [–128..+127]. Но количество хра-
нимых чисел всё равно будет равно 256.
ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ
В компьютере числа и другие данные хранятся в двоичном представле-
нии (в двоичной системе счисления).
Алфавит двоичной системы счисления состоит из цифр {0, 1}.
Бит – это один двоичный разряд.
Для перевода числа из двоичной системы счисления в десятичную необ-
ходимо представить двоичное число в виде суммы произведений цифр
числа на веса соответствующих разрядов. Надо помнить, что в двоичной
системе счисления вес разряда определяется степенью числа 2, по ана-
логии с тем, что в десятичной системе это степень числа 10.
Для перевода числа из десятичной системы счисления в двоичную необ-
ходимо делить число на 2 нацело, пока целая часть не станет равна нулю,
затем остатки от деления записать в обратном порядке.
Информация измеряется в битах и производных от него величинах,
поскольку в двоичной системе счисления запись числа очень длинная.
1 байт = 8 битов, 1 килобайт = 1024 байта.
В 1 байте можно хранить 256 целых чисел.
ПРИМЕНЕНИЕ ЗНАНИЙ
1. Какой алфавит у двоичной системы счисления? Почему она так удачно
подходит для использования в цифровых устройствах?
2. Что такое бит, байт и килобайт?
3. В какой системе счисления запись числа длиннее: в двоичной или деся-
тичной?
4. Сложите в двоичной системе числа: 10012
и 1012
, 112
и 10112
. Пере-
ведите полученный результат в десятичную систему счисления и проверьте
свои вычисления.
5. Умножьте в двоичной системе числа: 11102
и 1012
. Переведите полу-
ченный результат в десятичную систему счисления и проверьте свои вычис-
ления.
6. Переведите из десятичной системы счисления в двоичную числа: 18,
41, 33.
7. Каков диапазон чисел, который можно хранить в переменной типа
integer (она занимает в памяти 4 байта)?
24 Модуль 1. Алгоритмизация и программирование
§ 3. Символьный тип данных
ПОСТАНОВКА ПРОБЛЕМЫ УРОКА
Мы обсуждали с вами, что цифра – это символ, с помощью которого
записываются числа. Но символы служат для записи не только чисел,
но также слов и текста. Получается, что символ – это важнейший эле-
мент человеческой культуры. А что же компьютер? Умеет ли он рабо-
тать с символами? Какие средства для этого предоставляются програм-
мисту?
 Сформулируйте основной вопрос урока, который объединит все приве-
дённые здесь вопросы. Сравните свою формулировку с авторской (с. 191
учебника).
НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ
Вспомните структуру программы на языке Паскаль и основные конструк-
ции языка. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и
программирование».)
Вспомните свой опыт работы в интегрированной среде разработки про-
грамм. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и про-
граммирование».)
РЕШЕНИЕ ПРОБЛЕМЫ
ЧИСЛА И СИМВОЛЫ
До текущего момента (в 7-м и 8-м классах) мы с вами, программируя,
имели дело только с числами и логическими значениями. Программы, кото-
рые мы создавали, могли обрабатывать ввод данных с клавиатуры, анали-
зировать и преобразовывать их, организовывать вывод чисел и логических
значений на экран.
Кроме того, мы умеем просто выводить информационные строки, такие
как: «Введите число», «Ввод заканчивается нулём» и т. д. Настало время на-
учиться работать с символьной информацией.
Мы постоянно пользуемся символами, когда пишем программы. Собствен-
но, сам текст программы из них и состоит. Кроме того, из символов состоит
алфавит любого языка. Но языков много, а символов, следовательно, ещё
больше. Как же символы хранятся в компьютере и как нам, программистам,
с ними работать?
Символы в компьютере хранятся и обрабатываются как целые числа.
Человек придумал специальные таблицы, которые назвал кодовыми. Эти
таблицы задают соответствие между символами и числами. Таким образом,
у каждого символа есть свой код.
25§ 3. Символьный тип данных
 Обратное утверждение «Любому числу может соответствовать не-
который символ» верно не всегда. Как вы думаете, почему?
Кодовых таблиц существует множество, и у каждой есть своё имя. Снача-
ла для каждого языка создавалась отдельная таблица. Этот процесс никто
не контролировал, поэтому постоянно возникали нестыковки. Дело доходило
даже до того, что одному языку соответствовало несколько вариантов таких
таблиц. Например, для русского языка существуют таблицы Windows1251,
KOI8-R и т. д. Наследие тех времён мы наблюдаем сегодня, когда пытаем-
ся открыть web-страницу в браузере, а она открывается в нечитаемом виде.
Приходится менять кодировку.
В результате родилась идея спроектировать такую кодовую таблицу, ко-
торая будет хранить все существующие символы. Это позволяет избежать
путаницы с многими таблицами. И такая таблица была создана в 1991 году.
Она получила название Unicode. Для хранения одного символа было выделе-
но 2 байта (16 битов). Старые кодировки использовали для хранения симво-
ла 1 байт.
 Какое количество целых чисел можно хранить в двух байтах?
Со временем стандарт Unicode модифицировался, изменялся и усложнял-
ся. Однобайтовые кодировки применяются и по сей день, однако, согласно
статистике компании Google, на начало 2010 года доля web-сайтов, исполь-
зующих кодировку семейства Unicode, составила порядка 50%.
СИМВОЛЬНЫЙ ТИП В ПАСКАЛЕ
Для работы с символами в языке Паскаль определён специальный тип
char. Это название происходит от английского слова character – символ.
В различных компиляторах языка Паскаль для хранения переменной типа
char выделяется или 1, или 2 байта. В среде ABCPascal.NET, в которой мы с
вами работаем, для хранения типа char выделено 2 байта.
Для создания переменной символьного типа в разделе описания var не-
обходимо указать:
var
c: char;
Такой текст говорит о том, что мы создали переменную типа char.
К символьным переменным применимы операции присваивания вида
с := 'A';. Символьная константа при этом указывается в апострофах.
Кроме того, в языке применяются выражения специального вида #число,
где число должно находиться в диапазоне от 0 до 65 535. Данное выра-
жение возвращает Unicode-символ, код которого равен указанному числу.
26 Модуль 1. Алгоритмизация и программирование
Примеры:
c := #21056;
с := #65;
Символы можно сравнивать. При этом боґльшим будет тот символ, код ко-
торого больше. Например: #21056 > #65.
Ввод и вывод символьных переменных оформляется аналогично вводу и
выводу чисел с помощью процедур readln и writeln:
program c1;
var
c: char;
begin
write('Введите символ: '); readln(c);
writeln('Вы ввели: ', c);
end.
Для преобразования символов в их коды в однобайтовой кодировке
Windows1251 и обратно используются встроенные функции: Chr (n) –
возвращает символ с кодом n и Ord(с) – возвращает код символа c.
Для преобразования символов в их коды в кодировке Unicode и обратно
используются функции: ChrUnicode(w) – возвращает символ с кодом w в
кодировке Unicode и OrdUnicode(с) – возвращает код символа c в коди-
ровке Unicode.
Рассмотрим примеры.
Пример 1
Требуется написать процедуру, выводящую все строчные латинские
буквы.
program c1;
procedure print;
var
ch: char;
begin
for ch := 'a' to 'z' do write(ch);
writeln;
end;
begin
print;
end.
Этот пример показывает, что, поскольку символьные переменные можно
сравнивать, то становится возможным их перебирать в цикле.
27§ 3. Символьный тип данных
Пример 2
Символы вводятся с клавиатуры до нажатия клавиши Enter. Необходимо
подсчитать, сколько введено цифр.
program c2;
var
ch: char;
s: integer;
begin
s := 0;
writeln('Вводите цифры до нажатия клавиши Enter');
read(ch);
while (ch <> chrUnicode(13)) do
begin
if (ch <= '9') and (ch >= #48) then s := s + 1;
read(ch);
end;
writeln('Введено цифр: ', s);
end.
В этой программе приведены варианты работы с символьными перемен-
ными. В начале программы мы обнуляем переменную s, в которой будем на-
капливать искомое количество цифр. Затем вводим символ ch. Условие про-
должения цикла в переводе на русский язык звучит как «пока ch не равен
символу с кодом 13». А код 13 имеет символ, соответствующий клавише
Enter.
В теле цикла, при условии что символ ch больше или равен символу с ко-
дом 48 (это ноль) и меньше или равен символу '9', мы увеличиваем на еди-
ницу значение s. И снова читаем с клавиатуры ch.
В результате мы выводим подсчитанное значение s.
Пример 3
Требуется написать программу с процедурой print, которая выводит коды
всех цифр.
program c3;
procedure print;
var
ch: char;
begin
writeln('Символ | Код ');
writeln('-------------');
for ch := '0' to '9' do
writeln(ch:4, ' |', ord(ch):4);
end;
28 Модуль 1. Алгоритмизация и программирование
begin
print;
end.
В этом примере показано, что символьные переменные можно формати-
ровать при выводе, так же как и целочисленные.
ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ
В компьютере символы хранятся и обрабатываются как целые числа.
Каждому символу ставится в соответствие целое число – его код, по-
этому существуют кодовые таблицы.
Существует множество кодовых таблиц, в которых код символа занима-
ет один байт.
Unicode – это стандарт, который описывает единую кодовую таблицу
для всех языков.
Для работы с символьной информацией в языке Паскаль определён тип
char.
Конструкция вида #число означает «символ с кодом «число».
Символы можно присваивать и сравнивать.
В языке Паскаль определены функции по работе с символами и их ко-
дами: ord, chr, ordUnicode, chrUnicode
ПРИМЕНЕНИЕ ЗНАНИЙ
1. Объясните, что такое кодировка. Что такое символ с точки зрения про-
граммиста?
2. Какие кодировки вам известны?
3. Сколько символов может содержать кодировка, в которой под хранение
одного символа выделен один байт?
4. Сколько символов может хранить таблица Unicode?
5. Напишите программу, содержащую процедуру print, которая выводит
таблицу кодов строчных английских букв. Отформатируйте вывод красиво.
6. Напишите программу, содержащую процедуру print, которая выводит
последовательность: AABABCABCD … ABC … XYZ.
7*. Напишите функцию function char2digit(ch: char):
integer, которая переводит символ-цифру в число. Подсказка: восполь-
зуйтесь кодами цифр и отдельно нуля.
29§ 4. Строки символов
§ 4. Строки символов
ПОСТАНОВКА ПРОБЛЕМЫ УРОКА
Откройте любую книгу или текстовый документ на компьютере. Вы
увидите части, главы, абзацы, предложения, слова. Но из чего, в свою
очередь, состоят все эти элементы? Из символов: букв, цифр, пробелов,
других знаков. Вы можете выделить любой фрагмент – цепочку, после-
довательность таких символов. Вы уже научились работать на компью-
тере с символами. А как работать не с одним символом, а с целой после-
довательностью – строкой символов?
 Как вы думаете, что вам предстоит узнать в этом параграфе? Сформу-
лируйте основной вопрос урока. Сравните свой вариант с авторским (с. 191
учебника).
НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ
Вспомните структуру программы на языке Паскаль и основные конструк-
ции языка. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и
программирование».)
Вспомните свой опыт работы в интегрированной среде разработки про-
грамм. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и про-
граммирование».)
Что такое символьный тип данных? (§ 3)
РЕШЕНИЕ ПРОБЛЕМЫ
ЧТО ТАКОЕ СТРОКА?
Строка – это несколько символов, расположенных друг за другом и иден-
тифицируемых как единое целое. Например, мама мыла раму – это строка и
abcd125 – тоже строка. А как быть с такой записью: 12345? Что это: число
или строка?
В данном случае последовательность 12345 можно интерпретировать и
как число, и как строку, в зависимости от контекста, в котором эта после-
довательность употребляется. Для того чтобы однозначно отличать строку от
числа, обычно её заключают в апострофы.
Поскольку строка – это последовательность символов, то наилучшим об-
разом она представляется массивом, элементами которого являются сим-
волы. В связи с этим на языке Паскаль строку можно описать следующим
образом:
str: array [1..100] of char;
30 Модуль 1. Алгоритмизация и программирование
Приведённый фрагмент кода описывает строку, состоящую из 100 сим-
волов.
Однако, поскольку обрабатывать строки приходится очень часто, в любой
язык программирования включён специальный тип данных, предназначен-
ный для работы с ними. В языке Паскаль таким типом является тип string.
ТИП STRING
Тип string позволяет описывать строки. Для того чтобы описать строку, в
разделе var необходимо написать следующий текст:
var
str: string;
В старых компиляторах размер строки был ограничен 256 символами, но в
системе PascalABC.NET строки могут иметь произвольную длину. Так, строка
str из примера «бесконечна». Однако программист может при необходимо-
сти ограничивать размер описываемых им строк. Для этого после ключево-
го слова string необходимо в квадратных скобках указать максимальный
размер строки:
var
str: string[100];
Максимальный размер означает то, что в переменной str может хранить-
ся любая строка, длина которой не превышает 100 символов.
ОСНОВНЫЕ ОПЕРАЦИИ СО СТРОКАМИ
Для ввода и вывода строк необходимо пользоваться хорошо нам извест-
ными процедурами readln и writeln. Следующий пример демонстрирует
это.
Код программы Вывод
program s1;
var
str: string;
begin
write('Введите ваше имя: ');
readln(str);
writeln('Приветствуем Вас, ', str, '!');
end.
Введите ваше имя: Вова
Приветствуем Вас, Вова!
Теперь мы понимаем, что когда мы с помощью процедуры writeln выво-
дим что-то в «апострофах», это не что иное, как строка.
31§ 4. Строки символов
Поскольку строка – это видоизменённый массив, то мы должны иметь
возможность получать доступ к конкретному символу (элементу) этой стро-
ки. Такая возможность есть. Чтобы получить символ строки с номером i (i-й
элемент), мы должны написать такую конструкцию: str[i].
К какому типу будет относиться элемент строки? Конечно, он описывается
типом char.
Рассмотрим пример.
Код программы Вывод
program s2;
var
str: string;
ch: char;
begin
write('Введите ваше имя: ');
readln(str);
ch := str[1];
writeln('А Вы знаете, ', str, ', что в Вашем
имени первая буква - ', ch, '?');
end.
Введите ваше имя: Витя
А Вы знаете, Витя, что
в Вашем имени первая
буква – В?
Элементы строки можно не только читать, но и записывать. Посмотрите,
что происходит со строкой, если изменить её элементы.
Код программы Вывод
program s3;
var
name: string;
begin
name := 'Маша';
writeln('Было имя - ', name);
name[1] := 'Д';
writeln('Стало имя - ', name);
end.
Было имя – Маша
Стало имя – Даша
Единственное, чего надо избегать при работе с элементами строки, – это
выход за её границы! Это означает, что если в строке str находится значе-
ние 'квадрат' (7 элементов), то обращение к элементу str[10] вызовет
ошибку.
По этой же причине нельзя обращаться к элементам строки и с отрица-
тельными индексами.
Строки можно присваивать, при этом строки-константы заключаются в
апострофы.
32 Модуль 1. Алгоритмизация и программирование
Код программы Вывод
program s4;
var
name: string;
begin
name := 'Вова';
writeln('Приветствуем Вас, ', name, '!');
end.
Приветствуем Вас, Вова!
К строкам применимы операции отношения, а именно: = (проверка на ра-
венство), <> (проверка на неравенство), < (меньше), > (больше), <= (меньше
или равно), >= (больше или равно).
 Результат какого типа возвращает каждая из приведённых выше
операций?
Сравнение строк производится слева направо посимвольно до первого
несовпадающего символа или до конца какой-либо из строк. Большей счи-
тается та строка, в которой первый несовпадающий символ имеет больший
код в кодовой таблице. Если строки имеют разную длину, но символы корот-
кой строки совпадают с начальными символами длинной строки, считается,
что короткая строка меньше. Строки равны, если они имеют равную длину и
соответствующие символы совпадают.
Говоря другими словами, если строки разместить в алфавитном порядке,
то меньшей будет та, которая раньше встретится. Проведите эксперимент:
1) возьмите любой словарь русского языка, откройте в нём любую стра-
ницу и выберите два произвольных слова;
2) то слово, которое находится ближе к началу словаря, – меньшее.
Приведём примеры сравнения строк:
1) 'abc' = 'abc';
2) 'abc' > 'Abc' (поскольку код символа 'a' больше кода символа 'A';
проверьте это);
3) 'строка' <> 'строку';
4) 'минута' <= 'час'.
Складывать строки в том смысле, в котором мы складываем числа, конеч-
но, нельзя. Оператор «+» применяется к строкам, но обозначает иную опе-
рацию, которая на научном языке называется конкатенацией. Если к двум
строкам применить операцию «конкатенация», то вторая «приклеится» к
первой.
33§ 4. Строки символов
Код программы Вывод
program s5;
var
fio, name, surname, familyname: string;
begin
write('Введите Ваше имя: ');
readln(Name);
write('Введите Ваше отчество: ');
readln(Surname);
write('Введите Вашу фамилию: ');
readln(FamilyName);
fio := FamilyName + ' ' + Name
+ ‘ ‘ + Surname;
writeln('Приветствуем Вас, ',
fio, '!');
end.
Введите Ваше имя: Иван
Введите Ваше отчество: Петрович
Введите Вашу фамилию: Сидоров
Приветствуем Вас,
Сидоров Иван Петрович!
Давайте проследим, как образуется значение в переменной fio. Сначала к
значению переменной FamilyName ('Сидоров') добавляется пробел и полу-
чается 'Сидоров '. Теперь к этому значению «приклеивается» содержание
переменной Name ('Иван'), получается 'Сидоров Иван'. Снова «прицепля-
ем» пробел, получаем 'Сидоров Иван '. И, наконец, дописываем значение
переменной SurName ('Петрович'). Итог – 'Сидоров Иван Петрович' – за-
носится в переменную fio и выводится.
ДЛИНА СТРОКИ
Мы уже неоднократно говорили о таком понятии, как «длина строки», об-
ращали ваше внимание на то, что нельзя обращаться к элементу, номер ко-
торого больше, чем длина строки. Но как определить длину строки?
В случае, когда мы заносим в переменную строку-константу, мы уже зна-
ем эту длину. Например, после выполнения оператора: name := 'Маша'
длина строки name равна 4 символа. А какова длина строки fio из нашего
последнего примера? Мы же её формируем в процессе работы программы,
причём из данных, которые вводит пользователь.
Существует функция, которая сможет решить наши проблемы. Она назы-
вается length (в переводе с английского – длина). В неё поступает стро-
ка, а результат, который функция возвращает, есть длина строки. Функция
length описана следующим образом:
function length(s: string): integer;
Давайте напишем программу, которая продемонстрирует работу функции
length.
34 Модуль 1. Алгоритмизация и программирование
Код программы Вывод
program s2;
var
name: string;
begin
write('Введите Ваше имя: ');
readln(name);
writeln('Длина Вашего
имени - ‘, length(name),
' символов');
end.
Введите Ваше имя: Агриппина
Длина Вашего имени - 9 символов
В этой программе мы вводим имя и заносим его в переменную name. Затем
в процедуру writeln сначала поступает строка-константа 'Длина Вашего
имени – ', затем целое число, которое возвращает функция length(name),
и в заключение опять строка-константа ' символов'. В итоге получается
тот вывод, который мы и наблюдаем.
РЕШАЕМ ЗАДАЧУ
С клавиатуры вводится строка. Требуется определить, сколько в ней цифр.
Вывести это значение.
Мы уже решали эту задачу, когда изучали символьный тип данных. Теперь
мы можем решить её более эффектно.
program dcalc;
var
s: string;
function calcdigits(str: string): integer;
var
i, col: integer;
begin
col := 0;
for i := 1 to length(str) do
if (str[i] >= '0') and (str[i] <= '9') then col := col + 1
calcdigits := col;
end;
begin
write('Введите строку: ');
readln(s);
writeln('Во введённой Вами строке ', calcdigits(s),
' цифр');
end.
Вся «изюминка» этой программы находится в функции calcdigits в выде-
ленных строках. В переменной col мы будем вычислять количество цифр. Из-
35§ 4. Строки символов
начально в эту переменную заносится значение 0. Затем с помощью цикла
с параметром for мы перебираем все элементы строки от первого до по-
следнего (значение параметра цикла равно номеру элемента строки). Если
элемент строки (Str[i]) – это цифра, то мы увеличиваем значение пере-
менной col, которую в результате и возвращаем.
ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ
Строка – это последовательность символов, которая идентифицирует-
ся как единое целое. Строка формируется по принципу массива, поэтому
имеется возможность получать доступ непосредственно к каждому эле-
менту строки.
Нельзя обращаться к элементу по номеру строки, который больше её
длины.
К строкам применимы операции отношения.
Оператор «+» по отношению к строкам выполняет операцию конкатена-
ции (слияния, «склеивания») двух или более строк.
Длину строки возвращает встроенная функция length.
ПРИМЕНЕНИЕ ЗНАНИЙ
1. • Расскажите, как вы понимаете, что такое строка.
2. • Верно ли утверждение: строка – это массив символов?
3. Что означает следующее описание?
var
s: string[25];
4. Какие функции по работе со строками в языке Паскаль вам известны?
5. • Что будет выведено на экран в результате выполнения следующего
фрагмента программы?
var
str: string;
begin
str := 'Трансформация';
str[14] := '.';
writeln(str);
end.
6. С клавиатуры вводится слово длиной более 5 символов. Вывести на
экран его третий символ и дважды – последний.
7. С клавиатуры вводятся два слова. Напишите функцию, отвечающую на
вопрос: верно ли, что первое слово начинается на букву, на которую заканчи-
вается второе?
36 Модуль 1. Алгоритмизация и программирование
§ 5. Эффективная работа со строками
ПОСТАНОВКА ПРОБЛЕМЫ УРОКА
У ребят возникли вопросы к учителю: «Мы же не первые, кто начи-
нает решать задачи на строки! Неужели все профессиональные про-
граммисты заново создают все необходимые им процедуры и функции
для работы со строками? Такого не может быть».
 Какую проблему увидели ребята? Сформулируйте основной вопрос уро-
ка. Сравните свой вариант с авторским (с. 191 учебника).
НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ
Вспомните структуру программы на языке Паскаль и основные конструк-
ции языка. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и
программирование».)
Вспомните свой опыт работы в интегрированной среде разработки про-
грамм.) (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и про-
граммирование».)
Что такое строки символов в Паскале? (§ 4)
РЕШЕНИЕ ПРОБЛЕМЫ
КАКИЕ ЗАДАЧИ РЕШАЮТСЯ С ПОМОЩЬЮ СТРОК?
Строки – это настолько часто используемый в программировании объект,
что для эффективной работы с ними разработчики создали большое количе-
ство вспомогательных подпрограмм. Но перед их разбором давайте уточним,
каковы самые популярные действия, производимые со строками.
1. Поиск подстроки в строке. В рамках этой задачи можно узнать, встре-
чается ли (и сколько раз) искомая подстрока в большой строке? Такая
задача очень распространена в областях лингвистического анализа
данных, систем управления базами данных и т. д.
2. Вставка (удаление) подстроки в строку (из строки). В качестве примера
можно привести задачу по вычислению значения сложного выражения:
x = y ∙(5 +
y
2 );
y = 3 – (1 +
8
16
).



Вместо y в первую строку надо подставить его значение из второй.
37§ 5. Эффективная работа со строками
3. Получение подстроки из строки.
4. Преобразование строк в числа и обратно.
5. Преобразование строки с разделителями в массив отдельных строк.
6. Уничтожение повторов в строке и т. д.
ПОДПРОГРАММЫ ПО РАБОТЕ СО СТРОКАМИ В ЯЗЫКЕ ПАСКАЛЬ
Все реализации языка Паскаль имеют в своём составе функции и проце-
дуры по работе со строками. Система PascalABC.NET не стала исключени-
ем. Предлагаем вам рассмотреть средства, предоставляемые этой системой
программирования.
Предупреждаем, что все описываемые ниже подпрограммы работают в
системе PascalABC.NET. Если вы решите программировать в другой среде,
то необходимо внимательно прочитать её документацию, поскольку список
используемых процедур и функций может заметно различаться.
Подпрограмма и описание Пример использования
function Pos(subs, s: string):
integer;
Возвращает номер элемента, с которого
подстрока subs входит в строку s. Если subs в
s не встречается, то возвращается 0
program s1;
var
s, s1: string;
p: integer;
begin
readln(s);
readln(s1);
p := Pos(s1, s);
if (p > 0)
then writeln(s1 + ' входит
в ' + s + ',начиная с ',
p,' символа.')
else writeln(s1 + '
не входит в ' + s);
end.
function Copy(s: string; index,
count: integer): integer;
Возвращает подстроку из строки s, начиная
с номера index, подстрока при этом имеет
длину count
program s2;
var
data, year: string;
p: integer;
begin
write('Введите дату в формате:
ДД-ММ-ГГГГ: ');
readln(data);
year := Copy(data, 7, 4);
writeln('Введенный вами год -
', year);
end.
38 Модуль 1. Алгоритмизация и программирование
Подпрограмма и описание Пример использования
procedure Insert(source: string;
var s: string; index:
integer);
Вставляет подстроку source в строку s с но-
мера index
program s3;
var
s, s1: string;
begin
s := 'мама раму';
s1 := 'мыла ';
Insert(s1, s, 6);
writeln(s); // Вывод: мама
// мыла раму
end.
procedure Delete(var s: string;
index count: integer);
Удаляет из строки s count символов, начи-
ная с номера index
program s4;
var
s: string;
begin
s := 'мама дважды мыла раму';
Delete(s, 6, 7);
writeln(s);
end. // Вывод: мама мыла раму
function TryStrToInt(s: string;
var value: integer):boolean;
Пробует преобразовать строку s в целое
число value. При успешном преобразовании
возвращает true, в противном случае – false
program s5;
var
s: string;
a: integer;
begin
write('Введите строку: ');
readln(s);
if TryStrToInt(s, a) then
writeln('Перевели в число
и получили: ', a)
else writeln('Эту строку
перевести в
целое число
нельзя');
end.
function TryStrToFloat
(s: string; varvalue: real):
boolean;
Пробует преобразовать строку s в веще-
ственное число value. При успешном пре-
образовании возвращает true, в противном
случае – false
program s6;
var
s: string;
a: real;
begin
write('Введите строку: ');
readln(s);
if TryStrToFloat(s, a) then
writeln('Перевели в число и
получили: ', a)
else writeln('Эту строку
перевести в
вещественное
число нельзя');
end.
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с
406 2  информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с

More Related Content

What's hot

Разработка учебной ситуации
Разработка учебной ситуацииРазработка учебной ситуации
Разработка учебной ситуацииElena Vostrikova
 
Отчетный доклад от группы Вопрошание
Отчетный доклад от группы ВопрошаниеОтчетный доклад от группы Вопрошание
Отчетный доклад от группы ВопрошаниеVadim Karastelev
 
гейн учеб 7 9, 2013
гейн учеб 7 9, 2013гейн учеб 7 9, 2013
гейн учеб 7 9, 2013DrofaUral
 
Педагогический дизайн
Педагогический дизайнПедагогический дизайн
Педагогический дизайнYuri Pavlov
 
«Создание и использование Qr кодов в преподавании иностранного языка».
«Создание и использование Qr кодов в преподавании иностранного языка». «Создание и использование Qr кодов в преподавании иностранного языка».
«Создание и использование Qr кодов в преподавании иностранного языка». Liudmila Tsvirko
 
инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012DrofaUral
 
арт математика как метапредметный прорыв
арт математика как метапредметный прорыварт математика как метапредметный прорыв
арт математика как метапредметный прорывLjudmilla Rozhdestvenskaja
 
Алгоритм разработки УС
Алгоритм разработки УСАлгоритм разработки УС
Алгоритм разработки УСElena Vostrikova
 
Педагогический дизайн в высшем образовании
Педагогический дизайн в высшем образованииПедагогический дизайн в высшем образовании
Педагогический дизайн в высшем образованииYuri Pavlov
 
Внедрение системы автоматизации учебного процесса и управления школой
Внедрение системы автоматизации учебного процесса и управления школойВнедрение системы автоматизации учебного процесса и управления школой
Внедрение системы автоматизации учебного процесса и управления школойTechExpert
 
икт-сервисы как средство развития творческого мышления
икт-сервисы как средство развития творческого мышленияикт-сервисы как средство развития творческого мышления
икт-сервисы как средство развития творческого мышленияВолкова Вероника
 
учебные проекты фгос
учебные проекты фгосучебные проекты фгос
учебные проекты фгосBurdanova
 
Использование проектно-исследовательских технологий в обучении географии
Использование проектно-исследовательских  технологий в обучении географии  Использование проектно-исследовательских  технологий в обучении географии
Использование проектно-исследовательских технологий в обучении географии karatnat
 
Проектная деятельность на уроках истории и обществознания как.pptx
Проектная деятельность на уроках истории и обществознания как.pptxПроектная деятельность на уроках истории и обществознания как.pptx
Проектная деятельность на уроках истории и обществознания как.pptxNatalya Solomina
 
Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...
Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...
Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...SQALab
 
Учебный проект
Учебный проектУчебный проект
Учебный проектpalmira_mk
 
Педагогический дизайн информационной образовательной среды и основные тренды ...
Педагогический дизайн информационной образовательной среды и основные тренды ...Педагогический дизайн информационной образовательной среды и основные тренды ...
Педагогический дизайн информационной образовательной среды и основные тренды ...TCenter500
 

What's hot (20)

Разработка учебной ситуации
Разработка учебной ситуацииРазработка учебной ситуации
Разработка учебной ситуации
 
Отчетный доклад от группы Вопрошание
Отчетный доклад от группы ВопрошаниеОтчетный доклад от группы Вопрошание
Отчетный доклад от группы Вопрошание
 
гейн учеб 7 9, 2013
гейн учеб 7 9, 2013гейн учеб 7 9, 2013
гейн учеб 7 9, 2013
 
Педагогический дизайн
Педагогический дизайнПедагогический дизайн
Педагогический дизайн
 
«Создание и использование Qr кодов в преподавании иностранного языка».
«Создание и использование Qr кодов в преподавании иностранного языка». «Создание и использование Qr кодов в преподавании иностранного языка».
«Создание и использование Qr кодов в преподавании иностранного языка».
 
инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012инф1 4 и инф3-4 2012
инф1 4 и инф3-4 2012
 
арт математика как метапредметный прорыв
арт математика как метапредметный прорыварт математика как метапредметный прорыв
арт математика как метапредметный прорыв
 
Алгоритм разработки УС
Алгоритм разработки УСАлгоритм разработки УС
Алгоритм разработки УС
 
Педагогический дизайн в высшем образовании
Педагогический дизайн в высшем образованииПедагогический дизайн в высшем образовании
Педагогический дизайн в высшем образовании
 
Внедрение системы автоматизации учебного процесса и управления школой
Внедрение системы автоматизации учебного процесса и управления школойВнедрение системы автоматизации учебного процесса и управления школой
Внедрение системы автоматизации учебного процесса и управления школой
 
икт-сервисы как средство развития творческого мышления
икт-сервисы как средство развития творческого мышленияикт-сервисы как средство развития творческого мышления
икт-сервисы как средство развития творческого мышления
 
тркм
тркмтркм
тркм
 
Комплексный электронный образовательный продукт
Комплексный электронный образовательный продуктКомплексный электронный образовательный продукт
Комплексный электронный образовательный продукт
 
учебные проекты фгос
учебные проекты фгосучебные проекты фгос
учебные проекты фгос
 
Использование проектно-исследовательских технологий в обучении географии
Использование проектно-исследовательских  технологий в обучении географии  Использование проектно-исследовательских  технологий в обучении географии
Использование проектно-исследовательских технологий в обучении географии
 
Проектная деятельность на уроках истории и обществознания как.pptx
Проектная деятельность на уроках истории и обществознания как.pptxПроектная деятельность на уроках истории и обществознания как.pptx
Проектная деятельность на уроках истории и обществознания как.pptx
 
Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...
Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...
Не умеешь - научим". Организация обучения тестировщиков до уровня, необходимо...
 
план урока
план урокаплан урока
план урока
 
Учебный проект
Учебный проектУчебный проект
Учебный проект
 
Педагогический дизайн информационной образовательной среды и основные тренды ...
Педагогический дизайн информационной образовательной среды и основные тренды ...Педагогический дизайн информационной образовательной среды и основные тренды ...
Педагогический дизайн информационной образовательной среды и основные тренды ...
 

Viewers also liked

406 1 информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с
406 1  информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с406 1  информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с
406 1 информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288сdfdkfjs
 
Учебник Английский язык 9 класс Кауфман
Учебник Английский язык 9 класс КауфманУчебник Английский язык 9 класс Кауфман
Учебник Английский язык 9 класс Кауфманk9y7x
 

Viewers also liked (20)

406 1 информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с
406 1  информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с406 1  информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с
406 1 информатика. 9 кл. в 2ч. ч.1.-горячев, островский и др_2015 -288с
 
9 h n
9 h n9 h n
9 h n
 
9 h k
9 h k9 h k
9 h k
 
9 f kab
9 f kab9 f kab
9 f kab
 
9 f g
9 f g9 f g
9 f g
 
9 f sh
9 f sh9 f sh
9 f sh
 
9 vi s
9 vi s9 vi s
9 vi s
 
9 i bik
9 i bik9 i bik
9 i bik
 
9 i u
9 i u9 i u
9 i u
 
9 f bel
9 f bel9 f bel
9 f bel
 
Учебник Английский язык 9 класс Кауфман
Учебник Английский язык 9 класс КауфманУчебник Английский язык 9 класс Кауфман
Учебник Английский язык 9 класс Кауфман
 
9 i1 b
9 i1 b9 i1 b
9 i1 b
 
9 i ikt2-b
9 i ikt2-b9 i ikt2-b
9 i ikt2-b
 
9 ry t
9 ry t9 ry t
9 ry t
 
9 h e
9 h e9 h e
9 h e
 
9 geosz s
9 geosz s9 geosz s
9 geosz s
 
8 9 t-ch
8 9 t-ch8 9 t-ch
8 9 t-ch
 
9 ny g_mozaik
9 ny g_mozaik9 ny g_mozaik
9 ny g_mozaik
 
9 h2 g
9 h2 g9 h2 g
9 h2 g
 
9 nyrt b
9 nyrt b9 nyrt b
9 nyrt b
 

Similar to 406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с

керее5
керее5керее5
керее5Dimon4
 
8 a r ареиприаепрч
8 a r ареиприаепрч 8 a r ареиприаепрч
8 a r ареиприаепрч 11book
 
9 кла бун рус яз
9 кла бун рус яз9 кла бун рус яз
9 кла бун рус яз11book
 
3 p1 v 1 часть
3 p1 v 1 часть3 p1 v 1 часть
3 p1 v 1 часть11book
 
заседание №1 гбп 23.10.14
заседание №1 гбп 23.10.14заседание №1 гбп 23.10.14
заседание №1 гбп 23.10.14Artyom Gavrilov
 
07 учебный проект
07 учебный проект07 учебный проект
07 учебный проектAndy Newman
 
презентация
презентацияпрезентация
презентацияRC
 
программа формирования ууд
программа формирования уудпрограмма формирования ууд
программа формирования уудnogai08
 
521 1 русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с
521 1  русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с521 1  русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с
521 1 русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288сdfdkfjs
 
Проектные задачи
Проектные задачиПроектные задачи
Проектные задачиYanina
 
описание собственного опыта на кэ 2
описание собственного опыта на кэ 2описание собственного опыта на кэ 2
описание собственного опыта на кэ 2svetopusha
 
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168сdfdkfjs
 
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172сdfdkfjs
 
6 8 klassy-dnevnik_realizatsii_proekta
6 8 klassy-dnevnik_realizatsii_proekta6 8 klassy-dnevnik_realizatsii_proekta
6 8 klassy-dnevnik_realizatsii_proektassusera868ff
 
технология проектного обучения
технология проектного обучениятехнология проектного обучения
технология проектного обученияerygina_anna
 
26201 .
26201  .26201  .
26201 .kod_03
 
пр. иссл. деят. семинар 15.01.2014. руденко в.э.
пр. иссл. деят. семинар 15.01.2014. руденко в.э.пр. иссл. деят. семинар 15.01.2014. руденко в.э.
пр. иссл. деят. семинар 15.01.2014. руденко в.э.STSjippi
 
Аттестация педагогических работников хромцова м. в.
Аттестация педагогических работников  хромцова м. в.Аттестация педагогических работников  хромцова м. в.
Аттестация педагогических работников хромцова м. в.sed49
 
Ливни знаний
Ливни знанийЛивни знаний
Ливни знанийsvetlyashok
 

Similar to 406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с (20)

керее5
керее5керее5
керее5
 
8 a r ареиприаепрч
8 a r ареиприаепрч 8 a r ареиприаепрч
8 a r ареиприаепрч
 
9 кла бун рус яз
9 кла бун рус яз9 кла бун рус яз
9 кла бун рус яз
 
3 p1 v 1 часть
3 p1 v 1 часть3 p1 v 1 часть
3 p1 v 1 часть
 
ФГОС НОО
ФГОС НООФГОС НОО
ФГОС НОО
 
заседание №1 гбп 23.10.14
заседание №1 гбп 23.10.14заседание №1 гбп 23.10.14
заседание №1 гбп 23.10.14
 
07 учебный проект
07 учебный проект07 учебный проект
07 учебный проект
 
презентация
презентацияпрезентация
презентация
 
программа формирования ууд
программа формирования уудпрограмма формирования ууд
программа формирования ууд
 
521 1 русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с
521 1  русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с521 1  русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с
521 1 русский язык. 7 кл.-бунеев р.н, бунеева е.в. и др_2015 -288с
 
Проектные задачи
Проектные задачиПроектные задачи
Проектные задачи
 
описание собственного опыта на кэ 2
описание собственного опыта на кэ 2описание собственного опыта на кэ 2
описание собственного опыта на кэ 2
 
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с344 2  биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
344 2 биология. растения. 6кл. в 2ч. ч.2-постникова е.а_2008 -168с
 
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с344 1  биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
344 1 биология. растения. 6кл. в 2ч. ч.1-постникова е.а_2008 -172с
 
6 8 klassy-dnevnik_realizatsii_proekta
6 8 klassy-dnevnik_realizatsii_proekta6 8 klassy-dnevnik_realizatsii_proekta
6 8 klassy-dnevnik_realizatsii_proekta
 
технология проектного обучения
технология проектного обучениятехнология проектного обучения
технология проектного обучения
 
26201 .
26201  .26201  .
26201 .
 
пр. иссл. деят. семинар 15.01.2014. руденко в.э.
пр. иссл. деят. семинар 15.01.2014. руденко в.э.пр. иссл. деят. семинар 15.01.2014. руденко в.э.
пр. иссл. деят. семинар 15.01.2014. руденко в.э.
 
Аттестация педагогических работников хромцова м. в.
Аттестация педагогических работников  хромцова м. в.Аттестация педагогических работников  хромцова м. в.
Аттестация педагогических работников хромцова м. в.
 
Ливни знаний
Ливни знанийЛивни знаний
Ливни знаний
 

406 2 информатика. 9 кл. в 2ч. ч.2.-горячев, островский и др_2015 -192с

  • 1. Москва 2015 Федеральный государственный образовательный стандарт Образовательная система «Школа 2100» А.В. Горячев, С.Л. Островский, А.В. Паволоцкий, Т.Л. Чернышёва, Д.В. Широков ИНФОРМАТИКА 9 класс • Часть 29 класс • Часть 2
  • 2. УДК 373.167.1:004+004(075.3) ББК 32.81я721 Г67 Федеральный государственный образовательный стандарт Образовательная система «Школа 2100» Совет координаторов предметных линий Образовательной системы «Школа 2100» – лауреат премии Правительства РФ в области образования за теоретическую разработку основ образовательной системы нового поколения и её практическую реализацию в учебниках На учебник получены положительные заключения по результатам научной экспертизы (заключение РАН от 14.10.2011 № 10106-5215/449), педагогической экспертизы (заключение РАН от 24.01.2014 № 000384) и общественной экспертизы (заключение НП «Лига образования» от 30.01.2014 № 177) Руководитель издательской программы – чл.-корр. РАО, доктор пед. наук, проф. Р.Н. Бунеев Авторский коллектив: А.В. Гиглавый – научный редактор, А.В. Горячев – автор концепции курса, научный руководитель, С.Л. Островский (часть 1: модуль «Хранение и обработка больших объ- ёмов данных»), А.В. Паволоцкий (часть 2: модуль «Алгоритмизация и программирова- ние»), А.А. Семёнов (часть 1: модуль «Моделирование»), Т.Л. Чернышёва (часть 2: модуль «Знакомство с математической логикой»), Д.В. Широков (часть 1: модуль «Создание электронных изданий»; часть 2: модуль «Web-конструирование. Основы мастерства») ISBN 978-5-85939-997-0 ISBN 978-5-85939-942-0 (ч. 2) © Горячев А.В., Островский С.Л., Паволоцкий А.В., Чернышёва Т.Л., Широков Д.В., 2012 © ООО «Баласс», 2012 Горячев, А.В. Информатика. 9 кл. : учеб. для организаций, осуществляющих обра- зовательную деятельность. В 2 ч. Ч. 2 /А.В. Горячев, С.Л. Островский, А.В. Паволоцкий, Т.Л. Чернышёва, Д.В. Широков. – М. : Баласс, 2015. – 192 с. : ил. (Образовательная система «Школа 2100»). ISBN 978-5-85939-997-0 ISBN 978-5-85939-942-0 (ч. 2) Учебник «Информатика» для 9 класса соответствует Федеральному государ- ственному образовательному стандарту основного общего образования. Явля- ется продолжением непрерывного курса информатики и составной частью ком- плекта учебников развивающей Образовательной системы «Школа 2100». Содержание учебника представлено в виде отдельных учебных модулей, из которых учитель может выбрать нужные в соответствии с требованиями основ- ной образовательной программы школы. Учебный материал предлагается на необходимом и повышенном уровнях. Может использоваться как учебное пособие. Г67 УДК 373.167.1:004+004(075.3) ББК 32.81я721 Данный учебник в целом и никакая его часть не могут быть скопированы без разрешения владельца авторских прав
  • 3. 3 3 Дорогие читатели! Вы открыли книгу 2 учебника информатики, которая позволит вам получить умения, лежащие в основе профессий, связанных с разработкой или активным использова- нием компьютерной техники и компьютерных программ. Вы любите играть в компью- терные игры? А вы задумывались над тем, что многочисленные миры из ваших игр никогда не существовали в действительности, а появились на свет благодаря силе воображения и профессиональному мастерству создателей этих игр. Вы представ- ляете, как это заманчиво – создавать собственные миры? Профессии, связанные с созданием компьютерных программ не только пользуются хорошим устойчивым спросом, но и очень увлекательны. Зачастую программисты работают, даже не заме- чая, как летит время. Надеемся, вы помните, что в книге 2 нашего учебника мы разместили учебные модули, с помощью которых вы сможете изучить теоретические основы информатики, сквозную линию модулей с 7-го по 9-й класс, нацеленную на обучение программи- рованию, а также модули профессиональной ориентации, с помощью которых можно научиться основам профессий, опирающихся на применение компьютеров. В книге 2 вы встретитесь со всеми тремя этими видами модулей. С помощью модуля «Web-конструирование. Основы мастерства» вы сможете познакомиться с некоторыми секретами создателей сайтов. В модуле «Алгоритмизация и программи- рование» вы сможете продолжить обучение программированию на языке Паскаль. Модуль «Знакомство с математической логикой» относится к теоретическим моду- лям, с его помощью можно научиться составлять логические формулы и решать с их помощью задачи.
  • 4. 4 Как работать с учебником Просмотрите «Содержание», перелистайте учебник. Вы заметите, что он разделён на модули. Вы будете изучать модули в том порядке, который предложит учитель. Практически в каждом модуле мы предусмотрели пять основных пара- графов. Изучив эти параграфы, вы напишете проверочную работу, по ито- гам которой узнаете, как вы освоили новый материал: ниже необходимого уровня, на необходимом или повышенном уровне. Далее вы будете рабо- тать самостоятельно, выполняя по указанию учителя задания того уровня, которого вы пока не достигли. Если проверочная работа покажет, что вы освоили и повышенный уровень, то вы будете выполнять задания самого высокого – максимального уровня. Учитель в любой момент может пред- ложить вам перейти на выполнение заданий более высокого уровня. По окончании выполнения заданий учебника учитель проведёт итоговую про- верочную работу. Далее в модуле расположены дополнительные параграфы, задания к ним и проверочные работы. Основные параграфы выделены в учебнике зелёной полосой вверху страницы, дополнительные – розовой полосой. Дополнительный материал, который вы не изучите на уроках, вы сможе- те использовать на факультативах и кружках. На уроках информатики вы сможете освоить умения, которые помогут вам более эффективно использовать компьютеры и компьютерные сети для решения возникающих в вашей жизни задач. Кроме того, учитель может решить, что вам надо освоить умения, которые помогут вам зани- маться разработкой новых компьютерных программ или заложат основы профессиональной деятельности, тесно связанной с применением ком- пьютерной техники. Кроме того, наш учебник, как и все учебники Образовательной системы «Школа 2100», поможет вам в развитии универсальных учебных действий. В учебнике вам могут встретиться задания, обозначенные кружками и фоном разного цвета – это условные знаки. Каждый цвет соответствует определённой группе умений:  –организовывать свои действия: ставить цель, планировать работу, действовать по плану, оценивать результат;  –работать с информацией: самостоятельно находить, осмысливать и использовать её;
  • 5. 5 5  –общаться и взаимодействовать с другими людьми, владеть устной и письменной речью, понимать других, договариваться, сотрудничать;  –развивать качества своей личности, оценивать свои и чужие слова и поступки; так обозначены задания, где нужно применить разные группы умений, мы называем их жизненными задачами и проектами. Для успешного изучения информатики и овладения универсальными учеб- ными действиями на уроках используется проблемно-диалогическая обра- зовательная технология. Поэтому структура параграфа, где вводится новый материал, имеет в учебнике следующий вид. ПОСТАНОВКА ПРОБЛЕМЫ УРОКА Это подведение к теме (вопросу, цели) урока: вы обсуждаете проблему в предложенном материале и формулируете главный вопрос урока (всем классом, в группе или в паре). Сравните свой вариант вопроса с авторским. Авторские вопросы к параграфам расположены в «Содержании» под назва- ниями параграфов и выделены курсивом. НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ Так обозначены вопросы и задания по изученному материалу, который вам необходим для открытия нового знания. РЕШЕНИЕ ПРОБЛЕМЫ Вы в группе, в паре или совместно с учителем, ведя диалог, осуществляете поиск решения проблемы. Для решения проблемы вы работаете с текстом. ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ На этом этапе вы формулируете вывод и проверяете свои предположения, сравнивая их с авторским решением проблемы – научными формулировка- ми правил или определений. ПРИМЕНЕНИЕ ЗНАНИЙ Так обозначены задания на применение новых знаний. Задания, помеченные «звёздочкой», имеют повышенную сложность.
  • 6. 6 ОПЕРАЦИИ Раздел «Операции» позволит вам научиться выполнять действия с ком- пьютерными программами, необходимые для решения учебных задач. В конце модуля вы найдёте раздел «Решаем жизненные задачи и работа- ем над проектами». Задачи и проекты могут выполняться как на уроках, так и на факультативах и кружках. Там же находится очень важный раздел «О профессиях». Прочитайте его и подумайте, какие профессии вам больше по душе. Что такое жизненные задачи? Это проблемы, с которыми вы можете столкнуться в жизни и для решения которых вам понадобятся разные знания и умения. Они оформлены следу- ющим образом: Название задачи Ваша роль. Человек, в роли которого вы должны себя представить, решая проблему. Описание. Условия, в которых возникла проблема. Задание. То, что нужно сделать и получить в итоге. Что такое проект? Это любое самостоятельное дело, которое предполагает: 1) оригинальный замысел (цель); 2) выполнение работы за определённый отрезок времени; 3) конкретный результат, представленный в итоге. Что можно считать результатом проекта?  Предметы, сделанные своими руками: макеты, модели или вещи для практического использования.  Мероприятия: спектакли, фотовыставки, викторины, конференции, праздники и тому подобное – при условии, что они подготовлены самими учениками.  Информационные продукты: газеты, книжки, плакаты, карты, стихотво- рения, рассказы, доклады, отчёты об исследованиях и т. д.  Решение конкретных проблем: изменение, улучшение конкретной ситуа- ции, например уборка мусора на школьном дворе.
  • 7. 7 7 Правила проектной деятельности 1. Каждый может начать собственный проект. 2. Каждый может объединиться с другими в ходе работы над проектом. 3. Каждый может выйти из проекта при условии, что он не подводит других. 4. Каждый может не участвовать ни в одном проекте. Как оценить свои учебные достижения? Для этого надо освоить алгоритм самооценки: 1. Какова была цель задания (что нужно было получить в результате)? 2. Вы выполнили задание (получен ли результат)? 3. Вы выполнили задание верно или с ошибкой? 4. Вы выполнили задание самостоятельно или с чьей-то помощью? 5. Вспомните, как вы ставите отметки. Определите свою отметку.
  • 8. 8 Модуль 1. Алгоритмизация и программирование
  • 9. 9 Этот модуль поможет вам: • узнать, что такое двоичные данные и как компьютер с ними ра- ботает; • разобраться в новых типах данных; • улучшить свои навыки в практическом программировании. Для этого вам надо научиться: • разбираться в логических конструкциях языка Паскаль; • работать с массивами; • пользоваться подпрограммами; • работать в интегрированной среде разработки программ; • искать ошибки в программах – отлаживать их. Модуль 1. Алгоритмизация и программирование
  • 10. 10 Модуль 1. Алгоритмизация и программирование Введение Дорогие друзья! В этом году мы с вами продолжим изучать программирование. В 7-м и 8-м классах мы научились многому: • познакомились с понятием «алгоритм» и со способами его записи; • узнали о структуре программы на языке программирования; • изучили различные типы данных языка Паскаль; • работали в интегрированной среде разработки и отлаживали программы; • разобрали различные алгоритмы. Однако впереди у нас с вами ещё много важного и интересного. Поэтому давайте скорее перевернём эту страницу и перейдём к новому материалу. Удачи вам!
  • 11. 11§ 1. Системы счисления § 1. Системы счисления ПОСТАНОВКА ПРОБЛЕМЫ УРОКА Учитель подошёл к доске и нарисовал на ней: 123. – Что я нарисовал? – спросил учитель. – Вы написали число 123, – сказала Маша. – Нет, – запротестовал Вася, – вы нарисовали три цифры: 1, 2 и 3. – Хорошо, – сказал учитель, – а теперь посмотрите на это, – и напи- сал: CXXIII. – Ну, это просто, – обрадовался Петя, – это тоже число 123, только его так римляне записывали! – Правильно, – сказал учитель, – я могу записывать числа различ- ными способами.  Как вы думаете, есть ли ошибки в высказываниях ребят или каждый из них прав? Сформулируйте основной вопрос урока. Сравните свою формули- ровку с авторской (с. 191 учебника). РЕШЕНИЕ ПРОБЛЕМЫ ЧИСЛА И ЦИФРЫ Как вы думаете, что такое число? Как ни странен этот вопрос, но он является основопо- лагающим не только в математике и информа- тике, но и в философии. Легендарный Пифагор считал, что «всё в мире есть число». Конечно, это аллегория, однако и в ней есть доля истины. С помощью чисел человек описывает такую ха- рактеристику окружающего мира, как количество. С древних времён людям приходилось что-то мерить в количественном отношении, и такой мерой стало число. Со временем это понятие развивалось, обогащалось и превратилось в итоге в важнейшее математическое понятие. Итак, число – это количественная мера. Что же такое цифра? Цифры – это символы: значки, рисунки, с помощью которых люди стали записывать числа. С течением времени образовались устойчивые наборы таких символов, каждый набор образует цифровой алфавит. Например, мы используем арабские цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; а древние римляне использовали свои римские цифры: I, V, X, L, C, D, M. Мы можем сами при- думать свой набор, например такой: , , , , , , , , . Количество символов в алфавите называется размерностью алфавита.
  • 12. 12 Модуль 1. Алгоритмизация и программирование В привычном нам цифровом алфавите 10 цифр, следовательно, его размер- ность равна 10.  Какова размерность алфавита римских цифр? Итак, у нас есть цифры, с помощью которых мы хотим записать число. Мо- жем ли мы это сделать? Необходимы правила, следуя которым мы запишем число, которое будет понятно другим людям. Такие правила называются системой счисления. СИСТЕМЫ СЧИСЛЕНИЯ Система счисления – это способ записи чисел с помощью алфавита цифр. Как вы видели, одно и то же число можно записать по-разному. Напри- мер, число 15, записанное в привычной нам десятичной системе счисления, в римской системе счисления будет выглядеть как XV. Все системы счисления делятся на две большие группы: позиционные и непозиционные. Давайте их рассмотрим. ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ Система счисления называется позиционной, если количественное зна- чение каждой цифры (говорят также: вес, привносимый цифрой в число) за- висит от её местоположения в записи числа. Примером позиционной системы счисления является десятичная систе- ма счисления, которую люди используют повсеместно уже много веков. Своим названием десятичная система обязана размерности использу- емого алфавита. А количество цифр – 10 связано с тем, что когда-то для счёта человек использовал только пальцы на руках. Размерность алфавита системы счисления (например, число 10 в деся- тичной системе счисления) называют также основанием системы счисле- ния. Поясним, что такое вес цифры в числе. Рассмотрим число 1213. Отдельную позицию в записи числа называют разрядом. Каждый разряд имеет свой номер. Примем следующий принцип нумерации разрядов: 1) будем нумеровать разряды справа налево; 2) будем нумеровать разряды с нуля (в принципе, можно нумеровать и с единицы). В нашем примере нумерация разрядов будет такой: 3 2 1 0 1 2 1 3
  • 13. 13§ 1. Системы счисления В записи этого числа цифра 1 присутствует два раза: первый раз в первом разряде, а второй раз – в третьем. Первый раз цифра 1 привносит в число 1 десяток (101 ), а во второй – 1 тысячу (103 ). Цифра 2 привносит в число 2 сотни (2 •102 ), а число 3 – 3 единицы (3•100 ). Таким образом, вес цифры – это количество, которое цифра привносит в число. Тогда получается, что наше число выражает следующее количество: Число = 1 •103 + 2 •102 + 1 •101 + 3 •100 . Такая запись называется развёрнутой формой записи числа. Она несколько громоздка, поэтому на практике пользуются сокращённой записью чисел. Наше число в сокращённом виде будет выглядеть так: Число = 123410 . Нижний индекс, расположенный после записи числа, обозначает основа- ние системы счисления, в которой записано число. Когда мы говорим о де- сятичной системе счисления, то обычно этот индекс не записывается. В качестве тренировки переведём запись числа 1532110 из сокращённой формы в развёрнутую. 1) Расставим номера разрядов над этим числом: 4 3 2 1 0 1 5 3 2 1 2) Запишем развёрнутую форму числа: 1532110 = 1 •104 + 5 •103 + 3 •102 + 2 •101 + 1 •100 . Конечно, из позиционных систем счисления де- сятичная система далеко не единственная. Ска- жем больше: позиционных систем счисления су- ществует бесконечно много. Некоторыми из них вы пользуетесь постоянно, зачастую сами того не замечая. Например, широко распространена двенадцатеричная система счисления. Она ис- пользуется как для счёта времени (12 часов), так и в английской системе мер и весов (1 английский пенс = 12 шиллингов, 1 дюйм = 1/12 фута, 1 дю- жина = 12 единиц). В вычислительной технике применяется двоичная система счисления. О ней мы будем говорить в дальнейшем более подробно.
  • 14. 14 Модуль 1. Алгоритмизация и программирование НЕПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ В отличие от позиционных систем счисления, в не- позиционных системах цифра всегда весит одина- ково, независимо от места её расположения в числе. Самой простой непозиционной системой является единичная система счисления. Вы все с ней знако- мились, когда учились в начальной школе считать на счётных палочках. Каждая палочка (или чёрточка) при- вносит в число всегда одну единицу, независимо от того, где мы её расположим. Например, число 5 мы можем записать как | | | | | , а число 10 в виде | | | | | | | | | | . Недостаток этой системы счисления виден сразу. Запись больших чисел в ней будет очень громоздкой. Следующая весьма популярная система, которая используется с давних времён до наших дней, – это римская система счисления. Алфавит этой системы показан на рис. 1.1. Цифра Значение I 1 V 5 X 10 L 50 C 100 D 500 M 1000 Рис. 1.1 Римлянам вполне хватало этих 7 цифр для того, чтобы удовлетворить все свои потребности в счёте. В римской системе счисления число 12 будет за- писано как XII, а число 80 – как LXXX. Но вы справедливо можете заключить, что число 12 можно записать как VVII или вообще как IIIIIIIIIIII. Как такое может быть? Самый главный недостаток любой непозиционной системы заключается в том, что любое число может быть в ней представлено множеством способов. Чтобы этого избежать, нужно ввести дополнительные правила. Римляне так и поступали. Чтобы записать число 12, они находили ближай- шее к нему слева (то есть не большее его) число, которое можно было за- писать одной цифрой алфавита. В нашем случае это будет число 10. Они за- писывали его: X. Затем римляне вычитали из числа 12 число 10 и проводили
  • 15. 15§ 1. Системы счисления аналогичную операцию с остатком. И так до тех пор, пока не получался ноль (хотя у римлян обозначения для числа ноль не было). Ещё римляне придумали правило сокращения записи, которое заключа- лось в том, что если меньшую цифру расположить перед большей, то она бу- дет вычитаться из большей, а не складываться с ней. Это позволило записы- вать, например, число 9 не как VIIII, а как IX, а число 99 – не как LXXXXVIIII, а как IC.  Как вы думаете, сколько подобных ситуаций существует? Теперь давайте попробуем перевести число 149 из десятичной системы счисления в римскую. Найдём ближайшее слева к числу 149 число, которое можно записать одной римской цифрой. Этим числом является 100. Значит, первая цифра нашего римского числа – C. Вычтем из 149 число 100, получим 49. Теперь переведём в римскую систе- му число 49. Принцип тот же. Найдём ближайшее слева число, которое можно записать одной римской цифрой. Это 10. Значит, вторая цифра будет X. Вычтем 10, получим 39. Следующая цифра – X, останется 29, опять цифра Х, в остатке 19, опять Х, в остатке 9. Но для 9 мы уже получили раньше римскую запись – IX. Итак, ответ: 149 = СXXXXIX. Но в нашем алгоритме есть место, где можно было применить правило со- кращения записи. Где же оно? В числе 49. Его можно представить как 50 – 1 и записать как IL. Поэтому другая, короткая запись нашего числа будет вы- глядеть так: CIL. Перевод из римской системы счисления в десятичную совсем прост. Не- обходимо воспользоваться таблицей соответствия римских цифр десятич- ным числам, не забыть о правиле сокращения записи и просуммировать все числа. Переведём число MCMXCIX из римской системы счисления в десятичную. Читаем число слева направо. Первая цифра M. Следующая за ней – С: меньше, чем М. Значит, первое слагаемое – это 1000. Следующая цифра – С. Но за ней следует М. Применяя правило сокраще- ния, получаем новое слагаемое: 1000 – 100 = 900. М мы уже использовали, поэтому дальше его не рассматриваем. Настала очередь X – это 10, но за ней идёт С. Опять работает правило со- кращения, и мы получим 100 – 10 = 90. Читаем символ I: это единица. За ней идёт Х. Получаем 9. Складываем полученные значения: 1000 + 900 + 90 + 9 = 1999. И, конечно, отметим, что 1999 можно было записать как MIM для большей краткости.
  • 16. 16 Модуль 1. Алгоритмизация и программирование ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ Число – это количественная мера, необходимая человеку для счёта и других измерений. Цифра – это символ, с помощью которого записыва- ются числа. Система счисления – это способ записи чисел с помощью алфавита цифр. Системы счисления бывают позиционными и непозиционными. В систе- мах первого типа каждая цифра имеет вес в зависимости от её место- расположения в числе, а в системах второго типа такого условия нет. К позиционным системам относятся десятичная, двоичная, двенадцате- ричная и многие другие. Самые известные непозиционные системы счисления – единичная и римская. ПРИМЕНЕНИЕ ЗНАНИЙ 1. Объясните, чем отличаются понятия числа и цифры. 2. Что такое система счисления? На какие группы делятся системы счис- ления? 3. Какова размерность алфавита в двенадцатеричной системе счисле- ния? 4. Запишите в развёрнутой форме числа 234, 512, 135762. 5. Какой вес привносит цифра 8 в числа: 128, 182, 821? 6. Переведите из римской системы счисления в десятичную числа: IXCLX, IXIC, CLXVI. 7. Переведите из десятичной системы счисления в римскую числа: 512, 144, 44, 1328. Попробуйте найти несколько форм записи этих чисел.
  • 17. 17§ 2. Двоичная система счисления, или Как хранятся данные в компьютере § 2. Двоичная система счисления, или Как хранятся данные в компьютере ПОСТАНОВКА ПРОБЛЕМЫ УРОКА Вася читал книгу по истории вычислительной техники. В ней говори- лось, что компьютер представляет собой сложную систему из множе- ства приборов сродни электрической лампочке. Каждый прибор может или быть включённым, или быть выключенным. А самое странное заключалось в том, что с помощью таких приборов компьютер может хранить числа и другую информацию!  Что удивило Васю? Сформулируйте основной вопрос урока. Сравните свою формулировку с авторской (с. 191 учебника). НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ Вспомните, что вы узнали о системах счисления. (§ 1) РЕШЕНИЕ ПРОБЛЕМЫ ВСЕГО ЛИШЬ ДВА СОСТОЯНИЯ Электронная вычислительная техника конструируется на устройствах, которые имеют только лишь два устойчивых состояния: включено/выключе- но (истина/ложь). Такими устройствами сначала были электронные лампы, затем – пришедшие им на смену транзисторы, а после – интегральные схемы. Для хранения данных с помощью подобных устройств лучше всего подойдёт такая система счисления, алфавит которой содержит тоже только два символа. Тогда каждому символу будет соответствовать своё состояние. И такая система счисления есть – она называется двоичной. Один разряд в двоичной системе имеет собственное название – бит. Сло- во «бит» происходит от английского сокращения bit (binary digit) и означа- ет «двоичная цифра». С помощью двоичных цифр (в цифровом виде) в ком- пьютере представляются любые данные: числовые, текстовые, графические, звуковые. Посмотрите, как выглядят двоичные числа: 110001101012 , 110012 , –11012 . Мы видим, что для записи двоичных чисел применяются только цифры 0 и 1. Первое из записанных выше двоичных чисел соответствует десятичному 1589. Нельзя не обратить внимание на то, что в двоичной системе запись числа становится гораздо длиннее, чем в десятичной (4 разряда против 11). В чём же тогда преимущество двоичной системы? В простоте проведения операций.
  • 18. 18 Модуль 1. Алгоритмизация и программирование СЛОЖЕНИЕ И УМНОЖЕНИЕ В ДВОИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ Для того чтобы уметь складывать и умножать числа, необходимо задать правила выполнения этих операций. Вы, безусловно, учили таблицы сложе- ния и умножения в десятичной системе. Они даже размещены на обратных сторонах школьных тетрадей. Освежите в памяти эти таблицы. Теперь мы предлагаем вам посмотреть по очереди на таблицы сложения и умножения в двоичной системе счисления (рис. 1.2). + 0 1 * 0 0 0 0 1 0 0 0 1 1 10 1 0 1 Рис. 1.2 Поскольку в алфавите двоичной системы счисления всего две цифры, та- блицы имеют по три строки и три столбца (одна строка и один столбец – это заголовки), а количество вариантов каждой операции равно четырём. Сло- жение и умножение – это бинарные операции. Таблицы сложения и умножения в десятичной системе счисления имеют по 11 строк и столбцов. Проверьте это. Рассмотрим четыре варианта операции сложения: 1) 0 + 0 = 0 2) 0 + 1 = 1 3) 1 + 0 = 1 4) 1 + 1 = 1 Поясним четвёртый вариант. Складывая 1 и 1, мы должны перенести еди- ницу в следующий разряд, поскольку цифры 2 в двоичной системе счисления нет. Аналогичная ситуация возникает, когда мы складываем, например, 9 и 1 в десятичной системе. Мы превышаем максимальное значение разряда единиц и вынуждены добавить единицу в разряд десятков. Поэтому 9 + 1 = = 10, то есть 0 в разряде единиц и 1 в разряде десятков. Сложим в двоичной системе числа 101 и 111. Будем складывать «в стол- бик» (по аналогии с тем, как мы это делаем в десятичной системе), в соот- ветствии с таблицей сложения в двоичной системе: + 1 0 1 1 1 1 1 1 0 0 1. Сложим 1 и 1 (значения в крайних правых разрядах). По таблице сложе- ния результат этой операции – 10. Поэтому запишем в нулевой разряд результата цифру 0, а единицу перенесём в следующий разряд.
  • 19. 19§ 2. Двоичная система счисления, или Как хранятся данные в компьютере 2. Теперь сложим 0 и 1, получим 1. Но нельзя забывать про перенос (1). Добавим и его, получим снова 10, 0 запишем в первый разряд резуль- тата, а 1 перенесём далее. 3. Складываем 1 и 1, получаем 10, добавляем 1 из переноса. Получаем 11. Единицу пишем во второй разряд результата и переносим 1 в старший разряд. 4. Последняя единица просто пишется в третий разряд результата. Итак, 1012 + 1112 = 11002 .  Сколько битов занимает полученный результат? Варианты операции умножения: 1) 0 • 0 = 0 2) 0 • 1 = 0 3) 1 • 0 = 0 4) 1 • 1 = 1 Давайте умножим «столбиком» те же числа, что мы складывали ранее: * 1 1 1 1 0 1 + 1 1 1 1 1 1 1 0 0 0 1 1 Посмотрите, насколько умножение в двоичной системе проще, чем в де- сятичной. Мы просматриваем число 101 справа налево. Первая цифра – 1, поэтому просто переписываем первый сомножитель: 111. Затем мы встре- чаем 0. Ничего не записываем. Идём дальше, снова 1 – переписываем со- множитель 111, со сдвигом влево на два разряда (поскольку ноль пропущен). После этого складываем поразрядно получившиеся числа. Мы видим, что умножение на 1 первого сомножителя означает просто его копирование с соответствующим сдвигом по разрядам, без вычислений, а умножение на 0 вообще пропускается. Результат: 1112 • 1012 = 1000112 . ТАБЛИЦА СООТВЕТСТВИЯ ДВОИЧНЫХ И ДЕСЯТИЧНЫХ ЧИСЕЛ Вы научились складывать двоичные числа. Настало время составить та- блицу соответствия двоичных и десятичных чисел. Начнём с нуля и будем прибавлять на каждом шаге по единице в одной и другой системе счисления, а результаты записывать в таблицу. В итоге таблица примет следующий вид (рис. 1.3).
  • 20. 20 Модуль 1. Алгоритмизация и программирование Десятичная с. с. Двоичная с. c. 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 Рис. 1.3 Мы специально рассмотрели числа от 0 до 15, чтобы показать, как запол- няются четыре разряда двоичного числа. С помощью этой таблицы можно быстро переводить числа из диапазона [0..15] из двоичной системы счисле- ния в десятичную и обратно. ПЕРЕВОД ЧИСЕЛ ИЗ ДВОИЧНОЙ СИСТЕМЫ СЧИСЛЕНИЯ В ДЕСЯТИЧНУЮ А что же делать, если необходимо перевести в десятичную систему число, большее 11112 ? Конечно, можно продолжать заполнение таблицы. Но это же неудобно! Нужно найти более разумный и быстрый способ перевода. И такой способ есть! Давайте вспомним, что такое развёрнутая форма записи числа и приме- ним её к двоичной системе счисления. Правило перевода: 1. Пронумеровать разряды числа справа налево, начиная с нуля. 2. Представить число в виде суммы произведений цифр числа на веса со- ответствующих разрядов – получить развёрнутую форму записи двоич- ного числа. (Надо только помнить, что в двоичной системе счисления вес разряда определяется степенью числа 2 – основания системы счисле- ния, по аналогии с тем, что в десятичной системе это степень числа 10.)
  • 21. 21§ 2. Двоичная система счисления, или Как хранятся данные в компьютере 3. Вычислить значение полученного выражения в десятичной системе счисления. Результат – число, записанное в десятичной системе счис- ления. Переведём из двоичной системы счисления в десятичную число 1000112 . (Напомним, что мы его получили в результате умножения чисел 1112 и 1012 .) Итак, расставим номера разрядов над цифрами числа: 5 4 3 2 1 0 1 0 0 0 1 1 Запишем развёрнутую форму числа и вычислим его значение в десятич- ной системе: 1000112 = 1•25 + 0•24 + 0•23 + 0•22 + 1•21 + 1•20 = 32 + 2 + 1 = 3510 . Проверим правильность нашего перевода следующим образом. Число 1000112 мы получили в результате умножения чисел 1112 и 1012 . Переве- дём их в десятичную систему счисления по нашей таблице соответствия. По- лучим 7 и 5. 7•5 = 35. Значит, наш перевод правильный. ПЕРЕВОД ЧИСЕЛ ИЗ ДЕСЯТИЧНОЙ СИСТЕМЫ СЧИСЛЕНИЯ В ДВОИЧНУЮ Естественно, существует и обратный перевод чисел: из десятичной системы счисления в двоичную. Он немного сложнее, поэтому будьте внимательнее. Правило перевода: 1. Разделить число на 2 нацело. 2. Частное снова разделить на два. 3. Продолжать деление (пункт 2) до тех пор, пока не получится частное, равное 0. 4. Записать остатки от деления в обратном порядке. Это и будет ответ. Переведём в двоичную систему счисления число 13: 1 3 2 1 2 6 2 1 6 3 2 0 2 1 2 1 0 0 1 Результат: 11012
  • 22. 22 Модуль 1. Алгоритмизация и программирование Проверим его, переведя 11012 в десятичную систему: 3 2 1 0 1 1 0 1 11012 = 1•23 + 1•22 + 0•21 + 1•20 = 8 + 4 + 1 = 1310 . ЕДИНИЦЫ ИЗМЕРЕНИЯ ИНФОРМАЦИИ Бит (двоичный разряд) – одно из основополагающих понятий в информа- тике, поскольку в этих единицах измеряют информацию. Но мы уже неодно- кратно видели, что в двоичной системе счисления запись числа занимает очень много места. Для измерений это неудобно. Поэтому на практике поль- зуются производными от бита величинами. 8 битов образуют 1 байт. В байтах измеряется размер, который перемен- ная занимает в памяти. Например, переменная типа integer занимает в памяти компьютера 4 байта, то есть 32 бита. 1024 байта образуют 1 килобайт. Обратите внимание, что приставка «кило» в килобайте и в привычных нам единицах измерения, например веса и длины (килограмм, километр и пр.), обо- значает разные коэффициенты. Их нельзя пу- тать. Килограмм – это 103 = 1000 граммов, а килобайт – это 210 = 1024 байта. 1024 килобайта составляют 1 мегабайт. Сколько байтов в мегабайте? 1 мегабайт = 1024 килобайта = 1024•1024 = 220 байтов. СКОЛЬКО ЧИСЕЛ МОЖНО ХРАНИТЬ В ОДНОМ БАЙТЕ? В завершение давайте зададимся вопросом: какой диапазон целых чисел можно записать в 1 байт? 1 байт – это 8 битов. Представим его таблицей из 8 ячеек. Минимальное целое число, которое можно записать в 8 ячеек, – это 000000002 , а максимальное – это 111111112 : 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Переведём максимальное число в десятичную систему: 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 1 111111112 = 1•27 + 1•26 + 1•25 + 1•24 + 1•23 + 1•22 + 1•21 + 1•20 = = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 25510 = 28 – 1. Значит, максимальное целое число, которое мы можем записать в 1 байт, – это 255. Следовательно, диапазон хранимых чисел выглядит так: [0..255]. Размер этого диапазона – 256 (28 ) чисел.
  • 23. 23§ 2. Двоичная система счисления, или Как хранятся данные в компьютере Заметьте, что мы рассматривали только положительные числа. Если зна- чение старшего (седьмого) разряда будет отвечать за знак числа (0 – по- ложительное число, 1 — отрицательное), то диапазон чисел, которые можно записать в 1 байт, будет выглядеть иначе: [–128..+127]. Но количество хра- нимых чисел всё равно будет равно 256. ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ В компьютере числа и другие данные хранятся в двоичном представле- нии (в двоичной системе счисления). Алфавит двоичной системы счисления состоит из цифр {0, 1}. Бит – это один двоичный разряд. Для перевода числа из двоичной системы счисления в десятичную необ- ходимо представить двоичное число в виде суммы произведений цифр числа на веса соответствующих разрядов. Надо помнить, что в двоичной системе счисления вес разряда определяется степенью числа 2, по ана- логии с тем, что в десятичной системе это степень числа 10. Для перевода числа из десятичной системы счисления в двоичную необ- ходимо делить число на 2 нацело, пока целая часть не станет равна нулю, затем остатки от деления записать в обратном порядке. Информация измеряется в битах и производных от него величинах, поскольку в двоичной системе счисления запись числа очень длинная. 1 байт = 8 битов, 1 килобайт = 1024 байта. В 1 байте можно хранить 256 целых чисел. ПРИМЕНЕНИЕ ЗНАНИЙ 1. Какой алфавит у двоичной системы счисления? Почему она так удачно подходит для использования в цифровых устройствах? 2. Что такое бит, байт и килобайт? 3. В какой системе счисления запись числа длиннее: в двоичной или деся- тичной? 4. Сложите в двоичной системе числа: 10012 и 1012 , 112 и 10112 . Пере- ведите полученный результат в десятичную систему счисления и проверьте свои вычисления. 5. Умножьте в двоичной системе числа: 11102 и 1012 . Переведите полу- ченный результат в десятичную систему счисления и проверьте свои вычис- ления. 6. Переведите из десятичной системы счисления в двоичную числа: 18, 41, 33. 7. Каков диапазон чисел, который можно хранить в переменной типа integer (она занимает в памяти 4 байта)?
  • 24. 24 Модуль 1. Алгоритмизация и программирование § 3. Символьный тип данных ПОСТАНОВКА ПРОБЛЕМЫ УРОКА Мы обсуждали с вами, что цифра – это символ, с помощью которого записываются числа. Но символы служат для записи не только чисел, но также слов и текста. Получается, что символ – это важнейший эле- мент человеческой культуры. А что же компьютер? Умеет ли он рабо- тать с символами? Какие средства для этого предоставляются програм- мисту?  Сформулируйте основной вопрос урока, который объединит все приве- дённые здесь вопросы. Сравните свою формулировку с авторской (с. 191 учебника). НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ Вспомните структуру программы на языке Паскаль и основные конструк- ции языка. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и программирование».) Вспомните свой опыт работы в интегрированной среде разработки про- грамм. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и про- граммирование».) РЕШЕНИЕ ПРОБЛЕМЫ ЧИСЛА И СИМВОЛЫ До текущего момента (в 7-м и 8-м классах) мы с вами, программируя, имели дело только с числами и логическими значениями. Программы, кото- рые мы создавали, могли обрабатывать ввод данных с клавиатуры, анали- зировать и преобразовывать их, организовывать вывод чисел и логических значений на экран. Кроме того, мы умеем просто выводить информационные строки, такие как: «Введите число», «Ввод заканчивается нулём» и т. д. Настало время на- учиться работать с символьной информацией. Мы постоянно пользуемся символами, когда пишем программы. Собствен- но, сам текст программы из них и состоит. Кроме того, из символов состоит алфавит любого языка. Но языков много, а символов, следовательно, ещё больше. Как же символы хранятся в компьютере и как нам, программистам, с ними работать? Символы в компьютере хранятся и обрабатываются как целые числа. Человек придумал специальные таблицы, которые назвал кодовыми. Эти таблицы задают соответствие между символами и числами. Таким образом, у каждого символа есть свой код.
  • 25. 25§ 3. Символьный тип данных  Обратное утверждение «Любому числу может соответствовать не- который символ» верно не всегда. Как вы думаете, почему? Кодовых таблиц существует множество, и у каждой есть своё имя. Снача- ла для каждого языка создавалась отдельная таблица. Этот процесс никто не контролировал, поэтому постоянно возникали нестыковки. Дело доходило даже до того, что одному языку соответствовало несколько вариантов таких таблиц. Например, для русского языка существуют таблицы Windows1251, KOI8-R и т. д. Наследие тех времён мы наблюдаем сегодня, когда пытаем- ся открыть web-страницу в браузере, а она открывается в нечитаемом виде. Приходится менять кодировку. В результате родилась идея спроектировать такую кодовую таблицу, ко- торая будет хранить все существующие символы. Это позволяет избежать путаницы с многими таблицами. И такая таблица была создана в 1991 году. Она получила название Unicode. Для хранения одного символа было выделе- но 2 байта (16 битов). Старые кодировки использовали для хранения симво- ла 1 байт.  Какое количество целых чисел можно хранить в двух байтах? Со временем стандарт Unicode модифицировался, изменялся и усложнял- ся. Однобайтовые кодировки применяются и по сей день, однако, согласно статистике компании Google, на начало 2010 года доля web-сайтов, исполь- зующих кодировку семейства Unicode, составила порядка 50%. СИМВОЛЬНЫЙ ТИП В ПАСКАЛЕ Для работы с символами в языке Паскаль определён специальный тип char. Это название происходит от английского слова character – символ. В различных компиляторах языка Паскаль для хранения переменной типа char выделяется или 1, или 2 байта. В среде ABCPascal.NET, в которой мы с вами работаем, для хранения типа char выделено 2 байта. Для создания переменной символьного типа в разделе описания var не- обходимо указать: var c: char; Такой текст говорит о том, что мы создали переменную типа char. К символьным переменным применимы операции присваивания вида с := 'A';. Символьная константа при этом указывается в апострофах. Кроме того, в языке применяются выражения специального вида #число, где число должно находиться в диапазоне от 0 до 65 535. Данное выра- жение возвращает Unicode-символ, код которого равен указанному числу.
  • 26. 26 Модуль 1. Алгоритмизация и программирование Примеры: c := #21056; с := #65; Символы можно сравнивать. При этом боґльшим будет тот символ, код ко- торого больше. Например: #21056 > #65. Ввод и вывод символьных переменных оформляется аналогично вводу и выводу чисел с помощью процедур readln и writeln: program c1; var c: char; begin write('Введите символ: '); readln(c); writeln('Вы ввели: ', c); end. Для преобразования символов в их коды в однобайтовой кодировке Windows1251 и обратно используются встроенные функции: Chr (n) – возвращает символ с кодом n и Ord(с) – возвращает код символа c. Для преобразования символов в их коды в кодировке Unicode и обратно используются функции: ChrUnicode(w) – возвращает символ с кодом w в кодировке Unicode и OrdUnicode(с) – возвращает код символа c в коди- ровке Unicode. Рассмотрим примеры. Пример 1 Требуется написать процедуру, выводящую все строчные латинские буквы. program c1; procedure print; var ch: char; begin for ch := 'a' to 'z' do write(ch); writeln; end; begin print; end. Этот пример показывает, что, поскольку символьные переменные можно сравнивать, то становится возможным их перебирать в цикле.
  • 27. 27§ 3. Символьный тип данных Пример 2 Символы вводятся с клавиатуры до нажатия клавиши Enter. Необходимо подсчитать, сколько введено цифр. program c2; var ch: char; s: integer; begin s := 0; writeln('Вводите цифры до нажатия клавиши Enter'); read(ch); while (ch <> chrUnicode(13)) do begin if (ch <= '9') and (ch >= #48) then s := s + 1; read(ch); end; writeln('Введено цифр: ', s); end. В этой программе приведены варианты работы с символьными перемен- ными. В начале программы мы обнуляем переменную s, в которой будем на- капливать искомое количество цифр. Затем вводим символ ch. Условие про- должения цикла в переводе на русский язык звучит как «пока ch не равен символу с кодом 13». А код 13 имеет символ, соответствующий клавише Enter. В теле цикла, при условии что символ ch больше или равен символу с ко- дом 48 (это ноль) и меньше или равен символу '9', мы увеличиваем на еди- ницу значение s. И снова читаем с клавиатуры ch. В результате мы выводим подсчитанное значение s. Пример 3 Требуется написать программу с процедурой print, которая выводит коды всех цифр. program c3; procedure print; var ch: char; begin writeln('Символ | Код '); writeln('-------------'); for ch := '0' to '9' do writeln(ch:4, ' |', ord(ch):4); end;
  • 28. 28 Модуль 1. Алгоритмизация и программирование begin print; end. В этом примере показано, что символьные переменные можно формати- ровать при выводе, так же как и целочисленные. ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ В компьютере символы хранятся и обрабатываются как целые числа. Каждому символу ставится в соответствие целое число – его код, по- этому существуют кодовые таблицы. Существует множество кодовых таблиц, в которых код символа занима- ет один байт. Unicode – это стандарт, который описывает единую кодовую таблицу для всех языков. Для работы с символьной информацией в языке Паскаль определён тип char. Конструкция вида #число означает «символ с кодом «число». Символы можно присваивать и сравнивать. В языке Паскаль определены функции по работе с символами и их ко- дами: ord, chr, ordUnicode, chrUnicode ПРИМЕНЕНИЕ ЗНАНИЙ 1. Объясните, что такое кодировка. Что такое символ с точки зрения про- граммиста? 2. Какие кодировки вам известны? 3. Сколько символов может содержать кодировка, в которой под хранение одного символа выделен один байт? 4. Сколько символов может хранить таблица Unicode? 5. Напишите программу, содержащую процедуру print, которая выводит таблицу кодов строчных английских букв. Отформатируйте вывод красиво. 6. Напишите программу, содержащую процедуру print, которая выводит последовательность: AABABCABCD … ABC … XYZ. 7*. Напишите функцию function char2digit(ch: char): integer, которая переводит символ-цифру в число. Подсказка: восполь- зуйтесь кодами цифр и отдельно нуля.
  • 29. 29§ 4. Строки символов § 4. Строки символов ПОСТАНОВКА ПРОБЛЕМЫ УРОКА Откройте любую книгу или текстовый документ на компьютере. Вы увидите части, главы, абзацы, предложения, слова. Но из чего, в свою очередь, состоят все эти элементы? Из символов: букв, цифр, пробелов, других знаков. Вы можете выделить любой фрагмент – цепочку, после- довательность таких символов. Вы уже научились работать на компью- тере с символами. А как работать не с одним символом, а с целой после- довательностью – строкой символов?  Как вы думаете, что вам предстоит узнать в этом параграфе? Сформу- лируйте основной вопрос урока. Сравните свой вариант с авторским (с. 191 учебника). НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ Вспомните структуру программы на языке Паскаль и основные конструк- ции языка. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и программирование».) Вспомните свой опыт работы в интегрированной среде разработки про- грамм. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и про- граммирование».) Что такое символьный тип данных? (§ 3) РЕШЕНИЕ ПРОБЛЕМЫ ЧТО ТАКОЕ СТРОКА? Строка – это несколько символов, расположенных друг за другом и иден- тифицируемых как единое целое. Например, мама мыла раму – это строка и abcd125 – тоже строка. А как быть с такой записью: 12345? Что это: число или строка? В данном случае последовательность 12345 можно интерпретировать и как число, и как строку, в зависимости от контекста, в котором эта после- довательность употребляется. Для того чтобы однозначно отличать строку от числа, обычно её заключают в апострофы. Поскольку строка – это последовательность символов, то наилучшим об- разом она представляется массивом, элементами которого являются сим- волы. В связи с этим на языке Паскаль строку можно описать следующим образом: str: array [1..100] of char;
  • 30. 30 Модуль 1. Алгоритмизация и программирование Приведённый фрагмент кода описывает строку, состоящую из 100 сим- волов. Однако, поскольку обрабатывать строки приходится очень часто, в любой язык программирования включён специальный тип данных, предназначен- ный для работы с ними. В языке Паскаль таким типом является тип string. ТИП STRING Тип string позволяет описывать строки. Для того чтобы описать строку, в разделе var необходимо написать следующий текст: var str: string; В старых компиляторах размер строки был ограничен 256 символами, но в системе PascalABC.NET строки могут иметь произвольную длину. Так, строка str из примера «бесконечна». Однако программист может при необходимо- сти ограничивать размер описываемых им строк. Для этого после ключево- го слова string необходимо в квадратных скобках указать максимальный размер строки: var str: string[100]; Максимальный размер означает то, что в переменной str может хранить- ся любая строка, длина которой не превышает 100 символов. ОСНОВНЫЕ ОПЕРАЦИИ СО СТРОКАМИ Для ввода и вывода строк необходимо пользоваться хорошо нам извест- ными процедурами readln и writeln. Следующий пример демонстрирует это. Код программы Вывод program s1; var str: string; begin write('Введите ваше имя: '); readln(str); writeln('Приветствуем Вас, ', str, '!'); end. Введите ваше имя: Вова Приветствуем Вас, Вова! Теперь мы понимаем, что когда мы с помощью процедуры writeln выво- дим что-то в «апострофах», это не что иное, как строка.
  • 31. 31§ 4. Строки символов Поскольку строка – это видоизменённый массив, то мы должны иметь возможность получать доступ к конкретному символу (элементу) этой стро- ки. Такая возможность есть. Чтобы получить символ строки с номером i (i-й элемент), мы должны написать такую конструкцию: str[i]. К какому типу будет относиться элемент строки? Конечно, он описывается типом char. Рассмотрим пример. Код программы Вывод program s2; var str: string; ch: char; begin write('Введите ваше имя: '); readln(str); ch := str[1]; writeln('А Вы знаете, ', str, ', что в Вашем имени первая буква - ', ch, '?'); end. Введите ваше имя: Витя А Вы знаете, Витя, что в Вашем имени первая буква – В? Элементы строки можно не только читать, но и записывать. Посмотрите, что происходит со строкой, если изменить её элементы. Код программы Вывод program s3; var name: string; begin name := 'Маша'; writeln('Было имя - ', name); name[1] := 'Д'; writeln('Стало имя - ', name); end. Было имя – Маша Стало имя – Даша Единственное, чего надо избегать при работе с элементами строки, – это выход за её границы! Это означает, что если в строке str находится значе- ние 'квадрат' (7 элементов), то обращение к элементу str[10] вызовет ошибку. По этой же причине нельзя обращаться к элементам строки и с отрица- тельными индексами. Строки можно присваивать, при этом строки-константы заключаются в апострофы.
  • 32. 32 Модуль 1. Алгоритмизация и программирование Код программы Вывод program s4; var name: string; begin name := 'Вова'; writeln('Приветствуем Вас, ', name, '!'); end. Приветствуем Вас, Вова! К строкам применимы операции отношения, а именно: = (проверка на ра- венство), <> (проверка на неравенство), < (меньше), > (больше), <= (меньше или равно), >= (больше или равно).  Результат какого типа возвращает каждая из приведённых выше операций? Сравнение строк производится слева направо посимвольно до первого несовпадающего символа или до конца какой-либо из строк. Большей счи- тается та строка, в которой первый несовпадающий символ имеет больший код в кодовой таблице. Если строки имеют разную длину, но символы корот- кой строки совпадают с начальными символами длинной строки, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают. Говоря другими словами, если строки разместить в алфавитном порядке, то меньшей будет та, которая раньше встретится. Проведите эксперимент: 1) возьмите любой словарь русского языка, откройте в нём любую стра- ницу и выберите два произвольных слова; 2) то слово, которое находится ближе к началу словаря, – меньшее. Приведём примеры сравнения строк: 1) 'abc' = 'abc'; 2) 'abc' > 'Abc' (поскольку код символа 'a' больше кода символа 'A'; проверьте это); 3) 'строка' <> 'строку'; 4) 'минута' <= 'час'. Складывать строки в том смысле, в котором мы складываем числа, конеч- но, нельзя. Оператор «+» применяется к строкам, но обозначает иную опе- рацию, которая на научном языке называется конкатенацией. Если к двум строкам применить операцию «конкатенация», то вторая «приклеится» к первой.
  • 33. 33§ 4. Строки символов Код программы Вывод program s5; var fio, name, surname, familyname: string; begin write('Введите Ваше имя: '); readln(Name); write('Введите Ваше отчество: '); readln(Surname); write('Введите Вашу фамилию: '); readln(FamilyName); fio := FamilyName + ' ' + Name + ‘ ‘ + Surname; writeln('Приветствуем Вас, ', fio, '!'); end. Введите Ваше имя: Иван Введите Ваше отчество: Петрович Введите Вашу фамилию: Сидоров Приветствуем Вас, Сидоров Иван Петрович! Давайте проследим, как образуется значение в переменной fio. Сначала к значению переменной FamilyName ('Сидоров') добавляется пробел и полу- чается 'Сидоров '. Теперь к этому значению «приклеивается» содержание переменной Name ('Иван'), получается 'Сидоров Иван'. Снова «прицепля- ем» пробел, получаем 'Сидоров Иван '. И, наконец, дописываем значение переменной SurName ('Петрович'). Итог – 'Сидоров Иван Петрович' – за- носится в переменную fio и выводится. ДЛИНА СТРОКИ Мы уже неоднократно говорили о таком понятии, как «длина строки», об- ращали ваше внимание на то, что нельзя обращаться к элементу, номер ко- торого больше, чем длина строки. Но как определить длину строки? В случае, когда мы заносим в переменную строку-константу, мы уже зна- ем эту длину. Например, после выполнения оператора: name := 'Маша' длина строки name равна 4 символа. А какова длина строки fio из нашего последнего примера? Мы же её формируем в процессе работы программы, причём из данных, которые вводит пользователь. Существует функция, которая сможет решить наши проблемы. Она назы- вается length (в переводе с английского – длина). В неё поступает стро- ка, а результат, который функция возвращает, есть длина строки. Функция length описана следующим образом: function length(s: string): integer; Давайте напишем программу, которая продемонстрирует работу функции length.
  • 34. 34 Модуль 1. Алгоритмизация и программирование Код программы Вывод program s2; var name: string; begin write('Введите Ваше имя: '); readln(name); writeln('Длина Вашего имени - ‘, length(name), ' символов'); end. Введите Ваше имя: Агриппина Длина Вашего имени - 9 символов В этой программе мы вводим имя и заносим его в переменную name. Затем в процедуру writeln сначала поступает строка-константа 'Длина Вашего имени – ', затем целое число, которое возвращает функция length(name), и в заключение опять строка-константа ' символов'. В итоге получается тот вывод, который мы и наблюдаем. РЕШАЕМ ЗАДАЧУ С клавиатуры вводится строка. Требуется определить, сколько в ней цифр. Вывести это значение. Мы уже решали эту задачу, когда изучали символьный тип данных. Теперь мы можем решить её более эффектно. program dcalc; var s: string; function calcdigits(str: string): integer; var i, col: integer; begin col := 0; for i := 1 to length(str) do if (str[i] >= '0') and (str[i] <= '9') then col := col + 1 calcdigits := col; end; begin write('Введите строку: '); readln(s); writeln('Во введённой Вами строке ', calcdigits(s), ' цифр'); end. Вся «изюминка» этой программы находится в функции calcdigits в выде- ленных строках. В переменной col мы будем вычислять количество цифр. Из-
  • 35. 35§ 4. Строки символов начально в эту переменную заносится значение 0. Затем с помощью цикла с параметром for мы перебираем все элементы строки от первого до по- следнего (значение параметра цикла равно номеру элемента строки). Если элемент строки (Str[i]) – это цифра, то мы увеличиваем значение пере- менной col, которую в результате и возвращаем. ОБОБЩЕНИЕ НОВЫХ ЗНАНИЙ Строка – это последовательность символов, которая идентифицирует- ся как единое целое. Строка формируется по принципу массива, поэтому имеется возможность получать доступ непосредственно к каждому эле- менту строки. Нельзя обращаться к элементу по номеру строки, который больше её длины. К строкам применимы операции отношения. Оператор «+» по отношению к строкам выполняет операцию конкатена- ции (слияния, «склеивания») двух или более строк. Длину строки возвращает встроенная функция length. ПРИМЕНЕНИЕ ЗНАНИЙ 1. • Расскажите, как вы понимаете, что такое строка. 2. • Верно ли утверждение: строка – это массив символов? 3. Что означает следующее описание? var s: string[25]; 4. Какие функции по работе со строками в языке Паскаль вам известны? 5. • Что будет выведено на экран в результате выполнения следующего фрагмента программы? var str: string; begin str := 'Трансформация'; str[14] := '.'; writeln(str); end. 6. С клавиатуры вводится слово длиной более 5 символов. Вывести на экран его третий символ и дважды – последний. 7. С клавиатуры вводятся два слова. Напишите функцию, отвечающую на вопрос: верно ли, что первое слово начинается на букву, на которую заканчи- вается второе?
  • 36. 36 Модуль 1. Алгоритмизация и программирование § 5. Эффективная работа со строками ПОСТАНОВКА ПРОБЛЕМЫ УРОКА У ребят возникли вопросы к учителю: «Мы же не первые, кто начи- нает решать задачи на строки! Неужели все профессиональные про- граммисты заново создают все необходимые им процедуры и функции для работы со строками? Такого не может быть».  Какую проблему увидели ребята? Сформулируйте основной вопрос уро- ка. Сравните свой вариант с авторским (с. 191 учебника). НЕОБХОДИМЫЕ БАЗОВЫЕ ЗНАНИЯ Вспомните структуру программы на языке Паскаль и основные конструк- ции языка. (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и программирование».) Вспомните свой опыт работы в интегрированной среде разработки про- грамм.) (Учебники для 7-го и 8-го классов, модули «Алгоритмизация и про- граммирование».) Что такое строки символов в Паскале? (§ 4) РЕШЕНИЕ ПРОБЛЕМЫ КАКИЕ ЗАДАЧИ РЕШАЮТСЯ С ПОМОЩЬЮ СТРОК? Строки – это настолько часто используемый в программировании объект, что для эффективной работы с ними разработчики создали большое количе- ство вспомогательных подпрограмм. Но перед их разбором давайте уточним, каковы самые популярные действия, производимые со строками. 1. Поиск подстроки в строке. В рамках этой задачи можно узнать, встре- чается ли (и сколько раз) искомая подстрока в большой строке? Такая задача очень распространена в областях лингвистического анализа данных, систем управления базами данных и т. д. 2. Вставка (удаление) подстроки в строку (из строки). В качестве примера можно привести задачу по вычислению значения сложного выражения: x = y ∙(5 + y 2 ); y = 3 – (1 + 8 16 ).    Вместо y в первую строку надо подставить его значение из второй.
  • 37. 37§ 5. Эффективная работа со строками 3. Получение подстроки из строки. 4. Преобразование строк в числа и обратно. 5. Преобразование строки с разделителями в массив отдельных строк. 6. Уничтожение повторов в строке и т. д. ПОДПРОГРАММЫ ПО РАБОТЕ СО СТРОКАМИ В ЯЗЫКЕ ПАСКАЛЬ Все реализации языка Паскаль имеют в своём составе функции и проце- дуры по работе со строками. Система PascalABC.NET не стала исключени- ем. Предлагаем вам рассмотреть средства, предоставляемые этой системой программирования. Предупреждаем, что все описываемые ниже подпрограммы работают в системе PascalABC.NET. Если вы решите программировать в другой среде, то необходимо внимательно прочитать её документацию, поскольку список используемых процедур и функций может заметно различаться. Подпрограмма и описание Пример использования function Pos(subs, s: string): integer; Возвращает номер элемента, с которого подстрока subs входит в строку s. Если subs в s не встречается, то возвращается 0 program s1; var s, s1: string; p: integer; begin readln(s); readln(s1); p := Pos(s1, s); if (p > 0) then writeln(s1 + ' входит в ' + s + ',начиная с ', p,' символа.') else writeln(s1 + ' не входит в ' + s); end. function Copy(s: string; index, count: integer): integer; Возвращает подстроку из строки s, начиная с номера index, подстрока при этом имеет длину count program s2; var data, year: string; p: integer; begin write('Введите дату в формате: ДД-ММ-ГГГГ: '); readln(data); year := Copy(data, 7, 4); writeln('Введенный вами год - ', year); end.
  • 38. 38 Модуль 1. Алгоритмизация и программирование Подпрограмма и описание Пример использования procedure Insert(source: string; var s: string; index: integer); Вставляет подстроку source в строку s с но- мера index program s3; var s, s1: string; begin s := 'мама раму'; s1 := 'мыла '; Insert(s1, s, 6); writeln(s); // Вывод: мама // мыла раму end. procedure Delete(var s: string; index count: integer); Удаляет из строки s count символов, начи- ная с номера index program s4; var s: string; begin s := 'мама дважды мыла раму'; Delete(s, 6, 7); writeln(s); end. // Вывод: мама мыла раму function TryStrToInt(s: string; var value: integer):boolean; Пробует преобразовать строку s в целое число value. При успешном преобразовании возвращает true, в противном случае – false program s5; var s: string; a: integer; begin write('Введите строку: '); readln(s); if TryStrToInt(s, a) then writeln('Перевели в число и получили: ', a) else writeln('Эту строку перевести в целое число нельзя'); end. function TryStrToFloat (s: string; varvalue: real): boolean; Пробует преобразовать строку s в веще- ственное число value. При успешном пре- образовании возвращает true, в противном случае – false program s6; var s: string; a: real; begin write('Введите строку: '); readln(s); if TryStrToFloat(s, a) then writeln('Перевели в число и получили: ', a) else writeln('Эту строку перевести в вещественное число нельзя'); end.