Строковые литералы
Презентация "Язык программирования Си. Строковые литералы, ввод-вывод. Ветвления"
Подписи к слайдам:
- Язык программирования Си
- Строковые литералы, ввод-вывод
- Ветвления
- Югов Иван Олегович
- МОУ Гимназия №10, г. Тверь
- Указываются в кавычках:
- "Test #2"; "Press any key...".
- Пустая строка: "".
- В тексте литерала единичные кавычки недопустимы, а двойные игнорируются:
- "2º19'59" в. д." — недопустимо;
- "Роман ""Тихий Дон""" → Роман Тихий Дон.
- Кавычки нужно экранировать служебным символом «\»:
- "Роман \"Тихий Дон\"" → Роман "Тихий Дон".
- Экранирование — оформление служебных символов так, что они получают буквальное значение.
- Символ «\» экранируется самим собой:
- "C:\\bootlog.txt" → C:\bootlog.txt.
- Символ «\» также экранирует конец строки:
- "Программирование \
- на языке Си"
- обозначает строку
- Программирование на языке Си.
- Escape-последовательность (управляющая последовательность, УП) — последовательность символов, имеющая особое значение.
- Используется для вставки служебных символов.
- Начинаются с «\»: \", \\, \'.
- Даёт возможность указывать символы по их восьмеричным (oct) и шестнадцатеричным (hex) кодам:
- \000, где 000 — трёхзначный oct-код символа;
- \x0, где 0 — hex-код символа (возможно несколько цифр).
- "\065" → 5; "\x35" → 5; "\x74\145\x73\x74" → test.
- В коде символов можно указывать меньше цифр, но нежелательно.
- Примеры:
- После символа \7 можно написать цифру 4: "\0074".
- При записи "\74" получится символ с кодом 64: >.
- Hex-запись не органичивается каким-то количеством цифр:
- "\x445" — предупреждение о переполнении строковой константы. Результат не определён.
- Как записать символ 5 сразу после символа \x44?
- "\x44""5"
- Стандартом также определены:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Примеры результата на экране:
- "Information\b\bcs" → Informatics;
- "A\tB\tC" → A B C.
- Использование символа \n в литерале
- "Л. Н. Толстой\n\"Война и мир\""
- даёт на экране переход на следующую строку:
- Л. Н. Толстой
- "Война и мир".
- Перед прочими символами «\» игнорируется:
- \h → h, \N → N.
- Каждый символ занимает в памяти 1 байт.
- Любая строковая константа заканчивается символом с кодом 0 («нуль-терминатором»).
- Все функции работы со строками это знают, поэтому не обрабатывают символы после первого же «нуль-терминатора» в строке.
- Явно указывать «нуль-терминатор» не нужно.
- Символьная константа — в апострофах:
- 'A'; '$'; '\''; '\077'; '\n'.
- Занимает 1 байт:
- не может быть пустым;
- «нуль-терминатором» не заканчивается.
- Может храниться в переменной типа char:
- char P = 'A';
- Возможна поддержка «широких» (wide) символов и строк — по 2 или 4 байта на символ.
- «Широкие» литералы — с префиксом L:
- L'Ы'
- L"Lorem ipsum dolor sit amet..."
- «Широкий» символ может храниться в переменной int (short, long):
- short P = 'Ф';
- Используется заголовочный файл stdio.h.
- Для его использования пишем в начале кода:
- #include <stdio.h>
- Основные операции:
- ввод: scanf, fscanf, wscanf и т. п.;
- вывод: printf, fprintf, wprintf и т. п.
- Функция printf выводит на стандартный поток вывода строковое выражение. Возвращает количество выведенных символов.
- printf("Hello world!\n");
- Полный формат вызова printf:
- printf(Форматная строка, параметры);
- Форматная строка — особая строковая константа, задающая формат вывода остальных параметров.
- Пример вывода с форматной строкой:
- printf("Время: %d часов %d минут", H, M);
- В форматной строке символ «%» является служебным. Экранируется сам собой:
- printf("Загрузка завершена на 100%%");
- Со знака «%» начинаются УП, задающие формат вывода для каждого из остальных параметров:
- %ФлагиШиринаТочностьДлинаТип
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- В форматных УП обязателен только Тип:
|
|
|
|
|
|
|
|
|
|
- Флаги определяют параметры вывода:
- Пример: printf("Value %+i at %#X", Val, Cell);
- Флаги можно комбинировать: printf("%#+X", U);
- Ширина — число: какой минимум знаков отвести под значение:
- printf("%6i", Value);
- Либо символ «*» — количество знаков указано в дополнительном параметре перед основным:
- printf("%*i", Length, Value);
- Если число короче, то остаток заполняется пробелами (или нулями, если есть флаг 0):
- printf("[%12i]", 125); → [ 125]
- Если число длиннее, то оно выводится целиком:
- printf("[%3i]", 142857); → [142857]
- Точность — точка и следующее за ним число:
- для целых (%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]
- Длина — уточняет длину типов:
- 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).
- Пример:
- 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 !!!
- Пример:
- 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
- Полный формат вызова scanf:
- scanf(Форматная строка, параметры);
- Возвращает количество успешно считанных величин.
- Форматная строка — как у printf.
- В УП указывается тип. Можно указать ширину (максимальное количество знаков для считывания) и длину значения.
- Остальные параметры — соответствующее количество адресов (переменных), в которые будут считаны данные.
- Унарная операция & — взятие адреса.
- Получает адрес, начиная с которого, в памяти хранится переменная: &A, &Result.
- scanf("%Lf %Lf %Lf", &x, &y, &z);
- Форматная строка может содержать другие символы кроме УП. Тогда необходимо водить и их:
- scanf("R%i", &N);
- (ожидается ввод, например, R12, R-46…)
- Исключение — пробелы, переводы строк, табуляции.
- Синтаксис ветвления:
- if(условие)
- команда1;
- else
- команда2;
- Вычисляет значение условия.
- Если условие истинно (ненулевое), тогда выполняется команда 1, иначе — команда 2.
- Раздел else может отсутствовать.
- Можно указать несколько команд — в {}:
- if(условие)
- {
- командаA1; командаA2; командаA3;...
- }
- else
- { командаB1; командаB2; командаB3;...}
- Точка с запятой после команды обязательна, после операторных скобок — нет.
- Пример:
- if(A == B || B == C || A == C)
- if(A == B && B == C)
- printf("Треугольник равносторонний\n");
- else
- printf("Треугольник равнобедренный\n");
- else
- printf("Треугольник общего вида\n");
Информатика - еще материалы к урокам:
- Презентация "Алгоритмы на графах. Топологическая сортировка поиском в глубину"
- Презентация "Язык программирования Си. Элементы языка, типы данных, переменные, программа"
- Презентация "Создание визитной карточки" 8 класс
- Презентация "Алгоритмы на графах. Определение наличия циклов в графе"
- Презентация "Алгоритмы на графах. Топологическая сортировка отсечением вершин"
- Презентация "Кодирование вещественных чисел"