Список фигур
Перебираем список объектов с общим контрактом и считаем площадь.
Код
// «для каждого» по списку контрактов.
контракт Фигура
функция площадь(): целое;
функция название(): текст;
конец
структура Квадрат : Фигура
целое сторона;
функция площадь(): целое
вернуть это.сторона * это.сторона;
конец
функция название(): текст
вернуть "квадрат";
конец
конец
структура Прямоугольник : Фигура
целое ширина;
целое высота;
функция площадь(): целое
вернуть это.ширина * это.высота;
конец
функция название(): текст
вернуть "прямоугольник";
конец
конец
функция главная(): целое
Список из Фигура фигуры = Список из Фигура();
Квадрат к = Квадрат(3);
Прямоугольник р = Прямоугольник(2, 5);
фигуры.добавить(к);
фигуры.добавить(р);
целое всего = 0;
для каждого ф в фигуры
вывести("%(ф.название())%: %(ф.площадь())%");
всего = всего + ф.площадь();
конец
вывести("Общая площадь: %всего%");
вернуть 0;
конец
Как запустить
Сохраните код в файл, например контракты_для_каждого.код, и выполните:
запустить контракты_для_каждого.код
Как это работает
Список из Фигурахранит разные структуры, если все они выполняют контрактФигура.- Цикл
для каждого ф в фигурыотдаёт каждый элемент какФигура: можно вызыватьназвание()иплощадь(). - Конструктор структуры принимает поля по порядку:
Прямоугольник(2, 5).
Исходник лежит в репозитории: examples/контракты_для_каждого.код.