Вывести на экран монитора систему меню, расположенную горизонтально или вертикально - Pascal

Узнай цену своей работы

Формулировка задачи:

1. Вывести на экран монитора систему меню, расположенную горизонтально или вертикально. Перед выводом системы меню необходимо вывести заставку. 2. В любой момент времени должен быть выбран только один элемент меню, который должен выделяться с помощью другого цвета, повышенной или пониженной интенсивности свечения, выделения первой буквы в названии или иным способом. 3. Необходимо иметь возможность перемещаться по пунктам горизонтальной системы меню с помощью клавиш<Стрелка влево> и<Стрелка вправо>, а по пунктам вертикальной системы меню с помощью клавиш<Стрелка вверх> и<Стрелка вниз>. 4. Необходимо иметь возможность выбора элемента меню нажатием на клавишу <Enter> или какую-либо другую аналогичную клавишу. 5. Необходимо иметь возможность выхода из системы меню нажатием на клавишу <Esc> или какую-либо другую аналогичную клавишу. Заставка - Выбор типа микропроцессора Элементы меню - 80286 , 80386 , 80486 , Pentium Меню - горизонтальное Информационное сообщение - "выбран тип микропроцессора <...>"

Решение задачи: «Вывести на экран монитора систему меню, расположенную горизонтально или вертикально»

textual
Листинг программы
uses crt;
const kol=4;{количество пунктов меню}
      {массив названий пунктов меню}
      vybor:array[1..kol] of string=
      ('1-80286','2-80386 ','3-80486','4-Pentium');
procedure Menu(var k:byte;var c:char);{создание и вывод на экран меню}
var kod: char;
    i:byte;
begin
window(1,1,80,25);
textbackground(0);
clrscr;
write('Меню');
gotoxy(5,2);
k:=1; {выведен первый пункт меню}
repeat
for i:=1 to kol do
 begin
  if i=k then {выделенный пункт}
   begin
    textbackground(7);
    textcolor(12);
   end
  else  {остальные}
   begin
    textbackground(0);
    textcolor(15)
   end;
  gotoxy(10*(i-1)+1,2);{ставим курсор}
  write(vybor[i]);{выводим пункты}
 end;
c:=readkey;
if c=#27 then halt{Esc-выход из программы}
else if c=#0 then kod:=readkey;{признак служебной клавиши}
  case kod of
  #75: begin{стрелка влево}
       if c=#0 then k:=k-1;
       if k=0 then k:=4;{если левее края, вправо}
       end;
  #77: begin {стрелка вправо}
       if c=#0 then k:=k+1;
       if k=5 then k:=1;{если правее края, влево}
       end;
  end;
until c=#13;{нажат Enter, выходим из меню в выбранную процедуру}
end;
{основная программа}
var k:byte;
    c:char;
    s:string;
begin
textbackground(2);
textcolor(14);
clrscr;
gotoXY(27,11);
write('ВЫБОР  ТИПА  МИКРОПРОЦЕССОРА');
gotoXY(10,12);
write('Управление меню стрелки влево-вправо, выбор пункта Enter, выход Esc');
gotoXY(33,13);
write('Нажмите Enter');
readln;
window(1,1,80,25);
textbackground(0);
textcolor(15);
clrscr;
s:='Выбран тип микропроцессора ';
 repeat
   Menu(k,c);{выводим меню}
   clrscr;
   case k of{выбираем стрелками действие}
   1: begin
       write(s,'80286');
       readln;
      end;
   2: begin
       write(s,'80386');
       readln;
      end;
   3: begin
       write(s,'80486');
       readln;
      end;
   4: begin
       {для последнего пункта нужно установить фон и цвет
       иначе будет как в меню }
       textbackground(0);
       textcolor(15);
       clrscr;
       write(s,'Pentium');
       readln;
      end;
  end;
 until c=#27;
end.

Объяснение кода листинга программы

  1. Объявлены константы: количество пунктов меню (kol) и массив названий пунктов меню (vybor).
  2. Создана процедура Menu, которая создает и выводит на экран меню. В ней используются переменные: k (для отслеживания выбранного пункта), c (для чтения нажатой клавиши), kod (для обработки служебных клавиш). Также в процедуре используются переменные i, textbackground, textcolor, gotoxy, write, readkey, readln.
  3. В основной программе объявлены переменные: k, c, s.
  4. В основной программе выполняется цикл, который повторяется до тех пор, пока пользователь не нажмет Esc. В каждой итерации цикла вызывается процедура Menu, выводится меню, затем пользователь вводит свой выбор.
  5. В случае выбора пункта 1,2 или 3 выводится соответствующее сообщение и пользовательский ввод считывается функцией readln.
  6. В случае выбора пункта 4 выполняется блок кода, который устанавливает фон и цвет текста для предотвращения эффекта как в меню. Затем выводится сообщение Pentium и считывается пользовательский ввод с помощью функции readln.
  7. Если пользователь нажимает Esc, то цикл прекращается. Если пользователь нажимает Enter, то цикл продолжается.
  8. В меню используются стрелки для перемещения по пунктам и Enter для выбора пункта.
  9. Служебные клавиши обрабатываются в ветке if c=#0 then kod:=readkey;. В зависимости от значения kod выполняются соответствующие действия.
  10. Ветка case в процедуре Menu обрабатывает выбор стрелок.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы