Меню́ (англ. menu , фр. menu ) — элемент интерфейса пользователя, позволяющий выбрать одну (в простейшем случае) из нескольких перечисленных опций.
В современных операционных системах меню является основным элементом графического интерфейса пользователя.
Элементы меню
Меню представляет собой набор следующих элементов:
- строка меню (англ.menu bar ) — основная часть меню, которая постоянно находится в окне приложения (реже, скрывается и появляется при определённых действиях пользователя). Данная строка является так называемым главным меню окна (англ.main menu ) или меню верхнего уровня (англ.top-level menu );
- всплывающее меню (англ.popup menu ) или подменю (англ.submenu ). Выбор элемента главного меню обычно приводит к вызову появляющегося под главным подменю, которое в свою очередь может содержать подменю;
- пункт меню — отдельные опции приложения.
Пункты всплывающих меню могут быть отмечены (англ. checked ), при этом для идентификации того, что пункт выбран, используются либо специальные пометки (см. чекбокс (англ.) (например, в Microsoft Windows и GNOME используется значок «галочка» — ✓), либо изменения цветовой гаммы кого-либо элемента пункта меню (в основном применяется для нестандартных графических меню).
Основное меню программы.
Пункты меню в главном и всплывающих меню могут быть разрешены (англ. enabled ), запрещены (англ. disabled ) или недоступны (англ. grayed ). Иногда вместо слов «разрешено» и «запрещено» используют слова «активно» (англ. active ) и «неактивно» (англ.
inactive ). Обычно пункты, помеченные как разрешённые или запрещённые, для пользователя выглядят одинаково, а недоступный пункт меню выводится несколько затемнённым, в частности серым цветом.
Таким образом меню образует иерархическую структуру функциональных возможностей приложения.
Типы меню
Различают следующие типы меню:
- по исполнению:
- текстовое
- графическое;
- главное меню приложения;
- всплывающее меню;
- контекстное меню;
- системное меню.
Меню в интерфейсе командной строки
В интерфейсе командной строки меню реализуется перечислением вариантов и предложением ввести символ (слово, число…), означающий желаемый вариант. Например:
1) Разворот 2) Налево 3) Прямо 4) Направо Ваш выбор (1234) [1]?_
Такое меню управляется простым вводом нужного значения из списка. Иногда для ввода требуется нажать Enter; иначе — только «горячую клавишу», либо ввести определённое количество символов. При нажатии Enter без ввода конкретного значения может быть выполнено действие по умолчанию (в приведённом примере это «Разворот»).
Меню, управляемые указательными устройствами
Простое графическое меню
В более продвинутых интерфейсах выбор элемента меню может осуществляться «указанием» на его изображение на экране.
Хотя такие меню могут управляться и горячими клавишами тоже (в специализированных или некачественно сделанных интерфейсах «горячие клавиши» могут отсутствовать), но допускается выбор между элементами меню при помощи клавиш стрелок или указательного устройства ввода.
Урок 3 — Интерфейс программы и основные функции меню
Трудоёмкость выбора пункта из меню
Для уменьшения трудоёмкости выбора пункта из меню указательным устройством ввода выбираемый пункт меню должен значительно отличаться по цвету, фактуре и другим характеристикам от фона и иметь наибольшие возможные размеры (площадь).
Меню с «упором» позволяют в слепую сдвинуть курсор к упору и числом нажатий на кнопку выбрать нужный пункт меню. Турбо-меню без «упора» сделать это не позволяют.
См. также
- Контекстное меню
- Джойстик
- Пиктограмма в информатике
Файл:Computer.svg | Это незавершённая статья о компьютерах. Вы можете помочь проекту, исправив и дополнив её. |
de:Menü (Computer)
Источник: www.sbup.com
Меню (информатика)
Меню́ (англ. menu , фр. menu ) — элемент интерфейса пользователя, позволяющий выбрать одну из нескольких перечисленных опций программы. В современных операционных системах меню является важнейшим элементом графического интерфейса пользователя.
Пункты меню могут выбираться пользователем любым из указательных устройств ввода, предоставляемых электронным устройством.
- 1 Типы меню
- 2 Элементы меню
- 2.1 Работа элементов меню
- 5.1 Модернизации классического меню
Типы меню
- главное меню приложения
- всплывающее меню
- контекстное меню
- системное меню
Элементы меню
- пункт меню — отдельные опции приложения
- пиктограмма, иллюстрирующая действие
- разделитель (визуально разделяет группы однородных пунктов меню)
- «упор» ограничивает ход сдвига курсора
Элементы меню обычно сгруппированы в:
- Строка меню (англ. menu bar ) — основная часть меню, которая постоянно находится в окне приложения (реже скрывается и появляется при определённых действиях пользователя). Данная строка является так называемым главным меню окна (англ. main menu ) или меню верхнего уровня (англ. top-level menu ), которая может содержать
- Всплывающее меню (англ. popup menu ) или подменю (англ. submenu ). Выбор элемента главного меню обычно приводит к вызову появляющегося под главным подменю, которое, в свою очередь, может содержать подменю.
Таким образом меню образует иерархическую структуру функциональных возможностей приложения.
Пункты меню в главном и всплывающих меню могут быть включены (англ. enabled ), выключены (англ. disabled ) или недоступны (англ. grayed ). Иногда вместо слов «включено» и «выключено» используют слова «активно» (англ. active ) и «неактивно» (англ. inactive ). Обычно пункты, помеченные как включённые или выключенные, для пользователя выглядят одинаково, а недоступный пункт меню выводится несколько затемнённым, в частности, серым цветом.
Пункты всплывающих меню могут быть отмечены (англ. checked ), при этом для идентификации того, что пункт выбран, используются либо специальные пометки (см. чекбокс) (например, в Microsoft Windows и GNOME используется значок «галочка» — ✓), либо изменения цветовой гаммы кого-либо элемента пункта меню (в основном применяется для нестандартных графических меню).
Работа элементов меню
Все элементы меню или часть элементов меню могут работать как настоящее меню, то есть как группа независимых счётных кнопок (счётных триггеров, Т-триггеров) из которой, как в настоящем меню, можно выбрать один, два или более пунктов, но чаще встречаются группы зависимых кнопок, которые работают как многофазный триггер, то есть из группы пунктов можно выбрать только один пункт, после выбора которого прежде выбранный пункт сбрасывается, но это уже не меню, а переключатель.
Меню в интерфейсе командной строки
В интерфейсе командной строки меню реализуется перечислением вариантов и предложением ввести символ (слово, число…), означающий желаемый вариант. Например:
1) Разворот 2) Налево 3) Прямо 4) Направо Ваш выбор (1234) [1]?_
Такое меню управляется простым вводом нужного значения из списка. Иногда для ввода требуется нажать Enter; иначе — только «горячую клавишу», либо ввести определённое количество символов. При нажатии Enter без ввода конкретного значения может быть выполнено действие по умолчанию (в приведённом примере это «Разворот»).
Меню, управляемые указательными устройствами
В более продвинутых интерфейсах выбор элемента меню может осуществляться «указанием» на его изображение на экране.
Хотя такие меню могут управляться и горячими клавишами тоже (в специализированных или некачественно сделанных интерфейсах «горячие клавиши» могут отсутствовать), но допускается выбор между элементами меню при помощи клавиш стрелок или указательного устройства ввода. Меню, управляемые указательными устройствами, используются в телевизорах, мобильных телефонах и других устройствах с указательными устройствами ввода.
Трудоёмкость выбора пункта из меню
Для уменьшения трудоёмкости выбора пункта из меню указательным устройством ввода выбираемый пункт меню должен значительно отличаться по цвету, фактуре и другим характеристикам от фона и иметь наибольшие возможные размеры (площадь). Меню с «упором» позволяют вслепую сдвинуть курсор к упору и числом нажатий на кнопку выбрать нужный пункт меню. Турбо-меню без «упора» сделать это не позволяют.
Модернизации классического меню
- Скрываемые элементы меню (в Microsoft Office 2000 и далее)
- Ribbon (в Microsoft Office 2007 и далее)
Этот раздел не завершён.
Вы поможете проекту, исправив и дополнив его.
См. также
- Меню «Пуск»
- Контекстное меню
- Горячие клавиши
- В браузере Mozilla Firefox панель, открываемая нажатием кнопки с тремя полосками, тоже называется «меню». [1]
Источник: xn--h1ajim.xn--p1ai
Как создать меню на C или C++
Порой, чтобы продемонстрировать работу консольной программы бывает удобно воспользоваться меню — элементом пользовательского интерфейса, позволяющим выбрать одну из нескольких перечисленных опций программы. Иногда же наличие меню является обязательным условием задания по программированию.
Рассмотрим создание меню для консольной программы на примере следующей задачи: имеется список товаров, состоящих из наименования, цены и количества данного товара. Написать программу, позволяющую находить наименьшую и наибольшую цену. Взаимодействие с пользователем организовать с помощью меню.
Разбиваем программу на пункты
Прежде чем добавлять меню в программу, следует разбить программу на процедуры, которые должны будут выполняться при выборе соответствующих пунктов меню. Нашу задачу можно разбить на следующие пункты:
- Добавление товара в список
- Вывод списка товаров (как минимум для контроля вводимых данных)
- Вывод товара с наибольшей ценой
- Вывод товара с наименьшей ценой
- Выход (иначе программа никогда не сможет завершиться)
Выводим пункты меню на экран
Чтобы вывести меню на экран, очистим его и затем просто напечатаем с помощью printf или cout номер пункта и то, что он должен делать:
Вариант для C:
void print_menu() < system(«cls»); // очищаем экран printf(«What do you want to do?n»); printf(«1. Add good to listn»); printf(«2. Print all goods in listn»); printf(«3. Print the highest pricen»); printf(«4. Print the lowest pricen»); printf(«5. Exitn»); printf(«>»); >
Вариант для C++
void print_menu() < system(«cls»); // очищаем экран cout «; >
Считываем введённый пункт меню
В самом простом случае достаточно всего лишь считать число, однако правильнее будет защитить программу от некорректного ввода с помощью считывания строки и проверки ввода на корректность.
Вариант для C:
int get_variant(int count) < int variant; char s[100]; // строка для считывания введённых данных scanf(«%s», s); // считываем строку // пока ввод некорректен, сообщаем об этом и просим повторить его while (sscanf(s, «%d», 1 || variant >count) < printf(«Incorrect input. Try again: «); // выводим сообщение об ошибке scanf(«%s», s); // считываем строку повторно >return variant; >
Вариант для C++:
int get_variant(int count) < int variant; string s; // строка для считывания введённых данных getline(cin, s); // считываем строку // пока ввод некорректен, сообщаем об этом и просим повторить его while (sscanf(s.c_str(), «%d», 1 || variant >count) < cout return variant; >
Обработка выбранного пункта меню
Создадим для каждого пункта свой обработчик в виде процедуры, выполняющей указанное действие:
void add_good(good **goods, int *size, int *capacity) < // реализация процедуры >void print_goods(good *goods, int size) < // реализация процедуры >void print_highest(good *goods, int size) < // реализация процедуры >void print_lowest(good *goods, int size) < // реализация процедуры >
Чтобы выполнить действие в зависимости от введённого пункта воспользуемся оператором switch-case :
switch (variant)
Казалось бы, всё готово, однако пока что программа обработает лишь один пункт меню и затем завершится, хотя должна завершаться лишь при выборе пятого пункта — «выход». Чтобы организовать данный функционал, воспользуемся циклом do-while
int variant; do < print_menu(); variant = get_variant(5); // получаем номер выбранного пункта меню switch (variant) < case 1: add_good(size, break; case 2: print_goods(goods, size); break; case 3: print_highest(goods, size); break; case 4: print_lowest(goods, size); break; >if (variant != 5) system(«pause»); // задерживаем выполнение, чтобы пользователь мог увидеть результат выполнения выбранного пункта > while (variant != 5);
Теперь наше меню будет работать до тех пор, пока пользователь не введёт число 5 чтобы выйти. При этом для всех остальных пунктов меню вызывается функция задержки system(«pause») , чтобы после завершения работы выбранного пункта меню нашей консольной программы пункты меню выводились не сразу, а лишь тогда, когда пользователь самостоятельно решит вернуться в него.
Полный листнинг кода
#include #include typedef struct good < char name[20]; // название-описание товара double price; // цена товара int count; // количество товара >good; void add_good(good **goods, int *size, int *capacity) < printf(«Enter good description: «); scanf(«%s», printf(«Enter good price: «); scanf(«%lf», printf(«Enter good count: «); scanf(«%d», (*size)++; if (*size >= *capacity) < *capacity *= 2; *goods = (good *)realloc(*goods, *capacity * sizeof(good)); >> void print_goods(good *goods, int size) < printf(«+———————+————-+——-+n»); printf(«| good | Price | Count |n»); printf(«+———————+————-+——-+n»); if (size == 0) printf(«| No goods was added. |n»); for (int i = 0; i < size; i++) printf(«| %19s | %11.2lf | %5d |n», goods[i].name, goods[i].price, goods[i].count); printf(«+———————+————-+——-+n»); >void print_highest(good *goods, int size) < double max = goods[0].price; int imax = 0; for (int i = 1; i < size; i++) < if (goods[i].count >max) < max = goods[i].price; imax = i; >> printf(«The highest price of goods is %.2lf (good is %s)n», max, goods[imax].name); > void print_lowest(good *goods, int size) < double min = goods[0].price; int imin = 0; for (int i = 1; i < size; i++) < if (goods[i].count < min) < min = goods[i].price; imin = i; >> printf(«The lowest price of goods is %.2lf (good is %s)n», min, goods[imin].name); > void print_menu() < system(«cls»); // очищаем экран printf(«What do you want to do?n»); printf(«1. Add good to listn»); printf(«2.
Print all goods in listn»); printf(«3. Print the highest pricen»); printf(«4. Print the lowest pricen»); printf(«5. Exitn»); printf(«>»); > int get_variant(int count) < int variant; char s[100]; // строка для считывания введённых данных scanf(«%s», s); // считываем строку // пока ввод некорректен, сообщаем об этом и просим повторить его while (sscanf(s, «%d», 1 || variant >count) < printf(«Incorrect input.
Try again: «); // выводим сообщение об ошибке scanf(«%s», s); // считываем строку повторно >return variant; > int main() < int variant; // выбранный пункт меню int size = 0; // количество элементов массива товаров int capacity = 1; // ёмкость массива товаров good *goods = (good *)malloc(capacity * sizeof(good)); // выделяем память под массив товаров do < print_menu(); // выводим меню на экран variant = get_variant(5); // получаем номер выбранного пункта меню switch (variant) < case 1: add_good(size, break; case 2: print_goods(goods, size); break; case 3: print_highest(goods, size); break; case 4: print_lowest(goods, size); break; >if (variant != 5) system(«pause»); // задерживаем выполнение, чтобы пользователь мог увидеть результат выполнения выбранного пункта > while (variant != 5); return 0; >
Демонстрация работы программы
Демонстрация работы программы с меню
Программист, соосновательница programforyou.ru, рукодельница, всегда готова придти на помощь и помочь во всём разобраться
Языки программирования: Python, C, C++, Pascal
Выпускница МГТУ им. Н.Э. Баумана
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Источник: programforyou.ru