- •Введение
- •1. Основы алгоритмизации и программирования
- •1.1. Этапы подготовки и решения задач на эвм
- •1.2. Алгоритмы и способы их описания Понятие алгоритма
- •Способы описания алгоритмов
- •Структурные схемы алгоритмов
- •1.3. Компиляция и интерпретация программ
- •1.4. Стили программирования
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование
- •2.1. Пример готовой программы.
- •2.2. Структура основной программы
- •2.3. Алфавит языка
- •2.4. Константы и переменные Константы
- •Переменные
- •Примеры записи имен переменных
- •2.5. Арифметические выражения
- •Примеры вычисления арифметических выражений
- •Стандартные функции
- •Примеры программирования арифметических выражений
- •Контрольные задания
- •1. Составить описания для заданных переменных
- •2.6. Линейные вычислительные процессы
- •Оператор присваивания
- •Странные операторы присваивания
- •Функции ввода-вывода
- •Функции ввода исходных данных с клавиатуры
- •Потоковый ввод данных числового типа
- •Функция форматного ввода
- •Операторы вывода данных на экран Потоковый вывод
- •Форматный вывод
- •Контрольные задания
- •2.7. Разветвляющиеся вычислительные процессы
- •If (логическое выражение) p1; else p2;
- •Логические выражения
- •Порядок выполнения операций в логических выражениях
- •Условные операторы
- •Короткий условный оператор
- •Полный условный оператор
- •If (логическое выражение) { p1;} else {p2;}
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм элементов последовательностей
- •2.10. Указатели и массивы
- •2.10.1. Указатели
- •2.10.2. Понятие массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Int I,j; //локальные переменные
- •Обращение к функции
- •Пример программы с функцией
- •Механизмы замены параметров
- •Параметры-массивы в функциях
- •Возвращение результатов
- •Примеры программирования задач с использованием подпрограмм Задача 1
- •Рекурсия
- •Технология сборки библиотеки
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Использование оператора new
- •Освобождение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных
- •2.15.1. Работа с файлами в стиле с
- •Объявление файловой переменной
- •Открытие файла
- •Закрытие файла
- •// Обработка открытого файла
- •Обработка открытого файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
- •Оглавление
- •Литература
- •Приложение
Литература
Голицына О.Л. Основы алгоритмизации и программирования. М.: Форум. 2008.- 431с.
Страуструп Б. Язык программирования С++.: монография / пер. с англ. под ред. Н.Н. Мартынова. - М.: Бином, 2011. - 1135с.
Страуструп Б. Программирование: принципы и практика использования С++.: монография / Б.Страуструп. - Испр. изд. - М. : Издат.дом "Вильямс", 2011. - 1238с.
Павловская T.А. С/С++ Программирование на языке высокого уровня. Спб.: Питер, 2012 – 461с.
Лаптев В.В. С++ объектно-ориентированное программирование : учеб. пособие / В. В. Лаптев. - СПб.: ПИТЕР, 2008. - 457с. - Библиогр.: с. 453-457.
Ашарина И. В. Объектно-ориентированное программирование в С++ : лекции и упражнения : учеб. пособие / И. В. Ашарина. - М. : Горячая линия-Телеком, 2008. - 319с.
Эпштейн М. С. Практикум по программированию на языке С. М.: Академия, 2007, -102с.
Шилдт Г. Полный справочник по C++. М.: Вильямс, 2006,- 217с.
http://256bit.ru/informat/index11.htm
Приложение
Функции стандартной библиотеки (неполный перечень)
Функции сгруппированы по заголовочным файлам, в которых они описаны.
Заголовочный файл <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 );
|
Вычисляет косинус |
Функция возвращает значение косинуса угла, равного х радиан. | ||
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 |
Функция возвращает значение логарифма х по основанию 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а аргумента х | ||
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. | ||
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); |
Закрывает поток ввода/вывода | ||
Функция закрывает поток ввода/вывода, на который указывает дескриптор 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. При ошибке возвращает значение 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, size_t n, FILE *f); |
Записывает данные из заданного буфера в поток | ||
Функция записывает n элементов длиной size байт из буфера, заданного указателем p, в поток f. Возвращает число записанных элементов. | ||||
getc |
int getc(FILE *f); |
Читает символ из потока | ||
Функция возвращает очередной символ в формате int из потока f. Если символ не может быть прочитан, возвращает EOF. | ||||
getchar |
int getchar(void); |
Читает символ из стандартного потока | ||
Функция возвращает очередной символ в формате int из cтандартного ввода. Если символ не может быть прочитан, возвращает EOF. | ||||
gets |
int gets(char *s); |
Читает символы с клавиатуры до появления символа новой строки | ||
Функция читает символы с клавиатуры до появления символа новой строки и помещает их в строку s. Возвращает указатель на s. | ||||
printf |
int printf(const char *fmt, …); |
Выводит строку параметров в определенном формате | ||
Функция выводит на стандартное устройство вывода значения переменных, перечисленных в списке, обозначенном многоточием, в формате, определенном строкой fmt. | ||||
putc |
int putc (int ch, FILE *f); |
Записывает символ в поток | ||
Функция записывает символ ch в поток f. Работает аналогично fputc. | ||||
putchar |
int putchar(int ch); |
Записывает символ на стандартное устройство вывода | ||
Функция выводит символ ch на стандартное устройство вывода. Если вывод неуспешен – EOF. | ||||
puts |
int puts (char *s); |
Выводит строку на стандартное устройство вывода | ||
Функция выводит строку s на стандартное устройство вывода, добавляя в конце символ новой строки. | ||||
remove |
int remove(const char *filename); |
Удаляет файл | ||
Функция удаляет существующий файл. В случае успеха возвращает нулевое значение, в противном случае – не ноль. | ||||
scanf |
int scanf(const char *fmt [par1, par2, …]); |
Вводит строку параметров в определенном формате | ||
Функция вводит строку параметров par1, par2 и т. д. в формате, определенном строкой fmt, со стандартного устройства ввода (обычно клавиатура). Возвращает число переменных, которым присвоены значения. |
Заголовочный файл <string.h> (<cstring>) – функции работы со строками в стиле С
Имя функции |
Прототип функции |
Назначение |
strcat |
char *strcat(char *s1, char *s2); |
Складывает строки |
Функция добавляет s2 к s1 и возвращает s1. В конец результирующей строки добавляет нуль-символ. | ||
strchr |
char *strchr(char *s, int ch); |
Ищет символ в строке |
Функция возвращает указатель на первое вхождение символа ch в строку s. Если его нет – NULL. | ||
strcmp |
char *strcmp(char *s1, char *s2); |
Сравнивает строки |
Сравнивает строку s1 со строкой s2. Возвращает нулевое значение, если они равны, отрицательное( если s1 меньше s2), положительное (если s1 больше s2). | ||
strcpy |
char *strcpy(char *s1, char *s2); |
Копирует одну строку в другую |
Функция копирует s1 в s2 и возвращает s1. | ||
strlen |
char *strlen(char *s); |
Возвращает длину строки |
Функция возвращает длину строки. | ||
strncat |
char *strncat(char *s1, char *s2, size_t n); |
Складывает одну строку с n символами другой |
Функция добавляет не более n символов из s2 к s1 и возвращает s1. В конец результирующей строки добавляет нуль-символ. Если длина строки s2 меньше n, переписывается все символы s2. | ||
strncmp |
char *strncmp(char *s1, char *s2, size_t n); |
Сравнивает одну строку с n символами другой строки |
Сравнивает строку s1 с первыми n символами строкой s2. Возвращает нулевое значение, если они равны, отрицательное ( если s1 меньше s2), положительное (если s1 больше s2). | ||
strncpy |
char *strncpy(char *s1, char *s2, size_t n); |
Копирует первые n символов одной строки в другую |
Функция копирует не более n символов из строки s2 в s1 и возвращает s1. Если длина строки s1 более n, то нуль-символ не дописывается. | ||
strstr |
char *strstr(char *s1, char *s2); |
Ищет подстроку в строке |
Функция выполняет поиск первого вхождения строки s2 в строку s1. Возвращает указатель на элемент из s1, с которого начинается s2, иначе - NULL. | ||
strspn |
char strspn(char *s1, char *s2); |
Ищет символ одной строки, отсутствующий в другой |
Функция возвращает индекс первого символа из s1, отсутствующего в s2. |
Заголовочный файл <string> (<cstring.h>) – функции работы со строками в стиле С++
Имя функции |
Прототип функции |
Назначение |
assign |
assign(const string& str); assign(const string& str, size_type pos, size_type n); assign(const char* str, size_type n); |
Присваивание части одной строки другой строке |
Первая форма присваивает значение строки str вызывающей строке. (s2.assign(s1); что аналогично операции присваивания s2=s1;) Вторая форма присваивает вызывающей строке часть строки str длиной в n символов, начиная с позиции pos. Третья форма присваивает вызывающей строке n символов строки старого типа (стиля С). | ||
append |
append(const string& str); append (const string& str, size_type pos, size_type n); append (const char* str, size_type n); |
Добавление части одной строки к другой |
Первая форма добавляет значение строки str к концу вызывающей строки. (s2. append (s1); что аналогично операции конкатенации s2= s2+s1;) Вторая форма добавляет к вызывающей строке часть строки str длиной в n символов, начиная с позиции pos. Третья форма добавляет к вызывающей строке n символов строки старого типа (стиля С). | ||
insert |
insert(size_type pos1 ,const string& str); insert (size_type pos1 ,const string& str, size_type pos2, size_type n); insert (size_type pos , const char* str, size_type n); |
Вставка в одну строку части другой строки |
Первая форма вставляет значение строки str в вызывающую строку, начиная с позиции pos1. ( s2. insert (4,s1); - вставка строки s1 в строку s2 после четвертого символа ). Вторая форма вставляет в вызывающую строку после позиции pos1 часть строки str длиной в n символов, начиная с позиции pos2. Третья форма вставляет в вызывающую строку n символов строки старого типа (стиля С), начиная с позиции pos. | ||
erase |
erase (size_type pos , size_type n); |
Удаление части строки |
Функция удаляет в вызывающей строке n символов, начиная с позиции pos. Если pos=0, то удаляется с начала строки, если n не указано, то удаляется все, начиная с позиции pos. | ||
replase |
replase(size_type pos1, size_type n1, const string& str) const; replase(size_type pos1, size_type n1,const char* str, size_type n2) const; |
Замена части строки |
Здесь pos1 –позиция вызывающей строки, начиная с которой выполняется замена, n1 – количество удаляемых символов, pos2 – позиция строки str, начиная с которой выбирается n2 символов для вставки в вызывающую строку. Вторая форма позволяет заменить n1 символов вызывающей строки, начиная с позиции pos1, на n2 символов строки старого стиля (стиля С). | ||
swap |
swap(string& str); |
Обмен содержимым двух строк |
Функция осуществляет обмен значениями вызывающей строки со строкой str. | ||
substr |
string substr (size_type pos, size_type n) const; |
Выделение части строки |
Функция возвращает подстроку длиной n вызывающей строки, начиная с позиции pos. | ||
find |
size_type find (const string& str, size_type pos) const;
|
Поиск подстроки |
Функция ищет, начиная с позиции pos, самое левое вхождение строки str в вызывающую строку. | ||
rfind |
size_type rfind (const string& str, size_type pos) const;
|
Поиск подстроки |
Функция ищет самое правое вхождение строки str в вызывающую строку, до позиции pos. | ||
compare |
int compare(const string& str) const; int compare(size_type pos1, size_type n1, const string& str) const; int compare(size_type pos1, size_type n1,const string& str, size_type pos2, size_type n2) const; |
Сравнивает две строки |
Первая форма сравнивает две строки целиком и возвращает ноль, если они равны. Вторая форма выполняет аналогичные действия, но сравнивает вызывающую строку с n1 символом, начиная с позиции pos1 строки str . Третья форма сравнивает n1 символов вызывающей строки, начиная с позиции pos1, с подстрокой строки str длиной n2 символов, начиная с позиции pos2. | ||
length |
size_type length() const; |
Определяет длину строки. |
Функция определяет количество элементов в строке. | ||
max_size |
size_type max_size() const; |
определяет максимально возможную длину строки в стиле C++ |
Функция возвращает максимально возможную длину строки. | ||
empty |
bool empty() const; |
Проверяет строку на пустоту |
Функция возвращает истину, если строка пуста. |