Слайд 2
Строковые литералы
Указываются в кавычках:
"Test #2"; "Press any key...".
Пустая
строка: "".
В тексте литерала единичные кавычки недопустимы, а двойные игнорируются:
"2º19'59"
в. д." — недопустимо;
"Роман ""Тихий Дон""" → Роман Тихий Дон.
Кавычки нужно экранировать служебным символом «\»:
"Роман \"Тихий Дон\"" → Роман "Тихий Дон".
Слайд 3
Строковые литералы
Экранирование — оформление служебных символов так, что они
получают буквальное значение.
Символ «\» экранируется самим собой:
"C:\\bootlog.txt" → C:\bootlog.txt.
Символ
«\» также экранирует конец строки:
"Программирование \
на языке Си"
обозначает строку
Программирование на языке Си.
Слайд 4
Строковые литералы
Escape-последовательность (управляющая последовательность, УП) — последовательность символов, имеющая особое
значение.
Используется для вставки служебных символов.
Начинаются с «\»: \", \\, \'.
Даёт
возможность указывать символы по их восьмеричным (oct) и шестнадцатеричным (hex) кодам:
\000, где 000 — трёхзначный oct-код символа;
\x0, где 0 — hex-код символа (возможно несколько цифр).
"\065" → 5; "\x35" → 5; "\x74\145\x73\x74" → test.
В коде символов можно указывать меньше цифр, но нежелательно.
Слайд 5
Строковые литералы
Примеры:
После символа \7 можно написать цифру 4: "\0074".
При записи
"\74" получится символ с кодом 64: >.
Hex-запись не органичивается каким-то количеством цифр:
"\x445" —
предупреждение о переполнении строковой константы. Результат не определён.
Слайд 6
Строковые литералы
Как записать символ 5 сразу после символа \x44?
"\x44""5"
Слайд 7
Строковые литералы
Стандартом также определены:
Слайд 8
Строковые литералы
Примеры результата на экране:
"Information\b\bcs" → Informatics;
"A\tB\tC" → A
B C.
Использование символа \n в литерале
"Л. Н. Толстой\n\"Война
и мир\""
даёт на экране переход на следующую строку:
Л. Н. Толстой
"Война и мир".
Перед прочими символами «\» игнорируется:
\h → h, \N → N.
Слайд 9
Строковые литералы
Каждый символ занимает в памяти 1 байт.
Любая строковая
константа заканчивается символом с кодом 0 («нуль-терминатором»).
Все функции работы со строками это
знают, поэтому не обрабатывают символы после первого же «нуль-терминатора» в строке.
Явно указывать «нуль-терминатор» не нужно.
Слайд 10
Строковые литералы
Символьная константа — в апострофах:
'A'; '$'; '\''; '\077'; '\n'.
Занимает
1 байт:
не может быть пустым;
«нуль-терминатором» не заканчивается.
Может храниться в переменной типа
char:
char P = 'A';
Слайд 11
Строковые литералы
Возможна поддержка «широких» (wide) символов и строк — по 2 или 4 байта
на символ.
«Широкие» литералы — с префиксом L:
L'Ы'
L"Lorem ipsum dolor sit amet..."
«Широкий» символ может
храниться в переменной int (short, long):
short P = 'Ф';
Слайд 12
Ввод-вывод
Используется заголовочный файл stdio.h.
Для его использования пишем в
начале кода:
#include
Основные операции:
ввод: scanf, fscanf, wscanf и т. п.;
вывод: printf,
fprintf, wprintf и т. п.
Слайд 13
Вывод (printf)
Функция printf выводит на стандартный поток вывода
строковое выражение. Возвращает количество выведенных символов.
printf("Hello world!\n");
Полный формат вызова
printf:
printf(Форматная строка, параметры);
Форматная строка — особая строковая константа, задающая формат вывода остальных параметров.
Слайд 14
Вывод (printf)
Пример вывода с форматной строкой:
printf("Время: %d часов %d
минут", H, M);
В форматной строке символ «%» является служебным.
Экранируется сам собой:
printf("Загрузка завершена на 100%%");
Со знака «%» начинаются УП, задающие формат вывода для каждого из остальных параметров:
%ФлагиШиринаТочностьДлинаТип
Слайд 15
Вывод (printf)
В форматных УП обязателен только Тип:
Слайд 16
Вывод (printf)
Флаги определяют параметры вывода:
Пример: printf("Value %+i at
%#X", Val, Cell);
Флаги можно комбинировать: printf("%#+X", U);
Слайд 17
Вывод (printf)
Ширина — число: какой минимум знаков отвести под
значение:
printf("%6i", Value);
Либо символ «*» — количество знаков указано в дополнительном параметре
перед основным:
printf("%*i", Length, Value);
Если число короче, то остаток заполняется пробелами (или нулями, если есть флаг 0):
printf("[%12i]", 125); → [ 125]
Если число длиннее, то оно выводится целиком:
printf("[%3i]", 142857); → [142857]
Слайд 18
Вывод (printf)
Точность — точка и следующее за ним число:
для
целых (%i, %d, %u, %o, %x, %X) — минимум знаков
под значение, остаток заполняется нулями; точность 0 означает вывод пустой строки для нулевого значения;
для %f, %e, %E — число десятичных знаков;
для %g, %G — максимальное число значащих цифр;
для %s — только указанное количество первых символов.
Точность по умолчанию — .1. Символы «.*» означают задание точности отдельным параметром.
Примеры:
printf("[%3.2d] [%.2f]", 3, 5.376); → [ 03] [5.38]
printf("[%.0d] [%.*f]", 0, 1, 2.39); → [] [2.4]
Слайд 19
Вывод (printf)
Длина — уточняет длину типов:
h — для целых (%i,
%d, %u, %o, %x, %X), тип «короткий» (short);
l — для
целых (%i, %d, %u, %o, %x, %X), тип «длинный» (long);
ll — для целых (%i, %d, %u, %o, %x, %X), тип «очень длинный» (long long);
L — для вещественных (%f, %e, %E, %g, %G), тип «длинный» (long double).
Слайд 20
Вывод (printf)
Пример:
char A = -1; unsigned char B
= 1;
short C = -2; unsigned short D =
2;
long E = -3; unsigned long F = 3;
long long G = -4; unsigned long long H = 4;
double I = 5.0; long double J = 6.0;
char K = 'a';
printf("%d %u %hd %hu %li %lu %lli %llu %f %Lf \
%c %s", A, B, C, D, E, F, G, H, I, J, K, "!!!");
Вывод на экран:
-1 1 -2 2 -3 3 -4 4 5.000000 6.000000 a !!!
Слайд 21
Вывод (printf)
Пример:
printf("%+07.*lF\n", 2, 3.14159265359);
printf("%.4s\n", "Computer");
printf("%c%c%c\n", 65, 66, 67);
printf("%f
%f\n", 0.0 / 0.0, 5.0 / 0.0);
Вывод на экран:
+003.14
Comp
ABC
-nan
inf
Слайд 22
Ввод (scanf)
Полный формат вызова scanf:
scanf(Форматная строка, параметры);
Возвращает количество
успешно считанных величин.
Форматная строка — как у printf.
В УП указывается
тип. Можно указать ширину (максимальное количество знаков для считывания) и длину значения.
Остальные параметры — соответствующее количество адресов (переменных), в которые будут считаны данные.
Слайд 23
Ввод (scanf)
Унарная операция & — взятие адреса.
Получает адрес, начиная
с которого, в памяти хранится переменная: &A, &Result.
scanf("%Lf %Lf %Lf",
&x, &y, &z);
Форматная строка может содержать другие символы кроме УП. Тогда необходимо водить и их:
scanf("R%i", &N);
(ожидается ввод, например, R12, R-46…)
Исключение — пробелы, переводы строк, табуляции.
Слайд 24
Ветвления
Синтаксис ветвления:
if(условие)
команда1;
else
команда2;
Вычисляет значение условия.
Если условие истинно (ненулевое), тогда
выполняется команда 1, иначе — команда 2.
Слайд 25
Ветвления
Раздел else может отсутствовать.
Можно указать несколько команд — в {}:
if(условие)
{
командаA1;
командаA2; командаA3;...
}
else
{ командаB1; командаB2; командаB3;...}
Точка с запятой после команды обязательна, после операторных
скобок — нет.