Основы программирования на C++, PASCAL

Навигация

ГЛАВА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ

1.1. Алгоритмы и величины

0 1 2

1.2. Линейные вычислительные алгоритмы

3 4

1.3. Ветвления и циклы в вычислительных алгоритмах

5 6 7

1.4. Вспомогательные алгоритмы и процедуры

8 9

ГЛАВА 2. ВВЕДЕНИЕ В ЯЗЫКИ ПРОГРАММИРОВАНИЯ

2.1. История и классификация языков программирования

10 11 12 13

2.2. Структура и способы описания языков программирования высокого уровня

14 15

ГЛАВА 3. ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ

3.1. Первое знакомство с Паскалем

16 17 18 19

3.2. Некоторые сведения о системе Турбо Паскаль

20 21 22

3.3. Элементы языка Турбо Паскаль

23

3.4. Типы данных

24 25

3.5. Арифметические операции, функции, выражения. Арифметический оператор присваивания

26 27

3.6. Ввод с клавиатуры и вывод на экран

28 29

3.7. Управление символьным выводом на экран

30 31 32

3.8. Логические величины, операции, выражения. Логический оператор присваивания

33 34

3.9. Функции, связывающие различные типы данных

35 36

3.10. Логические выражения в управляющих операторах

37 38

3.11. Цикл по параметру

39 40

3.12. Особенности целочисленной и вещественной арифметики

41 42 43

3.13. Подпрограммы

44 45 46 47 48 49

3.14. Вычисление рекуррентных последовательностей

50 51 52 53

3.15. Основные понятия и средства компьютерной графики в Турбо Паскале

54 55 56 57 58 59 60

3.16. Строковый тип данных

61 62 63 64

3.17. Табличные данные и массивы

65 66 67 68 69

3.18. Понятие множества. Множественный тип данных

70 71 72 73

3.19. Файлы. Файловые переменные

74 75 76 77 78 79

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

80 81 82

3.21. Указатели и динамические структуры

83 84 85 86 87 88 89

3.22. Внешние подпрограммы и модули

90 91 92 93

3.23. Объектно-ориентированное программирование

94 95 96 97 98 99 100

3.24. Виртуальные методы. Конструкторы и деструкторы

101 102 103

ГЛАВА 4. ЯЗЫК ПРОГРАММИРОВАНИЯ СИ++

4.1. Введение в Си и Си++

104 105 106

4.2. Элементы языка Си++

107

4.3. Типы данных

108 109 110 111

4.4. Операции и выражения

112 113 114 115 116 117

4.5. Линейные программы на Си/Си++

118 119 120 121 122

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

123 124

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

125 126 127

4.8. Функции

128 129 130 131 132 133

4.9. Массивы

134 135 136

4.10. Указатели

137 138 139 140

4.11. Обработка символьных строк

141 142 143

4.12. Структуры и объединения

144 145 146

4.13. Потоковый ввод-вывод в стандарте Си

147 148 149 150 151 152

4.14. Объектно-ориентированное программирование в Си++

153 154 155 156 157

4.15. Форматированный ввод-вывод в Си++

158 159

ГЛАВА 5. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

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

160 161 162 163

5.2. Метод последовательной детализации

164 165 166

5.3. Рекурсивные методы

167 168

5.4. Методы перебора в задачах поиска

169 170 171 172

5.5. Эвристические методы

173

5.6. Сложность алгоритмов

174 175

5.7. Методы сортировки данных

176 177 178

ГЛАВА 6. ЗАДАЧИ ПО ПРОГРАММИРОВАНИЮ

6.1. Задачи по теме «Линейные программы»

179 180 181 182 183

6.2. Задачи по теме «Развилка»

184 185 186 187

6.3. Задачи по теме «Оператор выбора»

188 189

6.4. Задачи по теме «Циклы»

190 191 192

6.5. Задачи по теме «Целочисленная арифметика»

193 194 195 196 197

6.6. Задачи по теме «Подпрограммы»

198 199 200 201

6.7. Задачи по теме «Одномерные массивы»

202 203 204 205 206 207 208

6.8. Задачи по теме «Двумерные массивы»

209 210 211 212 213

6.9. Задачи по теме «Работа со строками»

214 215 216 217

6.10. Задачи на «длинную арифметику»

218 219

6.11. Задачи по теме «Множества»

220 221

6.12. Задачи по теме «Записи (структуры)»

222 223 224

6.13. Задачи по теме «Файлы»

225 226 227 228

6.14. Задачи по теме «Модули»

229 230 231

6.15. Задачи по теме «Динамические структуры данных»

232 233 234

6.16. Задачи по теме «Графика»

235 236

6.17. Задачи по теме «Объектно-ориентированное программирование»

237 238 239 240 241

6.18. Большие проектные задания

242 243 244 245

ПРИЛОЖЕНИЯ

Приложение 1 Турбо Паскаль. Модуль CRT

246

Приложение 2. Турбо Паскаль. Модуль GRAPH

247

Приложение 3. Си++. Константы предельных значений

248

Приложение 4. Библиотека функций языка Си/Си++

249

Графическая библиотека в C++

250

СПИСОК ЛИТЕРАТУРЫ

251 252

Поэтому при втором обращении эта переменная играет одновременно роль аргумента и результата. Здесь оператор обращения к функции выглядит подобно обращению к процедуре в Паскале, а глобальная переменная z играет роль var-параметра.

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

• автоматическая (ключевое слово auto);

• внешняя (extern);

• статическая (static);

• регистровая (register).

Под глобальные переменные выделяется место во внешней памяти (не нужно думать, что речь идет о магнитной памяти; это оперативная память класса extern). Глобальную переменную можно объявить либо вне программных блоков, либо внутри блока с ключевым словом extern. Обычно это делается в тех случаях, когда программный модуль хранится в отдельном файле и, следовательно, отдельно компилируется.

Пусть, например, основная и вспомогательная функции хранятся в разных файлах.

Пример 7.


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

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

Статическая память выделяется под переменные, локализованные внутри блока, но в отличие от автоматической памяти не освобождается при выходе из блока. Таким образом, при повторном вхождении в блок статическая переменная сохраняет свое прежнее значение. Пример объявления статической переменной:

f()

{static int schet=10; ...}

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

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

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

Пример 8.


Упражнения

1. Найти ошибку в программе:



2. Определить результат выполнения программы:


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

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

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

6. Описать рекурсивную функцию stepen (x, n) от вещественного х (х ≠ 0) и целого n, которая вычисляет величину xn согласно формуле


7. Даны натуральные числа п и т; найти НОД(n, т). Составить рекурсивную функцию вычисления НОД, основанную на соотношении НОД(n, m) = HOД(m, r), где r — остаток от деления n на т (n > т).