Урок 3. Список, Словарь и текст
Список
Список из T — растущий массив. Тип нужно указывать явно слева, вывести его из значения нельзя:
функция главная(): целое
Список из целых числа = Список из целых();
числа.добавить(10);
числа.добавить(20);
числа.добавить(30);
вывести("Размер: %(числа.размер())%");
вывести("Первое: %(числа.получить(0))%");
числа.удалить(1);
для каждого число в числа
вывести("элемент: %число%");
конец
числа.освободить();
вернуть 0;
конец
Размер: 3
Первое: 10
элемент: 10
элемент: 30
удалить(индекс) убирает элемент и сдвигает хвост влево. Список не освобождается сам — когда он больше не нужен, вызовите .освободить().
Словарь
Словарь из К и З хранит пары «ключ — значение». Метод получить возвращает не значение, а результат из …: ключа может не быть, и это нужно проверить:
функция главная(): целое
Словарь из текста и целого возрасты = Словарь из текста и целого();
возрасты.положить("Аня", 25);
возрасты.положить("Борис", 31);
возрасты.положить("Аня", 26);
вывести("Записей: %(возрасты.размер())%");
результат из целого аня = возрасты.получить("Аня");
если (аня.успешно)
вывести("Аня: %(аня.значение)%");
конец
результат из целого вера = возрасты.получить("Вера");
если ( не вера.успешно)
вывести("Веры в словаре нет");
конец
возрасты.освободить();
вернуть 0;
конец
Записей: 2
Аня: 26
Веры в словаре нет
Повторный положить с тем же ключом заменяет значение (Аня стала 26, а записей по-прежнему две). Словарь тоже нужно освобождать вручную.
Чтобы перебрать все пары, используйте ключ_по_индексу(i) и значение_по_индексу(i) для i от 0 до размер() - 1; порядок — как при первой вставке:
пока (i меньше возрасты.размер())
текст имя = возрасты.ключ_по_индексу(i);
целое возраст = возрасты.значение_по_индексу(i);
вывести("%имя%: %возраст%");
i = i + 1;
конец
Возвращённый текст принадлежит словарю, его освобождать не нужно.
Текст
Строки — это байты в UTF-8, поэтому длина считает байты, а не буквы: в кириллице одна буква занимает два байта. Позиции из найти тоже в байтах.
функция главная(): целое
текст фраза = "Привет, Сфера!";
вывести("Длина в байтах: %(длина(фраза))%");
вывести(регистр_в_верхний("abc") + " " + регистр_в_нижний("ABC"));
если (содержит(фраза, "Сфера"))
вывести("Нашли слово");
конец
результат из целого позиция = найти(фраза, ",");
если (позиция.успешно)
вывести("Запятая на позиции %(позиция.значение)%");
конец
результат из целого число = текст_в_целое("123");
если (число.успешно)
вывести("Число плюс один: %(число.значение + 1)%");
конец
вернуть 0;
конец
Длина в байтах: 25
ABC abc
Нашли слово
Запятая на позиции 12
Число плюс один: 124
В «Привет, Сфера!» 14 символов, но 25 байт — по два на каждую русскую букву и по одному на запятую, пробел и восклицательный знак.
Основные функции: длина, содержит, найти, подстрока, регистр_в_верхний, регистр_в_нижний, текст_в_целое. Сложение строк делается знаком +.
Упражнения
- Посчитайте среднее значение списка чисел.
- Сохраните в словаре число жителей пяти городов и выведите население выбранного.
- Проверьте, содержит ли строка слово «конец», и выведите позицию.
Дальше: Урок 4. Ошибки без исключений.