- •Понятие алгоритма
- •Выражения. Арифметические, логические. Логические отношения.
- •Операторы инкремента и декремента.
- •Типы управляющих структур
- •Структура следования. Понятие составного оператора
- •Структура выбора (if/else, switch), условная тернарная операция
- •Структура повторения
- •Структурированные типы данных. Понятие массива, его атрибуты.
- •Последовательный поиск заданного элемента в массиве
- •Обращение к элементам многомерного массива
- •Обращение к элементам динамического массива
-
Обращение к элементам динамического массива
-
Обращение к элементам динамического массива происходит так же, как и к элементам обычного массива, a[i] либо *(a+i)
Освобождение памяти из под динамических массивов
-
Если динамически массив в какой то момент времени перестал быть нужным, необходимо освободить память оператором delete []a; размерность массива при этом не указывается. [] обязательны, их отсутствие может привести к неопределённому поведению программы. Если используется ф-я malloc, то используется оператор free(a); Таким образом время жизни динамического массива-время с момента выделения памяти до момента её освобождения.
Форматированный ввод-вывод, функции printf и scanf
-
printf(“управляющаая строка”, аргумент1, аргумент2, … );
-
Управляющая строка содержит объекты 3 типов: Обычные символы, спецификации преобразования и управляющие символьные константы.
-
Обычные символы выводятся обычно
-
Каждая спецификация преобразования начинается с символа % и заканчивается некоторыми символами задающими преобразование, между % и символами, указывающими преобразование может встречаться символ «-», который указывает на выравнивание влево.
-
В спецификациях могут встречаться: строка цифр, задающая минимальный размер поля, точка отделяющая размер поля от последующей строки цифр и строка цифр, задающая максимальное число цифр, которое нужно вывести справа от десятичной точки в значениях типа float и double
-
Спецификации преобразования
d
Десятичное целое
o
Восьмеричное целое
x
Шестнадцатеричное целое
c
Символ
s
Строка символов
f
Вещественное десятичное с плав. точкой
g(%e, %f)
Исключает вывод незначащих нулей
u
Соответсвует аргументу типа unsigned
p
Значение аргумента является указателем
l
Тип аргумента -long
-
Если после % записан не символ преобразования, то он выводится на экран, аргументами может быть переменные, константы, вызовы функций
-
Управляющие символы
\n
Новая строка
\b
На символ назад (backspace)
\r
Возврат каретки в начало текущей строки
\l
Подача звукового сигнала
\t
Горизонтальная табуляция
\v
Вертикальная табуляция
-
scanf (“Управляющая строка”, аргумент1, аргумент2, …);
-
Аргументы должны быть указателями на соответствующие значения &, не указывается только при вводе массива(при вводе массива указывается только имя)
-
Управляющая строка содержит спецификации преобразования и устанавливает количество аргументов, могут быть пробелы, \t и переходы на новую строку. Все символы игнорируются
-
Могут включаться спецификации преобразования с % возможно *-запрещение присваивания, обычные символы, кроме «%», считается, что эти символы не должны совпадать с символами во входном потоке.
-
В ф-ии scanf допускаются многие из символов преобразования d,o,x,u,c,s,f,p, перед символами d, o, x, f может стоять символ l
-
Функции стандартного ввода-вывод содержатся в библиотеке <stdio.h>
Функции ввода-вывода отдельного символа
-
Функция putchar(a); -вывод отдельного символа, если a-переменная типа char
-
Функция getchar(a);-ввод отдельного символа, a типа char
-
Содержатся в библиотеке <stdio.h>
Понятие строки символов, её представление. Функции ввода-вывода строки.
-
Строка символов-последовательность символов, обрабатываемых, как единый модуль. Может включать в себя буквы, цифры, стандартные символы. Строковые константы записываются в двойных кавычках. Строка в С++-массив символов, оканчивающаяся нулевым символом “\o”
-
Строка доступна через указатель на первый символ в строке. Значением строки является адрес её первого элемента.
-
Функция puts(“строка”); либо puts(a); где а-строка, функция вывода строки
-
Функция gets(a); где а- строка, функция ввода строки. В gets можно использовать пробелы, если scanf заканчивает строку при появлении пробела, то gets делает это только при нажатии клавиши ввод.
Объявление и инициализация строки
-
Строка может быть объявлена либо как массив символов, либо как переменная типа char* -указатель на символьное значение.
char color[]=”red”;
char *colortr=”blue”;
-
1 способ-более безопасный
-
Когда обявляется массив символов, содержащий строку, он доджен быть достаточно большим, чтобы хранить строку и нулевой символ.
-
С++ допускает хранение строк любой длины. Если строка больше символьного массива в котором она должна храниться, символы после конца массива будут применять данные в разделах памяти следующей за массивом
Потоковый ввод-вывод строк
-
Строку можно присвоить массиву используя cin>> -взятие из потока
Функции работы со строками из библиотеки string.h
|
Функция |
Описание |
|
strcpy(S1, S2); |
Копирует строку S2 в массив символов S1 |
|
strncpy(S1, S2, n); n-int |
Копирует n символов из строки S2 в строку S1, возвращает целое значение S2 |
|
strcat(S1, S2); |
Добавляет строку S2 к строке S1, первый символ S2 записывается поверх нулевого символа S1, возвращает S1 |
|
strncat(S1, S2, n); n-int |
Добавляет n символов из строки S2 в строку S1 по принципу strcat |
|
strcmp(S1, S2); |
Сравнивает строки S1 и S2 функция возвращает 0, если S1=S2 , <0 если S1<S2 и >0 если S1>S2 |
|
strncmp(S1, S2, n); n-int |
Сравнивает до n символов строки S1 со строкой S2 по принципу strcmp |
|
strlen(S); |
Определяет длину строки S возвращает кол-во символов предшествующих “\o” |
-
Для строк не определена операция присваивания
-
чтобы присвоить строке S1 строку S2 используются ф-и strcpy или strncpy
-
Программист должен сам заботиться о том, чтобы в строке-приемнике хватило места для строки-источника.
-
Выход за границы строки и отсутствие «\о» является наиболее распространенной ошибкой
Пример программы работы со строками
-
Дохера
