Оглавление | 3
|
Введение | 9
|
Глава 1. Понятия «алгоритм» и «программа» | 11
|
Глава 2. Основные операторы языков программирования | 17
|
2.1. Переменные величины. Ввод данных в программу. Оператор присваивания | 17
|
2.2. Варианты действий в программах. Условные операторы | 33
|
2.2.1. Два варианта действий | 33
|
2.2.2. Один, но не обязательный вариант действий | 40
|
2.3. Повторение действий в программе. Операторы цикла | 42
|
2.3.1. Оператор цикла с параметром | 42
|
2.3.2. Оператор цикла с предусловием | 51
|
2.3.3. Оператор цикла с постусловием | 59
|
Глава 3. Готовимся решать задачи | 64
|
3.1. Обмен значениями переменных | 64
|
3.2. Случайные числа в программах | 65
|
3.3. О сложных условиях и «флагах» | 67
|
3.4. Три и более вариантов действий в программе | 72
|
3.5. Счетчики и сумматоры | 82
|
3.6. Преобразование одного вида оператора цикла в другой | 86
|
3.7. Что может быть в теле цикла | 92
|
Глава 4. Типовые задачи обработки набора чисел. Часть 1 | 106
|
4.1. Суммирование всех чисел набора | 106
|
4.2. Суммирование чисел набора, которые обладают некоторыми свойствами (удовлетворяют некоторому условию) | 108
|
4.3. Подсчет количества чисел набора, которые обладают некоторыми свойствами | 109
|
4.4. Определение среднего арифметического тех чисел набора, которые обладают некоторыми свойствами | 110
|
4.5. Определение порядкового номера некоторого значения набора | 112
|
4.6. Определение максимального значения в наборе чисел | 115
|
4.7. Определение порядкового номера максимального значения в наборе чисел | 118
|
Глава 5. Программируем простейшие игры | 121
|
5.1. Игра «Кубик» | 121
|
5.2. Игра «Чет или нечет?» | 123
|
5.3. Игра «Отгадай число» | 126
|
5.4. Проверка знания таблицы умножения | 127
|
5.5. Игра «Карты» | 128
|
Глава 6. Типовые задачи обработки набора чисел. Часть 2 | 131
|
6.1. Определение порядкового номера некоторого числа в наборе | 131
|
6.2. Имеется или нет? | 134
|
6.2.1. Проверка факта наличия в заданном наборе некоторого значения | 134
|
6.2.2. Проверка факта наличия в заданном наборе чисел с заданными свойствами | 137
|
6.3. Определение максимального значения тех чисел набора, которые обладают некоторыми свойствами | 137
|
6.4. Определение количества максимальных значений набора | 141
|
6.5. Нахождение второго по величине максимального числа набора | 143
|
6.5.1. Поиск числа, которое стояло бы на предпоследнем месте, если бы числа набора были отсортированы по неубыванию | 143
|
6.5.2. Нахождение числа набора, больше которого только максимальный | 146
|
Глава 7. О массивах | 148
|
7.1. Чем хороши массивы | 148
|
7.2. Как заполнить массив | 149
|
7.3. Семь простых задач на обработку массива | 152
|
7.3.1. Суммирование всех элементов массива | 153
|
7.3.2. Суммирование элементов массива, которые обладают некоторыми свойствами (удовлетворяютнекоторому условию) | 153
|
7.3.3. Подсчет количества элементов массива, которые обладают некоторыми свойствами | 154
|
7.3.4. Определение среднего арифметического тех элементов массива, которые обладают некоторыми свойствами | 155
|
7.3.5. Вывод на экран элементов массива с заданными свойствами | 155
|
7.3.6. Вывод на экран индексов элементов массива с заданными свойствами | 156
|
7.3.7. Отбор элементов массива с заданными свойствами и запись их в другой массив | 156
|
7.4. Задачи на обработку пар элементов массива | 157
|
7.4.1. Обработка пар соседних элементов | 157
|
7.4.2. Обработка непересекающихся пар соседних элементов | 158
|
7.4.3. Обработка всех пар элементов массива | 159
|
Глава 8. Типовые задачи обработки массивов | 165
|
8.1. Поиск первого элемента массива, который обладает некоторыми свойствами (удовлетворяет некоторому условию) | 165
|
8.2. Проверка наличия в массиве элемента, который обладает некоторыми свойствами | 169
|
8.3. Нахождение максимального элемента массива | 172
|
8.4. Определение индекса максимального элемента массива | 173
|
8.5. Определение количества максимальных элементов массива | 175
|
8.6. Определение максимального значения среди тех элементов массива, которые обладают некоторыми свойствами | 176
|
8.7. Определение индекса максимального элемента среди элементов массива, которые обладают некоторыми свойствами | 179
|
8.8. Нахождение второго по величине максимального элемента массива | 179
|
8.8.1. Поиск элемента массива, который стоял бы на предпоследнем месте, если бы массив был отсортирован по неубыванию | 180
|
8.8.2. Нахождения элемента массива, больше которого только максимальный | 182
|
8.9. Нахождение второго минимума | 183
|
8.10. Изменение массивов | 183
|
8.10.1. Изменение элементов массива с заданными свойствами | 183
|
8.10.2. Обмен местами двух элемента массива с заданными номерами | 183
|
8.10.3. Перестановка всех элементов массива в обратном порядке | 184
|
8.10.4. Удаление из массива первого элемента со сдвигом всех расположенных справа от него элементов на одну позицию влево | 186
|
8.10.5. Циклический сдвиг элементов массива влево | 187
|
8.10.6. Сдвиг всех значений элементов на одну позицию вправо и запись нового значения в первый элемент нового массива | 188
|
8.10.7. Циклический сдвиг элементов массива вправо | 189
|
Глава 9. Использование двумерных массивов | 193
|
Глава 10. Работа со строками. Общие вопросы | 201
|
Глава 11. Типовые задачи обработки строк | 211
|
11.1. Обработка отдельных символов строк | 211
|
11.1.1. Определить, сколько раз в заданной строке встречается некоторый символ симв | 211
|
11.1.2. Определить позицию (номер) первого вхождения некоторого символа в заданную строку | 212
|
11.1.3. Определить, есть ли в заданной строке некоторый символ симв | 213
|
11.1.4. Определить, является ли символстроки с заданным номером цифрой | 215
|
11.2. Обработка подстрок | 216
|
11.2.1. Определить, сколько раз в заданной строке встречается некоторая подстрока | 216
|
11.2.2. Определить позицию (номер) первого вхождения некоторой подстроки в заданную строку | 217
|
11.2.3. Определить, есть ли в заданной строке некоторая подстрока | 218
|
11.2.4. Удалить из заданной строки все вхождения некоторой подстроки | 218
|
11.2.5. Заменить в заданной строке все вхождения некоторой подстроки на другую подстроку | 222
|
11.3. Выделение слов предложения | 223
|
11.3.1. Выделение первого слова | 223
|
11.3.2. Выделение второго слова | 224
|
11.3.3. Выделение всех слов | 226
|
Глава 12. Об использовании функций и процедур | 230
|
Приложение 1. Другие вопросы, связанные с программированием | 244
|
П1.1. Рекуррентные соотношения | 244
|
П1.2. Проверка свойств значений | 250
|
П1.3. Нахождение единственного корня уравнения на заданном отрезке | 257
|
П1.4. Другие примеры использования остатка и целочисленного частного | 260
|
П1.5. Сортировка массива | 266
|
П1.6. Метод бинарного поиска | 270
|
П1.7. Рекурсия. Рекурсивные функции и процедуры | 274
|
П1.8. Обработка подпоследовательностей | 282
|
П1.8.1. Длина (количество элементов) подмассива | 283
|
П1.8.2. Нахождение максимальной длины подмассива | 285
|
П1.8.3. Нахождение максимальной суммы подряд идущих элементов массива, обладающих заданными свойствами | 291
|
П1.8.4. Определение количества подмассивов | 295
|
Приложение 2. Шифруем текст, разработав программу | 297
|
П2.1. Шифр «атбаш» | 297
|
П2.2. Шифр Цезаря | 299
|
П2.3. Шифр Виженера | 301
|
Приложение 3. Игра Баше | 305
|
Список литературы | 308
|
Книга, которую вы читаете, предназначена для тех, кто хочет научиться программировать. В ней системно, подробно и доступно излагаются вопросы, с которыми сталкивается человек, начинающий осваивать этот непростой, но очень захватывающий и интересный процесс — программирование. Эти вопросы — общие для всех языков программирования, так что вы можете пользоваться книгой независимо от того, какой язык изучаете.
Сначала в главе 1 рассказывается о важных понятиях программирования — «алгоритм», «программа», «транслятор» и др., после чего в главе 2 описываются особенности основных операторов языков программирования (в том числе наиболее популярных среди школьников языков Паскаль и Python).
В главе 3 рассмотрены вопросы, которые понадобятся при решении типовых задач программирования, а главе 4 описываются методы решения ряда простых таких задач.
Ознакомившись с содержанием глав 3 и 4, читатель сможет разработать ряд простейших игр. Методика их разработки описана в главе 5.
После этого в главах 6–11 рассматриваются другие типовые задачи программирования (в том числе связанные с обработкой массивов и строк), а в главе 12 — рассказывается о методах совершенствования программ на основе использования функций и процедур.
В приложении 1 освещен еще ряд вопросов, знать которые также полезно начинающему программисту, а в завершающих приложениях 2 и 3 описаны методики разработки программ шифрования текста несколькими простейшими методами и программы, моделирующей очень интересную игру.
В книге предлагаются контрольные вопросы по темам и большое число заданий на самостоятельную разработку компьютерных программ. Обращается внимание на типовые ошибки, которые часто допускают начинающие программисты, и дается ряд полезных советов, связанных с разработкой программ.
Методика решения типовых задач программирования описывается с использованием так называемого «школьного алгоритмического языка» (система программирования КуМир [4]). Русский синтаксис этого языка и большое число комментариев делает методику и приводимые программы максимально понятными, и вы легко сможете разработать аналогичные программы на языке программирования, который изучаете. Автор рекомендует это делать после знакомства с тем или иным разделом книги.
И еще. Если вы хотите стать программистом, то должны знать, что одним из условий этого является большой опыт решения задач по программированию. Поэтому решайте задачи, абстрактные и содержательные, на 5 минут и на день работы. Все это обязательно вам пригодится. Чем больше опыт решения задач, тем больше вероятность того, что уже решенная задача или аналогичная ей встретится вам в будущем.
Заметим также, что многие рассмотренные в книге задачи предусмотрены Кодификатором элементов содержания и требований к уровню подготовки выпускников общеобразовательных учреждений для проведения единого государственного экзамена по информатике и ИКТ и которые используются в демонстрационных и пробных вариантах ЕГЭ по информатике последних лет, а также представлены в пробных вариантах ЕГЭ в компьютерной форме.
Книга, безусловно, будет полезна и читателям, уже имеющим определенный опыт программирования, а также учителям школ и преподавателям колледжей и вузов.