Учебное пособие_С++2015
.pdfОглавление |
|
Введение ....................................................................................................................... |
3 |
1. Основы алгоритмизации и программирования .................................................... |
4 |
1.1. Этапы подготовки и решения задач на ЭВМ ................................................. |
4 |
1.2. Алгоритмы и способы их описания ................................................................ |
6 |
1.3. Компиляция и интерпретация программ ...................................................... |
13 |
1.4. Стили программирования............................................................................... |
14 |
2. Основы алгоритмического языка С++ ............................................................... |
23 |
2.1. Пример готовой программы........................................................................... |
23 |
2.2. Структура основной программы ................................................................... |
25 |
2.3. Алфавит языка ................................................................................................. |
26 |
2.4. Константы и переменные ............................................................................... |
27 |
2.5. Арифметические выражения ......................................................................... |
30 |
Стандартные функции ...................................................................................... |
31 |
Контрольные задания............................................................................................. |
33 |
2.6. Линейные вычислительные процессы .......................................................... |
36 |
Контрольные задания........................................................................................ |
47 |
2.7. Разветвляющиеся вычислительные процессы ............................................. |
50 |
Контрольные задания........................................................................................ |
62 |
2.8. Циклические вычислительные процессы ..................................................... |
64 |
2.9. Базовые алгоритмы ......................................................................................... |
70 |
2.10. Указатели и массивы................................................................................... |
77 |
2.10.1. Указатели ............................................................................................... |
77 |
2.10.2. Понятие массива.................................................................................... |
80 |
Обработка одномерных массивов ............................................................. |
83 |
Обработка матриц ....................................................................................... |
91 |
2.11. Подпрограммы............................................................................................... |
97 |
|
161 |
Перегрузка функций в С++ ............................................................................ |
112 |
Рекурсия ........................................................................................................... |
114 |
Технология сборки библиотеки ..................................................................... |
115 |
2.12. Текстовые данные ....................................................................................... |
119 |
Символьный тип данных ................................................................................ |
119 |
Строки............................................................................................................... |
121 |
Контрольные задания...................................................................................... |
130 |
2.13. Динамическое выделение памяти.............................................................. |
132 |
2.14. Структуры данных.................................................................................. |
137 |
2.15. Файлы данных ............................................................................................. |
143 |
2.15.1. Работа с файлами в стиле С ............................................................... |
144 |
2.15.2. Работа с потоками в С++ .................................................................... |
157 |
Контрольные задания..................................................................................... |
158 |
Заключение............................................................................................................... |
160 |
ЛИТЕРАТУРА ......................................................................................................... |
163 |
ПРИЛОЖЕНИЕ ....................................................................................................... |
164 |
162
ЛИТЕРАТУРА
1.Голицына О.Л. Основы алгоритмизации и программирования. М.:
Форум. 2008.- 431с.
2.Страуструп Б. Язык программирования С++.: монография / пер. с англ. под ред. Н.Н. Мартынова. - М.: Бином, 2011. - 1135с.
3.Страуструп Б. Программирование: принципы и практика использования С++.: монография / Б.Страуструп. - Испр. изд. - М. : Издат.дом "Вильямс", 2011. - 1238с.
4.Павловская T.А. С/С++ Программирование на языке высокого уровня. Спб.: Питер, 2012 – 461с.
5.Лаптев В.В. С++ объектно-ориентированное программирование : учеб. пособие / В. В. Лаптев. - СПб.: ПИТЕР, 2008. - 457с. - Библиогр.:
с. 453-457.
6.Ашарина И. В. Объектно-ориентированное программирование в С++
:лекции и упражнения : учеб. пособие / И. В. Ашарина. - М. : Горячая линия-Телеком, 2008. - 319с.
7.Эпштейн М. С. Практикум по программированию на языке С. М.:
Академия, 2007, -102с.
8.Шилдт Г. Полный справочник по C++. М.: Вильямс, 2006,- 217с.
9.http://256bit.ru/informat/index11.htm
163
ПРИЛОЖЕНИЕ
Функции стандартной библиотеки (неполный перечень)
Функции сгруппированы по заголовочным файлам, в которых они описаны.
Заголовочный файл <math.h> (<cmath>) – математические функции
Имя функции |
Прототип функции |
Назначение |
|
|
|
acos |
double acos(double x); |
Возвращает арккосинус |
|
|
аргумента |
|
|
|
Функция возвращает арккосинус аргумента х в радианах |
||
|
|
|
asin |
double asin(double x); |
Возвращает арксинус |
|
|
аргумента |
|
|
|
Функция возвращает арксинус аргумента х в радианах. |
||
|
|
|
atan |
double atan(double x); |
Возвращает арктангенс |
|
|
аргумента |
|
|
|
Функция возвращает арктангенс аргумента х в радианах |
||
|
|
|
atan2 |
double atan2(double y, |
Возвращает арктангенс |
|
double x); |
отношения аргументов |
|
|
|
Функция возвращает арктангенс отношения параметров y/х в радианах. |
||
|
|
|
ceil |
double ceil(double x); |
Округляет вверх |
|
|
|
Функция округляет вещественное значение х до ближайшего большего к |
||
нему целого и возвращает его как вещественное. |
|
|
|
|
|
cos |
double cos(double x ); |
Вычисляет косинус |
|
|
|
Функция возвращает значение косинуса угла, равного х радиан. |
||
|
|
|
|
|
164 |
cosh |
double cosh(double x); |
Вычисляет |
|
|
|
|
гиперболический косинус |
|
|
|
|
Функция возвращает значение гиперболического косинуса угла, равного х |
|||
радиан. |
|
|
|
|
|
|
|
exp |
double exp (double x); |
Возвращает степень числа |
|
|
|
|
e |
|
|
|
|
Функция возвращает результат возведения числа e в указанную степень х. |
|||
|
|
|
|
fabs |
double fabs(double x); |
Возвращает модуль числа |
|
|
|
|
|
Функция возвращает абсолютное значение числа х . |
|||
|
|
|
|
floor |
double floor(double x); |
Округляет вниз |
|
|
|
|
|
Функция округляет вещественное число х до ближайшего меньшего целого и |
|||
возвращает его как вещественное. |
|
||
|
|
|
|
fmod |
double |
fmod(double x, |
Возвращает остаток от |
|
double |
y ); |
деления x на y |
|
|
|
|
Функция возвращает остаток от деления х на y. Аналогична операции %, но |
|||
работает с вещественными числами |
|
||
|
|
|
|
log |
double log(double x ); |
Вычисляет натуральный |
|
|
|
|
логарифм |
|
|
|
|
Функция возвращает значение натурального логарифма х |
|||
|
|
|
|
log10 |
double log10(double x); |
Вычисляет логарифм по |
|
|
|
|
основанию 10 |
|
|
|
|
|
|
|
165 |
Функция возвращает значение логарифма х по основанию 10
modf |
double |
modf(double x, |
Разбивает число на целую |
|
double |
*intptr ); |
и дробную части |
|
|
|
|
Функция разбивает число х на целую и дробную части, причем дробную часть числа возвращает, а целую часть числа помещает по адресу, определяемому указателем inptptr
pow |
double |
pow(double x, |
Возводит число в степень |
|
double |
y ); |
|
|
|
|
|
Функция вычисляет значение числа х в степени y
sin |
double sin(double x); |
Вычисляет синус |
|
|
|
Функция возвращает значение синуса угла, равного х радиан.
sinh |
double sinh(double x ); |
Вычисляет |
|
|
гиперболический синус |
|
|
|
Функция возвращает значение гиперболического синуса угла, равного х радиан.
sqrt |
double sqrt(double x ); |
Вычисляет квадратный |
|
|
корень |
|
|
|
Функция возвращает квадратный корень из числа |
х |
tan |
double tan(double x ); |
|
Вычисляет тангенс |
|
|
|
аргумента |
|
|
|
|
Функция возвращает значение тангенcа аргумента |
х |
166
tanh |
double tanh(double x ); |
Вычисляет |
|
|
гиперболический тангенс |
|
|
аргумена |
|
|
|
Функция возвращает значение гиперболического тангенcа аргумента х
Заголовочный файл <stdlib.h> (<cstdlib>) – различные функции в стиле С
Имя функции |
Прототип функции |
Назначение |
|
||
|
|
|
|
||
abort |
void abort(void); |
Прерывает |
|
||
|
|
|
|
выполнение |
|
|
|
|
|
программы |
|
|
|
|
|
||
Функция прерывает выполнение программы, возвращая код завершения по |
|
||||
умолчанию равный 3. |
|
|
|
|
|
|
|
|
|
||
atoi |
int atoi(const char |
Преобразует строку |
|
||
|
*str); |
|
|
в длинное целое |
|
|
|
|
|
число |
|
|
|
|
|
||
Функция преобразует строку, содержащую символьное представление целого |
|
||||
числа, в соответствующее целое число. Если преобразование не удалось, |
|
||||
возвращает 0. |
|
|
|
|
|
|
|
|
|
||
calloc |
void *calloc(size_t |
Выделяет блок |
|
||
|
num, size_t |
size); |
памяти |
|
|
|
|
|
|
||
Функция выделяет блок памяти ( num элементов по size байт) и возвращает |
|
||||
указатель на него. Каждый элемент полученного массива инициализируется |
|
||||
нулевым значением. Если выделить блок не удалось, возвращает NULL. |
|
||||
|
|
|
|
|
|
free |
void |
free(void |
Освобождает блок |
|
|
|
*pointer); |
|
памяти |
|
|
|
|
|
|
||
Функция освобождает блок памяти, полученный ранее одной из функций |
|
||||
malloc, calloc. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
malloc |
void *malloc(size_t |
Выделяет блок |
|
size); |
памяти |
|
|
|
Функция выделяет блок памяти размером size байт и возвращает указатель на него. В случае неудачи возвращаемым значение будет NULL.
qsort |
void qsotr(void |
buf, |
|
|
size_t |
num, |
size_t |
|
size, |
int (compare) |
|
|
(const |
void *, const |
|
|
void *)); |
|
|
|
|
|
|
Сортирует заданный массив
Функция выполняет сортировку массива любых размеров и типов. Сортируемый массив: buf – указатель на массив, num – число элементов, size – размер каждого элемента. compare – адрес функции, которая сравнивает два значения, передаваемые ей функцией qsort.
rand |
int rand(void); |
Генерирует |
|
|
случайные числа |
|
|
|
Функция возвращает очередное псевдослучайное число в диапазоне от 0 до
RAND_MAX.
srand |
void srand(unsigned |
Устанавливает |
|
int seed); |
начальное |
|
|
псевдослучайное |
|
|
число |
|
|
|
Функция устанавливает начальное значение последовательности псевдослучайных чисел.
Заголовочный файл <stdio.h> (<cstdio>) – функции ввода/вывода в стиле С
Имя функции |
Прототип функции |
Назначение |
|
|
|
fclose |
int fclose(FILE *f); |
Закрывает поток |
|
|
|
168
ввода/вывода
Функция закрывает поток ввода/вывода, на который указывает дескриптор f.
feof |
int feof(FILE *f ); |
Проверяет |
|
|
достижение конца |
|
|
файла |
|
|
|
Функция возвращает значение EOF или значение , отличное от 0, если достигнут конец файла, в противном случае возвращает 0.
fgetc |
int fgetc(FILE *f ); |
Читает из потока |
|
|
символ |
|
|
|
Функция возвращает очередной символ в форме int из потока f. Если символ не может быть прочитан, возвращает EOF.
fgets |
int |
fgets(char |
*s, |
Читает из потока в |
|
int |
n, FILE *f |
); |
стоку n символов |
|
|
|
|
|
Функция читает не более n-1 байт из потока f в строку s. Прекращает чтение при обнаружении символа новой строки или конца файла.
fopen |
FILE *fopen(const |
Открывает поток |
|
|
char |
*fname, const |
ввода/вывода |
|
char |
*mode ); |
|
|
|
|
|
Функция открывает файл с именем fname, для работы в режиме, указанном строкой mode. При успешном открытии возвращает указатель на поток, в противном случае – NULL.
fprintf |
int fprintf(FILE *f, |
Записывает данные |
|
const char *fmt, …); |
в поток |
|
|
|
Функция записывает в поток f переменные, список которых обозначен многоточием (…), в формате, указанном строкой fmt.
fputc |
int fputc(int ch, FILE |
Записывает символ |
|
*f); |
в поток |
|
|
|
Функция записывает символ ch в поток f. При ошибке возвращает
169
значение EOF.
fputs |
int |
fputs(const char |
Записывает строку |
|
*s, |
FILE *f); |
символов в поток |
|
|
|
|
Функция записывает строку s в поток f. Символ конца строки в файл не записывается. . При ошибке возвращает значение EOF.
fread |
size_t |
fread(void |
Читает данные из |
|
*buffer, size_t size, |
потока ввода |
|
|
size_t count, FILE |
|
|
|
*stream); |
|
|
|
|
|
|
Функция считывает count элементов по size байтов в область, заданную указателем buffer, из потока stream. Функция возвращает количество
прочитанных элементов, которое может быть меньше |
count. |
||||
|
|
|
|
||
fscanf |
int fscanf(FILE *f, |
|
Вводит из файла |
||
|
const |
char |
*fmt [par1, |
|
форматированные |
|
par2, |
…]); |
|
|
данные |
|
|
|
|
|
|
Функция вводит строку параметров par1, par2 и т.д. в формате, определенном строкой fmt, из файла f. Возвращает число переменных, которым присвоено значение.
fseek |
int fseek (FILE |
*f, |
Перемещает |
|
|
long off, int |
org); |
позицию в файле |
|
|
|
|
относительно |
|
|
|
|
текущей |
|
|
|
|
|
|
Функция перемещает текущую позицию в файле, связанном с потоком f, на позицию off, отсчитываемую от значения org, которое должно быть равно одной из трех констант, определенных в <stdio.h>:
SEEK_CUR – от текущей позиции указателя;
SEEK_END – от конца файла;
SEEK_SET – от начала файла;
fwrite |
size_t |
fwrite ( const |
Записывает данные |
|
|
void |
*p, size_t size, |
|
|
|
|
|
|
|
170